Beispiel #1
0
 def updateChannel(self, schid, ownID=0, ownCID=0):
     if not ownID: (err, ownID) = ts3lib.getClientID(schid)
     if not ownCID: (err, ownCID) = ts3lib.getChannelOfClient(schid, ownID)
     (err, cname) = ts3lib.getChannelVariable(
         schid, ownCID, ts3defines.ChannelProperties.CHANNEL_NAME)
     name = re.sub(r'^\[[crl\*]spacer(.*)?\]',
                   '',
                   cname,
                   flags=re.IGNORECASE | re.UNICODE)
     from unidecode import unidecode
     self.activity["state"] = unidecode(name)
     clients = len(ts3lib.getChannelClientList(schid, ownCID)[1])
     # (err, clients) = ts3lib.getChannelVariable(schid, ts3defines.ChannelPropertiesRare.)
     (err, cmax) = ts3lib.getChannelVariable(
         schid, ownCID, ts3defines.ChannelProperties.CHANNEL_MAXCLIENTS)
     if cmax >= clients:
         if PluginHost.cfg.getboolean("general", "verbose"):
             print("cmax", cmax, ">=", "clients", clients)
         self.activity["party"]["size"] = [clients, cmax]
     else:
         (err, smax) = ts3lib.getServerVariable(
             schid,
             ts3defines.VirtualServerProperties.VIRTUALSERVER_MAXCLIENTS)
         # (err, clients) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_CLIENTS_ONLINE)
         # clients = len(ts3lib.getClientList(schid)[1])
         self.activity["party"] = {"size": [clients, smax]}
     (err, ip) = ts3lib.getConnectionVariable(
         schid, ownID, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
     (err, port) = ts3lib.getConnectionVariable(
         schid, ownID,
         ts3defines.ConnectionProperties.CONNECTION_SERVER_PORT)
     self.activity["secrets"] = {
         "join": "ts3server://{}?port={}&cid={}".format(ip, port, ownCID)
     }
     self.update = True
Beispiel #2
0
 def onHotkeyOrCommandEvent(self, keyword, schid=0):
     if not schid: schid = ts3lib.getCurrentServerConnectionHandlerID()
     # (err, status) = ts3lib.getConnectionStatus(schid)
     # if status != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: return
     arguments = []
     if keyword == "yatqa_start": pass
     elif keyword == "yatqa_connect_current":
         (err, ownID) = ts3lib.getClientID(schid)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, ownID,
             ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
         (err, port) = ts3lib.getServerVariable(
             schid,
             ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT)
         title = ("{} > {}".format(self.name, ip))
         qport = inputInt(title, "Query Port:", 10011, 1, 65535)
         name = inputBox(title, "Query Login Name:", "serveradmin")
         pw = inputBox(
             title, "Query Login Password:"******"")
         args = ["-c", ip, qport]
         if name and pw: args.extend([name, pw, port])
         else: args.append(port)
         self.yatqa.setArguments(
             args)  # IP Query_Port [User Pass] [Voice_Port]
     elif keyword == "yatqa_stats_current":
         (err, ownID) = ts3lib.getClientID(schid)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, ownID,
             ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
         (err, port) = ts3lib.getServerVariable(
             schid,
             ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT)
         self.yatqa.setArguments(["-s", ip, port])  # IP
     elif keyword == "yatqa_blacklist_current":
         (err, ownID) = ts3lib.getClientID(schid)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, ownID,
             ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
         self.yatqa.setArguments(["-b", ip])  # IP
     elif keyword == "yatqa_lookup_dns":
         (err, host, port, pw) = ts3lib.getServerConnectInfo(schid)
         self.yatqa.setArguments(["-d", host])
     elif keyword == "yatqa_browse_icons":
         (err, suid) = ts3lib.getServerVariable(
             schid, ts3defines.VirtualServerProperties.
             VIRTUALSERVER_UNIQUE_IDENTIFIER)
         self.yatqa.setArguments(["-i", suid])
     elif keyword == "yatqa_permission_editor":
         self.yatqa.setArguments(["-p"])
     elif keyword == "yatqa_connect_default":
         self.yatqa.setArguments(["-a"])
     else:
         return False
     if PluginHost.cfg.getboolean("general", "verbose"):
         print(self.bin, self.yatqa.arguments())
     self.yatqa.start()
     return True
Beispiel #3
0
 def getInfo(self, schid, selectedItemID, lists):
     i = []
     for lst in lists:
         for name, var in getItems(lst):
             (name, var) = self.preProcessVar(schid, selectedItemID, name,
                                              var, lst)
             if var is None: continue
             if lst in [
                     VirtualServerProperties, VirtualServerPropertiesRare
             ]:
                 (err, var) = ts3.getServerVariable(schid, var)
             elif lst in [ChannelProperties, ChannelPropertiesRare]:
                 (err,
                  var) = ts3.getChannelVariable(schid, selectedItemID, var)
             elif lst in [ConnectionProperties, ConnectionPropertiesRare]:
                 (err,
                  var) = ts3.getConnectionVariable(schid, selectedItemID,
                                                   var)
             else:
                 (err, var) = ts3.getClientVariable(schid, selectedItemID,
                                                    var)
             if err != ERROR_ok or var == "" or var == 0: continue
             if isinstance(var, map): var = ", ".join(map(str, var))
             if name in ["VIRTUALSERVER_IP", "CONNECTION_CLIENT_IP"]:
                 i.extend(self.ipInfo(var))
             (name, var) = self.postProcessVar(schid, selectedItemID, name,
                                               var, lst)
             i.append('{0}: {1}'.format(name, var))
     return i
Beispiel #4
0
 def setup(self, script, schid, clid, uid, name, ip, mytsid, hwid,
           servertype):
     self.setWindowTitle("Ban \"{}\" ({})".format(name, clid))
     self.clid = clid
     if not ip:
         (err, ip) = ts3lib.getConnectionVariable(
             schid, clid,
             ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     url = script.cfg.get("general", "ipapi")
     if url:
         self.nwmc_ip = QNetworkAccessManager()
         self.nwmc_ip.connect("finished(QNetworkReply*)", self.checkIP)
         self.countries = CountryFlags()
         self.countries.open()
     self.disableISP()
     self.grp_ip.setChecked(script.cfg.getboolean("last", "ip"))
     if ip != "None":
         self.txt_ip.setText(ip)
         self.on_txt_ip_textChanged(ip)
     self.grp_name.setChecked(script.cfg.getboolean("last", "name"))
     self.txt_name.setText(name)
     self.on_txt_name_textChanged(name)
     self.grp_uid.setChecked(script.cfg.getboolean("last", "uid"))
     self.txt_uid.setText(uid)
     self.on_txt_uid_textChanged(uid)
     self.grp_mytsid.setChecked(script.cfg.getboolean("last", "mytsid"))
     self.txt_mytsid.setText(mytsid)
     self.on_txt_mytsid_textChanged(mytsid)
     if servertype == ServerInstanceType.TEASPEAK:
         self.grp_hwid.setChecked(script.cfg.getboolean("last", "hwid"))
         self.txt_hwid.setText(hwid)
         self.on_txt_hwid_textChanged(hwid)
     else:
         self.grp_hwid.setVisible(False)
     self.setDuration(script.cfg.getint("last", "duration"))
Beispiel #5
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if not self.autoBlackListCheck: return
     if newStatus != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         return
     (err, ownID) = ts3lib.getClientID(schid)
     (err, ip) = ts3lib.getConnectionVariable(
         schid, ownID, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
     self.yatqa.setArguments(["-b", ip])
     self.yatqa.start()
Beispiel #6
0
 def onConnectionInfoEvent(self, schid, clid):
     if clid == self.requestedIP:
         self.requestedIP = 0
         (err, uid) = ts3lib.getClientVariable(
             schid, clid,
             ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, clid,
             ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
         self.banIP(schid, ip)
         self.banUID(schid, uid)
Beispiel #7
0
 def onServerErrorEvent(self, schid, errorMessage, error, returnCode,
                        extraMessage):
     if not returnCode in self.retcodes: return
     self.retcodes.remove(returnCode)
     (err, ip) = ts3lib.getConnectionVariable(
         schid, self.clid,
         ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if ip and ip != "None":
         retCode = ts3lib.createReturnCode()
         self.retcodes.append(retCode)
         ts3lib.requestConnectionInfo(schid, self.clid, retCode)
Beispiel #8
0
 def banClient(self, schid, clid):
     (err, uid) = ts3lib.getClientVariable(
         schid, clid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     (err, ip) = ts3lib.getConnectionVariable(
         schid, clid, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if self.moveBeforeBan:
         ts3lib.requestClientMove(schid, clid, self.moveBeforeBan, "")
     if not ip:
         self.requestedIP = clid
         ts3lib.requestConnectionInfo(schid, clid)
     else:
         self.banIP(schid, ip)
         self.banUID(schid, uid)
Beispiel #9
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     if atype != ts3defines.PluginMenuType.PLUGIN_MENU_TYPE_CLIENT or menuItemID != 0: return
     (err, uid) = ts3lib.getClientVariable(schid, selectedItemID, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if err != ts3defines.ERROR_ok: uid = ""
     (err, name) = ts3lib.getClientVariable(schid, selectedItemID, ts3defines.ClientProperties.CLIENT_NICKNAME)
     if err != ts3defines.ERROR_ok: name = ""
     (err, ip) = ts3lib.getConnectionVariable(schid, selectedItemID, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     self.clid = selectedItemID
     if err or not ip: ip = "";ts3lib.requestConnectionInfo(schid, selectedItemID); print("requested for", selectedItemID, "on", schid) #TODO: Check
     if not self.dlg: self.dlg = BanDialog(self, schid, selectedItemID, uid, name, ip)
     else: self.dlg.setup(self, schid, selectedItemID, uid, name, ip)
     self.dlg.show()
     self.dlg.raise_()
     self.dlg.activateWindow()
Beispiel #10
0
 def onConnectionInfoEvent(self, schid, clid):
     if clid == self.requestedIP:
         self.requestedIP = 0
         (err, uid) = ts3lib.getClientVariable(
             schid, clid,
             ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, clid,
             ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
         self.banIP(schid, ip)
         self.banUID(schid, uid)
         if self.cfg.getint("ban", "duration") != 0:
             (err, name) = ts3lib.getClientVariable(
                 schid, clid, ts3defines.ClientProperties.CLIENT_NICKNAME)
             self.banName(schid, clid, name)
Beispiel #11
0
 def getScores(self, schid, flag, mode, count=10):
     c = {}
     (err, clids) = ts3lib.getClientList(schid)
     for clid in clids:
         # if len(self.c) > 10: break
         if not clid in self.c:
             ts3lib.requestConnectionInfo(schid, clid)
             self.c.append(clid)
         (err, ping) = ts3lib.getConnectionVariable(schid, clid, flag)
         if err == ts3defines.ERROR_ok: c[clid] = ping
     if mode == 0:
         s = sorted(c.items(), key=lambda x: int(x[1]))
     elif mode == 1:
         s = sorted(c.items(), key=lambda x: int(x[1]), reverse=True)
     return take(count, s)
Beispiel #12
0
 def onUpdateClientEvent(self, schid, clid, invokerID, invokerName,
                         invokerUID):
     if schid != self.waiting_for[0]: return
     if clid != self.waiting_for[1]: return
     self.waiting_for = (0, 0)
     (err, uid) = ts3lib.getClientVariable(
         schid, clid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if err != ts3defines.ERROR_ok: uid = ""
     (err, mytsid) = ts3lib.getClientVariable(schid, clid, 61)
     if err != ts3defines.ERROR_ok or not mytsid:
         if schid in self.mytsids and clid in self.mytsids[schid]:
             mytsid = self.mytsids[schid][clid]
         else:
             mytsid = ""
     (err, name) = ts3lib.getClientVariable(
         schid, clid, ts3defines.ClientProperties.CLIENT_NICKNAME)
     if err != ts3defines.ERROR_ok: name = ""
     self.clid = clid
     type = getServerType(schid)
     (err, ip) = ts3lib.getConnectionVariable(
         schid, clid, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if (err != ts3defines.ERROR_ok or not ip) or (ip and ip == "None"):
         retcode = ts3lib.createReturnCode()
         self.retcodes.append(retcode)
         ts3lib.requestConnectionInfo(schid, clid, retcode)
         (err, ip) = ts3lib.getConnectionVariable(
             schid, clid,
             ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if not self.dlg:
         self.dlg = BanDialog(self, schid, clid, uid, name, ip, mytsid, "",
                              type)
     else:
         self.dlg.setup(self, schid, clid, uid, name, ip, mytsid, ip, type)
     self.dlg.show()
     self.dlg.raise_()
     self.dlg.activateWindow()
Beispiel #13
0
 def onConnectionInfoEvent(self, schid, clid):
     if PluginHost.cfg.getboolean("general", "verbose"):
         print(self.name, "> onConnectionInfoEvent", schid, clid)
     if not hasattr(self, "clid") or clid != self.clid: return
     (err, ip) = ts3lib.getConnectionVariable(
         schid, clid, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if ip:
         if ip == "None":
             retCode = ts3lib.createReturnCode()
             self.retcodes.append(retCode)
             ts3lib.requestConnectionInfo(schid, clid, retCode)
             return
         elif self.dlg:
             self.dlg.txt_ip.setText(ip)
         del self.clid
Beispiel #14
0
 def checkVars(self, schid, clid):
     (err, ownID) = ts3lib.getClientID(schid)
     (err, uid) = ts3lib.getClientVariable(
         schid, clid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if ownID == clid:
         (err, uid) = ts3lib.getClientSelfVariable(
             schid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if err != ts3defines.ERROR_ok or not uid: uid = False
     (err, mytsid) = ts3lib.getClientVariable(schid, clid, 61)
     if ownID == clid: (err, mytsid) = ts3lib.getClientList(schid, 61)
     if err != ts3defines.ERROR_ok or not mytsid: mytsid = False
     (err, ip) = ts3lib.getConnectionVariable(
         schid, clid, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if err != ts3defines.ERROR_ok or not ip: ip = False
     return uid, mytsid, ip
Beispiel #15
0
 def onConnectionInfoEvent(self, schid, clid):
     print(self.name,"> onConnectionInfoEvent", schid, clid)
     if not hasattr(self, "clid") or clid != self.clid: return
     (err, ip) = ts3lib.getConnectionVariable(schid, clid, ts3defines.ConnectionProperties.CONNECTION_CLIENT_IP)
     if ip and self.dlg: self.dlg.txt_ip.setText(ip)
     del self.clid