def typed_ban(self, remainder): try: target, message = remainder.split(' ',1) except: PynaDisplay.warn("Erroneous ban command: Please specify target and reason") return self.manager.addToBlackList(target,message)
def typed(self, key): user = self.manager.node_list.find_active_node(key) if user is None: PynaDisplay.info( 'No user or node was found with key \'{0}\''.format(key)) return user.identify()
def typed_whisper(self, remainder): try: target, message = remainder.split(' ',1) except: PynaDisplay.warn("Improperly formatted whisper command") return self.dispatcher.send('whisper',content=message, target=target)
def is_sender_authorized(self, message, sender): '''Verifies that the message is authorizable''' if message != 'nodelist': PynaDisplay.warn('Untrusted message received from {0}'.format(sender)) return False return True
def isAcceptableAnonymousMessage(self, message, sender): """Verifies that the message is authorizable""" if message != "nodelist": PynaDisplay.warn("Untrusted message received from {0}".format(sender)) return False return True
def typed_who(self, ignore): if len(self.manager.active_nodes) == 0: PynaDisplay.info('No nodes are active') return PynaDisplay.log('Active users') for node in self.manager.active_nodes: self.identity(node)
def typed(self, msg): try: target, message = msg.split(" ", 1) except: PynaDisplay.warn("Improperly formatted whisper command") return self.dispatcher.send(msg_type="Whisper", content=message, target=target)
def typed_import(self, filename): '''Attempt to import a node file''' new_node = self.manager.node_list.importNode(filename) if new_node is None: PynaDisplay.warn('Malformed or missing file \'{0}\''.format(filename)) return node_list = self.manager.get_node_list() self.dispatcher.send('nodelist', content=node_list, target=new_node)
def typed(self, filename): '''Attempt to import a node file''' new_node = self.manager.node_list.import_node(filename) if new_node is None: PynaDisplay.warn('Malformed or missing file \'{0}\''.format(filename)) return self.send_nodelist(new_node)
def send(self, msg_type, target, content=''): '''Send to a single node''' node = self.manager.node_list.find_active_node(target) if node is None: # Erroneous; no user exists here PynaDisplay.subtle('No user "{0}" was found'.format(target)) return packaged_json = self.packager.pack(msg_type.lower(), content) self.sender.try_to_send(packaged_json, node)
def senderNeedsActivation(self, message, sender): """Checks to see if the sender is active or even authorized""" if self.manager.isActive(sender): return False if self.manager.isAuthorized(sender): self.manager.activate_node(sender) PynaDisplay.log("Registered {0} at {1}".format(sender["alias"], sender["location"])) return True return self.isAcceptableAnonymousMessage(message, sender)
def __running__(self): '''Start up client thread, ''' # Provide information to user about its location and the client PynaDisplay.splash(self.manager.version) PynaDisplay.log('Node running on {0}:{1}\n'.format(self.location,self.port)) # Await initialization before starting client thread time.sleep(1) sender_thread = threading.Thread(target=self.ui.__running__) sender_thread.start()
def typed(self, filename): '''Attempt to import a node file''' active_nodes = self.manager.node_list.all_active() if len(active_nodes) == 0: PynaDisplay.info('No nodes are active') return print(' ') PynaDisplay.log('Active users') for node in active_nodes: node.identify() print(' ')
def send(self,type,target,content=''): ''' Send to a single node ''' node = self.manager.getNode(target) if node is None: # Erroneous; no user exists here PynaDisplay.warn('No user was found') return packaged_json = self.packager.pack(type,content) self.sender.try_to_send(packaged_json,node)
def does_sender_need_activation(self, message, sender): '''Checks to see if the sender is active or even authorized''' authorized_node = self.manager.node_list.find_node(sender['uid']) if authorized_node is not None: # Only show connection if coming from inactive if authorized_node.status == Node.Status.inactive: PynaDisplay.log('{0} (@{1}) is now online'.format(sender['alias'], sender['location'])) # Ensure that the node is active was_not_active = authorized_node.status != Node.Status.active self.activate_and_update(authorized_node, sender) return was_not_active return self.is_sender_authorized(message, sender)
def identity(self,node): PynaDisplay.info("{2}: {0} ({1})".format(node['alias'],node['uid'],node['location']))
def typed(self, *_): PynaDisplay.splash(self.manager.version)
def received_chat(self,msg): PynaDisplay.display(msg)
def received_disconnection(self,msg): self.manager.deactivate_node(msg['sender']) PynaDisplay.disconnected(msg['sender'])
def typed_exit(self,ignore): PynaDisplay.server_announce('Closing down node. Thank you for using PyÑa Colada!') self.dispatcher.broadcast('disconnection') time.sleep(0.5) sys.exit(0)
def typed_about(self,ignore): PynaDisplay.splash(self.manager.version)
def received(self, msg): self.manager.most_recent_whisperer = msg["sender"] PynaDisplay.display(msg)
def typed_info(self,key): #TODO: Move to display user = self.manager.getNode(key) if user is None: PynaDisplay.info('No user or node was found with key \'{0}\''.format(key)) return self.typed_identity(user)