Exemplo n.º 1
0
 def complete_all_files(self):
     self.files_deferred.callback("callback complete all")
     if self.download_dlg:
         self.download_dlg.complete_all_files()
         self.download_dlg = None
     else:
         display_status("All files downloaded")
Exemplo n.º 2
0
 def update_file(self, file_name, size):
     """available to wx navigators only. update downloaded file in
     specific dialog"""
     if self.download_dlg:
         self.download_dlg.update_file(file_name, size)
     else:
         display_status("downloading %s (%d)"% (file_name, size))
Exemplo n.º 3
0
 def load(self, path):
     if not os.path.exists(path):
         display_status(_("profile %s does not exists"\
                          % os.path.basename(path)))
         return False
     else:
         profile_file = open(path)
         self.encoding = load_encoding(profile_file)
         self.config = CustomConfigParser(self.encoding)
         self.config.readfp(profile_file)
         profile_file.close()
         return True
Exemplo n.º 4
0
def load_encoding(file_obj):
    """load from profile document its encoding"""
    encoding_tag = file_obj.readline()
    if not encoding_tag.startswith("# profile-encoding::"):
        # wrong format
        # first line has been wastes: rewind
        file_obj.seek(0)
        # return default
        display_status(_("could not read encoding from profile file. "
                         "Using %s"% ENCODING))
        return ENCODING
    else:
        encoding = encoding_tag.split("::")[-1].strip()
        display_status(_("Profile read with encoding %s"% encoding))
        return encoding
Exemplo n.º 5
0
 def run(self):
     while True:
         try:
             # block until new message or TIMEOUT
             message = self.queue.get(timeout=self.CHECKING_FREQUENCY)
             if message is None:
                 break
             else:
                 if message.ip in self.remote_ips:
                     self.remote_ips[message.ip].server.execute(message)
                 else:
                     SecurityAlert(message.ip,
                                   _("Message '%s' out of date."\
                                     % str(message)))
                 self._check_peers(datetime.datetime.now())
         except Empty:
             # Empty exception is expected when no message received
             # during period defined by CHECKING_FREQUENCY.
             self._check_peers(datetime.datetime.now())
     display_status("stopping server")
Exemplo n.º 6
0
 def execute(self, message):
     transport = self.peer_server.protocol.transport
     if message.command in [MESSAGE_HELLO, MESSAGE_PROFILE]:
         file_obj = get_facade()._desc.document.to_stream()
         deferred = basic.FileSender().\
                    beginFileTransfer(file_obj, transport)
         deferred.addCallback(lambda x: transport.loseConnection())
     elif message.command == MESSAGE_BLOG:
         blog_stream = get_facade().get_blog_file()
         deferred = basic.FileSender().\
                    beginFileTransfer(blog_stream, transport)
         deferred.addCallback(lambda x: transport.loseConnection())
     elif message.command == MESSAGE_SHARED:
         files_stream = get_facade().get_shared_files()
         deferred = basic.FileSender().beginFileTransfer(files_stream,
                                                         transport)
         deferred.addCallback(lambda x: transport.loseConnection())
     elif message.command == MESSAGE_FILES:
         split_path, file_size = extract_data_file(message.data)
         file_name = os.sep.join(split_path)
         try:
             file_desc = get_facade().get_file_container(file_name)
              # check shared
             if file_desc._shared:
                 display_status("sending %s"% file_name)
                 deferred = basic.FileSender().\
                            beginFileTransfer(open(file_name, "rb"), transport)
                 deferred.addCallback(lambda x: transport.loseConnection())
             else:
                 self.peer_server.protocol.factory.send_udp_message(
                     self.peer_server.peer.peer_id, MESSAGE_ERROR, message.data)
                 SecurityAlert(self.peer_server.peer.peer_id,
                               "Trying to download unshare file %s"\
                               % file_name)
         except ContainerException:
             SecurityAlert(self.peer_server.peer.peer_id,
                           "Trying to download unvalid file %s"\
                           % file_name)
     else:
         raise ValueError("ERROR in _connect: %s not valid"% message.command)
Exemplo n.º 7
0
    def ChangedNode(self, node):
        """need to update node_id"""
        # ChangedNode is call more than one time on change. Thus, be
        # careful not to do the job every time
        if get_facade() is None or get_facade()._desc.document.get_pseudo() != node.pseudo:
            # creation
            facade = create_facade(node.id_)
            filter_facade = create_filter_facade(node.id_)
            if not facade.load():
                display_status(_("You have no profile yet for pseudo %s"% node.pseudo))
# ChangedNode called too many times at startup and make this popup appear several times => bother
# Replace by display_status for now
#                 display_message(
#                     _(u"You have no profile yet for pseudo %s.\n\n "
#                       "You may create one clicking on the menu Profile, "
#                       "and selecting 'Modify Profile'"% node.pseudo),
#                     title=_("New profile"))
            if not filter_facade.load():
                display_status(_("You have no filters defined yet for pseudo %s"% node.pseudo))
# ChangedNode called too many times at startup and make this popup appear several times => bother
# Replace by display_status for now
#                 display_message(
#                     _(u"You have no filters defined yet for pseudo %s.\n\n Filters are used "
#                       "to match your neighbors' profile and alert you if they "
#                       "match with your criteria.\n\n"
#                       "You may create your filters by clicking on the menu 'Profile', "
#                       "and selecting 'Filter Profiles'"% node.pseudo),
#                     title=_("New filters"))
            facade.change_pseudo(node.pseudo)
            # updating views
            if self.editor_frame:
                facade.add_view(EditorView(facade._desc,
                                           self.editor_frame))
                self.editor_frame.on_change_facade()
                facade.add_view(ViewerView(facade._desc,
                                           self.viewer_frame))
                self.viewer_frame.on_change_facade()
            if self.filter_frame:
                filter_facade.add_view(FilterView(filter_facade._desc,
                                                  self.filter_frame))
                self.filter_frame.on_change_facade()
            display_status(_("Loaded data for %s"% node.pseudo))
 def lineReceived(self, line):
     display_status(_("Unexpected line received: %s"% line))