Commit 8656350d165d6e27e1f233bb413892065acd98f5

Authored by rickinbsb
1 parent eb4e16dc
Exists in master

Merging WSCBot

development.ini
1 [WSCBot] 1 [WSCBot]
2 ###Url de acesso ao modulo wscserver (terminar com '/') 2 ###Url de acesso ao modulo wscserver (terminar com '/')
3 -url_wscserver: http://http://10.209.8.39/wscserver/ 3 +url_wscserver: http://localhost/wscserver/
4 4
5 ###Url de acesso ao Super Gerente 5 ###Url de acesso ao Super Gerente
6 -ip_superg: http://10.209.8.39/lbbulk/reg 6 +ip_superg: http://localhost/lbbulk/reg
7 7
8 ###Local do disco onde o arquivo será salvo temporariamente 8 ###Local do disco onde o arquivo será salvo temporariamente
9 filepath: /tmp/extract/ 9 filepath: /tmp/extract/
10 10
  11 +###Nome da fonte dos dados (precisa ser um nome já existente na base do super-gerente)
  12 +source_name: brlight
  13 +
  14 +###Local temporario para download de arquivos, comente para usar o diretorio temporario padrão do sistema
  15 +tmp_dir: /home/tmp
  16 +
11 ###Nome de usuário 17 ###Nome de usuário
12 username: rest 18 username: rest
13 19
@@ -18,7 +24,7 @@ senha: rest @@ -18,7 +24,7 @@ senha: rest
18 data: 01-01-1970 24 data: 01-01-1970
19 25
20 ###Tempo entre as leituras em busca de registros (em segundos) 26 ###Tempo entre as leituras em busca de registros (em segundos)
21 -sleep_time: 86400 27 +sleep_time: 60
22 28
23 [Daemon] 29 [Daemon]
24 stdin_path = /dev/null 30 stdin_path = /dev/null
production.ini
1 [WSCBot] 1 [WSCBot]
2 ###Url de acesso ao modulo wscserver (terminar com '/') 2 ###Url de acesso ao modulo wscserver (terminar com '/')
3 -url_wscserver: http://10.209.8.39/wscserver/ 3 +url_wscserver: http://localhost/wscserver/
4 4
5 ###Url de acesso ao Super Gerente 5 ###Url de acesso ao Super Gerente
6 -ip_superg: http://10.209.8.39/lbbulk/reg 6 +ip_superg: http://localhost/lbbulk/reg
7 7
8 ###Local do disco onde o arquivo será salvo temporariamente 8 ###Local do disco onde o arquivo será salvo temporariamente
9 -filepath: /tmp/extract/ 9 +filepath: /home/extract
  10 +
  11 +###Nome da fonte dos dados (precisa ser um nome já existente na base do super-gerente)
  12 +source_name: cacic_mpog
  13 +
  14 +###Local temporario para download de arquivos, comente para usar o diretorio temporario padrão do sistema
  15 +tmp_dir: /home/tmp
10 16
11 ###Nome de usuário 17 ###Nome de usuário
12 username: rest 18 username: rest
@@ -18,7 +24,7 @@ senha: rest @@ -18,7 +24,7 @@ senha: rest
18 data: 01-01-1970 24 data: 01-01-1970
19 25
20 ###Tempo entre as leituras em busca de registros (em segundos) 26 ###Tempo entre as leituras em busca de registros (em segundos)
21 -sleep_time: 3600 27 +sleep_time: 86400
22 28
23 [Daemon] 29 [Daemon]
24 stdin_path = /dev/null 30 stdin_path = /dev/null
wscbot/__main__.py
@@ -14,9 +14,11 @@ from app import main @@ -14,9 +14,11 @@ from app import main
14 from requests.exceptions import * 14 from requests.exceptions import *
15 import zipfile 15 import zipfile
16 import lockfile 16 import lockfile
  17 +import tempfile
17 18
  19 +# absolute path to .ini file
  20 +#ini_path='/srv/super-gerente/WSCBot/development.ini'
18 ini_path='/srv/bot-super-gerente/WSCBot/production.ini' 21 ini_path='/srv/bot-super-gerente/WSCBot/production.ini'
19 -#absolute path to .ini file  
20 22
21 23
22 24
@@ -29,10 +31,15 @@ def setconfig(config_file): @@ -29,10 +31,15 @@ def setconfig(config_file):
29 user = {} 31 user = {}
30 user['url_wscserver'] = config.get('WSCBot', 'url_wscserver') 32 user['url_wscserver'] = config.get('WSCBot', 'url_wscserver')
31 user['filepath'] = config.get('WSCBot', 'filepath') 33 user['filepath'] = config.get('WSCBot', 'filepath')
  34 + if config.has_option('WSCBot', 'tmp_dir'):
  35 + user['tmp_dir'] = config.get('WSCBot', 'tmp_dir')
  36 + else:
  37 + user['tmp_dir'] = tempfile.mkdtemp()
32 user['username'] = config.get('WSCBot', 'username') 38 user['username'] = config.get('WSCBot', 'username')
33 user['senha'] = config.get('WSCBot', 'senha') 39 user['senha'] = config.get('WSCBot', 'senha')
34 user['data'] = config.get('WSCBot', 'data') 40 user['data'] = config.get('WSCBot', 'data')
35 user['ip_superg'] = config.get('WSCBot', 'ip_superg') 41 user['ip_superg'] = config.get('WSCBot', 'ip_superg')
  42 + user['source_name'] = config.get('WSCBot', 'source_name')
36 user['sleep_time'] = int(config.get('WSCBot', 'sleep_time')) 43 user['sleep_time'] = int(config.get('WSCBot', 'sleep_time'))
37 user['stdin_path'] = config.get('Daemon', 'stdin_path') 44 user['stdin_path'] = config.get('Daemon', 'stdin_path')
38 user['stdout_path'] = config.get('Daemon', 'stdout_path') 45 user['stdout_path'] = config.get('Daemon', 'stdout_path')
@@ -57,7 +64,7 @@ class App(): @@ -57,7 +64,7 @@ class App():
57 timeron = time.time() 64 timeron = time.time()
58 logger.info ('Iniciando execução') 65 logger.info ('Iniciando execução')
59 try: 66 try:
60 - main(ip_servidor,username,senha,ip_superg,filepath,data) 67 + main(ip_servidor,username,senha,ip_superg,filepath,data,tmp_dir,source_name)
61 except (ConnectionError, Timeout): 68 except (ConnectionError, Timeout):
62 logger.error ('Não foi possivel estabelecer conexão com o servidor! ' + domain) 69 logger.error ('Não foi possivel estabelecer conexão com o servidor! ' + domain)
63 except zipfile.BadZipfile: 70 except zipfile.BadZipfile:
@@ -78,8 +85,10 @@ ip_servidor = user['url_wscserver'] @@ -78,8 +85,10 @@ ip_servidor = user['url_wscserver']
78 senha = user['senha'] 85 senha = user['senha']
79 ip_superg = user['ip_superg'] 86 ip_superg = user['ip_superg']
80 sleep_time = user['sleep_time'] 87 sleep_time = user['sleep_time']
  88 +source_name = user['source_name']
81 username = user['username'] 89 username = user['username']
82 filepath = user['filepath'] 90 filepath = user['filepath']
  91 +tmp_dir = user['tmp_dir']
83 data = user['data'] 92 data = user['data']
84 app = App() 93 app = App()
85 logger = logging.getLogger("WSCBot") 94 logger = logging.getLogger("WSCBot")
@@ -11,26 +11,29 @@ from wscbot.scripts import erro @@ -11,26 +11,29 @@ from wscbot.scripts import erro
11 from wscbot.scripts import rotinas 11 from wscbot.scripts import rotinas
12 from wscbot.scripts.zipparser import ziphandler 12 from wscbot.scripts.zipparser import ziphandler
13 13
14 -def main(ip_servidor,username,senha,ip_superg,filepath,data): 14 +
  15 +
  16 +def main(ip_servidor,username,senha,ip_superg,filepath,data,tmp_dir,
  17 + source_name):
15 """ 18 """
16 - Envia uma requisição GET HTTP para o endereço cadastrado,  
17 - fornecendo como parâmetros da requisição o usuário e senha informados;  
18 - Pega a resposta da requisição e escreve num arquivo;  
19 - Criptografa o conteúdo do arquivo com base em uma chave compartilhada com o Super Gerente;  
20 - Envia o arquivo criptografado para o Super Gerente;  
21 - Registra a data do envio e o resultado da comunicação. 19 + Envia uma requisição GET HTTP para o endereço cadastrado fornecendo
  20 + como parâmetros da requisição o usuário e senha informados, pega a
  21 + resposta da requisição e escreve num arquivo. Criptografa o conteúdo
  22 + do arquivo com base em uma chave compartilhada com o Super Gerente.
  23 + Envia o arquivo criptografado para o Super Gerente e registra a data
  24 + do envio e o resultado da comunicação.
22 """ 25 """
23 26
24 # Faz a requisição do arquivo zip 27 # Faz a requisição do arquivo zip
25 zip_path = req.req(ip_servidor, filepath) 28 zip_path = req.req(ip_servidor, filepath)
26 29
27 - dicionario = ziphandler(zip_path) 30 + dicionario = ziphandler(zip_path, tmp_dir)
28 for arquivo in dicionario: 31 for arquivo in dicionario:
29 logger.debug('Inicio do envio de dados') 32 logger.debug('Inicio do envio de dados')
30 coleta = json.loads(dicionario[arquivo])['results'] 33 coleta = json.loads(dicionario[arquivo])['results']
31 for registro in coleta: 34 for registro in coleta:
  35 + registro['name_source'] = source_name
32 registro = json.dumps(registro) 36 registro = json.dumps(registro)
33 -  
34 f = post(ip_superg,data={'json_reg':registro}) 37 f = post(ip_superg,data={'json_reg':registro})
35 erro.is_error_p(f) 38 erro.is_error_p(f)
36 39
wscbot/scripts/zipparser.py
@@ -3,13 +3,12 @@ @@ -3,13 +3,12 @@
3 3
4 import zipfile 4 import zipfile
5 import logging 5 import logging
6 -import tempfile  
7 import json 6 import json
8 import os 7 import os
9 8
10 from wscbot.scripts.tratamento import t_dados 9 from wscbot.scripts.tratamento import t_dados
11 10
12 -def ziphandler(filename): 11 +def ziphandler(filename, tmp_dir):
13 """ 12 """
14 Receive a zip file and parse one file at a time, returning a collection of parsed files. 13 Receive a zip file and parse one file at a time, returning a collection of parsed files.
15 """ 14 """
@@ -17,7 +16,6 @@ def ziphandler(filename): @@ -17,7 +16,6 @@ def ziphandler(filename):
17 z_root = zipfile.ZipFile(filename) 16 z_root = zipfile.ZipFile(filename)
18 17
19 # Create a temp dir and unzip file contents 18 # Create a temp dir and unzip file contents
20 - tmp_dir = tempfile.mkdtemp()  
21 19
22 # registros = { 20 # registros = {
23 # 'import_error' : [], 21 # 'import_error' : [],