#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Programa para TCC em Análise e Desenvolvimento de Software - Faculdade SENAC
#Feito por André Gondim - andregondim@ubuntu.com
from os import system
import cx_Oracle
import os
from shutil import copyfile
class Configuracao(object):
#statics
pathNFE = '/uni5nfe/nfe_configuracoes.xml'
pathNFEbkp = '/uni5nfe/nfe_configuracoes.xml.bkp'
nfeIntra = '/uni5nfe/portal_uni5nfe/includes/config/conf_portal.xml'
nfeIntrabkp = '/uni5nfe/portal_uni5nfe/includes/config/conf_portal.xml.bkp'
pathWAR = '/unitnfe5/programas/tomcat/webapps/'
pathWARroot = '/root/uni5nfe.war'
linha0 = 'Fazendo a instalaçãoo do sistema de NF-e em Ubuntu e Oracle'
linha1 ='Uni5'
linha2 = 'Para suporte (51) 2111 1111 ou envie e-mail para suportenfe@uni5.com'
numero = 75
# constructor
def __init__(self,ipbanco = '', porta = '', sid = '', user = '', password = '', iplocal = '', usuario = '', senha = ''):
'''
Método para inicializar variáveis
'''
self.ipbanco = ipbanco
self.porta = porta
self.sid= sid
self.user = user
self.password = password
self.iplocal = iplocal
self.usuario = usuario
self.senha = senha
# functions
def ask(self, msg):
'''
Método para verificar valor nulo ou em branco
'''
prompt=''
while prompt == '':
try:
prompt = raw_input(msg)
prompt=prompt.replace(' ','')
except ValueError:
print 'Não pode ser branco/nulo'
return prompt
def do_update(self,strold, strnew, filename ):
"""
Função para efetuar substituições em arquivos.
"""
system('sed -i "s/%s/%s/g" %s' % (strold, strnew, filename))
def inicio(self):
'''
Método para mostrar entrada
'''
system('clear')
print '#'*numero
print '#'+linha0.center(numero)+'#'
print '#'+linha1.center(numero)+'#'
print '#'+linha2.center(numero)+'#'
print '#'*numero
print ''
print 'Para iniciar a configuração serão lhe pedidos alguns dados'
print ''
def menu(self):
'''
Método que pega as informações para instalação
'''
ipbanco = ask('IP onde o Oracle está instalado: ')
porta = ask('Qual a porta do banco, a padrão é 1521: ')
sid = ask('Qual o sid do banco, a padrão é xe: ')
user = ask('Qual o usuário para acesso ao banco: ')
password = ask('Qual a senha para %s: ' % user)
iplocal = ask('Qual o ip desta máquina: ')
print 'Confirmando'
copyfile(pathNFEbkp,pathNFE)
copyfile(pathIntrabkp,pathIntra)
print 'O ip é %s, a porta %s, o sid %s, o usuário %s, a senha %s e o ip local %s' % (ipbanco,porta,sid,user,password,iplocal)
#db = cx_Oracle.connect("%s/%s@%s:%s/%s" % (user,password,ip,porta,sid) )
#cursor = db.cursor()
def altera(self):
"""
Método que fará a alteração para a aplicação e o portal
"""
### mudar o ip do banco
do_update('ipbanco',ipbanco,pathNFE)
do_update('ipbanco',ipbanco,pathIntra)
### mudar a porta
do_update('porta',porta,pathNFE)
do_update('porta',porta,pathNFE)
### mudar o sid
do_update('sid',sid,pathNFE)
do_update('sid',sid,pathNFE)
### mudar usuário
do_update('user',user,pathNFE)
do_update('user',user,pathNFE)
### mudar senha
do_update('password',password,pathNFE)
do_update('password',password,pathNFE)
### mudar o ip local na Intra
do_update('iplocal',iplocal,pathIntra)
def sql(self):
'''
Método de conexão ao banco e alteração
'''
arquivo = open('/root/SQL.txt', 'r') ## open the file with sql to update the database
sql = arquivo.read() ## read all the sql needs
# print ('%s/%s@%s:%s/%s' % (user,password,ipbanco,porta,sid) )
db = cx_Oracle.connect('%s/%s@%s:%s/%s' % (user,password,ipbanco,porta,sid) )
for n in sql.split(';'):
try:
print n
cursor = db.cursor() ## open cursor
cursor.execute(n)
cursor.close() ## close cursor
# except ( Exception, e):
except Exception,e:
print str( e)
db.close() ## close connection
copyfile(pathWARroot,pathWAR)
def certificado(self,resposta):
'''
Caso queria mudar o certificado entrará em modo web, caso contrário fica em serviço
'''
do_update(web,service,pathNFE) if resposta == ('s' or 'S') else do_update(service,web,pathNFE)
#if __name__ == '__main__':
# inicio()
# menu()
# altera()
# sql()