Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/host/admin/src/private/lib/Utils.luan Fri Jul 04 10:25:38 2025 -0600 @@ -0,0 +1,77 @@ +local Config = require "site:/private/Config.luan" +local Hosted = require "luan:host/Hosted.luan" +Hosted.no_security and Hosted.no_security(Config.hosting_password) +require "java" +local Luan = require "luan:Luan.luan" +local error = Luan.error +local ipairs = Luan.ipairs or error() +local Io = require "luan:Io.luan" +local uri = Io.uri or error() +local String = require "luan:String.luan" +local regex = String.regex or error() +local sub_string = String.sub or error() +local Http = require "luan:http/Http.luan" +local Mail = require "luan:mail/Mail.luan" +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "Utils" + + +local Utils = {} + +Utils.domain = Http.domain or "admin.me.luan.software" + +Utils.server_domain = regex([[^admin\.(\w+\Q.luan.software\E)$]]).matches(Utils.domain) or error "invalid domain" + +Utils.sites_dir = uri(Http.dir).parent().parent() + +local send = Mail.sender{ + host = "mail.smtp2go.com" + port = 465 + username = "luan.admin2" + password = Config.mail_password or error() +}.send + +function Utils.send_mail(mail) + mail.From = mail.From or Utils.domain.."<monitor@luan.software>" + mail.To = mail.To or Config.email_to or error() + send(mail) +end + +function Utils.ssh(host,cmd) + local cmd = "ssh -t -oConnectTimeout=10 -oServerAliveInterval=10 -oBatchMode=yes -oStrictHostKeyChecking=no -p 14299 administrator@"..host.." '"..cmd.."'" + local con = uri("bash:"..cmd) + return con.read_text() +end + +local function last_modified_in_dir(dir) + local rtn = 0 + for _, child in ipairs(dir.children()) do + local lm = nil + if child.is_directory() then + lm = last_modified_in_dir(child) + elseif child.is_file() then + lm = child.last_modified() + end + if lm ~= nil and lm > rtn then + rtn = lm + end + end + return rtn +end +Utils.last_modified_in_dir = last_modified_in_dir + + +local luanhost_logs = uri "site:/private/local/logs/luanhost" +if not luanhost_logs.exists() then + local logs = uri("file:logs").canonical() + --logs.mkdir() -- must exist + if logs.exists() then + logs.symlink_from(luanhost_logs) + logger.info "linked to luanhost logs" + else + logger.error("logs dir doesn't exist") + end +end + + +return Utils