summaryrefslogtreecommitdiff
path: root/service/pixelated/config
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/config')
-rw-r--r--service/pixelated/config/__init__.py3
-rw-r--r--service/pixelated/config/app_factory.py3
-rw-r--r--service/pixelated/config/args.py22
-rw-r--r--service/pixelated/config/leap_cert.py6
-rw-r--r--service/pixelated/config/register.py10
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