view 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
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local ipairs = Luan.ipairs or error()
local try = Luan.try or error()
local Io = require "luan:Io.luan"
local uri = Io.uri or error()
local String = require "luan:String.luan"
local trim = String.trim or error()
local Table = require "luan:Table.luan"
local Mail = require "luan:mail/Mail.luan"
local Init = require "file:conf/Init.luan"
local Logging = require "luan:logging/Logging.luan"
local logger = Logging.logger "Utils"


local Utils = {}

function Utils.ssh(domain,cmd)
	local cmd = "ssh -oConnectTimeout=10 -oServerAliveInterval=10 -oBatchMode=yes -oStrictHostKeyChecking=no -p 14299 administrator@"..domain.." '"..cmd.."'"
	local con = uri("bash:"..cmd)
	return con.read_text()
end

function Utils.ssh_is_ok(domain)
	return try {
		function()
			local s = Utils.ssh(domain,"echo ssh-ok")
			if trim(s) ~= "ssh-ok" then
				error("check_ssh failed with: "..s)
			end
			return true
		end
		catch = function(e)
			logger.error(e.get_message())
			Utils.send_mail {
				subject = domain.." ssh_is_ok failed"
				body = ""
			}
			return false
		end
	}
end


java()
local MailHome = require "java:fschmidt.util.mail.MailHome"
local MailAddress = require "java:fschmidt.util.mail.MailAddress"
local PlainTextContent = require "java:fschmidt.util.mail.PlainTextContent"

function Utils.send_mail(mail)
	mail.from = mail.from or Init.domain.."<monitor@nabble.com>"
	mail.to = mail.to or Init.monitor_emails or error()

	local jmail = MailHome.newMail()
	jmail.setFrom( MailAddress.new(mail.from) )
	local mail_to = {}
	for _,to in ipairs(mail.to) do
		mail_to[#mail_to+1] = MailAddress.new(to)
	end
	jmail.setTo( Table.unpack(mail_to) )
	jmail.setSubject( mail.subject )
	jmail.setContent( PlainTextContent.new(mail.body) )
	MailHome.getDefaultSmtpServer().send(jmail)
end


return Utils