예제 #1
0
    def send_message(self, text, bytestring=False):

        if not self.chats.connected:
            return

        user_text = self.frame.np.pluginhandler.outgoing_private_chat_event(
            self.user, text)
        if user_text is None:
            return

        (u, text) = user_text

        my_username = config.sections["server"]["login"]

        if text[:4] == "/me ":
            line = "* %s %s" % (my_username, text[4:])
            usertag = tag = self.tag_me
        else:

            if text == self.chats.CTCP_VERSION:
                line = "CTCP VERSION"
            else:
                line = text

            tag = self.tag_local
            usertag = self.tag_my_username
            line = "[%s] %s" % (my_username, line)

        timestamp_format = config.sections["logging"]["private_timestamp"]
        append_line(self.ChatScroll,
                    line,
                    tag,
                    timestamp_format=timestamp_format,
                    username=my_username,
                    usertag=usertag)

        if self.Log.get_active():
            timestamp_format = config.sections["logging"]["log_timestamp"]
            log.write_log(config.sections["logging"]["privatelogsdir"],
                          self.user, line, timestamp_format)

        if bytestring:
            payload = text
        else:
            payload = auto_replace(text)

        if self.PeerPrivateMessages.get_active():
            # not in the soulseek protocol
            self.frame.np.send_message_to_peer(
                self.user, slskmessages.PMessageUser(None, my_username,
                                                     payload))
        else:
            self.frame.np.queue.append(
                slskmessages.MessageUser(self.user, payload))

        self.frame.np.pluginhandler.outgoing_private_chat_notification(
            self.user, text)
예제 #2
0
    def FolderContentsRequest(self, msg):

        username = None
        checkuser = None
        reason = ""

        for i in self.np.peerconns:
            if i.conn is msg.conn.conn:
                username = i.username
                checkuser, reason = self.np.CheckUser(username, None)
                break

        if not username:
            return
        if not checkuser:
            self.queue.put(
                slskmessages.MessageUser(username,
                                         "[Automatic Message] " + reason))
            return

        if checkuser == 1:
            shares = self.config.sections["transfers"]["sharedfiles"]
        elif checkuser == 2:
            shares = self.config.sections["transfers"]["bsharedfiles"]
        else:
            self.queue.put(
                slskmessages.TransferResponse(msg.conn.conn,
                                              0,
                                              reason=reason,
                                              req=0))
            shares = {}

        if checkuser:
            if msg.dir in shares:
                self.queue.put(
                    slskmessages.FolderContentsResponse(
                        msg.conn.conn, msg.dir, shares[msg.dir]))
            elif msg.dir.rstrip('\\') in shares:
                self.queue.put(
                    slskmessages.FolderContentsResponse(
                        msg.conn.conn, msg.dir, shares[msg.dir.rstrip('\\')]))
            else:
                if checkuser == 2:
                    shares = self.config.sections["transfers"]["sharedfiles"]
                    if msg.dir in shares:
                        self.queue.put(
                            slskmessages.FolderContentsResponse(
                                msg.conn.conn, msg.dir, shares[msg.dir]))
                    elif msg.dir.rstrip("\\") in shares:
                        self.queue.put(
                            slskmessages.FolderContentsResponse(
                                msg.conn.conn, msg.dir,
                                shares[msg.dir.rstrip("\\")]))

        self.logMessage("%s %s" % (msg.__class__, vars(msg)), 4)
예제 #3
0
    def SendMessage(self, text, bytestring=False):

        user_text = self.frame.pluginhandler.OutgoingPrivateChatEvent(
            self.user, text)
        if user_text is None:
            return

        (u, text) = user_text

        my_username = self.frame.np.config.sections["server"]["login"]

        if text[:4] == "/me ":
            line = "* %s %s" % (my_username, text[4:])
            usertag = tag = self.tag_me
        else:

            if text == CTCP_VERSION:
                line = "CTCP VERSION"
            else:
                line = text

            tag = self.tag_local
            usertag = self.tag_my_username
            line = "[%s] %s" % (my_username, line)

        timestamp_format = self.frame.np.config.sections["logging"][
            "private_timestamp"]
        AppendLine(self.ChatScroll,
                   line,
                   tag,
                   timestamp_format=timestamp_format,
                   username=my_username,
                   usertag=usertag)

        if self.Log.get_active():
            timestamp_format = self.frame.np.config.sections["logging"][
                "log_timestamp"]
            write_log(
                self.frame.np.config.sections["logging"]["privatelogsdir"],
                self.user, line, timestamp_format)

        if bytestring:
            payload = text
        else:
            payload = self.frame.AutoReplace(text)

        if self.PeerPrivateMessages.get_active():
            # not in the soulseek protocol
            self.frame.np.ProcessRequestToPeer(
                self.user, slskmessages.PMessageUser(None, my_username,
                                                     payload))
        else:
            self.frame.np.queue.put(
                slskmessages.MessageUser(self.user, payload))
예제 #4
0
    def threadAlias(self, alias):

        text = expand_alias(self.frame.np.config.aliases, alias)
        if not text:
            log.add(_('Alias "%s" returned nothing') % alias)
            return

        if text[:2] == "//":
            text = text[1:]

        self.frame.np.queue.put(slskmessages.MessageUser(self.user, self.frame.AutoReplace(text)))
예제 #5
0
    def send_automatic_message(self, user, message):
        """ Sends a private message with the prefix 'Automatic Message' to a user.
        No message is sent if less than five seconds have passed since the last one. """

        send_time = time.time()

        if user in self.automatic_message_times and (
                send_time - self.automatic_message_times[user]) < 5:
            return

        self.queue.append(
            slskmessages.MessageUser(user, "[Automatic Message] " + message))
        self.automatic_message_times[user] = send_time
예제 #6
0
    def send_message(self, user, message):

        user_text = self.core.pluginhandler.outgoing_private_chat_event(user, message)
        if user_text is None:
            return

        user, message = user_text

        if message == self.CTCP_VERSION:
            ui_message = "CTCP VERSION"
        else:
            message = ui_message = self.auto_replace(message)

        self.queue.append(slskmessages.MessageUser(user, message))
        self.core.pluginhandler.outgoing_private_chat_notification(user, message)

        if self.ui_callback:
            self.ui_callback.send_message(user, ui_message)
예제 #7
0
    def send_message(self, user, message, bytestring=False):

        if not self.core.active_server_conn:
            return

        user_text = self.core.pluginhandler.outgoing_private_chat_event(
            user, message)
        if user_text is None:
            return

        _, message = user_text

        if bytestring:
            payload = message
        else:
            payload = self.auto_replace(message)

        self.queue.append(slskmessages.MessageUser(user, payload))
        self.core.pluginhandler.outgoing_private_chat_notification(
            user, message)

        if self.ui_callback:
            self.ui_callback.send_message(user, payload)
	def msguserdirect(self,user,line):
		curtime = time.time()
		#self.log('lasttimesent: %0.3f   ->   curtime: %0.3f   ->   diff: %0.3f' % (self.msgdirect_lasttimesent, curtime, curtime-self.msgdirect_lasttimesent))
		if (curtime-self.msgdirect_lasttimesent) >= 1: 
			self.msgdirect_lasttimesent = curtime
			self.parent.frame.np.queue.put(slskmessages.MessageUser(user, line.encode("utf-8",'replace'))) #hmm..?