diff options
Diffstat (limited to 'src/leap/services/mail')
-rw-r--r-- | src/leap/services/mail/__init__.py | 0 | ||||
-rw-r--r-- | src/leap/services/mail/imap.py | 42 | ||||
-rw-r--r-- | src/leap/services/mail/smtpbootstrapper.py | 139 | ||||
-rw-r--r-- | src/leap/services/mail/smtpconfig.py | 49 | ||||
-rw-r--r-- | src/leap/services/mail/smtpspec.py | 70 |
5 files changed, 0 insertions, 300 deletions
diff --git a/src/leap/services/mail/__init__.py b/src/leap/services/mail/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/src/leap/services/mail/__init__.py +++ /dev/null diff --git a/src/leap/services/mail/imap.py b/src/leap/services/mail/imap.py deleted file mode 100644 index 4dceb2ad..00000000 --- a/src/leap/services/mail/imap.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# imap.py -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -""" -Initialization of imap service -""" -import logging -import sys - -from leap.mail.imap.service import imap -from twisted.python import log - -logger = logging.getLogger(__name__) - - -def start_imap_service(*args, **kwargs): - """ - Initializes and run imap service. - - :returns: twisted.internet.task.LoopingCall instance - """ - logger.debug('Launching imap service') - - # Uncomment the next two lines to get a separate debugging log - # TODO handle this by a separate flag. - #log.startLogging(open('/tmp/leap-imap.log', 'w')) - #log.startLogging(sys.stdout) - - return imap.run_service(*args, **kwargs) diff --git a/src/leap/services/mail/smtpbootstrapper.py b/src/leap/services/mail/smtpbootstrapper.py deleted file mode 100644 index 48040035..00000000 --- a/src/leap/services/mail/smtpbootstrapper.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -# smtpbootstrapper.py -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -""" -SMTP bootstrapping -""" - -import logging -import os - -from PySide import QtCore - -from leap.common.check import leap_assert, leap_assert_type -from leap.common.files import get_mtime -from leap.config.providerconfig import ProviderConfig -from leap.crypto.srpauth import SRPAuth -from leap.util.request_helpers import get_content -from leap.services.abstractbootstrapper import AbstractBootstrapper - -logger = logging.getLogger(__name__) - - -class SMTPBootstrapper(AbstractBootstrapper): - """ - SMTP init procedure - """ - - # All dicts returned are of the form - # {"passed": bool, "error": str} - download_config = QtCore.Signal(dict) - - def __init__(self): - AbstractBootstrapper.__init__(self) - - self._provider_config = None - self._smtp_config = None - self._download_if_needed = False - - def _download_config(self, *args): - """ - Downloads the SMTP config for the given provider - """ - - leap_assert(self._provider_config, - "We need a provider configuration!") - - logger.debug("Downloading SMTP config for %s" % - (self._provider_config.get_domain(),)) - - headers = {} - mtime = get_mtime(os.path.join(self._smtp_config - .get_path_prefix(), - "leap", - "providers", - self._provider_config.get_domain(), - "smtp-service.json")) - - if self._download_if_needed and mtime: - headers['if-modified-since'] = mtime - - api_version = self._provider_config.get_api_version() - - # there is some confusion with this uri, - config_uri = "%s/%s/config/smtp-service.json" % ( - self._provider_config.get_api_uri(), api_version) - - logger.debug('Downloading SMTP config from: %s' % config_uri) - - srp_auth = SRPAuth(self._provider_config) - session_id = srp_auth.get_session_id() - cookies = None - if session_id: - cookies = {"_session_id": session_id} - - res = self._session.get(config_uri, - verify=self._provider_config - .get_ca_cert_path(), - headers=headers, - cookies=cookies) - res.raise_for_status() - - self._smtp_config.set_api_version(api_version) - - # Not modified - if res.status_code == 304: - logger.debug("SMTP definition has not been modified") - self._smtp_config.load(os.path.join( - "leap", "providers", - self._provider_config.get_domain(), - "smtp-service.json")) - else: - smtp_definition, mtime = get_content(res) - - self._smtp_config.load(data=smtp_definition, mtime=mtime) - self._smtp_config.save(["leap", - "providers", - self._provider_config.get_domain(), - "smtp-service.json"]) - - def run_smtp_setup_checks(self, - provider_config, - smtp_config, - download_if_needed=False): - """ - Starts the checks needed for a new smtp setup - - :param provider_config: Provider configuration - :type provider_config: ProviderConfig - :param smtp_config: SMTP configuration to populate - :type smtp_config: SMTPConfig - :param download_if_needed: True if it should check for mtime - for the file - :type download_if_needed: bool - """ - leap_assert_type(provider_config, ProviderConfig) - - self._provider_config = provider_config - self._smtp_config = smtp_config - self._download_if_needed = download_if_needed - - cb_chain = [ - (self._download_config, self.download_config), - ] - - self.addCallbackChain(cb_chain) diff --git a/src/leap/services/mail/smtpconfig.py b/src/leap/services/mail/smtpconfig.py deleted file mode 100644 index ea0f9c37..00000000 --- a/src/leap/services/mail/smtpconfig.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -# smtpconfig.py -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -""" -SMTP configuration -""" -import logging - -from leap.common.config.baseconfig import BaseConfig -from leap.services.mail.smtpspec import get_schema - -logger = logging.getLogger(__name__) - - -class SMTPConfig(BaseConfig): - """ - SMTP configuration abstraction class - """ - - def __init__(self): - BaseConfig.__init__(self) - - def _get_schema(self): - """ - Returns the schema corresponding to the version given. - - :rtype: dict or None if the version is not supported. - """ - return get_schema(self._api_version) - - def get_hosts(self): - return self._safe_get_value("hosts") - - def get_locations(self): - return self._safe_get_value("locations") diff --git a/src/leap/services/mail/smtpspec.py b/src/leap/services/mail/smtpspec.py deleted file mode 100644 index ff9d1bf8..00000000 --- a/src/leap/services/mail/smtpspec.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# smtpspec.py -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Schemas dict -# To add a schema for a version you should follow the form: -# { '1': schema_v1, '2': schema_v2, ... etc } -# so for instance, to add the '2' version, you should do: -# smtp_config_spec['2'] = schema_v2 -smtp_config_spec = {} - -smtp_config_spec['1'] = { - 'description': 'sample smtp service config', - 'type': 'object', - 'properties': { - 'serial': { - 'type': int, - 'default': 1, - 'required': ["True"] - }, - 'version': { - 'type': int, - 'default': 1, - 'required': ["True"] - }, - 'hosts': { - 'type': dict, - 'default': { - "walrus": { - "hostname": "someprovider", - "ip_address": "1.1.1.1", - "port": 1111 - }, - }, - }, - 'locations': { - 'type': dict, - 'default': { - "locations": { - - } - } - } - } -} - - -def get_schema(version): - """ - Returns the schema corresponding to the version given. - - :param version: the version of the schema to get. - :type version: str - :rtype: dict or None if the version is not supported. - """ - schema = smtp_config_spec.get(version, None) - return schema |