Example #1
0
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()
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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
Example #5
0
 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
Example #6
0
 def test_it_should_hash_passwords(self):
     account = Account.create('jeff', 'password')
     # sha512
     hashed = 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86'
     expect(account) == Account('jeff', hashed)
Example #7
0
 def test_it_should_hash_passwords(self):
     account = Account.create('jeff', 'password')
     # sha512
     hashed = 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86'
     expect(account) == Account('jeff', hashed)
Example #8
0
 def test_it_can_be_in_dictionary(self):
     container = {
         Account('user1', 'pwd1'): 1,
     }
     expect(container[Account('user1', 'pwd1')]) == 1