Mercurial Hosting > disearch
comparison src/add_server.html.luan @ 14:80105b716a62
start bot
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Tue, 31 Oct 2023 23:56:48 -0600 |
| parents | 3e2cb946d511 |
| children | d0b8e1a8fc69 |
comparison
equal
deleted
inserted
replaced
| 13:af2b95854072 | 14:80105b716a62 |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | 1 local Luan = require "luan:Luan.luan" |
| 2 local error = Luan.error | 2 local error = Luan.error |
| 3 local Html = require "luan:Html.luan" | 3 local Html = require "luan:Html.luan" |
| 4 local html_encode = Html.encode or error() | 4 local html_encode = Html.encode or error() |
| 5 local Parsers = require "luan:Parsers.luan" | |
| 6 local json_parse = Parsers.json_parse or error() | |
| 5 local Io = require "luan:Io.luan" | 7 local Io = require "luan:Io.luan" |
| 8 local uri = Io.uri or error() | |
| 6 local Http = require "luan:http/Http.luan" | 9 local Http = require "luan:http/Http.luan" |
| 7 local Shared = require "site:/lib/Shared.luan" | 10 local Shared = require "site:/lib/Shared.luan" |
| 8 local head = Shared.head or error() | 11 local head = Shared.head or error() |
| 9 local header = Shared.header or error() | 12 local header = Shared.header or error() |
| 10 local footer = Shared.footer or error() | 13 local footer = Shared.footer or error() |
| 14 local Server = require "site:/lib/Server.luan" | |
| 15 local Config = require "site:/lib/Config.luan" | |
| 11 | 16 |
| 17 | |
| 18 local function error_page(msg) | |
| 19 Io.stdout = Http.response.text_writer() | |
| 20 %> | |
| 21 <!doctype html> | |
| 22 <html> | |
| 23 <head> | |
| 24 <% head() %> | |
| 25 <title>Disearch</title> | |
| 26 </head> | |
| 27 <body> | |
| 28 <% header() %> | |
| 29 <p><%=msg%></p> | |
| 30 <% footer() %> | |
| 31 </body> | |
| 32 </html> | |
| 33 <% | |
| 34 end | |
| 12 | 35 |
| 13 return function() | 36 return function() |
| 14 local parameters = Http.request.parameters | 37 local parameters = Http.request.parameters |
| 15 local id = parameters.id or error() | 38 if parameters.error == "access_denied" then |
| 16 local name = parameters.name or error() | 39 Http.response.send_redirect("/servers.html") |
| 40 return | |
| 41 end | |
| 42 local guild_id = parameters.guild_id or error() | |
| 43 if Server.get_by_discord_id(guild_id) ~= nil then | |
| 44 error_page("already added") | |
| 45 return | |
| 46 end | |
| 47 | |
| 48 local url = "https://discord.com/api/guilds/"..guild_id | |
| 49 local config = Config.get() | |
| 50 local options = { | |
| 51 headers = { | |
| 52 ["User-Agent"] = "fuck you" -- for retarded Cloudflare | |
| 53 Authorization = "Bot "..config.discord.bot_token | |
| 54 } | |
| 55 } | |
| 56 local result = uri(url,options).read_text() | |
| 57 --logger.info(result) | |
| 58 result = json_parse(result) | |
| 59 | |
| 60 local name = result.name or error() | |
| 17 name = html_encode(name) | 61 name = html_encode(name) |
| 18 local icon = parameters.icon or error() | 62 local icon = result.icon |
| 63 if icon == nil then | |
| 64 error_page("server must have icon") | |
| 65 return | |
| 66 end | |
| 19 Io.stdout = Http.response.text_writer() | 67 Io.stdout = Http.response.text_writer() |
| 20 %> | 68 %> |
| 21 <!doctype html> | 69 <!doctype html> |
| 22 <html> | 70 <html> |
| 23 <head> | 71 <head> |
| 33 <% header() %> | 81 <% header() %> |
| 34 | 82 |
| 35 <h1>Add server</h1> | 83 <h1>Add server</h1> |
| 36 | 84 |
| 37 <form page onsubmit="ajaxForm('/add_server.js',this); return false"> | 85 <form page onsubmit="ajaxForm('/add_server.js',this); return false"> |
| 38 <input type=hidden name=id value="<%=id%>"> | 86 <input type=hidden name=id value="<%=guild_id%>"> |
| 39 <input type=hidden name=name value="<%=name%>"> | 87 <input type=hidden name=name value="<%=name%>"> |
| 40 <input type=hidden name=icon value="<%=icon%>"> | 88 <input type=hidden name=icon value="<%=icon%>"> |
| 41 <p><%=name%></p> | 89 <p><%=name%></p> |
| 42 <p><img icon src="https://cdn.discordapp.com/icons/<%=id%>/<%=icon%>.png"></p> | 90 <p><img icon src="https://cdn.discordapp.com/icons/<%=guild_id%>/<%=icon%>.png"></p> |
| 43 <p> | 91 <p> |
| 44 Invite URL:<br> | 92 Invite URL:<br> |
| 45 <input type=url required name=invite> | 93 <input type=url required name=invite> |
| 46 <span error=invite></span> | 94 <span error=invite></span> |
| 47 </p> | 95 </p> |
