import { HtmlHead , PageHead } from '../components/layout'
import Accordion from '../components/accordion'
import { useRouter } from 'next/router'
const accordionData = [
{
key : "substitute" ,
title : "Is OnLoki a substitute to ONS (Oxen Name Service)?" ,
content : ` <b>Absolutely not!</b> This is a much inferior product.<br>
OnLoki is centralized , while ONS is decentralized . < br >
OnLoki runs on a single server with no uptime guarantee , and ONS runs on more than 1700 servers all around the world . < br >
OnLoki blocks content as described in the TOS , ONS does not . < br >
You need to renew your OnLoki address every week , ONS names can be renewed once every 10 years . < br >
Sounds cool ? You can get an ONS name from the < a target = "_blank" href = "https://docs.oxen.io/downloads" rel = "noopener noreferrer" > Desktop wallet . ( CLEARNET , UNDER CLOUDFLARE ) < / a > ` ,
} ,
{
key : "for" ,
title : "Who is OnLoki for?" ,
content : ` OnLoki is for everyone who wants to have a simple, rememberable name for their Lokinet SNApps that respect our TOS, but don't have OXEN to buy a real ONS name.<br>
If you have enough OXEN , please consider buying an ONS name to support the network . < br >
If you don ' t have any OXEN , you can get yourself some on < a target = "_blank" href = "https://coingecko.com" rel = "noopener noreferrer" > CoinGecko ( CLEARNET , UNDER CLOUDFLARE ) < / a > . `
} ,
{
key : "how" ,
title : "How does OnLoki work?" ,
content : ` OnLoki works by reverse-proxying all incoming requests from <code>yoursubdomain.on.loki</code> to <code>yourserver.loki</code>.<br>
Proxying is achieved using the < code > http - proxy < / c o d e > l i b r a r y f o r N o d e J S . < b r >
Yes . You read that right . NodeJS . Because I could . `
} ,
{
key : "redirect" ,
title : "What is the \"Redirect Mode\"?" ,
content : ` With OnLoki domains, all requests that reach our server are passed to yours via reverse proxy by default.<br>
While this looks good ( the end user never sees the long \ ".loki\" address of your server ) , it is terrible for performance . < br >
\ "Redirect Mode\" instead redirect the user to your SNapp 's address, preserving the query URL for GET requests, which avoids having to route all calls through OnLoki' s reverse proxy . < br >
It 's arguably uglier, and it doesn' t work for anything but HTTP GET , but it ' s way faster , and recommended for heavy SNApps . `
} ,
{
key : "renew" ,
title : "Are OnLoki subdomains free? How do I renew my OnLoki subdomain?" ,
content : ` Yes, OnLoki is free for everyone, and there are no advantages for users who donate.<br>
However , to prevent spam , you must renew your subdomain at least once a week . If you don ' t renew your subdomain for more than a week , it will get suspended :
users won ' t be able to access your subdomain , but no one will be able to claim it as theirs . After two weeks , the subdomain will be deregistred , and anyone will be able to claim it . < br >
When you register an OnLoki subdomain , you will be given an URL for renewal . There is no captcha required or anything , so you can simply use a cronjob to curl the URL every 7 days . `
} ,
{
key : "support" ,
title : "How can I support OnLoki?" ,
content : ` That's very kind of you! I try to keep costs low, but at the bare minimum I need 7 OXEN a year for the <code>on.loki</code> domain.<br />
If you have some OXEN and you ' re willing to help me pay the fees , feel free to donate any amount of Oxen at this address : < br / >
< code > L7n8qURqkbSPraTADG8J6ujE8acs9crvZVzXTUacShWVSjLUEWYXCUTKuBvGTDuffDdNCR1iuGPT5RSoAyNgoBZuQov15fG < /code><br / >
You can also help by contributing to our < a target = "_blank" href = "http://8bb19w1gugu7yq3cyck63gbo18udodab1b6zr1uykdphm37ushco.loki/massivebox/onloki" rel = "noopener noreferrer" > development . < / a > `
} ,
] ;
const Faq = ( ) => {
const router = useRouter ( ) ;
return (
< div className = "container" >
< HtmlHead / >
< main className = "main" >
< PageHead / >
< h1 > FAQ < / h 1 >
< p > Here are some FAQs for OnLoki . If you can ' t find the answer to your question , contact < code > massivebox < /code> (ONS name on Session).<br / > < / p >
< div className = "accordion" style = { { width : "100%" } } suppressHydrationWarning = { true } >
{ process . browser && accordionData . map ( ( { key , title , content } ) => (
< Accordion acckey = { key } title = { title } content = { content } hash = { router . asPath . split ( "#" ) [ 1 ] } key = { key } / >
) ) }
< / d i v >
< / m a i n >
< / d i v >
) ;
}
export default Faq ;