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