annotate host/admin/src/private/tools/sites.html.luan @ 1995:301a6561fb6b

add host/admin
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 04 Jul 2025 10:25:38 -0600
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1995
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 local ipairs = Luan.ipairs or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local Io = require "luan:Io.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local String = require "luan:String.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 local split = String.split or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 local Table = require "luan:Table.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 local concat = Table.concat or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local insert = Table.insert or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local sort = Table.sort or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 local Time = require "luan:Time.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 local format_time = Time.format or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local Http = require "luan:http/Http.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 local Utils = require "site:/private/lib/Utils.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 local Logging = require "luan:logging/Logging.luan"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 local logger = Logging.logger "sites.html"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 local function remove()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 local site = Http.request.parameters.site or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 local site_dir = Utils.sites_dir.child(site)
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 site_dir.exists() or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 site_dir.delete()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 return function()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 local action = Http.request.parameters.action
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 if action == "remove" then
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 remove()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 Http.response.send_redirect "sites.html"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 return
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 Io.stdout = Http.response.text_writer()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 local dirs = Utils.sites_dir.children()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 for _, dir in ipairs(dirs) do
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 local t = {}
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 for _, s in ipairs{split(dir.name(),".")} do
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40 insert(t,1,s)
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
42 dir.sort = concat(t,".")
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
43 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
44 sort(dirs,function(d1,d2)
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
45 return d1.sort < d2.sort
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 end)
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 %>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 <!doctype html>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 <html lang="en">
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 <body>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51 <table>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52 <tr><th></th><th>site</th><th>logs/web</th><th>DNS</th><th></th><th>password</th></tr>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 <%
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
54 local my_ips = Io.my_ips()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
55 for i, site_dir in ipairs(dirs) do
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
56 local site = site_dir.name()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
57 if site_dir.is_directory() then
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 local url = "http://"..site
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
59 local port = Http.request.port
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
60 if port ~= nil and port ~= 80 then
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
61 url = url..":"..port
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
62 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
63 url = url.."/"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
64 local password = Luan.do_file(site_dir.to_string().."/info.luan").password or error()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
65 local web_log = site_dir.child("site/private/local/logs/web")
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
66 local date = web_log.last_modified()
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
67
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
68 local dns = ""
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
69 local ip = Io.ip(site)
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
70 if my_ips[ip] ~= true then
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
71 dns = ip or "not found"
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
72 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
73 %>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
74 <tr>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
75 <td><%=i%></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
76 <td><a href="<%=url%>"><%=site%></a></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
77 <td nowrap><%=format_time(date,"yyyy-MM-dd")%></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
78 <td><%=dns%></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
79 <td><a href="sites.html?action=remove&site=<%=site%>" onclick="return confirm('Delete <%=site%>?')">remove</a></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
80 <td><%=password%></td>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
81 </tr>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
82 <%
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
83 else
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
84 %>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
85 <tr><td><%=site%></td></tr>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
86 <%
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
87 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
88 end
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
89 %>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
90 <table>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
91
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
92 </body>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
93 </html>
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
94 <%
301a6561fb6b add host/admin
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
95 end