def AddToList(self, user):

        if user in [i[0] for i in self.userlist]:
            return

        row = [
            self.frame.GetStatusImage(0), None, user, "0", "0", False, False,
            False,
            _("Never seen"), "", 0, 0, 0, 0, ""
        ]
        iter = self.usersmodel.append(row)

        self.userlist.append(
            [user, "",
             _("Never seen"), iter,
             self.frame.GetUserFlag(user)])
        self.SaveUserList()
        self.frame.np.queue.put(slskmessages.AddUser(user))
        self.frame.np.queue.put(slskmessages.GetPeerAddress(user))

        for widget in self.frame.BuddiesComboEntries:
            gobject.idle_add(widget.Append, user)

        if self.frame.np.config.sections["words"]["buddies"]:
            gobject.idle_add(self.frame.chatrooms.roomsctrl.UpdateCompletions)
            gobject.idle_add(self.frame.privatechats.UpdateCompletions)
Ejemplo n.º 2
0
    def add_to_list(self, user):

        if user in (i[2] for i in self.usersmodel):
            return

        empty_int = 0
        empty_str = ""

        self.usersmodel.insert_with_valuesv(-1, self.column_numbers, [
            GObject.Value(GObject.TYPE_OBJECT, self.frame.get_status_image(0)),
            GObject.Value(GObject.TYPE_OBJECT, None), user, empty_str,
            empty_str, False, False, False,
            _("Never seen"), empty_str, empty_int, empty_int, empty_int,
            empty_int, empty_str
        ])

        self.save_user_list()
        self.frame.np.queue.put(slskmessages.AddUser(user))

        # Request user's IP address, so we can get the country
        self.frame.np.queue.put(slskmessages.GetPeerAddress(user))

        for widget in self.buddies_combo_entries:
            widget.append_text(user)

        if self.frame.np.config.sections["words"]["buddies"]:
            GLib.idle_add(self.frame.chatrooms.update_completions)
            GLib.idle_add(self.frame.privatechats.update_completions)
Ejemplo n.º 3
0
    def add_user_row(self, userdata):

        username = userdata.username
        status = userdata.status
        country = userdata.country or ""  # country can be None, ensure string is used
        status_image = self.frame.get_status_image(status)
        flag_image = self.frame.get_flag_image(country)

        # Request user's IP address, so we can get the country
        self.frame.np.queue.append(slskmessages.GetPeerAddress(username))

        avgspeed = userdata.avgspeed
        files = userdata.files
        hspeed = human_speed(avgspeed)
        hfiles = humanize(files)

        iterator = self.usersmodel.insert_with_valuesv(
            -1, self.column_numbers, [
                GObject.Value(GObject.TYPE_OBJECT, status_image),
                GObject.Value(GObject.TYPE_OBJECT, flag_image), username,
                hspeed, hfiles, status,
                GObject.Value(GObject.TYPE_UINT64, avgspeed),
                GObject.Value(GObject.TYPE_UINT64, files), country
            ])

        self.users[username] = iterator
Ejemplo n.º 4
0
    def show_message(self, msg, text, newmessage=True):

        if msg.user in self.frame.np.config.sections["server"]["ignorelist"]:
            return

        if msg.user in self.frame.np.users and isinstance(
                self.frame.np.users[msg.user].addr, tuple):
            ip, port = self.frame.np.users[msg.user].addr
            if self.frame.np.ip_ignored(ip):
                return

        elif newmessage:
            self.frame.np.queue.put(slskmessages.GetPeerAddress(msg.user))
            self.frame.np.private_message_queue_add(msg, text)
            return

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

        (u, text) = user_text

        self.send_message(msg.user, None)
        chat = self.users[msg.user]
        self.request_changed(chat.Main)

        # Hilight main private chats Label
        self.frame.request_tab_icon(self.frame.PrivateChatTabLabel)

        # Show notifications if the private chats notebook isn't selected,
        # the tab is not selected, or the main window isn't mapped
        if self.get_current_page() != self.page_num(chat.Main) or \
           self.frame.MainNotebook.get_current_page() != self.frame.MainNotebook.page_num(self.frame.privatechatvbox) or \
           not self.frame.MainWindow.get_property("visible"):
            self.frame.notifications.add("private", msg.user)

            if self.frame.np.config.sections["notifications"][
                    "notification_popup_private_message"]:
                self.frame.notifications.new_notification(
                    text,
                    title=_("Private message from %s") % msg.user,
                    priority=Gio.NotificationPriority.HIGH)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = 0
        if text == CTCP_VERSION:
            ctcpversion = 1
            text = "CTCP VERSION"

        self.users[msg.user].show_message(text, newmessage, msg.timestamp)

        if ctcpversion and self.frame.np.config.sections["server"][
                "ctcpmsgs"] == 0:
            self.send_message(msg.user,
                              GLib.get_application_name() + " " + version)

        self.frame.np.pluginhandler.incoming_private_chat_notification(
            msg.user, text)
Ejemplo n.º 5
0
    def ShowMessage(self, msg, text, status=None):

        if msg.user in self.frame.np.config.sections["server"]["ignorelist"]:
            return

        if msg.user in self.frame.np.users and type(
                self.frame.np.users[msg.user].addr) is tuple:
            ip, port = self.frame.np.users[msg.user].addr
            if self.frame.np.ipIgnored(ip):
                return
        else:
            self.frame.np.queue.put(slskmessages.GetPeerAddress(msg.user))
            self.frame.np.PrivateMessageQueueAdd(msg, text)
            return

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

        (u, text) = user_text

        self.SendMessage(msg.user, None)
        chat = self.users[msg.user]
        self.request_changed(chat.Main)

        if self.is_tab_detached(chat.Main):
            # Only show notifications if window is not focused, and don't highlight main window
            if not self.is_detached_tab_focused(chat.Main):
                self.frame.Notifications.Add("private", msg.user)
        else:
            # If tab isn't detached
            # Hilight main private chats Label
            self.frame.RequestIcon(self.frame.PrivateChatTabLabel, chat.Main)

            # Show notifications if the private chats notebook isn't selected,
            # the tab is not selected, or the main window isn't mapped
            if self.get_current_page() != self.page_num(chat.Main) or \
               self.frame.MainNotebook.get_current_page() != self.frame.MainNotebook.page_num(self.frame.privatevbox) or \
               not self.frame.is_mapped:
                self.frame.Notifications.Add("private", msg.user)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = 0
        if text == CTCP_VERSION:
            ctcpversion = 1
            text = "CTCP VERSION"

        self.users[msg.user].ShowMessage(text, status, msg.timestamp)

        if ctcpversion and self.frame.np.config.sections["server"][
                "ctcpmsgs"] == 0:
            self.SendMessage(msg.user, u"Nicotine+ %s" % version)

        self.frame.pluginhandler.IncomingPrivateChatNotification(
            msg.user, text)
Ejemplo n.º 6
0
    def add_user(self, user):

        # Request user status, speed and number of shared files
        self.core.watch_user(user, force_update=True)

        # Request user's IP address, so we can get the country
        self.queue.append(slskmessages.GetPeerAddress(user))

        if self.ui_callback:
            self.ui_callback.add_user(user)
Ejemplo n.º 7
0
    def ShowMessage(self, msg, text, newmessage=True):

        if msg.user in self.frame.np.config.sections["server"]["ignorelist"]:
            return

        if msg.user in self.frame.np.users and type(
                self.frame.np.users[msg.user].addr) is tuple:
            ip, port = self.frame.np.users[msg.user].addr
            if self.frame.np.ipIgnored(ip):
                return
        elif newmessage:
            self.frame.np.queue.put(slskmessages.GetPeerAddress(msg.user))
            self.frame.np.PrivateMessageQueueAdd(msg, text)
            return

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

        (u, text) = user_text

        self.SendMessage(msg.user, None)
        chat = self.users[msg.user]
        self.request_changed(chat.Main)

        # Hilight main private chats Label
        self.frame.RequestIcon(self.frame.PrivateChatTabLabel, chat.Main)

        # Show notifications if the private chats notebook isn't selected,
        # the tab is not selected, or the main window isn't mapped
        if self.get_current_page() != self.page_num(chat.Main) or \
           self.frame.MainNotebook.get_current_page() != self.frame.MainNotebook.page_num(self.frame.privatevbox) or \
           not self.frame.MainWindow.get_property("visible"):
            self.frame.Notifications.Add("private", msg.user)

            if self.frame.np.config.sections["notifications"][
                    "notification_popup_private_message"]:
                self.frame.Notifications.NewNotificationPopup(
                    text, title=_("Private message from %s") % msg.user)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = 0
        if text == CTCP_VERSION:
            ctcpversion = 1
            text = "CTCP VERSION"

        self.users[msg.user].ShowMessage(text, newmessage, msg.timestamp)

        if ctcpversion and self.frame.np.config.sections["server"][
                "ctcpmsgs"] == 0:
            self.SendMessage(msg.user, "Nicotine+ %s" % version)

        self.frame.pluginhandler.IncomingPrivateChatNotification(
            msg.user, text)
Ejemplo n.º 8
0
    def on_get_a_users_ip_response(self, dialog, response_id, data):

        user = dialog.get_response_value()
        dialog.destroy()

        if response_id != Gtk.ResponseType.OK:
            return

        if user:
            self.frame.np.ip_requested.add(user)
            self.frame.np.queue.append(slskmessages.GetPeerAddress(user))
Ejemplo n.º 9
0
    def message_user(self, msg):

        self.queue.append(slskmessages.MessageAcked(msg.msgid))

        if self.core.network_filter.is_user_ignored(msg.user):
            return

        if msg.user in self.core.users and isinstance(
                self.core.users[msg.user].addr, tuple):
            ip_address, _port = self.core.users[msg.user].addr
            if self.core.network_filter.is_ip_ignored(ip_address):
                return

        elif msg.newmessage:
            self.queue.append(slskmessages.GetPeerAddress(msg.user))
            self.private_message_queue_add(msg)
            return

        user_text = self.core.pluginhandler.incoming_private_chat_event(
            msg.user, msg.msg)
        if user_text is None:
            return

        _, msg.msg = user_text
        msg.msg = self.censor_chat(msg.msg)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = 0
        if msg.msg == self.CTCP_VERSION:
            ctcpversion = 1
            msg.msg = "CTCP VERSION"

        if self.ui_callback:
            self.ui_callback.message_user(msg)

        self.core.notifications.new_tts(
            self.config.sections["ui"]["speechprivate"], {
                "user": msg.user,
                "message": msg.msg
            })

        self.core.pluginhandler.incoming_private_chat_notification(
            msg.user, msg.msg)

        if ctcpversion and self.config.sections["server"]["ctcpmsgs"] == 0:
            self.send_message(msg.user, "Nicotine+ " + self.config.version)

        autoreply = self.config.sections["server"]["autoreply"]

        if self.core.away and msg.user not in self.automatic_message_times and autoreply:
            self.send_automatic_message(msg.user, autoreply)
Ejemplo n.º 10
0
 def OnGetAUsersIP(self, widget, prefix=""):
     users = []
     for entry in self.frame.np.config.sections["server"]["userlist"]:
         users.append(entry[0])
     users.sort()
     user = ComboBoxDialog(
         parent=self.frame.MainWindow,
         title="Nicotine+" + ": " + _("Get A User's IP"),
         message=_('Enter the User whose IP Address you wish to receive:'),
         droplist=users)
     if user is None:
         pass
     else:
         self.frame.np.queue.put(slskmessages.GetPeerAddress(user))
Ejemplo n.º 11
0
    def message_user(self, msg):

        self.queue.append(slskmessages.MessageAcked(msg.msgid))

        if msg.user != "server":
            # Check ignore status for all other users except "server"
            if self.core.network_filter.is_user_ignored(msg.user):
                return

            user_address = self.core.protothread.user_addresses.get(msg.user)

            if user_address is not None:
                ip_address, _port = user_address
                if self.core.network_filter.is_ip_ignored(ip_address):
                    return

            elif msg.newmessage:
                self.queue.append(slskmessages.GetPeerAddress(msg.user))
                self.private_message_queue_add(msg)
                return

        user_text = self.core.pluginhandler.incoming_private_chat_event(msg.user, msg.msg)
        if user_text is None:
            return

        self.show_user(msg.user, switch_page=False)

        _, msg.msg = user_text
        msg.msg = self.censor_chat(msg.msg)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = False
        if msg.msg == self.CTCP_VERSION:
            ctcpversion = True
            msg.msg = "CTCP VERSION"

        if self.ui_callback:
            self.ui_callback.message_user(msg)

        self.core.pluginhandler.incoming_private_chat_notification(msg.user, msg.msg)

        if ctcpversion and not self.config.sections["server"]["ctcpmsgs"]:
            self.send_message(msg.user, "%s %s" % (self.config.application_name, self.config.version))

        autoreply = self.config.sections["server"]["autoreply"]

        if autoreply and self.core.away and msg.user not in self.away_message_users:
            self.send_automatic_message(msg.user, autoreply)
            self.away_message_users.add(msg.user)
Ejemplo n.º 12
0
    def get_user_country(self, user):
        """ Retrieve a user's country code if previously cached, otherwise request
        user's IP address to determine country """

        user_address = self.protothread.user_addresses.get(user)

        if user_address and user != self.protothread.server_username:
            ip_address, _port = user_address
            country_code = self.geoip.get_country_code(ip_address)
            return country_code

        if user not in self.ip_requested:
            self.queue.append(slskmessages.GetPeerAddress(user))

        return None
Ejemplo n.º 13
0
    def on_get_a_users_ip(self, widget, prefix=""):
        users = []
        for entry in self.frame.np.config.sections["server"]["userlist"]:
            users.append(entry[0])
        users.sort()
        user = combo_box_dialog(
            parent=self.frame.MainWindow,
            title="Nicotine+" + ": " + _("Get A User's IP"),
            message=_('Enter the User whose IP Address you wish to receive:'),
            droplist=users)
        if user is not None:
            if user not in self.frame.np.ip_requested:
                self.frame.np.ip_requested.append(user)

            self.frame.np.queue.put(slskmessages.GetPeerAddress(user))
Ejemplo n.º 14
0
	def IncomingPublicChatEvent(self, room, user, line):
		if not self.settings['enabled']: return #not enabled
		if user == self.parent.frame.np.config.sections["server"]["login"]: return #ignore ourselves (apparently, we also trigger an incoming event)
		if self.checkbuddylist(user): return   ##if self.buddylist_RE.match(user): return   ##if user in self.buddylist: return
		if self.settings['iplookuppublic']:
			self.userstocheck[user] = {'user':user}
			self.parent.frame.np.queue.put(slskmessages.GetPeerAddress(user)) #hopefully now, we'll catch ip's even before quick disconnections (spammers- gotta love 'em)
		blocktypecode = self.checkautoblock(user)
		if (not blocktypecode): blocktypecode = self.checkcontent(line)
		if (not blocktypecode) and (self.settings['screenpublicnicks']): blocktypecode = self.checkname(user)
		if blocktypecode:
			if self.settings['iplookuppublic']: self.prelimresolve(user,line,blocktypecode,'room '+room)    #,room)    #,'#'+room)
			else:
				logline = self.generatespamlog('', user, 'room '+room, blocktypecode, line)
				if self.settings['echoblockedpublic']: self.msguserdirect(user,logline)
				self.writespamlog(room,logline)
			return returncode['zap']
		elif (user in self.userstocheck): del self.userstocheck[user] #..if we didn't delete it, we could log info about the history/frequency of spam, ip's used, cross-referenced nick-to-ip-datasets (and reverse), etc.
Ejemplo n.º 15
0
    def _request_ip(self, user, action, list_type):
        """ Ask for the IP address of a user. Once a GetPeerAddress response arrives,
        either block_unblock_user_ip_callback or ignore_unignore_user_ip_callback
        is called. """

        if list_type == "block":
            request_list = self.ipblock_requested
        else:
            request_list = self.ipignore_requested

        if user not in self.users or not isinstance(self.users[user].addr, tuple):
            if user not in request_list:
                request_list[user] = action

            self.queue.append(slskmessages.GetPeerAddress(user))
            return True

        return False
Ejemplo n.º 16
0
    def add_to_list(self, user):

        if user in (i[2] for i in self.usersmodel):
            return

        row = [self.frame.get_status_image(0), None, user, "", "", False, False, False, _("Never seen"), "", 0, 0, 0, 0, ""]
        self.usersmodel.append(row)

        self.save_user_list()
        self.frame.np.queue.put(slskmessages.AddUser(user))
        self.frame.np.queue.put(slskmessages.GetPeerAddress(user))

        for widget in self.buddies_combo_entries:
            widget.append_text(user)

        if self.frame.np.config.sections["words"]["buddies"]:
            GLib.idle_add(self.frame.chatrooms.update_completions)
            GLib.idle_add(self.frame.privatechats.update_completions)
Ejemplo n.º 17
0
    def add_user_row(self, userdata):

        username = userdata.username
        status = userdata.status
        country = userdata.country or ""  # country can be None, ensure string is used
        status_icon = get_status_icon(status) or get_status_icon(0)
        flag_icon = get_flag_icon_name(country)

        # Request user's IP address, so we can get the country and ignore messages by IP
        self.frame.np.queue.append(slskmessages.GetPeerAddress(username))

        h_speed = ""
        avgspeed = userdata.avgspeed

        if avgspeed > 0:
            h_speed = human_speed(avgspeed)

        files = userdata.files
        h_files = humanize(files)

        weight = Pango.Weight.NORMAL
        underline = Pango.Underline.NONE

        if self.room in self.frame.np.chatrooms.private_rooms:
            if username == self.frame.np.chatrooms.private_rooms[
                    self.room]["owner"]:
                weight = Pango.Weight.BOLD
                underline = Pango.Underline.SINGLE

            elif username in self.frame.np.chatrooms.private_rooms[
                    self.room]["operators"]:
                weight = Pango.Weight.BOLD
                underline = Pango.Underline.NONE

        iterator = self.usersmodel.insert_with_valuesv(
            -1, self.column_numbers, [
                status_icon, flag_icon, username, h_speed, h_files, status,
                GObject.Value(GObject.TYPE_UINT, avgspeed),
                GObject.Value(GObject.TYPE_UINT, files), country, weight,
                underline
            ])

        self.users[username] = iterator
Ejemplo n.º 18
0
    def add_to_list(self, user):

        if user in self.user_iterators:
            return

        empty_int = 0
        empty_str = ""

        self.user_iterators[user] = self.usersmodel.insert_with_valuesv(
            -1, self.column_numbers,
            [
                GObject.Value(GObject.TYPE_OBJECT, self.frame.get_status_image(0)),
                GObject.Value(GObject.TYPE_OBJECT, None),
                user,
                empty_str,
                empty_str,
                False,
                False,
                False,
                _("Never seen"),
                empty_str,
                empty_int,
                empty_int,
                empty_int,
                empty_int,
                empty_str
            ]
        )

        self.save_user_list()

        # Request user status, speed and number of shared files
        self.frame.np.watch_user(user, force_update=True)

        # Request user's IP address, so we can get the country
        self.frame.np.queue.append(slskmessages.GetPeerAddress(user))

        for widget in self.buddies_combo_entries:
            widget.append_text(user)

        if config.sections["words"]["buddies"]:
            self.frame.update_completions()
Ejemplo n.º 19
0
	def IncomingPrivateChatEvent(self, user, line):
		#self.log('badcontent: %s' % ('.*('+'|'.join(str(x) for x in self.settings['badcontent'])+').*'))
		if not self.settings['enabled']: return #not enabled
		if self.checkbuddylist(user): return   ##if self.buddylist_RE.match(user): return   ##if user in self.buddylist: return
		if self.settings['echoallpm']: self.msguserdirect(user,line)
		if self.settings['iplookuppm']:
			self.userstocheck[user] = {'user':user,'location':'private msg'}
			self.parent.frame.np.queue.put(slskmessages.GetPeerAddress(user)) #hopefully now, we'll catch ip's even before quick disconnections (spammers- gotta love 'em)
		#self.log('self.onlynonwords_RE.match(line) ->   %s' % (self.onlynonwords_RE.match(line)))
		blocktypecode = self.checkautoblock(user)
		if (not blocktypecode) and ((not self.getprivatelog(user)) and (self.onlyspaces_or_numbers_RE.match(line) or (len(line)==0) or self.onlynonwords_RE.match(line))): blocktypecode = 6
		if (not blocktypecode): blocktypecode = (self.checkcontent(line) or self.checkname(user))
		if blocktypecode:
			if self.settings['iplookuppm']: self.prelimresolve(user,line,blocktypecode,'private msg')
			else: 
				logline = self.generatespamlog('', user, 'private msg', blocktypecode, line)
				if self.settings['echoblockedpm']: self.msguserdirect(user,logline)
				self.writespamlog('private msg',logline)
			return returncode['zap']
		elif (user in self.userstocheck): del self.userstocheck[user] #..if we didn't delete it, we could log info about the history/frequency of spam, ip's used, cross-referenced nick-to-ip-datasets (and reverse), etc.
Ejemplo n.º 20
0
    def show_message(self, msg, text, newmessage=True):

        if self.frame.np.network_filter.is_user_ignored(msg.user):
            return

        if msg.user in self.frame.np.users and isinstance(
                self.frame.np.users[msg.user].addr, tuple):
            ip, port = self.frame.np.users[msg.user].addr
            if self.frame.np.network_filter.is_ip_ignored(ip):
                return

        elif newmessage:
            self.frame.np.queue.append(slskmessages.GetPeerAddress(msg.user))
            self.private_message_queue_add(msg, text)
            return

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

        (u, text) = user_text

        self.send_message(msg.user, None)
        self.show_notification(msg.user, text)

        # SEND CLIENT VERSION to user if the following string is sent
        ctcpversion = 0
        if text == self.CTCP_VERSION:
            ctcpversion = 1
            text = "CTCP VERSION"

        self.users[msg.user].show_message(text, newmessage, msg.timestamp)

        if ctcpversion and config.sections["server"]["ctcpmsgs"] == 0:
            self.send_message(msg.user,
                              GLib.get_application_name() + " " + version)

        self.frame.np.pluginhandler.incoming_private_chat_notification(
            msg.user, text)
Ejemplo n.º 21
0
    def OnShowIPaddress(self, widget):

        if self.user not in self.frame.np.ip_requested:
            self.frame.np.ip_requested.append(self.user)

        self.frame.np.queue.put(slskmessages.GetPeerAddress(self.user))
Ejemplo n.º 22
0
    def on_show_ip_address(self, widget):

        self.frame.np.ip_requested.add(self.user)
        self.frame.np.queue.put(slskmessages.GetPeerAddress(self.user))
Ejemplo n.º 23
0
    def on_enter(self, widget):

        text = widget.get_text()

        if not text:
            widget.set_text("")
            return

        if is_alias(text):
            new_text = expand_alias(text)

            if not new_text:
                log.add(_('Alias "%s" returned nothing'), text)
                return

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

            self.frame.np.queue.append(
                self.message_class(self.entity, auto_replace(new_text)))
            widget.set_text("")
            return

        s = text.split(" ", 1)
        cmd = s[0]

        # Remove empty items created by split, if command ended with a space, e.g. '/ctcpversion '
        if len([i for i in s if i]) == 2:
            arg_self = args = s[1]
        else:
            if not self.is_chatroom:
                arg_self = self.entity
            else:
                arg_self = ""

            args = ""

        if cmd[:
               1] == "/" and cmd[:
                                 2] != "//" and cmd + " " not in self.command_list:
            log.add(_("Command %s is not recognized"), text)
            return

        if cmd in ("/alias", "/al"):
            append_line(self.textview, add_alias(args), None, "")

            if config.sections["words"]["aliases"]:
                self.frame.update_completions()

        elif cmd in ("/unalias", "/un"):
            append_line(self.textview, unalias(args), None, "")

            if config.sections["words"]["aliases"]:
                self.frame.update_completions()

        elif cmd in ("/w", "/whois", "/info"):
            if arg_self:
                self.frame.local_user_info_request(arg_self)
                self.frame.change_main_page("userinfo")

        elif cmd in ("/b", "/browse"):
            if arg_self:
                self.frame.browse_user(arg_self)
                self.frame.change_main_page("userbrowse")

        elif cmd == "/ip":
            if arg_self:
                self.frame.np.ip_requested.add(arg_self)
                self.frame.np.queue.append(
                    slskmessages.GetPeerAddress(arg_self))

        elif cmd == "/pm":
            if args:
                self.frame.privatechats.send_message(args, show_user=True)
                self.frame.change_main_page("private")

        elif cmd in ("/m", "/msg"):
            if args:
                s = args.split(" ", 1)
                user = s[0]
                if len(s) == 2:
                    msg = s[1]
                else:
                    msg = None
                self.frame.privatechats.send_message(user, msg, show_user=True)
                self.frame.change_main_page("private")

        elif cmd in ("/s", "/search"):
            if args:
                self.frame.SearchMethod.set_active(0)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/us", "/usearch"):
            s = args.split(" ", 1)
            if len(s) == 2:
                self.frame.SearchMethod.set_active(3)
                self.frame.SearchEntry.set_text(s[1])
                self.frame.UserSearchEntry.set_text(s[0])
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/rs", "/rsearch"):
            if args:
                self.frame.SearchMethod.set_active(2)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/bs", "/bsearch"):
            if args:
                self.frame.SearchMethod.set_active(1)
                self.frame.SearchEntry.set_text(args)
                self.frame.on_search(self.frame.SearchEntry)
                self.frame.change_main_page("search")

        elif cmd in ("/j", "/join"):
            if args:
                self.frame.np.queue.append(slskmessages.JoinRoom(args))

        elif cmd in ("/l", "/leave", "/p", "/part"):
            if args:
                self.frame.np.queue.append(slskmessages.LeaveRoom(args))
            else:
                self.frame.np.queue.append(slskmessages.LeaveRoom(self.entity))

        elif cmd in ("/ad", "/add", "/buddy"):
            if args:
                self.frame.userlist.add_to_list(args)

        elif cmd in ("/rem", "/unbuddy"):
            if args:
                self.frame.userlist.remove_from_list(args)

        elif cmd == "/ban":
            if args:
                self.frame.np.network_filter.ban_user(args)

        elif cmd == "/ignore":
            if args:
                self.frame.np.network_filter.ignore_user(args)

        elif cmd == "/ignoreip":
            if args:
                self.frame.np.network_filter.ignore_ip(args)

        elif cmd == "/unban":
            if args:
                self.frame.np.network_filter.unban_user(args)

        elif cmd == "/unignore":
            if args:
                self.frame.np.network_filter.unignore_user(args)

        elif cmd == "/ctcpversion":
            if arg_self:
                self.frame.privatechats.send_message(
                    arg_self,
                    self.frame.privatechats.CTCP_VERSION,
                    show_user=True,
                    bytestring=True)

        elif cmd in ("/clear", "/cl"):
            self.textview.get_buffer().set_text("")

        elif cmd in ("/a", "/away"):
            self.frame.on_away()

        elif cmd in ("/q", "/quit", "/exit"):
            self.frame.on_quit()
            return  # Avoid gsignal warning

        elif cmd in ("/c", "/close"):
            self.frame.privatechats.users[self.entity].on_close()

        elif cmd == "/now":
            self.frame.np.now_playing.display_now_playing(
                callback=self.send_message)

        elif cmd == "/rescan":
            # Rescan public shares if needed
            if not config.sections["transfers"][
                    "friendsonly"] and config.sections["transfers"]["shared"]:
                self.frame.on_rescan()

            # Rescan buddy shares if needed
            if config.sections["transfers"]["enablebuddyshares"]:
                self.frame.on_buddy_rescan()

        elif cmd in ("/tick", "/t"):
            self.frame.np.queue.append(
                slskmessages.RoomTickerSet(self.entity, args))

        elif cmd == "/tickers":
            self.frame.chatrooms.joinedrooms[self.entity].show_tickers()

        elif cmd == "/toggle":
            if args:
                self.frame.np.pluginhandler.toggle_plugin(args)

                if config.sections["words"]["commands"]:
                    self.frame.update_completions()

        elif cmd[:
                 1] == "/" and self.is_chatroom and self.frame.np.pluginhandler.trigger_public_command_event(
                     self.entity, cmd[1:], args):
            pass

        elif cmd[:
                 1] == "/" and not self.is_chatroom and self.frame.np.pluginhandler.trigger_private_command_event(
                     self.entity, cmd[1:], args):
            pass

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

            self.send_message(text)

        self.entry.set_text("")
 def resolve(self, user):
     self.parent.frame.np.queue.put(slskmessages.GetPeerAddress(user))
Ejemplo n.º 25
0
 def resolve(self, user):
     self.core.queue.append(slskmessages.GetPeerAddress(user))
Ejemplo n.º 26
0
    def OnEnter(self, widget):

        text = widget.get_text()

        if not text:
            widget.set_text("")
            return

        if is_alias(self.frame.np.config.aliases, text):
            import _thread
            _thread.start_new_thread(self.threadAlias, (text, ))
            widget.set_text("")
            return

        s = text.split(" ", 1)
        cmd = s[0]
        if len(s) == 2 and s[1]:
            realargs = args = s[1]
        else:
            args = self.user
            realargs = ""

        if cmd in ("/alias", "/al"):

            AppendLine(self.ChatScroll,
                       self.frame.np.config.AddAlias(realargs), None, "")
            if self.frame.np.config.sections["words"]["aliases"]:
                self.frame.chatrooms.roomsctrl.UpdateCompletions()
                self.frame.privatechats.UpdateCompletions()

        elif cmd in ("/unalias", "/un"):

            AppendLine(self.ChatScroll, self.frame.np.config.Unalias(realargs),
                       None, "")
            if self.frame.np.config.sections["words"]["aliases"]:
                self.frame.chatrooms.roomsctrl.UpdateCompletions()
                self.frame.privatechats.UpdateCompletions()

        elif cmd in ["/join", "/j"]:
            self.frame.np.queue.put(slskmessages.JoinRoom(args))

        elif cmd in ["/w", "/whois", "/info"]:
            if args:
                self.frame.LocalUserInfoRequest(args)
                self.frame.OnUserInfo(None)

        elif cmd in ["/b", "/browse"]:
            if args:
                self.frame.BrowseUser(args)
                self.frame.OnUserBrowse(None)

        elif cmd == "/ip":
            if args:
                user = args
                if user not in self.frame.np.ip_requested:
                    self.frame.np.ip_requested.append(user)
                self.frame.np.queue.put(slskmessages.GetPeerAddress(user))

        elif cmd == "/pm":
            if realargs:
                self.frame.privatechats.SendMessage(realargs, None, 1)

        elif cmd in ["/m", "/msg"]:
            if realargs:
                s = realargs.split(" ", 1)
                user = s[0]
                if len(s) == 2:
                    msg = s[1]
                else:
                    msg = None

                self.frame.privatechats.SendMessage(user, msg)

        elif cmd in ["/s", "/search"]:
            if realargs:
                self.frame.Searches.DoSearch(realargs, 0)
                self.frame.OnSearch(None)

        elif cmd in ["/us", "/usearch"]:
            if realargs:
                self.frame.Searches.DoSearch(realargs, 3, [self.user])
                self.frame.OnSearch(None)

        elif cmd in ["/rs", "/rsearch"]:
            if realargs:
                self.frame.Searches.DoSearch(realargs, 1)
                self.frame.OnSearch(None)

        elif cmd in ["/bs", "/bsearch"]:
            if realargs:
                self.frame.Searches.DoSearch(realargs, 2)
                self.frame.OnSearch(None)

        elif cmd in ["/ad", "/add", "/buddy"]:
            if args:
                self.frame.userlist.AddToList(args)

        elif cmd in ["/rem", "/unbuddy"]:
            if args:
                self.frame.userlist.RemoveFromList(args)

        elif cmd == "/ban":
            if args:
                self.frame.BanUser(args)

        elif cmd == "/ignore":
            if args:
                self.frame.IgnoreUser(args)

        elif cmd == "/ignoreip":
            if args:
                self.frame.IgnoreIP(args)

        elif cmd == "/unban":
            if args:
                self.frame.UnbanUser(args)

        elif cmd == "/unignore":
            if args:
                self.frame.UnignoreUser(args)

        elif cmd == "/ctcpversion":
            if args:
                self.frame.privatechats.SendMessage(args,
                                                    CTCP_VERSION,
                                                    1,
                                                    bytestring=True)

        elif cmd in ["/clear", "/cl"]:
            self.ChatScroll.get_buffer().set_text("")

        elif cmd in ["/a", "/away"]:
            self.frame.OnAway(None)

        elif cmd in ["/q", "/quit", "/exit"]:
            self.frame.OnExit(None)
            return

        elif cmd in ["/c", "/close"]:
            self.OnClose(None)

        elif cmd == "/now":
            self.NowPlayingThread()

        elif cmd == "/rescan":
            self.frame.OnRescan()

        elif cmd[:
                 1] == "/" and self.frame.pluginhandler.TriggerPrivateCommandEvent(
                     self.user, cmd[1:], args):
            pass

        elif cmd and cmd[:1] == "/" and cmd != "/me" and cmd[:2] != "//":
            self.frame.logMessage(_("Command %s is not recognized") % text)
            return

        else:

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

            if self.chats.connected:
                self.SendMessage(text)
                widget.set_text("")

            return

        widget.set_text("")
Ejemplo n.º 27
0
 def on_show_ip_address(self, *args):
     self.frame.np.ip_requested.add(self.user)
     self.frame.np.queue.append(slskmessages.GetPeerAddress(self.user))
Ejemplo n.º 28
0
 def request_ip_address(self, username):
     self.ip_requested.add(username)
     self.queue.append(slskmessages.GetPeerAddress(username))
Ejemplo n.º 29
0
    def on_enter(self, widget):

        text = widget.get_text()

        if not text:
            widget.set_text("")
            return

        if is_alias(text):
            import _thread
            _thread.start_new_thread(self.thread_alias, (text, ))
            widget.set_text("")
            return

        s = text.split(" ", 1)
        cmd = s[0]
        if len(s) == 2 and s[1]:
            realargs = args = s[1]
        else:
            args = self.user
            realargs = ""

        if cmd in ("/alias", "/al"):

            append_line(self.ChatScroll, add_alias(realargs), None, "")
            if self.frame.np.config.sections["words"]["aliases"]:
                self.frame.chatrooms.update_completions()
                self.frame.privatechats.update_completions()

        elif cmd in ("/unalias", "/un"):

            append_line(self.ChatScroll, unalias(realargs), None, "")
            if self.frame.np.config.sections["words"]["aliases"]:
                self.frame.chatrooms.update_completions()
                self.frame.privatechats.update_completions()

        elif cmd in ["/join", "/j"]:
            self.frame.np.queue.put(slskmessages.JoinRoom(args))

        elif cmd in ["/w", "/whois", "/info"]:
            if args:
                self.frame.local_user_info_request(args)
                self.frame.on_user_info(None)

        elif cmd in ["/b", "/browse"]:
            if args:
                self.frame.browse_user(args)
                self.frame.on_user_browse(None)

        elif cmd == "/ip":
            if args:
                user = args
                self.frame.np.ip_requested.add(user)
                self.frame.np.queue.put(slskmessages.GetPeerAddress(user))

        elif cmd == "/pm":
            if realargs:
                self.frame.privatechats.send_message(realargs, show_user=True)

        elif cmd in ["/m", "/msg"]:
            if realargs:
                s = realargs.split(" ", 1)
                user = s[0]
                if len(s) == 2:
                    msg = s[1]
                else:
                    msg = None

                self.frame.privatechats.send_message(user, msg)

        elif cmd in ["/s", "/search"]:
            if realargs:
                self.frame.searches.do_search(realargs, 0)
                self.frame.on_search(None)

        elif cmd in ["/us", "/usearch"]:
            if realargs:
                self.frame.searches.do_search(realargs, 3, [self.user])
                self.frame.on_search(None)

        elif cmd in ["/rs", "/rsearch"]:
            if realargs:
                self.frame.searches.do_search(realargs, 1)
                self.frame.on_search(None)

        elif cmd in ["/bs", "/bsearch"]:
            if realargs:
                self.frame.searches.do_search(realargs, 2)
                self.frame.on_search(None)

        elif cmd in ["/ad", "/add", "/buddy"]:
            if args:
                self.frame.userlist.add_to_list(args)

        elif cmd in ["/rem", "/unbuddy"]:
            if args:
                self.frame.userlist.remove_from_list(args)

        elif cmd == "/ban":
            if args:
                self.frame.ban_user(args)

        elif cmd == "/ignore":
            if args:
                self.frame.ignore_user(args)

        elif cmd == "/ignoreip":
            if args:
                self.frame.ignore_ip(args)

        elif cmd == "/unban":
            if args:
                self.frame.unban_user(args)

        elif cmd == "/unignore":
            if args:
                self.frame.unignore_user(args)

        elif cmd == "/ctcpversion":
            if args:
                self.frame.privatechats.send_message(args,
                                                     CTCP_VERSION,
                                                     show_user=True,
                                                     bytestring=True)

        elif cmd in ["/clear", "/cl"]:
            self.ChatScroll.get_buffer().set_text("")

        elif cmd in ["/a", "/away"]:
            self.frame.on_away(None)

        elif cmd in ["/q", "/quit", "/exit"]:
            self.frame.on_quit(None)
            return

        elif cmd in ["/c", "/close"]:
            self.on_close(None)

        elif cmd == "/now":
            self.display_now_playing()

        elif cmd == "/rescan":
            self.frame.on_rescan()

        elif cmd[:
                 1] == "/" and self.frame.np.pluginhandler.trigger_private_command_event(
                     self.user, cmd[1:], args):
            pass

        elif cmd and cmd[:1] == "/" and cmd != "/me" and cmd[:2] != "//":
            log.add(_("Command %s is not recognized"), text)
            return

        else:

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

            if self.chats.connected:
                self.send_message(text)
                widget.set_text("")

            return

        widget.set_text("")