Mercurial Hosting > nabble
comparison src/nabble/utils/Utils.luan @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
1 local Luan = require "luan:Luan.luan" | |
2 local error = Luan.error | |
3 local ipairs = Luan.ipairs or error() | |
4 local try = Luan.try or error() | |
5 local Io = require "luan:Io.luan" | |
6 local uri = Io.uri or error() | |
7 local String = require "luan:String.luan" | |
8 local trim = String.trim or error() | |
9 local Table = require "luan:Table.luan" | |
10 local Mail = require "luan:mail/Mail.luan" | |
11 local Init = require "file:conf/Init.luan" | |
12 local Logging = require "luan:logging/Logging.luan" | |
13 local logger = Logging.logger "Utils" | |
14 | |
15 | |
16 local Utils = {} | |
17 | |
18 function Utils.ssh(domain,cmd) | |
19 local cmd = "ssh -oConnectTimeout=10 -oServerAliveInterval=10 -oBatchMode=yes -oStrictHostKeyChecking=no -p 14299 administrator@"..domain.." '"..cmd.."'" | |
20 local con = uri("bash:"..cmd) | |
21 return con.read_text() | |
22 end | |
23 | |
24 function Utils.ssh_is_ok(domain) | |
25 return try { | |
26 function() | |
27 local s = Utils.ssh(domain,"echo ssh-ok") | |
28 if trim(s) ~= "ssh-ok" then | |
29 error("check_ssh failed with: "..s) | |
30 end | |
31 return true | |
32 end | |
33 catch = function(e) | |
34 logger.error(e.get_message()) | |
35 Utils.send_mail { | |
36 subject = domain.." ssh_is_ok failed" | |
37 body = "" | |
38 } | |
39 return false | |
40 end | |
41 } | |
42 end | |
43 | |
44 | |
45 java() | |
46 local MailHome = require "java:fschmidt.util.mail.MailHome" | |
47 local MailAddress = require "java:fschmidt.util.mail.MailAddress" | |
48 local PlainTextContent = require "java:fschmidt.util.mail.PlainTextContent" | |
49 | |
50 function Utils.send_mail(mail) | |
51 mail.from = mail.from or Init.domain.."<monitor@nabble.com>" | |
52 mail.to = mail.to or Init.monitor_emails or error() | |
53 | |
54 local jmail = MailHome.newMail() | |
55 jmail.setFrom( MailAddress.new(mail.from) ) | |
56 local mail_to = {} | |
57 for _,to in ipairs(mail.to) do | |
58 mail_to[#mail_to+1] = MailAddress.new(to) | |
59 end | |
60 jmail.setTo( Table.unpack(mail_to) ) | |
61 jmail.setSubject( mail.subject ) | |
62 jmail.setContent( PlainTextContent.new(mail.body) ) | |
63 MailHome.getDefaultSmtpServer().send(jmail) | |
64 end | |
65 | |
66 | |
67 return Utils |