daily pastebin goal
53%
SHARE
TWEET

Untitled

a guest Jun 5th, 2017 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os
  2. import sys
  3. import getopt
  4. import subprocess
  5. import stat
  6. import shutil
  7. import check
  8. import commands
  9. from PyQt4 import *
  10. from PyQt4.QtCore import *
  11. from connection import Connection
  12. import color_console as cons
  13. import copy
  14.  
  15.  
  16.  
  17. class Inst(QtCore.QObject):
  18.     def __init__(self):
  19.         QtCore.QObject.__init__(self)
  20.         self.confInstaller()
  21.        
  22.         QtCore.QObject.connect(self,QtCore.SIGNAL("testSignal"),self.update)
  23.  
  24.        
  25.     def confInstaller(self):
  26.         '''global tmpPathConfFile,tmpPath,inputConfFileName,outputInstallerFile,inputData,default_colors,default_bg'''
  27.         self.tmpPathConfFile = open("installerConf.dat", "r")
  28.         self.tmpPath=os.path.expandvars(self.tmpPathConfFile.readline().split("=")[-1].split(";")[0])
  29.         self.inputConfFileName=os.path.normcase(self.tmpPath+'\\conf.dat')
  30.         self.inputData = {"inputInstallScript":None,"inputUninstallScript":None,"dirApp":None,"dirMysql":None,"newRootPass":None,"defaultDatabase":None,"applicationDatabase":None,"userRoot":None,"oldRootPass":None}
  31.         self.default_colors = cons.get_text_attr()
  32.         self.default_bg = self.default_colors & 0x0070
  33.         self.readConf()
  34.    
  35.  
  36.     def setInstColor(self):
  37.         cons.set_text_attr(cons.FOREGROUND_GREEN | self.default_bg |
  38.                         cons.FOREGROUND_INTENSITY)
  39.    
  40.     def mysqlDirectoryExists(self):
  41.         res=0
  42.         if(os.path.isdir(self.inputData["dirMysql"])):
  43.             res=1
  44.         return res
  45.    
  46.     def printHeader(self,str):
  47.         cons.set_text_attr(cons.FOREGROUND_RED | self.default_bg |
  48.                         cons.FOREGROUND_INTENSITY)
  49.         print str
  50.         cons.set_text_attr(self.default_colors)
  51.    
  52.     def printWarning(self,str):
  53.         cons.set_text_attr(cons.FOREGROUND_YELLOW  | self.default_bg |
  54.                         cons.FOREGROUND_INTENSITY)
  55.         print str
  56.         cons.set_text_attr(self.default_colors)
  57.    
  58.    
  59.     def installMysql(self):
  60.         self.printHeader("Instalando MySQL...")
  61.         self.setInstColor()
  62.         if(self.mysqlDirectoryExists()==1):
  63.                 self.printWarning('Atencion: se borraran los archivos de este directorio.')
  64.                 self.removeMysql()
  65.         os.system('mkdir "'+ self.inputData["dirMysql"]+'"')
  66.         os.system('xcopy "mysql\*.*" "'+ self.inputData["dirMysql"]+'" /e')
  67.  
  68.  
  69.     def installApp(self):
  70.         self.printHeader("Instalando Aplicacion...")
  71.                      
  72.         if(self.appDirectoryExists()==1):
  73.                 self.printWarning("EL directorio no esta vacio. Se borrara el contenido.")
  74.                 self.removeApp()
  75.         self.setInstColor()
  76.         os.system('mkdir "' + self.inputData["dirApp"]+'"')
  77.         os.system('xcopy "app\*.*" "'+ self.inputData["dirApp"]+'" /e')
  78.         cons.set_text_attr(self.default_colors)
  79.    
  80.  
  81.    
  82.     def appDirectoryExists(self):
  83.         res=0
  84.         if(os.path.isdir(self.inputData["dirApp"])):
  85.             res=1
  86.         return res
  87.    
  88.     def installService(self):
  89.         self.printHeader("Instalando Servicio MySQL...")
  90.         self.setInstColor()
  91.         os.system('"'+self.inputData["dirMysql"]+'\\bin\\mysqld" --install')
  92.         cons.set_text_attr(self.default_colors)
  93.  
  94.    
  95.     def runService(self):
  96.         self.printHeader("Iniciando Servicio MySQL...")
  97.         self.setInstColor()
  98.         os.system('NET START MySql')
  99.         cons.set_text_attr(self.default_colors)
  100.  
  101.  
  102.     def stopService(self):
  103.         self.printHeader("Deteniendo Servicio MySQL...")
  104.         self.setInstColor()
  105.         os.system('NET STOP MySQL')
  106.         cons.set_text_attr(self.default_colors)
  107.  
  108.            
  109.    
  110.     def removeMysql(self):
  111.         self.printHeader("Eliminando archivos de MySQL...")
  112.         shutil.rmtree(self.inputData["dirMysql"])
  113.  
  114.    
  115.  
  116.     def removeApp(self):
  117.         self.printHeader("Desinstalando Aplicacion...")
  118.         shutil.rmtree(self.inputData["dirApp"])
  119.  
  120.    
  121.     def removeMysqlService(self):
  122.         self.printHeader("Desinstalando Servicio MySQL...")
  123.         os.system('"'+check.findMysqlPath() +'\\mysqld" --remove')
  124.  
  125.    
  126.     def removeAppDB(self):
  127.         self.printHeader("Eliminando Base de Datos...")
  128.         self.setInstColor()
  129.         os.system('"'+check.findMysqlPath()+'\\mysql.exe" -u '+self.inputData["userRoot"]+' --password='+self.inputData["newRootPass"]+' '+self.inputData["applicationDatabase"]+ '< '+self.inputData["inputUninstallScript"])
  130.         os.system('NET STOP MySql')
  131.         os.system('NET START MySql')
  132.         cons.set_text_attr(default_colors)
  133.  
  134.    
  135.     def createShortCut(self):
  136.         self.printHeader("Creando acceso directo en el Escritorio...")
  137.         self.setInstColor()
  138.         if(os.path.isdir(os.path.expandvars("%USERPROFILE%")+"\\Escritorio")):
  139.             print 'SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Escritorio\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"'
  140.             os.system('SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Escritorio\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"' )
  141.         else:
  142.             os.system('SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Desktop\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"'  )
  143.         cons.set_text_attr(self.default_colors)
  144.    
  145.     def confRoot(self):
  146.         self.printHeader("Configurando usuario root...")
  147.         self.setInstColor()
  148.         conn=Connection(dbName=self.inputData["defaultDatabase"], dbUser=self.inputData["userRoot"], dbPass=self.inputData["oldRootPass"])
  149.         conn.open()
  150.         conn.update("UPDATE "+self.inputData["defaultDatabase"]+".user SET Password=PASSWORD("+self.mysqlString(self.inputData["newRootPass"])+") WHERE User='"+self.inputData["userRoot"]+"';")
  151.         conn.close()
  152.         os.system('NET STOP MySql')
  153.         os.system('NET START MySql')
  154.         cons.set_text_attr(self.default_colors)
  155.  
  156.            
  157.     def confDB(self):
  158.         self.printHeader("Configurando base de datos de la aplicacion...")
  159.         self.setInstColor()
  160.         '''
  161.         conn=Connection(dbName=inputData["defaultDatabase"], dbUser=inputData["userRoot"], dbPass=inputData["newRootPass"])
  162.         '''
  163.         os.system('"'+check.findMysqlPath()+'\\mysql.exe" -u '+self.inputData["userRoot"]+' --password='+self.inputData["newRootPass"]+' '+self.inputData["applicationDatabase"]+ '< ..\\bd\\'+self.inputData["inputInstallScript"])
  164.         os.system('NET STOP MySql')
  165.         os.system('NET START MySql')
  166.         cons.set_text_attr(self.default_colors)
  167.    
  168.  
  169.  
  170.    
  171.     def readConf(self):
  172.  
  173.         self.inputConfFile = open(self.inputConfFileName,"r")
  174.  
  175.         for line in self.inputConfFile.readlines():
  176.             if(line.find("dirMysql")==0):
  177.                 self.inputData["dirMysql"]=line.split("=")[-1].split(";")[0]   
  178.             if(line.find("newRootPass")==0):
  179.                 self.inputData["newRootPass"]=line.split("=")[-1].split(";")[0]
  180.             if(line.find("defaultDatabase")==0):
  181.                 self.inputData["defaultDatabase"]=line.split("=")[-1].split(";")[0]
  182.             if(line.find("applicationDatabase")==0):
  183.                 self.inputData["applicationDatabase"]=line.split("=")[-1].split(";")[0]
  184.             if(line.find("userRoot")==0):
  185.                 self.inputData["userRoot"]=line.split("=")[-1].split(";")[0]   
  186.             if(line.find("oldRootPass")==0):
  187.                 self.inputData["oldRootPass"]=line.split("=")[-1].split(";")[0]
  188.             if(line.find("inputUninstallScript")==0):
  189.                 self.inputData["inputUninstallScript"]=line.split("=")[-1].split(";")[0]   
  190.             if(line.find("dirApp")==0):
  191.                 self.inputData["dirApp"]=line.split("=")[-1].split(";")[0] 
  192.             if(line.find("inputInstallScript")==0):
  193.                 self.inputData["inputInstallScript"]=line.split("=")[-1].split(";")[0] 
  194.            
  195.            
  196.         '''for key in self.inputData.keys():
  197.             if(self.inputData[key]==None):
  198.                 print "Parametros de archivo de configuracion incorrectos"
  199.                 sys.exit()'''
  200.  
  201.  
  202.     def mysqlString(self,str):
  203.         return "'"+str+"'"
  204.            
  205.     @QtCore.pyqtSlot()
  206.     def update(self):
  207.         print "Llego la senal"
  208.        
  209.    
  210.  
  211.     def install(self):
  212.         self.emit(SIGNAL("testSignal"))
  213.         '''
  214.    
  215.         if(not check.isBDServiceInstalled()):
  216.             self.installMysql()
  217.             self.installService()
  218.             self.runService()
  219.             self.confRoot()
  220.  
  221.         else:
  222.             if(not check.isBDServiceRunning()):
  223.                 self.runService()
  224.  
  225.    
  226.         self.installApp()
  227.         self.createShortCut()
  228.         self.confDB()'''
  229.    
  230.  
  231.  
  232.     def uninstall(self):   
  233.         self.removeAppDB()
  234.         self.removeApp()
  235.         self.stopService()
  236.         self.removeMysqlService()
  237.         self.removeMysql()
  238.         '''sys.exit();'''
  239.    
  240. '''
  241. def printHelp():
  242.         print "Modo de uso:"
  243.         print "\t -i o --install: instalar aplicacion."
  244.         print "\t -u o --uninstall: desinstalar aplicacion "
  245. '''
  246.  
  247. '''if __name__ == "__main__":
  248.     import sys
  249.     app = QtGui.QApplication(sys.argv)
  250.     try:              
  251.         opts,args = getopt.getopt(sys.argv[1:], "iu", ["install", "uninstall"])
  252.  
  253.         confInstaller()
  254.         inst=0
  255.         uninst=0
  256.         for o,a in opts:
  257.             if( o in ("-i", "--install")):
  258.                 install()
  259.             else:
  260.                 uninstall()
  261.         printHelp()
  262.         sys.exit()
  263.    
  264.                
  265.     except getopt.GetoptError:
  266.         printHelp()
  267.         sys.exit()
  268.  
  269.     sys.exit(app.exec_())
  270. '''
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top