def validate(self, request): '''Check a validation code and generates a user token to login with.''' code = request.args['c'][0] if not code or len(code) != utils.VALIDATION_CODE_LENGTH: return utils.bad_request(request) # lookup the verification code valdb = database.validations(self.broker.db) userid = valdb.get_userid(code) if userid: # damn unicode! userid = str(userid) # delete verification entry in validations table valdb.delete(code) # touch user so we get a first presence self.broker.usercache.touch_user(userid) # here is your token log.debug("generating token for %s" % (userid, )) str_token = token.user_token( userid, str(self.broker.config['server']['fingerprint'])) return {'auth': str_token, 'userid': userid} else: return utils.not_found(request)
def validate_user(self, tx_id, code): if not code or len(code) != utils.VALIDATION_CODE_LENGTH: return c2s.ValidationResponse.STATUS_FAILED, None # lookup the verification code valdb = database.validations(self.broker.db) userid = valdb.get_userid(code) if userid: # damn unicode! userid = str(userid) # delete verification entry in validations table valdb.delete(code) # touch user so we get a first presence self.broker.usercache.touch_user(userid) # here is your token log.debug("[%s] generating token for %s" % (tx_id, userid)) str_token = token.user_token(userid, str(self.config['server']['fingerprint'])) return c2s.ValidationResponse.STATUS_SUCCESS, str_token else: return c2s.ValidationResponse.STATUS_FAILED, None
def validate_user(self, tx_id, code): if not code or len(code) != utils.VALIDATION_CODE_LENGTH: return c2s.ValidationResponse.STATUS_FAILED, None # lookup the verification code valdb = database.validations(self.broker.db) userid = valdb.get_userid(code) if userid: # damn unicode! userid = str(userid) # delete verification entry in validations table valdb.delete(code) # touch user so we get a first presence self.broker.usercache.touch_user(userid) # here is your token log.debug("[%s] generating token for %s" % (tx_id, userid)) str_token = token.user_token( userid, str(self.config['server']['fingerprint'])) return c2s.ValidationResponse.STATUS_SUCCESS, str_token else: return c2s.ValidationResponse.STATUS_FAILED, None
def validate(self, request): '''Check a validation code and generates a user token to login with.''' code = request.args['c'][0] if not code or len(code) != utils.VALIDATION_CODE_LENGTH: return utils.bad_request(request) # lookup the verification code valdb = database.validations(self.broker.db) userid = valdb.get_userid(code) if userid: # damn unicode! userid = str(userid) # delete verification entry in validations table valdb.delete(code) # touch user so we get a first presence self.broker.usercache.touch_user(userid) # here is your token log.debug("generating token for %s" % (userid, )) str_token = token.user_token(userid, str(self.broker.config['server']['fingerprint'])) return {'auth': str_token, 'userid': userid } else: return utils.not_found(request)
def _register_sms(self, n): # validate phone number syntax if not n or len(n.strip()) == 0: log.debug("number empty - %s" % n) return c2s.RegistrationResponse.STATUS_INVALID_USERNAME phone = phone_num = n.strip() # exclude the initial plus to verify the digits if (phone[0] == '+'): phone_num = phone[1:] # not all digits... if not phone_num.isdigit(): log.debug("number is not all-digits - %s" % phone_num) return c2s.RegistrationResponse.STATUS_INVALID_USERNAME # replace double-zero with plus if phone[0:2] == '00': phone = '+' + phone[2:] # insert validation record # TODO do not use directly - let the storage module do it valdb = database.validations(self.broker.db) userid = utils.sha1(phone) # throttling :P if valdb.get_code(userid, True): return c2s.RegistrationResponse.STATUS_THROTTLING userid += utils.rand_str(8, utils.CHARSBOX_AZN_UPPERCASE) ret = valdb.update(userid) if ret[0] > 0: # send SMS code = ret[1] sms_from = self.config['registration']['from'] if self.config['registration']['android_emu']: # android emulation import os os.system('adb emu sms send %s %s' % (sms_from, code)) else: # send sms from nexmomessage import NexmoMessage msg = { 'reqtype' : 'json', 'username' : self.config['registration']['nx.username'], 'password': self.config['registration']['nx.password'], 'from': sms_from, 'to': phone } sms = NexmoMessage(msg) # FIXME send just the code for now sms.set_text_info(code) js = sms.send_request() log.debug("sms sent [response=%s]" % js) return c2s.RegistrationResponse.STATUS_CONTINUE else: return c2s.RegistrationResponse.STATUS_ERROR
def _register_sms(self, n): # validate phone number syntax if not n or len(n.strip()) == 0: log.debug("number empty - %s" % n) return c2s.RegistrationResponse.STATUS_INVALID_USERNAME phone = phone_num = n.strip() # exclude the initial plus to verify the digits if (phone[0] == '+'): phone_num = phone[1:] # not all digits... if not phone_num.isdigit(): log.debug("number is not all-digits - %s" % phone_num) return c2s.RegistrationResponse.STATUS_INVALID_USERNAME # replace double-zero with plus if phone[0:2] == '00': phone = '+' + phone[2:] # insert validation record # TODO do not use directly - let the storage module do it valdb = database.validations(self.broker.db) userid = utils.sha1(phone) # throttling :P if valdb.get_code(userid, True): return c2s.RegistrationResponse.STATUS_THROTTLING userid += utils.rand_str(8, utils.CHARSBOX_AZN_UPPERCASE) ret = valdb.update(userid) if ret[0] > 0: # send SMS code = ret[1] sms_from = self.config['registration']['from'] if self.config['registration']['android_emu']: # android emulation import os os.system('adb emu sms send %s %s' % (sms_from, code)) else: # send sms from nexmomessage import NexmoMessage msg = { 'reqtype': 'json', 'username': self.config['registration']['nx.username'], 'password': self.config['registration']['nx.password'], 'from': sms_from, 'to': phone } sms = NexmoMessage(msg) # FIXME send just the code for now sms.set_text_info(code) js = sms.send_request() log.debug("sms sent [response=%s]" % js) return c2s.RegistrationResponse.STATUS_CONTINUE else: return c2s.RegistrationResponse.STATUS_ERROR
def revalidate(self): valdb = database.validations(self.broker.db) userid = self.userid[:utils.USERID_LENGTH] + utils.rand_str(8, utils.CHARSBOX_AZN_UPPERCASE) log.debug("revalidating user %s as %s" % (self.userid, userid)) ret = valdb.update(userid) if ret[0] > 0: return ret[1] else: return False
def revalidate(self): valdb = database.validations(self.broker.db) userid = self.userid[:utils.USERID_LENGTH] + utils.rand_str( 8, utils.CHARSBOX_AZN_UPPERCASE) log.debug("revalidating user %s as %s" % (self.userid, userid)) ret = valdb.update(userid) if ret[0] > 0: return ret[1] else: return False
def _update_ds(self): if self._db: self.userdb = database.usercache(self._db) self.msgdb = database.messages(self._db) self.attdb = database.attachments(self._db) self.valdb = database.validations(self._db) else: self.userdb = None self.msgdb = None self.attdb = None self.valdb = None
def _update_ds(self): if self._db: self.userdb = database.usercache(self._db) self.msgdb = database.messages(self._db) self.attdb = database.attachments(self._db) self.valdb = database.validations(self._db) else: self.userdb = None self.msgdb = None self.attdb = None self.valdb = None