summaryrefslogtreecommitdiff
path: root/service/pixelated/register.py
diff options
context:
space:
mode:
authorBruno Wagner <bwgpro@gmail.com>2015-06-05 18:25:52 -0300
committerBruno Wagner <bwgpro@gmail.com>2015-06-05 18:27:43 -0300
commita2886f31583722c5f08a965325156f8eb1e18509 (patch)
treed71b251d7d627fed16998a3132a9a8858249315f /service/pixelated/register.py
parent3029534e21b611fcd6aaae09c54a5bda71cac582 (diff)
Moved register out of application like maintenance
Diffstat (limited to 'service/pixelated/register.py')
-rw-r--r--service/pixelated/register.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/service/pixelated/register.py b/service/pixelated/register.py
new file mode 100644
index 00000000..0eac97a7
--- /dev/null
+++ b/service/pixelated/register.py
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 2014 ThoughtWorks, Inc.
+#
+# Pixelated is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pixelated 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 Affero General Public License for more details.
+#
+# 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
+import getpass
+import logging
+
+from pixelated.bitmask_libraries import session as leap_session
+from pixelated.config import arguments
+from pixelated.config import logger as logger_config
+from pixelated.bitmask_libraries.certs import which_api_CA_bundle
+from pixelated.bitmask_libraries.config import LeapConfig
+from pixelated.bitmask_libraries.provider import LeapProvider
+from leap.auth import SRPAuth
+
+logger = logging.getLogger(__name__)
+
+
+def register(server_name, username):
+ try:
+ validate_username(username)
+ except ValueError:
+ print('Only lowercase letters, digits, . - and _ allowed.')
+
+ config = LeapConfig()
+ provider = LeapProvider(server_name, config)
+ password = getpass.getpass('Please enter password for %s: ' % username)
+ srp_auth = SRPAuth(provider.api_uri, which_api_CA_bundle(provider))
+
+ if srp_auth.register(username, password):
+ session = leap_session.open_leap_session(username, password, server_name)
+ session.nicknym.generate_openpgp_key()
+ else:
+ logger.error("Register failed")
+
+
+def validate_username(username):
+ accepted_characters = '^[a-z0-9\-\_\.]*$'
+ if not re.match(accepted_characters, username):
+ raise ValueError
+
+
+def initialize():
+ logger_config.init(debug=False)
+ args = arguments.parse_register_args()
+ register(args.provider, args.username)