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)
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)
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
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)
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)
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)
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)
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))
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)
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))
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)
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
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))
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.
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
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)
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
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()
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.
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)
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))
def on_show_ip_address(self, widget): self.frame.np.ip_requested.add(self.user) self.frame.np.queue.put(slskmessages.GetPeerAddress(self.user))
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))
def resolve(self, user): self.core.queue.append(slskmessages.GetPeerAddress(user))
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("")
def on_show_ip_address(self, *args): self.frame.np.ip_requested.add(self.user) self.frame.np.queue.append(slskmessages.GetPeerAddress(self.user))
def request_ip_address(self, username): self.ip_requested.add(username) self.queue.append(slskmessages.GetPeerAddress(username))
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("")