forked from elvis-epx/alarme-intelbras
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreceptorip
executable file
·99 lines (77 loc) · 2.61 KB
/
receptorip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python3
import sys, os, configparser, re
from alarmeitbl.myeventloop import Timeout, Log
from alarmeitbl.tratador import *
from alarmeitbl.tratador_fotos import *
def usage():
print("Modo de usar: %s <arquivo de configuração>" % sys.argv[0])
sys.exit(1)
def parse_config():
if len(sys.argv) < 2:
usage()
cfgfile = configparser.ConfigParser()
cfgfile.read(sys.argv[1])
if 'receptorip' not in cfgfile:
usage()
cfg = cfgfile['receptorip']
return cfg
config = parse_config()
host = ("" + config['addr']).lower().strip()
port = int(config['port'])
caddr = ("" + config['caddr']).lower().strip()
cport = int(config['cport'])
senha = int(config['senha'])
tam_senha = int(config['tamanho'])
centrais = re.compile("" + config['centrais'])
maxconn = int(config['maxconn'])
logfile = config["logfile"]
Log.set_level(Log.INFO)
Log.set_file(logfile)
gancho_arquivo = config['gancho_arquivo']
gancho_central = config['gancho_central']
gancho_ev = config['gancho_ev']
gancho_msg = config['gancho_msg']
gancho_watchdog = config['gancho_watchdog']
folder_dlfoto = config['folder_dlfoto']
def watchdog(to_obj):
Log.info("receptor em funcionamento")
p = os.popen(gancho_watchdog, 'w')
p.close()
to_obj.reset(3600)
Timeout.new("watchdog", 15, watchdog)
Tratador.tratador_de_fotos = TratadorDeFotos(gancho_arquivo, folder_dlfoto, caddr, cport, senha, tam_senha)
def valida_central(id_central):
return centrais.match(id_central)
def centrais_conectadas():
n = 0
for h in Handler.items.values():
if isinstance(h, Tratador):
if h.central_identificada:
n += 1
return n
def valida_maxconn():
return centrais_conectadas() < maxconn
Tratador.valida_central = valida_central
Tratador.valida_maxconn = valida_maxconn
Tratador.gancho_arquivo = gancho_arquivo
Tratador.gancho_central = gancho_central
Tratador.gancho_ev = gancho_ev
Tratador.gancho_msg = gancho_msg
Tratador.gancho_watchdog = gancho_watchdog
ev = TCPServerEventLoop((host, port), TCPListener, Tratador)
def central_nao_conectada(to_obj):
if not centrais_conectadas():
if central_nao_conectada.alarme <= 0:
central_nao_conectada.alarme = 1
Log.info("nenhuma central conectada")
p = os.popen(gancho_central + " 1", 'w')
p.close()
else:
if central_nao_conectada.alarme > 0:
central_nao_conectada.alarme = 0
p = os.popen(gancho_central + " 0", 'w')
p.close()
to_obj.restart()
central_nao_conectada.alarme = 0
Timeout.new("central_nc", 3600, central_nao_conectada)
ev.loop()