Mercurial Hosting > hghosting
comparison src/private/tools/backup.html.luan @ 0:dfc36e7ed22c
init
| author | Vadim Filimonov <fffilimonov@yandex.ru> |
|---|---|
| date | Thu, 12 May 2022 13:51:59 +0400 |
| parents | |
| children | 028e74c8889d |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:dfc36e7ed22c |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | |
| 2 local error = Luan.error | |
| 3 local pairs = Luan.pairs or error() | |
| 4 local ipairs = Luan.ipairs or error() | |
| 5 local stringify = Luan.stringify or error() | |
| 6 local Io = require "luan:Io.luan" | |
| 7 local Http = require "luan:http/Http.luan" | |
| 8 local Shared = require "site:/lib/Shared.luan" | |
| 9 local head = Shared.head or error() | |
| 10 local header = Shared.private_header or error() | |
| 11 local new_password = Shared.new_password or error() | |
| 12 local config = Shared.config or error() | |
| 13 local get_raw_config = Shared.get_raw_config or error() | |
| 14 local save_raw_config = Shared.save_raw_config or error() | |
| 15 local Logging = require "luan:logging/Logging.luan" | |
| 16 local logger = Logging.logger "private-users.html" | |
| 17 | |
| 18 | |
| 19 local function response(content) | |
| 20 %> | |
| 21 <!doctype html> | |
| 22 <html> | |
| 23 <head> | |
| 24 <% head() %> | |
| 25 <title>Mercurial Backup</title> | |
| 26 </head> | |
| 27 <body> | |
| 28 <% header() %> | |
| 29 <div content> | |
| 30 <h1>Backup</h1> | |
| 31 <%=content%> | |
| 32 </div> | |
| 33 </body> | |
| 34 </html> | |
| 35 <% | |
| 36 end | |
| 37 | |
| 38 local function posted() | |
| 39 local raw_config = get_raw_config() | |
| 40 local change = Http.request.parameters.change ~= nil | |
| 41 local password = config.users.backup | |
| 42 if password == nil or change then | |
| 43 password = new_password() | |
| 44 raw_config.users.backup = password | |
| 45 end | |
| 46 for repo_name, repo in pairs(raw_config.repos) do | |
| 47 local users = {} | |
| 48 if Http.request.parameters["repo_"..repo_name] ~= nil then | |
| 49 users[#users+1] = "backup" | |
| 50 end | |
| 51 for _, user in ipairs(repo.users) do | |
| 52 if user ~= "backup" then | |
| 53 users[#users+1] = user | |
| 54 end | |
| 55 end | |
| 56 repo.users = users | |
| 57 end | |
| 58 if config.private ~= nil and not config.private.backup then | |
| 59 raw_config.private[#raw_config.private+1] = "backup" | |
| 60 end | |
| 61 save_raw_config(raw_config) | |
| 62 return nil | |
| 63 end | |
| 64 | |
| 65 return function() | |
| 66 Io.stdout = Http.response.text_writer() | |
| 67 local error_msg = "" | |
| 68 if Http.request.method == "POST" then | |
| 69 local error_msg = posted() | |
| 70 if error_msg == nil then | |
| 71 response([[<p>Backup updated</p>]]) | |
| 72 else | |
| 73 response([[<p error>]]..error_msg..[[</p>]]) | |
| 74 end | |
| 75 return | |
| 76 end | |
| 77 %> | |
| 78 <!doctype html> | |
| 79 <html> | |
| 80 <head> | |
| 81 <% head() %> | |
| 82 <title>Mercurial Backup</title> | |
| 83 </head> | |
| 84 <body> | |
| 85 <% header() %> | |
| 86 <div content> | |
| 87 <h1>Backup</h1> | |
| 88 <form method=post> | |
| 89 <p> | |
| 90 User <b>backup</b> password: <%=config.users.backup%> | |
| 91 <label prompt clickable><input type=checkbox name=change> change backup password</label> | |
| 92 </p> | |
| 93 <p> | |
| 94 Repos to backup: | |
| 95 </p> | |
| 96 <% | |
| 97 for _, repo in pairs(config.repos) do | |
| 98 local name = repo.name | |
| 99 local checked = repo.users.backup and "checked" or "" | |
| 100 %> | |
| 101 <p> | |
| 102 <label clickable><input type=checkbox name="repo_<%=name%>" <%=checked%> > <%=name%></label> | |
| 103 - <a href="/repo/<%=name%>/">repo</a> | |
| 104 </p> | |
| 105 <% end %> | |
| 106 <p> | |
| 107 <input type=submit value="Update Backup"> | |
| 108 </p> | |
| 109 </form> | |
| 110 </div> | |
| 111 </body> | |
| 112 </html> | |
| 113 <% | |
| 114 end |
