diff options
| -rw-r--r-- | src/leap/mx/couchdbhelper.py | 44 | ||||
| -rw-r--r-- | src/leap/mx/mail_receiver.py | 81 | 
2 files changed, 62 insertions, 63 deletions
| diff --git a/src/leap/mx/couchdbhelper.py b/src/leap/mx/couchdbhelper.py index 147e6f9..b500f17 100644 --- a/src/leap/mx/couchdbhelper.py +++ b/src/leap/mx/couchdbhelper.py @@ -49,16 +49,16 @@ class ConnectedCouchDB(client.CouchDB):          """          Connect to a CouchDB instance. -        @param host: A hostname string for the CouchDB server. -        @type host: str -        @param port: The port of the CouchDB server. -        @type port: int -        @param dbName: (optional) The default database to bind queries to. -        @type dbName: str -        @param username: (optional) The username for authorization. -        @type username: str -        @param str password: (optional) The password for authorization. -        @type password: str +        :param host: A hostname string for the CouchDB server. +        :type host: str +        :param port: The port of the CouchDB server. +        :type port: int +        :param dbName: (optional) The default database to bind queries to. +        :type dbName: str +        :param username: (optional) The username for authorization. +        :type username: str +        :param str password: (optional) The password for authorization. +        :type password: str          """          client.CouchDB.__init__(self,                                  host, @@ -78,8 +78,8 @@ class ConnectedCouchDB(client.CouchDB):          """          Callback for listDB that prints the available databases -        @param data: response from the listDB command -        @type data: array +        :param data: response from the listDB command +        :type data: array          """          log.msg("Available databases:")          for database in data: @@ -101,10 +101,10 @@ class ConnectedCouchDB(client.CouchDB):          """          Check to see if a particular email or alias exists. -        @param alias: A string representing the email or alias to check. -        @type alias: str -        @return: a deferred for this query -        @rtype twisted.defer.Deferred +        :param alias: A string representing the email or alias to check. +        :type alias: str +        :return: a deferred for this query +        :rtype twisted.defer.Deferred          """          assert isinstance(address, (str, unicode)), "Email or alias queries must be string" @@ -124,12 +124,12 @@ class ConnectedCouchDB(client.CouchDB):          """          Parses the result of the by_address query and gets the uuid -        @param address: alias looked up -        @type address: string -        @param result: result dictionary -        @type result: dict -        @return: The uuid for alias if available -        @rtype: str +        :param address: alias looked up +        :type address: string +        :param result: result dictionary +        :type result: dict +        :return: The uuid for alias if available +        :rtype: str          """          for row in result["rows"]:              if row["key"] == address: diff --git a/src/leap/mx/mail_receiver.py b/src/leap/mx/mail_receiver.py index 5875034..e263604 100644 --- a/src/leap/mx/mail_receiver.py +++ b/src/leap/mx/mail_receiver.py @@ -15,11 +15,9 @@  #  # You should have received a copy of the GNU General Public License  # along with this program.  If not, see <http://www.gnu.org/licenses/>. -  """  MailReceiver service definition  """ -  import os  import uuid as pyuuid @@ -54,14 +52,14 @@ class MailReceiver(Service):          """          Constructor -        @param mail_couch_url: URL prefix for the couchdb where mail +        :param mail_couch_url: URL prefix for the couchdb where mail          should be stored -        @type mail_couch_url: str -        @param users_cdb: CouchDB instance from where to get the uuid +        :type mail_couch_url: str +        :param users_cdb: CouchDB instance from where to get the uuid          and pubkey for a user -        @type users_cdb: ConnectedCouchDB -        @param directories: list of directories to monitor -        @type directories: list of tuples (path: str, recursive: bool) +        :type users_cdb: ConnectedCouchDB +        :param directories: list of directories to monitor +        :type directories: list of tuples (path: str, recursive: bool)          """          # Service doesn't define an __init__          self._mail_couch_url = mail_couch_url @@ -105,16 +103,17 @@ class MailReceiver(Service):          the message to that public key.          The address is needed in order to build the OpenPGPKey object. -        @param uuid_pubkey: tuple that holds the uuid and the public -        key as it is returned by the previous call in the chain -        @type uuid_pubkey: tuple (str, str) -        @param address: mail address for this message -        @type address: str -        @param message: message contents -        @type message: str - -        @return: uuid, doc to sync with Soledad -        @rtype: tuple(str, SoledadDocument) +        :param uuid_pubkey: tuple that holds the uuid and the public +                            key as it is returned by the previous call in the +                            chain +        :type uuid_pubkey: tuple (str, str) +        :param address: mail address for this message +        :type address: str +        :param message: message contents +        :type message: str + +        :return: uuid, doc to sync with Soledad +        :rtype: tuple(str, SoledadDocument)          """          uuid, pubkey = uuid_pubkey          log.msg("Encrypting message to %s's pubkey" % (uuid,)) @@ -153,14 +152,14 @@ class MailReceiver(Service):          """          Given a UUID and a SoledadDocument, it saves it directly in the          couchdb that serves as a backend for Soledad, in a db -        accessible to the recipient of the mail +        accessible to the recipient of the mail. -        @param uuid_doc: tuple that holds the UUID and SoledadDocument -        @type uuid_doc: tuple(str, SoledadDocument) +        :param uuid_doc: tuple that holds the UUID and SoledadDocument +        :type uuid_doc: tuple(str, SoledadDocument) -        @return: True if it's ok to remove the message, False -        otherwise -        @rtype: bool +        :return: True if it's ok to remove the message, False +                 otherwise +        :rtype: bool          """          uuid, doc = uuid_doc          log.msg("Exporting message for %s" % (uuid,)) @@ -177,13 +176,13 @@ class MailReceiver(Service):      def _conditional_remove(self, do_remove, filepath):          """ -        Removes the message if do_remove is True +        Removes the message if do_remove is True. -        @param do_remove: True if the message should be removed, False -        otherwise -        @type do_remove: bool -        @param filepath: path to the mail -        @type filepath: twisted.python.filepath.FilePath +        :param do_remove: True if the message should be removed, False +                          otherwise +        :type do_remove: bool +        :param filepath: path to the mail +        :type filepath: twisted.python.filepath.FilePath          """          if do_remove:              # remove the original mail @@ -196,18 +195,18 @@ class MailReceiver(Service):      def _process_incoming_email(self, otherself, filepath, mask):          """ -        Callback that processes incoming email - -        @param otherself: Watch object for the current callback from -        inotify -        @type otherself: twisted.internet.inotify._Watch -        @param filepath: Path of the file that changed -        @type filepath: twisted.python.filepath.FilePath -        @param mask: identifier for the type of change that triggered -        this callback -        @type mask: int +        Callback that processes incoming email. + +        :param otherself: Watch object for the current callback from +                          inotify. +        :type otherself: twisted.internet.inotify._Watch +        :param filepath: Path of the file that changed +        :type filepath: twisted.python.filepath.FilePath +        :param mask: identifier for the type of change that triggered +                     this callback +        :type mask: int          """ -        if os.path.split(filepath.dirname())[-1]  == "new": +        if os.path.split(filepath.dirname())[-1] == "new":              log.msg("Processing new mail at %s" % (filepath.path,))              with filepath.open("r") as f:                  mail_data = f.read() | 
