Mercurial Hosting > hghosting
view src/private/tools/backup.html.luan @ 21:b14073ab9d07
update luan
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 14 Sep 2024 22:17:26 -0600 |
parents | 028e74c8889d |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local pairs = Luan.pairs or error() local ipairs = Luan.ipairs or error() local stringify = Luan.stringify or error() local Io = require "luan:Io.luan" local Http = require "luan:http/Http.luan" local Shared = require "site:/lib/Shared.luan" local head = Shared.head or error() local header = Shared.private_header or error() local new_password = Shared.new_password or error() local config = Shared.config or error() local get_raw_config = Shared.get_raw_config or error() local save_raw_config = Shared.save_raw_config or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "backup.html" local function response(content) %> <!doctype html> <html> <head> <% head() %> <title>Mercurial Backup</title> </head> <body> <% header() %> <div content> <h1>Backup</h1> <%=content%> </div> </body> </html> <% end local function posted() local raw_config = get_raw_config() local change = Http.request.parameters.change ~= nil local password = config.users.backup if password == nil or change then password = new_password() raw_config.users.backup = password end for repo_name, repo in pairs(raw_config.repos) do local users = {} if Http.request.parameters["repo_"..repo_name] ~= nil then users[#users+1] = "backup" end for _, user in ipairs(repo.users) do if user ~= "backup" then users[#users+1] = user end end repo.users = users end if config.private ~= nil and not config.private.backup then raw_config.private[#raw_config.private+1] = "backup" end save_raw_config(raw_config) return nil end return function() Io.stdout = Http.response.text_writer() local error_msg = "" if Http.request.method == "POST" then local error_msg = posted() if error_msg == nil then response([[<p>Backup updated</p>]]) else response([[<p error>]]..error_msg..[[</p>]]) end return end %> <!doctype html> <html> <head> <% head() %> <title>Mercurial Backup</title> </head> <body> <% header() %> <div content> <h1>Backup</h1> <form method=post> <p> User <b>backup</b> password: <%=config.users.backup%> <label prompt clickable><input type=checkbox name=change> change backup password</label> </p> <p> Repos to backup: </p> <% for _, repo in pairs(config.repos) do local name = repo.name local checked = repo.users.backup and "checked" or "" %> <p> <label clickable><input type=checkbox name="repo_<%=name%>" <%=checked%> > <%=name%></label> - <a href="/repo/<%=name%>/">repo</a> </p> <% end %> <p> <input type=submit value="Update Backup"> </p> </form> </div> </body> </html> <% end