Mercurial Hosting > luan
comparison host/admin/src/private/lib/Utils.luan @ 1995:301a6561fb6b
add host/admin
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 04 Jul 2025 10:25:38 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1994:035996323891 | 1995:301a6561fb6b |
---|---|
1 local Config = require "site:/private/Config.luan" | |
2 local Hosted = require "luan:host/Hosted.luan" | |
3 Hosted.no_security and Hosted.no_security(Config.hosting_password) | |
4 require "java" | |
5 local Luan = require "luan:Luan.luan" | |
6 local error = Luan.error | |
7 local ipairs = Luan.ipairs or error() | |
8 local Io = require "luan:Io.luan" | |
9 local uri = Io.uri or error() | |
10 local String = require "luan:String.luan" | |
11 local regex = String.regex or error() | |
12 local sub_string = String.sub or error() | |
13 local Http = require "luan:http/Http.luan" | |
14 local Mail = require "luan:mail/Mail.luan" | |
15 local Logging = require "luan:logging/Logging.luan" | |
16 local logger = Logging.logger "Utils" | |
17 | |
18 | |
19 local Utils = {} | |
20 | |
21 Utils.domain = Http.domain or "admin.me.luan.software" | |
22 | |
23 Utils.server_domain = regex([[^admin\.(\w+\Q.luan.software\E)$]]).matches(Utils.domain) or error "invalid domain" | |
24 | |
25 Utils.sites_dir = uri(Http.dir).parent().parent() | |
26 | |
27 local send = Mail.sender{ | |
28 host = "mail.smtp2go.com" | |
29 port = 465 | |
30 username = "luan.admin2" | |
31 password = Config.mail_password or error() | |
32 }.send | |
33 | |
34 function Utils.send_mail(mail) | |
35 mail.From = mail.From or Utils.domain.."<monitor@luan.software>" | |
36 mail.To = mail.To or Config.email_to or error() | |
37 send(mail) | |
38 end | |
39 | |
40 function Utils.ssh(host,cmd) | |
41 local cmd = "ssh -t -oConnectTimeout=10 -oServerAliveInterval=10 -oBatchMode=yes -oStrictHostKeyChecking=no -p 14299 administrator@"..host.." '"..cmd.."'" | |
42 local con = uri("bash:"..cmd) | |
43 return con.read_text() | |
44 end | |
45 | |
46 local function last_modified_in_dir(dir) | |
47 local rtn = 0 | |
48 for _, child in ipairs(dir.children()) do | |
49 local lm = nil | |
50 if child.is_directory() then | |
51 lm = last_modified_in_dir(child) | |
52 elseif child.is_file() then | |
53 lm = child.last_modified() | |
54 end | |
55 if lm ~= nil and lm > rtn then | |
56 rtn = lm | |
57 end | |
58 end | |
59 return rtn | |
60 end | |
61 Utils.last_modified_in_dir = last_modified_in_dir | |
62 | |
63 | |
64 local luanhost_logs = uri "site:/private/local/logs/luanhost" | |
65 if not luanhost_logs.exists() then | |
66 local logs = uri("file:logs").canonical() | |
67 --logs.mkdir() -- must exist | |
68 if logs.exists() then | |
69 logs.symlink_from(luanhost_logs) | |
70 logger.info "linked to luanhost logs" | |
71 else | |
72 logger.error("logs dir doesn't exist") | |
73 end | |
74 end | |
75 | |
76 | |
77 return Utils |