diff --git a/RsyncUI.pro b/RsyncUI.pro
index fdc1433..9096888 100644
--- a/RsyncUI.pro
+++ b/RsyncUI.pro
@@ -1,4 +1,4 @@
-QT += core gui concurrent
+QT += core gui
QT += KItemViews
QT += KCompletion
QT += widgets
diff --git a/RsyncUI_fr_FR.ts b/RsyncUI_fr_FR.ts
index bffdbc0..15385e9 100644
--- a/RsyncUI_fr_FR.ts
+++ b/RsyncUI_fr_FR.ts
@@ -69,29 +69,24 @@
LoginDialog
-
- Requête RsyncUI
+ Requête RsyncUI
-
- Identifiant
+ Identifiant
-
- Entrez votre identifiant
+ Entrez votre identifiant
-
- Mot de passe
+ Mot de passe
-
- Entrez votre mot de passe
+ Entrez votre mot de passe
@@ -221,32 +216,32 @@
Paramètres
-
+ Ko
-
+ Mo
-
+ Go
-
+ To
-
+ Po
-
+ Client for rsync server<br><br>You click on file to enqueue it, and RyncUI Download one file a time<h3>Utilisation</h3>
@@ -279,92 +274,97 @@ Cliquez sur un fichier pour le supprimer de la file et une fenêtre de confirmat
Permet de quitter le programme
-
+ Chemin
-
+ Taille
-
+ Type
-
+ Date
-
+ Ko/s
-
+ Mo/s
-
+ Go/s
-
+ To/s
-
+ Po/s
-
+ Une liste de téléchargement existe, voulez-vous utiliser cette liste ? si non, elle sera effacée
-
+ &Quitter
-
+ Vous pouvez enregistrer la liste des téléchargements en cliquant sur "enregister"
-
+ Si vous sortez, les téléchargements seront arrêter.
Voulez-vous vraiment sortir ?
-
+ Le programme continue dans la boîte à miniatures. Pour quitter le programme cliquez sur l'icône <b>Quitter</b> ou dans les menu contextuel.
-
+
+
+ Mauvais mot de passe ou utilisateur
+
+
+ Le processus ne répond pas:
-
+ Le serveur n'existe pas
-
-
+
+ dossier
@@ -373,146 +373,161 @@ Voulez-vous vraiment sortir ?
Doc
-
+ Le document est déjà partiellement téléchargé. Voulez vous continuer le téléchargemnt ? Si non, il sera supprimer du dossier de destination
-
+ Le document est déjà téléchargé. Voulez-vous le télécharger à nouveau ? L'ancien fichier sera effacé
-
+ Le document est déjà en téléchargement
-
+ Démarrage du téléchargement
-
+ Terminé
-
+ Le processus rsync à planté
-
+ stoppé par l'utilisateur
-
+
Voulez-vous ré-essayer?
-
+ Téléchargement
-
- Requête RsyncUI
+ Requête RsyncUI
-
+ Nom du servcice caché
-
+ Version
-
+ <h2>Client pour serveur rsync</h2>
-
+ License
-
+ Auteur
-
+ Courriel
-
+ Code source
-
+
+
+ Choisissez l'utilisateur avec lequel vous voulez vous connecter ou entrez en un nouveau
+
+
+
+
+
+ Requête de mot de passe
+
+
+
+
+ Entrez votre mot de passe
+
+
+ Vous devez sélectionnez un service pour pouvoir sélectionnez un dossier par défaut
-
+ Choisissez un dossier où enregistrer le document
-
+ Voulez-vous arrêter le téléchargement et enlever ce fichier de la file de téléchargement ?
-
+ Voulez-vous enlever ce fichier de la file de téléchargement ?
-
+ o
-
+ Le processus échoué, soit le programme est manquant, soit vous n'avez pas l'autorisation de l'exécuter.
-
+ Le processus à planté après avoir démarré avec succès.
-
+ La fonction waitFor...() a dépassé la limite de temps, you pouvez essayer de la relancer.
-
+ Une erreur est survenue lors de l'envoi des données vers le processus. Le processus est peut être arrté ou il a fermé son canal d'entrée.
-
+ Une erreur est survenue lors de la lecturee de données, le processus est probablement arrêté.
-
+ Une erreur inconnue est survenue. C'est la valeur de retour par défaut de error().
@@ -520,87 +535,87 @@ Voulez-vous ré-essayer?
QTranslator
-
+ Succès. La command rsync s'est terminée sans erreurs.
-
+ Erreur de syntaxe ou d'usage. il y a un problème avec la synaxe de rsync ou avec les paramètres spécifiés.
-
+ Incompatibilité de protocole. Il y a eu un problème avec la version du protocole ou la négotiation avec le serveur rsync.
-
+ Erreurs dans la sélection des fichiers ou dossiers. il y a eu une problème avec le fichier/dossier source ou destination spécifié.
-
+ Action non suportée. Une tentative d'utiliser une action, ou une option, non supportée à été faite.
-
+ Erreur de démarrage du protocole client-seveur. Il ya eu une erreur en démarrant le protocole slient-serveur.
-
+ Le démon rsyncd n'arrive pas écrire dans son fichier de log.
-
+ Erreur d'entrée/sortie socket. Il y a eu une erreur d'entrée/sortie sur le socket.
-
+ Erreur de 'entrée/sortie. Il y a eu une erreur de lecture/écriture sur un fichier.
-
+ Erreur dans le protocole de flux de données de rsync.
-
+ Erreur avec les diagnostiques du programme.
-
+ Erreur dans le code IPC. IL y a eu une erreur dans la communication inter-processus.
-
+ Reçu les signaux SIGUSR1 ou SIGINT. Le processus rsync a été interrompu par un signal.
-
+ Erreurs retournées par waitpid().Une erreur est survenue pendant l'attente de la complétion du processus fils.
-
+ Erreur d'allocation des buffers mémoire.
-
+ Transfert partiel due à une erreur. La command rsync s'est terminée avec une erreur, mais des fichiers on été transférés avec succès.
-
+ Transfert partiel dû à la disparition des fichiers source. Des fichiers source ont disparu avec d'avoir été transférés.
diff --git a/mainwindow.cpp b/mainwindow.cpp
index e6a81da..10bcb42 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -383,7 +383,8 @@ bool MainWindow::testServicePresence(QString service, bool askPassword)
QStringList v;
QProcess *myProcess;
bool returnValue = false;
- QEventLoop loop;
+ int loop =0;
+ bool r = false;
cmd = "/usr/bin/rsync";
param << "--contimeout=10" << "-nq" << "--port=" + QString::number(this->connexion.port) << this->connexion.server + "::" + service;
@@ -405,9 +406,10 @@ bool MainWindow::testServicePresence(QString service, bool askPassword)
}
if (line.contains("auth failed"))
{
- if (askPassword)
+ if (askPassword == true and loop >=2 and r == true)
{
- getUserPassword(&this->connexion);
+ r = getUserPassword(&this->connexion);
+ loop++;
}
returnValue = true;
}
@@ -487,6 +489,8 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
bool readOk = false;
bool passwdOk = false;
int nChild = 0;
+ bool r;
+ static uint looping;
myProcess = new QProcess(this);
myProcess->setProcessChannelMode(QProcess::MergedChannels);
@@ -531,9 +535,23 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
}
if (line.contains("auth failed"))
{
- myProcess->readAllStandardOutput();
- getUserPassword(&this->connexion);
- return 0;
+ myProcess->readAllStandardOutput();
+ r = getUserPassword(&this->connexion);
+ if (looping <= 1)
+ {
+ this->rescan = true;
+ looping++;
+ }else
+ {
+ this->rescan = false;
+ looping = 0;
+ QMessageBox::warning(
+ this,
+ a.applicationName(),
+ tr("Authentication failed" )
+ );
+ }
+ return false;
}
// extracting name, size and if is dir/file
@@ -593,7 +611,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
testRsyncReturn(this, myProcess);
myProcess->close();
}
- return 0;
+ return false;
}
// Verify if server address is IP address
@@ -609,7 +627,7 @@ bool MainWindow::isIpAddress(QString server)
for (auto element : r)
{
elementN = element.toInt(&ok);
- if (elementN < 0 or elementN > 255 or ok == false)
+ if ((elementN < 0) or (elementN > 255) or ok == false)
{
return false;
}
@@ -777,8 +795,8 @@ void MainWindow::preparePopulateTree()
bool MainWindow::getUserPassword(Connexion * object)
{
QStringList logins;
- QString login;
- QString password;
+ QString login = "";
+ QString password = "";
QString server;
QString service;
int c;
@@ -820,10 +838,12 @@ bool MainWindow::getUserPassword(Connexion * object)
if (!ok or password.isEmpty())
{
password = "";
+ returnValue = false;
}
}else
{
password = getPassword(login);
+ returnValue = true;
}
object->user = login;
object->password = password;
@@ -955,6 +975,7 @@ void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, bool downloadD
{
scanDir(this->connexion.server, this->connexion.port, item, this->connexion.service + "/" + path +"/");
item->setExpanded(true);
+
}
}