Helpviewer/Sync/FtpSyncHandler.py

Wed, 01 Jan 2014 14:38:45 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 01 Jan 2014 14:38:45 +0100
changeset 3160
209a07d7e401
parent 3035
36e9f388958b
child 3178
f25fc1364c88
child 3190
a9a94491c4fd
permissions
-rw-r--r--

Updated copyright for 2014.

1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
3160
209a07d7e401 Updated copyright for 2014.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3035
diff changeset
3 # Copyright (c) 2012 - 2014 Detlev Offenbach <detlev@die-offenbachs.de>
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a synchronization handler using FTP.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
10 import ftplib
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
11 import io
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
12
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
13 from PyQt4.QtCore import pyqtSignal, QTimer, QFileInfo, QCoreApplication, \
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
14 QByteArray
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
15
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
16 from E5Network.E5Ftp import E5Ftp, E5FtpProxyType, E5FtpProxyError
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .SyncHandler import SyncHandler
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 import Helpviewer.HelpWindow
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import Preferences
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
24 from Utilities.FtpUtilities import FtpDirLineParser, FtpDirLineParserError
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
25
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class FtpSyncHandler(SyncHandler):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing a synchronization handler using FTP.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
31 @signal syncStatus(type_, message) emitted to indicate the synchronization
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
32 status (string one of "bookmarks", "history", "passwords",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
33 "useragents" or "speeddial", string)
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
34 @signal syncError(message) emitted for a general error with the error
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
35 message (string)
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
36 @signal syncMessage(message) emitted to send a message about
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
37 synchronization (string)
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
38 @signal syncFinished(type_, done, download) emitted after a
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
39 synchronization has finished (string one of "bookmarks", "history",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
40 "passwords", "useragents" or "speeddial", boolean, boolean)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
42 syncStatus = pyqtSignal(str, str)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 syncError = pyqtSignal(str)
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
44 syncMessage = pyqtSignal(str)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 syncFinished = pyqtSignal(str, bool, bool)
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 def __init__(self, parent=None):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 Constructor
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @param parent reference to the parent object (QObject)
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 super().__init__(parent)
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__state = "idle"
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
56 self.__forceUpload = False
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
57 self.__connected = False
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
1695
7b115f986d48 Added capability to synchronize bookmarks, history, passwords and user agent settings via a shared directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1681
diff changeset
59 self.__remoteFilesFound = {}
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
61 def initialLoadAndCheck(self, forceUpload):
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Public method to do the initial check.
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
64
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
65 @keyparam forceUpload flag indicating a forced upload of the files
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
66 (boolean)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if not Preferences.getHelp("SyncEnabled"):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 return
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__state = "initializing"
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
72 self.__forceUpload = forceUpload
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
74 self.__dirLineParser = FtpDirLineParser()
1695
7b115f986d48 Added capability to synchronize bookmarks, history, passwords and user agent settings via a shared directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1681
diff changeset
75 self.__remoteFilesFound = {}
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
1638
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
77 self.__idleTimer = QTimer(self)
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
78 self.__idleTimer.setInterval(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
79 Preferences.getHelp("SyncFtpIdleTimeout") * 1000)
1638
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
80 self.__idleTimer.timeout.connect(self.__idleTimeout)
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
81
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
82 self.__ftp = E5Ftp()
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 # do proxy setup
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
85 if not Preferences.getUI("UseProxy"):
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
86 proxyType = E5FtpProxyType.NoProxy
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
87 else:
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
88 proxyType = Preferences.getUI("ProxyType/Ftp")
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
89 if proxyType != E5FtpProxyType.NoProxy:
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
90 self.__ftp.setProxy(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
91 proxyType,
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
92 Preferences.getUI("ProxyHost/Ftp"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
93 Preferences.getUI("ProxyPort/Ftp"))
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
94 if proxyType != E5FtpProxyType.NonAuthorizing:
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
95 self.__ftp.setProxyAuthentication(
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
96 Preferences.getUI("ProxyUser/Ftp"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
97 Preferences.getUI("ProxyPassword/Ftp"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
98 Preferences.getUI("ProxyAccount/Ftp"))
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
99
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
100 QTimer.singleShot(0, self.__doFtpCommands)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
101
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
102 def __doFtpCommands(self):
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
103 """
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
104 Private slot executing the sequence of FTP commands.
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
105 """
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
106 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
107 ok = self.__connectAndLogin()
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
108 if ok:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
109 self.__changeToStore()
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
110 self.__ftp.retrlines("LIST", self.__dirListCallback)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
111 self.__initialSync()
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
112 self.__state = "idle"
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
113 self.__idleTimer.start()
2077
68a34718a0ce Made the first set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2076
diff changeset
114 except (ftplib.all_errors + (E5FtpProxyError,)) as err:
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
115 self.syncError.emit(str(err))
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
116
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
117 def __connectAndLogin(self):
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
118 """
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
119 Private method to connect to the FTP server and log in.
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
121 @return flag indicating a successful log in (boolean)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
122 """
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
123 self.__ftp.connect(
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
124 Preferences.getHelp("SyncFtpServer"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
125 Preferences.getHelp("SyncFtpPort"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
126 timeout=5)
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
127 self.__ftp.login(
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
128 Preferences.getHelp("SyncFtpUser"),
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
129 Preferences.getHelp("SyncFtpPassword"))
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
130 self.__connected = True
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
131 return True
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def __changeToStore(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 Private slot to change to the storage directory.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
137 This action will create the storage path on the server, if it
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
138 does not exist. Upon return, the current directory of the server
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
139 is the sync directory.
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
141 storePathList = \
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
142 Preferences.getHelp("SyncFtpPath").replace("\\", "/").split("/")
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
143 if storePathList[0] == "":
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
144 storePathList.pop(0)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
145 while storePathList:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
146 path = storePathList[0]
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
147 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
148 self.__ftp.cwd(path)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
149 except ftplib.error_perm as err:
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
150 code = err.args[0].strip()[:3]
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
151 if code == "550":
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
152 # path does not exist, create it
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
153 self.__ftp.mkd(path)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
154 self.__ftp.cwd(path)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 else:
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
156 raise
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
157 storePathList.pop(0)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
159 def __dirListCallback(self, line):
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
161 Private slot handling the receipt of directory listing lines.
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
162
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
163 @param line the received line of the directory listing (string)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
165 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
166 urlInfo = self.__dirLineParser.parseLine(line)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
167 except FtpDirLineParserError:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
168 # silently ignore parser errors
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
169 urlInfo = None
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
171 if urlInfo and urlInfo.isValid() and urlInfo.isFile():
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
172 if urlInfo.name() in self._remoteFiles.values():
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
173 self.__remoteFilesFound[urlInfo.name()] = \
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
174 urlInfo.lastModified()
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
175
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
176 QCoreApplication.processEvents()
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
1695
7b115f986d48 Added capability to synchronize bookmarks, history, passwords and user agent settings via a shared directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1681
diff changeset
178 def __downloadFile(self, type_, fileName, timestamp):
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
179 """
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
180 Private method to downlaod the given file.
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
181
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
182 @param type_ type of the synchronization event (string one
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
183 of "bookmarks", "history", "passwords", "useragents" or
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
184 "speeddial")
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
185 @param fileName name of the file to be downloaded (string)
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
186 @param timestamp time stamp in seconds of the file to be downloaded
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
187 (integer)
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
188 """
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
189 self.syncStatus.emit(type_, self._messages[type_]["RemoteExists"])
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
190 buffer = io.BytesIO()
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
191 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
192 self.__ftp.retrbinary(
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
193 "RETR {0}".format(self._remoteFiles[type_]),
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
194 lambda x: self.__downloadFileCallback(buffer, x))
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
195 ok, error = self.writeFile(
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
196 QByteArray(buffer.getvalue()), fileName, type_, timestamp)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
197 if not ok:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
198 self.syncStatus.emit(type_, error)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
199 self.syncFinished.emit(type_, ok, True)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
200 except ftplib.all_errors as err:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
201 self.syncStatus.emit(type_, str(err))
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
202 self.syncFinished.emit(type_, False, True)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
203
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
204 def __downloadFileCallback(self, buffer, data):
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
205 """
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
206 Private method receiving the downloaded data.
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
207
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
208 @param buffer reference to the buffer (io.BytesIO)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
209 @param data byte string to store in the buffer (bytes)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
210 @return number of bytes written to the buffer (integer)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
211 """
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
212 res = buffer.write(data)
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
213 QCoreApplication.processEvents()
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
214 return res
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
215
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
216 def __uploadFile(self, type_, fileName):
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
217 """
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
218 Private method to upload the given file.
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
219
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
220 @param type_ type of the synchronization event (string one
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
221 of "bookmarks", "history", "passwords", "useragents" or
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
222 "speeddial")
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
223 @param fileName name of the file to be uploaded (string)
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
224 @return flag indicating success (boolean)
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
225 """
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
226 res = False
1701
9eee32bac32e Added option to only encrypt passwords upon synchronisation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1700
diff changeset
227 data = self.readFile(fileName, type_)
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
228 if data.isEmpty():
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
229 self.syncStatus.emit(type_, self._messages[type_]["LocalMissing"])
2083
3005ae4463aa Fixed an issue in the FTP sync handler class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2077
diff changeset
230 self.syncFinished.emit(type_, False, False)
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
231 else:
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
232 buffer = io.BytesIO(data.data())
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
233 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
234 self.__ftp.storbinary(
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
235 "STOR {0}".format(self._remoteFiles[type_]),
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
236 buffer,
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
237 callback=lambda x: QCoreApplication.processEvents())
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
238 self.syncFinished.emit(type_, True, False)
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
239 res = True
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
240 except ftplib.all_errors as err:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
241 self.syncStatus.emit(type_, str(err))
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
242 self.syncFinished.emit(type_, False, False)
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
243 return res
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
244
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 def __initialSyncFile(self, type_, fileName):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 Private method to do the initial synchronization of the given file.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 @param type_ type of the synchronization event (string one
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
250 of "bookmarks", "history", "passwords", "useragents" or
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
251 "speeddial")
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @param fileName name of the file to be synchronized (string)
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 """
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
254 if not self.__forceUpload and \
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
255 self._remoteFiles[type_] in self.__remoteFilesFound:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
256 if QFileInfo(fileName).lastModified() < \
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
257 self.__remoteFilesFound[self._remoteFiles[type_]]:
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
258 self.__downloadFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
259 type_, fileName,
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
260 self.__remoteFilesFound[self._remoteFiles[type_]]
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
261 .toTime_t())
2061
b74f1d202ba7 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2060
diff changeset
262 else:
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
263 self.syncStatus.emit(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
264 type_, self.trUtf8("No synchronization required."))
2061
b74f1d202ba7 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2060
diff changeset
265 self.syncFinished.emit(type_, True, True)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 else:
1695
7b115f986d48 Added capability to synchronize bookmarks, history, passwords and user agent settings via a shared directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1681
diff changeset
267 if self._remoteFiles[type_] not in self.__remoteFilesFound:
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
268 self.syncStatus.emit(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
269 type_, self._messages[type_]["RemoteMissing"])
1695
7b115f986d48 Added capability to synchronize bookmarks, history, passwords and user agent settings via a shared directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1681
diff changeset
270 else:
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
271 self.syncStatus.emit(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
272 type_, self._messages[type_]["LocalNewer"])
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
273 self.__uploadFile(type_, fileName)
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 def __initialSync(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 Private slot to do the initial synchronization.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 # Bookmarks
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 if Preferences.getHelp("SyncBookmarks"):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
281 self.__initialSyncFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
282 "bookmarks",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
283 Helpviewer.HelpWindow.HelpWindow.bookmarksManager()
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
284 .getFileName())
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 # History
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 if Preferences.getHelp("SyncHistory"):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
288 self.__initialSyncFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
289 "history",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
290 Helpviewer.HelpWindow.HelpWindow.historyManager()
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
291 .getFileName())
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 # Passwords
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 if Preferences.getHelp("SyncPasswords"):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
295 self.__initialSyncFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
296 "passwords",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
297 Helpviewer.HelpWindow.HelpWindow.passwordManager()
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
298 .getFileName())
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 # User Agent Settings
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 if Preferences.getHelp("SyncUserAgents"):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
302 self.__initialSyncFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
303 "useragents",
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
304 Helpviewer.HelpWindow.HelpWindow.userAgentsManager()
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
305 .getFileName())
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
306
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
307 # Speed Dial Settings
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
308 if Preferences.getHelp("SyncSpeedDial"):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
309 self.__initialSyncFile(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
310 "speeddial",
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
311 Helpviewer.HelpWindow.HelpWindow.speedDial().getFileName())
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
312
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
313 self.__forceUpload = False
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 def __syncFile(self, type_, fileName):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 Private method to synchronize the given file.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 @param type_ type of the synchronization event (string one
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
320 of "bookmarks", "history", "passwords", "useragents" or
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
321 "speeddial")
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 @param fileName name of the file to be synchronized (string)
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 """
1680
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
324 if self.__state == "initializing":
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
325 return
28e57079dab5 Added capability to encrypt the synchronized data (web browser).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1638
diff changeset
326
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
327 # use idle timeout to check, if we are still connected
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
328 if self.__connected:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
329 self.__idleTimeout()
2076
0d6286344ac1 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2074
diff changeset
330 if not self.__connected or self.__ftp.sock is None:
0d6286344ac1 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2074
diff changeset
331 ok = self.__connectAndLogin()
0d6286344ac1 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2074
diff changeset
332 if not ok:
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
333 self.syncStatus.emit(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
334 type_, self.trUtf8("Cannot log in to FTP host."))
2076
0d6286344ac1 Fixed an issue with the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2074
diff changeset
335 return
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
336
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
337 # upload the changed file
1638
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
338 self.__state = "uploading"
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
339 self.syncStatus.emit(type_, self._messages[type_]["Uploading"])
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
340 if self.__uploadFile(type_, fileName):
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
341 self.syncStatus.emit(
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
342 type_, self.trUtf8("Synchronization finished."))
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
343 self.__state = "idle"
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 def syncBookmarks(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 Public method to synchronize the bookmarks.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 """
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
349 self.__syncFile(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
350 "bookmarks",
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().getFileName())
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 def syncHistory(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 Public method to synchronize the history.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 """
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
357 self.__syncFile(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
358 "history",
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 Helpviewer.HelpWindow.HelpWindow.historyManager().getFileName())
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 def syncPasswords(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 Public method to synchronize the passwords.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 """
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
365 self.__syncFile(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
366 "passwords",
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 Helpviewer.HelpWindow.HelpWindow.passwordManager().getFileName())
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 def syncUserAgents(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 Public method to synchronize the user agents.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 """
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
373 self.__syncFile(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
374 "useragents",
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 Helpviewer.HelpWindow.HelpWindow.userAgentsManager().getFileName())
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
377 def syncSpeedDial(self):
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
378 """
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
379 Public method to synchronize the speed dial data.
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
380 """
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
381 self.__syncFile(
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
382 "speeddial",
1700
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
383 Helpviewer.HelpWindow.HelpWindow.speedDial().getFileName())
40c911b8c0dd Made the speed dial settings synchronizable via the sync manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1695
diff changeset
384
1626
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 def shutdown(self):
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 """
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 Public method to shut down the handler.
a77c8ea8582c Added capability to synchronise bookmarks, history, passwords and user agent settings via an FTP server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 """
1638
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
389 if self.__idleTimer.isActive():
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
390 self.__idleTimer.stop()
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
391
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
392 try:
2062
f275d3afe038 Fixed a little issue in the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2061
diff changeset
393 if self.__connected:
f275d3afe038 Fixed a little issue in the FTP sync handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2061
diff changeset
394 self.__ftp.quit()
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
395 except ftplib.all_errors:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
396 pass # ignore FTP errors because we are shutting down anyway
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
397 self.__connected = False
1638
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
398
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
399 def __idleTimeout(self):
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
400 """
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
401 Private slot to prevent a disconnect from the server.
cd2f9e526710 Added an idle timeout to the FTP synchronization handler to prevent server disconnects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1626
diff changeset
402 """
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
403 if self.__state == "idle" and self.__connected:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
404 try:
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
405 self.__ftp.voidcmd("NOOP")
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
406 except ftplib.Error as err:
2074
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
407 code = err.args[0].strip()[:3]
5cb87968aad5 Reworked the FTP stuff to support a bunch of different FTP proxy types. Unfortunately FTP proxy support is not standardized.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2064
diff changeset
408 if code == "421":
2060
1f3767746974 Changed the FTP sync code in the eric web browser to use ftplib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1701
diff changeset
409 self.__connected = False
2064
79cfe18963ae Added another check to the FTP sync handler idle routine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2062
diff changeset
410 except IOError:
79cfe18963ae Added another check to the FTP sync handler idle routine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2062
diff changeset
411 self.__connected = False

eric ide

mercurial