Bug de debug.txt corrigido
[gestor/gestor2.git] / anticrash.lua
bloba4fa29cba032bd44b187e800f0a9807936497965
1 --[[
2 Mod Gestor para Minetest
3 Gestor v1.0 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine)
5 Recebeste uma cópia da GNU Lesser General
6 Public License junto com esse software,
7 se não, veja em <http://www.gnu.org/licenses/>.
9 Funcionalidades do anticrash
12 gestor.anticrash = {}
14 -- Caminho da pasta de depurador (depug.txt)
15 local debug_path = io.popen"pwd":read"*all"
16 debug_path = string.split(debug_path, "\n")
17 debug_path = debug_path[1]
19 -- Caminho do mod
20 local modpath = minetest.get_modpath("gestor")
22 -- Caminho da pasta do executavel (minetest) orientado pela pasta do mod
23 local bin_path = modpath.."/../../bin"
25 -- Nome do mundo
26 local worldname = string.split(minetest.get_worldpath(), "worlds/")
27 worldname = worldname[table.maxn(worldname)]
29 -- Validar dados
30 --[[
31 Verificar a existencia de dados e
32 cria-los com valor padrão para que
33 estejam disponiveis
35 local verificar_dado = function(dado, padrao)
36 if gestor.bd:verif("anticrash", dado) ~= true then
37 gestor.bd:salvar("anticrash", dado, padrao)
38 end
39 end
41 -- Tabela de dados (que devem estar no banco de dados)
42 local dados = {
43 -- Dados Valor padrao
44 -- Sistema AntCrash
45 { "bin_path", "./../../bin"},
46 { "bin_args", "./minetest --server --worldname "..worldname},
47 { "interval", "300"},
48 { "quedas", "2"},
49 -- Sistema de Email
50 { "status_email", "false"},
51 { "from_email", "-"},
52 { "from_login", "-"},
53 { "from_smtp", "-"},
54 { "from_smtp_port", "-"},
55 { "from_subject", "Servidor reiniciado!"},
56 { "from_text", "Texto"},
57 { "from_subject_em", "ALERTA Servidor inoperante"},
58 { "from_text_em", "O servidor cai muito rapidamente. Anticrash foi interrompido para evitar danos"},
59 { "to_email", "-"},
60 -- Sistema de Backups
61 { "status_backup", "false"},
62 { "debug_path", debug_path},
63 { "world_path", minetest.get_worldpath()},
66 -- Verifica todos os dados
67 for _, v in ipairs(dados) do
68 verificar_dado(v[1], v[2])
69 end
71 -- Salvar um valor para o antcrash
72 gestor.anticrash.serializar = function(dado, valor)
73 if not dado or not valor then return end
74 os.execute("echo \""..valor.."\" > "..string.gsub(modpath, " ", "\\ ").."/dados/"..dado)
75 end
77 -- Salva todos os dados para o shell
78 gestor.anticrash.salvar_dados = function()
79 for _, v in ipairs(dados) do
80 gestor.anticrash.serializar(v[1], gestor.bd:pegar("anticrash", v[1]))
81 end
82 if gestor.bd:verif("anticrash", "from_senha") then -- separada
83 gestor.anticrash.serializar("from_senha", gestor.bd:pegar("anticrash", "from_senha"))
84 end
85 end
87 -- Atualiza os dados salvos por garantia
88 gestor.anticrash.salvar_dados()