def create_client(type, config): addr = config['mediator']['host'] port = config['mediator']['port'] print "Connecting to", address_to_str(addr, port), "..." if type == 'editor': delegate = EditorDelegate( Account.create(config['username'], config['password']), machine='TestiOSClient' + str(random.random()), delegate=sample_repo_handler,#sample_handler, ) elif type == 'builder': builder = Builder(BuilderConfig(config, config['__filepath__'])) delegate = BuilderDelegate( Account.create(config['username'], config['password']), builder=builder, machine=config['name'] ) else: raise TypeError("Invalid Type") client = Client(port, addr) mediator_client = MediatorClient( client, ProtocolSerializer(NetworkSerializer()), delegate ) mediator_client.create()
def handle_login(self, request): "Log this client in." request = request.cast_to(LoginMessage) self.account = Account.create(request['username'], request['password']) if self.auth.verify(self.account): # TODO: verify machine & type values self.machine, self.type = request['machine'], request['type'] self.namespace = request['username'] print self.address_str(), "=>", self.id if not self.tracker.assign_namespace(self): yield gen.Task(self.stream.write, ResponseMessage.error( request.id, reason="Machine of name %r already connected." % self.machine, code=ErrorCodes.MACHINE_CONFLICT )) self.close() raise StopIteration msg = ResponseMessage.success(request.id) yield gen.Task(self.stream.write, msg) print self.id, '<-', msg self.process_request() else: self.fail(request.id, reason='Invalid username or password', code=ErrorCodes.BAD_AUTH, close_stream=False)
def handle_login(self, request): "Log this client in." request = request.cast_to(LoginMessage) self.account = Account.create(request['username'], request['password']) if self.auth.verify(self.account): # TODO: verify machine & type values self.machine, self.type = request['machine'], request['type'] self.namespace = request['username'] print self.address_str(), "=>", self.id if not self.tracker.assign_namespace(self): yield gen.Task( self.stream.write, ResponseMessage.error( request.id, reason="Machine of name %r already connected." % self.machine, code=ErrorCodes.MACHINE_CONFLICT)) self.close() raise StopIteration msg = ResponseMessage.success(request.id) yield gen.Task(self.stream.write, msg) print self.id, '<-', msg self.process_request() else: self.fail(request.id, reason='Invalid username or password', code=ErrorCodes.BAD_AUTH, close_stream=False)
def create(self, username, password): if username in self.accounts: # error return { 'reason': 'Account already exists', 'code': ErrorCodes.USERNAME_TAKEN, } self.accounts[username] = Account.create(username, password) return {} # success
def test_it_should_hash_passwords(self): account = Account.create('jeff', 'password') # sha512 hashed = 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86' expect(account) == Account('jeff', hashed)