1995
|
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
|