def run(self): while self.keepGoing: if self.active == True: try: if self.parent.last_synchro == None: # Lance une synchro quelques secondes après le démarrage if self.parent.synchro_ouverture == True: self.parent.last_synchro = datetime.datetime.now() time.sleep(3) self.start_synchro = True else: self.parent.last_synchro = datetime.datetime.now() else: # Vérifie si une synchro est nécessaire selon le délai choisi if datetime.datetime.now( ) >= self.GetHeureProchaineSynchro(): self.start_synchro = True # Lancement de la procédure de synchronisation if self.start_synchro == True and self.synchro_en_cours == False: self.start_synchro = False # Mémorise l'heure de la dernière synchro self.parent.last_synchro = datetime.datetime.now() # Effectue la synchro self.parent.SetImage("upload") self.synchro_en_cours = True synchro = UTILS_Portail_synchro.Synchro( log=self.parent) synchro.Synchro_totale() self.synchro_en_cours = False self.parent.SetImage("on") self.parent.MAJ_bouton() except Exception, err: if not str(err).startswith("The C++ part"): raise # Attends 1 seconde time.sleep(1)
self.index = 0 # Transfert local if self.dict_parametres["hebergement_type"] == 0 : dest_repertoire = self.dict_parametres["hebergement_local_repertoire"] self.TransfertRepertoire(path=source_repertoire, destpath=dest_repertoire, nbre_total=nbreFichiers+5, liste_exclusions=liste_exclusions) # Transfert FTP if self.dict_parametres["hebergement_type"] == 1 : self.TransfertRepertoire(path=source_repertoire, ftp=ftp, nbre_total=nbreFichiers+5, liste_exclusions=liste_exclusions) # Transfert SSH if self.dict_parametres["hebergement_type"] == 2 : self.TransfertRepertoire(path=source_repertoire, ftp=ftp, nbre_total=nbreFichiers+5, liste_exclusions=liste_exclusions) synchro = UTILS_Portail_synchro.Synchro(self.dict_parametres, log=self.parent) # Envoi du fichier de config keepGoing, skip = self.dlgprogress.Update(97, _(u"Installation du fichier de configuration en cours...")) synchro.Upload_config(ftp=ftp) time.sleep(4) # Démarrage du serveur ici si serveur autonome if self.server_ctrl != None and self.dict_parametres["serveur_type"] == 0 and self.server_ctrl.GetServerStatus() == False: keepGoing, skip = self.dlgprogress.Update(98, _(u"Tentative de lancement du serveur Connecthys...")) self.server_ctrl.Demarrer_serveur(event=None) # Demande un upgrade de l'application keepGoing, skip = self.dlgprogress.Update(99, _(u"Demande la mise à jour de l'application...")) synchro.Upgrade_application()
def Upload(self, source_repertoire=""): # Récupération du nombre de fichiers à transférer nbreFichiers = GetNbreFichiers(source_repertoire) # Initialisation pour transfert local if self.dict_parametres["hebergement_type"] == 0: keepGoing, skip = self.dlgprogress.Update( 1, _(u"Préparation de la copie...")) # Création du répertoire s'il n'existe pas localrep = self.dict_parametres["hebergement_local_repertoire"] try: os.makedirs(localrep) except Exception as e: print(e) keepGoing, skip = self.dlgprogress.Update( 2, _(u"La copie va commencer...")) ftp = None # Initialisation pour transfert FTP if self.dict_parametres["hebergement_type"] == 1: keepGoing, skip = self.dlgprogress.Update( 1, _(u"Connexion FTP en cours...")) ftp = ftplib.FTP(self.dict_parametres["ftp_serveur"], self.dict_parametres["ftp_utilisateur"], self.dict_parametres["ftp_mdp"]) # Création du répertoire s'il n'existe pas try: ftp.mkd(self.dict_parametres["ftp_repertoire"]) except Exception as e: # ignore "directory already exists" if not e.args[0].startswith('550'): raise ftp.cwd(self.dict_parametres["ftp_repertoire"]) keepGoing, skip = self.dlgprogress.Update( 2, _(u"Connexion FTP effectuée...")) # Initialisation pour un transfert SSH if self.dict_parametres["hebergement_type"] == 2: keepGoing, skip = self.dlgprogress.Update( 1, _(u"Connexion SSH/SFTP en cours...")) try: ftp = self.server_ctrl.ssh.open_sftp() except Exception as err: print(err) self.parent.EcritLog(_(u"[ERREUR] %s") % err) raise # Création du répertoire s'il n'existe pas try: ftp.mkdir("/" + self.dict_parametres["ssh_repertoire"]) except Exception as e: pass # ignore "directory already exists" #if not e.args[0].startswith('550'): # raise ftp.chdir("/" + self.dict_parametres["ssh_repertoire"]) keepGoing, skip = self.dlgprogress.Update( 2, _(u"Connexion SSH/SFTP effectuée...")) # Recherche le numéro de version de l'application déjà installée try: # ATTENTION: ne peut fonctionner que si Connecthys est lancé if self.dict_parametres["serveur_type"] == 0: url = self.dict_parametres["url_connecthys"] if self.dict_parametres["serveur_type"] == 1: url = self.dict_parametres[ "url_connecthys"] + "/" + self.dict_parametres[ "serveur_cgi_file"] if self.dict_parametres["serveur_type"] == 2: url = self.dict_parametres["url_connecthys"] url += "/get_version" # Récupération des données au format json req = Request(url) reponse = urlopen(req) page = reponse.read() data = json.loads(page) version_ancienne = data["version_str"] except Exception as err: print("ERREUR dans recuperation du numero de version :", err) version_ancienne = None # Recherche des exclusions if version_ancienne == None: liste_exclusions = [] else: # Importation de la liste des exclusions dans le répertoire source fichier = open(os.path.join(source_repertoire, "versions.txt"), "r") lignes = fichier.readlines() fichier.close() liste_versions = LectureFichierVersion(lignes) liste_exclusions = GetExclusions(liste_versions=liste_versions, version_ancienne=version_ancienne) print("liste_exclusions=", liste_exclusions) # nomFichier = "versions.py" # chemin = os.path.join(source_repertoire, "application") # sys.path.append(chemin) # versions = importlib.import_module(nomFichier.replace(".py", "")) # liste_exclusions = GetExclusions(liste_versions=versions.VERSIONS, version_ancienne=version_ancienne) # Envoi des données self.index = 0 # Transfert local if self.dict_parametres["hebergement_type"] == 0: dest_repertoire = self.dict_parametres[ "hebergement_local_repertoire"] self.TransfertRepertoire(path=source_repertoire, destpath=dest_repertoire, nbre_total=nbreFichiers + 5, liste_exclusions=liste_exclusions) # Transfert FTP if self.dict_parametres["hebergement_type"] == 1: self.TransfertRepertoire(path=source_repertoire, ftp=ftp, nbre_total=nbreFichiers + 5, liste_exclusions=liste_exclusions) # Transfert SSH if self.dict_parametres["hebergement_type"] == 2: self.TransfertRepertoire(path=source_repertoire, ftp=ftp, nbre_total=nbreFichiers + 5, liste_exclusions=liste_exclusions) synchro = UTILS_Portail_synchro.Synchro(self.dict_parametres, log=self.parent) # Envoi du fichier de config keepGoing, skip = self.dlgprogress.Update( 97, _(u"Installation du fichier de configuration en cours...")) synchro.Upload_config(ftp=ftp) time.sleep(4) # Démarrage du serveur ici si serveur autonome if self.server_ctrl != None and self.dict_parametres[ "serveur_type"] == 0 and self.server_ctrl.GetServerStatus( ) == False: keepGoing, skip = self.dlgprogress.Update( 98, _(u"Tentative de lancement du serveur Connecthys...")) self.server_ctrl.Demarrer_serveur(event=None) # Demande un upgrade de l'application keepGoing, skip = self.dlgprogress.Update( 99, _(u"Demande la mise à jour de l'application...")) synchro.Upgrade_application() # Fermeture du FTP if self.dict_parametres["hebergement_type"] == 1: ftp.quit() # Fermeture du SFTP if self.dict_parametres["hebergement_type"] == 2: ftp.close()