diff options
Diffstat (limited to 'service/pixelated/config')
-rw-r--r-- | service/pixelated/config/__init__.py | 3 | ||||
-rw-r--r-- | service/pixelated/config/app_factory.py | 3 | ||||
-rw-r--r-- | service/pixelated/config/args.py | 22 | ||||
-rw-r--r-- | service/pixelated/config/leap_cert.py | 6 | ||||
-rw-r--r-- | service/pixelated/config/register.py | 10 |
5 files changed, 31 insertions, 13 deletions
diff --git a/service/pixelated/config/__init__.py b/service/pixelated/config/__init__.py index af264c77..f59d684b 100644 --- a/service/pixelated/config/__init__.py +++ b/service/pixelated/config/__init__.py @@ -36,8 +36,10 @@ import pixelated.support.ext_protobuf import pixelated.support.ext_sqlcipher import pixelated.support.ext_esmtp_sender_factory import pixelated.support.ext_fetch +import pixelated.support.ext_sync import pixelated.support.ext_keymanager_fetch_key import pixelated.support.ext_requests_urllib3 +from pixelated.support.error_handler import error_handler def initialize(): @@ -74,6 +76,7 @@ def initialize(): d = deferToThread(init_soledad) d.addCallback(stop_loading_app) + d.addErrback(error_handler) reactor.callWhenRunning(load_app) reactor.run() diff --git a/service/pixelated/config/app_factory.py b/service/pixelated/config/app_factory.py index 5dcf60cb..51f76741 100644 --- a/service/pixelated/config/app_factory.py +++ b/service/pixelated/config/app_factory.py @@ -53,9 +53,8 @@ def init_index_and_remove_dupes(querier, search_engine, mail_service): return wrapper -def update_info_sync_and_index_partial(sync_info_controller, search_engine, mail_service): +def update_index_partial(search_engine, mail_service): def wrapper(soledad_sync_status): - sync_info_controller.set_sync_info(soledad_sync_status) search_engine.index_mails(mails=mail_service.all_mails()) return wrapper diff --git a/service/pixelated/config/args.py b/service/pixelated/config/args.py index d3284fab..a5d19369 100644 --- a/service/pixelated/config/args.py +++ b/service/pixelated/config/args.py @@ -20,18 +20,24 @@ from pixelated.bitmask_libraries.config import DEFAULT_LEAP_HOME def parse(): parser = argparse.ArgumentParser(description='Pixelated user agent.') - parser.add_argument('--debug', action='store_true', help='DEBUG mode.') - parser.add_argument('--dispatcher', help='run in organization mode, the credentials will be read from specified file', metavar='file') - parser.add_argument('--dispatcher-stdin', help='run in organization mode, the credentials will be read from stdin', default=False, action='store_true', dest='dispatcher_stdin') + + parser_add_default_arguments(parser) + parser.add_argument('--host', default='127.0.0.1', help='the host to run the user agent on') parser.add_argument('--port', type=int, default=3333, help='the port to run the user agent on') - parser.add_argument('--home', help='The folder where the user agent stores its data. Defaults to ~/.leap', default=DEFAULT_LEAP_HOME) - parser.add_argument('-c', '--config', metavar='<configfile>', default=None, help='use specified file for credentials (for test purposes only)') parser.add_argument('-sk', '--sslkey', metavar='<server.key>', default=None, help='use specified file as web server\'s SSL key (when using the user-agent together with the pixelated-dispatcher)') parser.add_argument('-sc', '--sslcert', metavar='<server.crt>', default=None, help='use specified file as web server\'s SSL certificate (when using the user-agent together with the pixelated-dispatcher)') - parser.add_argument('-lc', '--leap-cert', metavar='<leap.crt>', default=None, help='use specified file for LEAP cert authority certificate (url https://<provider-domain>/ca.crt)') - parser.add_argument('--leap-cert-fingerprint', metavar='<leap certificate fingerprint>', default=None, help='use specified fingerprint to validate connection with leap provider', dest='leap_cert_fingerprint') parser.add_argument('--register', metavar=('provider', 'username'), - nargs=2, help='register a new username on the desired provider') + nargs=2, help='register a new username on the desired LEAP provider') args = parser.parse_args() return args + + +def parser_add_default_arguments(parser): + parser.add_argument('--debug', action='store_true', help='DEBUG mode.') + parser.add_argument('--dispatcher', help='run in organization mode, the credentials will be read from specified file', metavar='file') + parser.add_argument('--dispatcher-stdin', help='run in organization mode, the credentials will be read from stdin', default=False, action='store_true', dest='dispatcher_stdin') + parser.add_argument('-c', '--config', metavar='<configfile>', default=None, help='use specified file for credentials (for test purposes only)') + parser.add_argument('--home', help='The folder where the user agent stores its data. Defaults to ~/.leap', default=DEFAULT_LEAP_HOME) + parser.add_argument('-lc', '--leap-provider-cert', metavar='<leap-provider.crt>', default=None, help='use specified file for LEAP provider cert authority certificate (url https://<LEAP-provider-domain>/ca.crt)') + parser.add_argument('-lf', '--leap-provider-cert-fingerprint', metavar='<leap provider certificate fingerprint>', default=None, help='use specified fingerprint to validate connection with LEAP provider', dest='leap_provider_cert_fingerprint') diff --git a/service/pixelated/config/leap_cert.py b/service/pixelated/config/leap_cert.py index 22f73720..568f76d9 100644 --- a/service/pixelated/config/leap_cert.py +++ b/service/pixelated/config/leap_cert.py @@ -18,9 +18,9 @@ import pixelated.bitmask_libraries.certs as certs def init_leap_cert(args): - if args.leap_cert_fingerprint is None: - certs.LEAP_CERT = args.leap_cert or True + if args.leap_provider_cert_fingerprint is None: + certs.LEAP_CERT = args.leap_provider_cert or True certs.LEAP_FINGERPRINT = None else: - certs.LEAP_FINGERPRINT = args.leap_cert_fingerprint + certs.LEAP_FINGERPRINT = args.leap_provider_cert_fingerprint certs.LEAP_CERT = False diff --git a/service/pixelated/config/register.py b/service/pixelated/config/register.py index 3f93aa8d..d54b10ff 100644 --- a/service/pixelated/config/register.py +++ b/service/pixelated/config/register.py @@ -13,6 +13,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. +import re from pixelated.bitmask_libraries.leap_srp import LeapAuthException from pixelated.bitmask_libraries.register import register_new_user @@ -20,6 +21,15 @@ from pixelated.bitmask_libraries.register import register_new_user def register(username, server_name): try: + validate_username(username) register_new_user(username, server_name) except LeapAuthException: print('User already exists') + except ValueError: + print('Only lowercase letters, digits, . - and _ allowed.') + + +def validate_username(username): + accepted_characters = '^[a-z0-9\-\_\.]*$' + if not re.match(accepted_characters, username): + raise ValueError |