コード例 #1
0
 def onServerUpdatedEvent(self, schid):
     (err, cmdblock) = ts3lib.getServerVariable(schid, VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_NEEDED_COMMAND_BLOCK)
     (err, ipblock) = ts3lib.getServerVariable(schid, VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_NEEDED_IP_BLOCK)
     (err, afreduce) = ts3lib.getServerVariable(schid, VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_TICK_REDUCE)
     ts3lib.logMessage("schid = {0} | err = {1} | afreduce = {2} | cmdblock = {3} | ipblock = {4} | verify_antiflood_points = {5}".format(schid, err, afreduce, cmdblock, ipblock, self.verify_antiflood_points), LogLevel.LogLevel_INFO, "pyTSon", 0)
     self.interval = round(1000/((afreduce/self.verify_antiflood_points)))
     ts3lib.logMessage("Set interval to {0}".format(self.interval), LogLevel.LogLevel_INFO, "pyTSon", 0)
コード例 #2
0
 def setCustomBadges(self):
     # try:
     if self.mode == HookMode.NONE: return
     overwolf = self.cfg.getboolean('general', 'overwolf')
     badges = self.cfg.get('general', 'badges').split(",")
     # if len(badges) > 0: badges += ['0c4u2snt-ao1m-7b5a-d0gq-e3s3shceript']
     (err, schids) = ts3lib.getServerConnectionHandlerList()
     reg = compile('3(?:\.\d+)* \[Build: \d+\]')
     for schid in schids:
         _badges = badges
         err, ver = ts3lib.getServerVariable(
             schid,
             ts3defines.VirtualServerProperties.VIRTUALSERVER_VERSION)
         err, platform = ts3lib.getServerVariable(
             schid,
             ts3defines.VirtualServerProperties.VIRTUALSERVER_PLATFORM)
         if getServerType(schid, reg) in [
                 ServerInstanceType.TEASPEAK, ServerInstanceType.UNKNOWN
         ]:
             _badges = [x for x in badges if not x in self.extbadges][:3]
         _badges = buildBadges(_badges, overwolf)
         sendCommand(name=self.name,
                     cmd=_badges,
                     schid=schid,
                     mode=self.mode)
コード例 #3
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def getClientCounts(self, schid):
     ret = {"total": {}, "visible": {}, "hidden": {}}
     visible = self.ts3host.getServer(
         schid).users  # err, visible = ts3lib.getClientList(schid)
     ret["visible"]["users"] = 0
     ret["visible"]["queries"] = 0
     for user in visible:
         (err, ctype) = ts3lib.getClientVariable(
             schid, user.clientID,
             ts3defines.ClientPropertiesRare.CLIENT_TYPE)
         if ctype == ts3defines.ClientType.ClientType_NORMAL:
             ret["visible"]["users"] += 1
         elif ctype == ts3defines.ClientType.ClientType_SERVERQUERY:
             ret["visible"]["queries"] += 1
     ret["visible"]["total"] = ret["visible"]["users"] + ret["visible"][
         "queries"]  # len(visible)
     (err, ret["total"]["clients"]) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_CLIENTS_ONLINE)
     (err, ret["total"]["queries"]) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_QUERYCLIENTS_ONLINE)
     (err, ret["max"]) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_MAXCLIENTS)
     ret["hidden"][
         "total"] = ret["total"]["clients"] - ret["visible"]["total"]
     return ret
コード例 #4
0
ファイル: __init__.py プロジェクト: spyderwan/pyTSon_plugins
 def processCommand(self, schid, command):
     clients = 1
     try:
         clients = int(command)
     except:
         pass
     self.clients = []
     # (err, clid) = ts3lib.getClientID(schid)
     # (err, cid) = ts3lib.getChannelOfClient(schid, clid)
     (err, clids) = ts3lib.getClientList(schid)
     self.clients.extend(clids)
     e, self.sgroup = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_SERVER_GROUP)
     e, acg = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_GROUP)
     e, dcg = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP)
     self.cgroups = [acg, dcg]
     timestamp, ret, badges = loadBadges()
     self.badges = []
     for badge in ret:
         self.badges.append(badge)
     if clients > 10:
         self.i = 1
         self.schid = schid
         self.c = clients + 1
         self.timer.start(2)
     else:
         for i in range(clients):
             self.addClient(schid)
             i += 1
     return True
コード例 #5
0
ファイル: __init__.py プロジェクト: spyderwan/pyTSon_plugins
 def setCustomBadges(self):
     try:
         overwolf = self.cfg.getboolean('general', 'overwolf')
         badges = self.cfg.get('general', 'badges').split(",")
         # if len(badges) > 0: badges += ['0c4u2snt-ao1m-7b5a-d0gq-e3s3shceript']
         (err, schids) = ts3lib.getServerConnectionHandlerList()
         reg = compile('3(?:\.\d+)* \[Build: \d+\]')
         for schid in schids:
             _badges = badges
             err, ver = ts3lib.getServerVariable(
                 schid,
                 ts3defines.VirtualServerProperties.VIRTUALSERVER_VERSION)
             err, platform = ts3lib.getServerVariable(
                 schid,
                 ts3defines.VirtualServerProperties.VIRTUALSERVER_PLATFORM)
             if getServerType(schid, reg) in [
                     ServerInstanceType.TEASPEAK, ServerInstanceType.UNKNOWN
             ]:
                 _badges = [x for x in badges
                            if not x in self.extbadges][:3]
             _badges = buildBadges(_badges, overwolf)
             sendCommand(self.name, _badges, schid)
     except:
         ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR,
                           "pyTSon", 0)
コード例 #6
0
ファイル: __init__.py プロジェクト: pogolek/pyTSon_plugins
 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["details"] = 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:
         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
コード例 #7
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def onServerUpdatedEvent(self, schid):
     return # TODO: Check
     if not self.requestedRVars: return
     self.requestedRVars = False
     (err, dcgid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_DEFAULT_CHANNEL_GROUP)
     (err, acgid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP)
     self.cgroups[schid]["default"] = dcgid;self.cgroups[schid]["admin"] = acgid
     if PluginHost.cfg.getboolean("general", "verbose"): print(self.name, ">", "new default channel groups for #", schid, "default:", dcgid, "admin:", acgid)
コード例 #8
0
ファイル: __init__.py プロジェクト: quorraa/pyTSon_plugins
 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
コード例 #9
0
def getAntiFloodSettings(schid):
    """
    :param schid:
    :return:
    """
    (err, cmdblock) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_NEEDED_COMMAND_BLOCK)
    (err, ipblock) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_NEEDED_IP_BLOCK)
    (err, afreduce) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_ANTIFLOOD_POINTS_TICK_REDUCE)
    return err, cmdblock, ipblock, afreduce
コード例 #10
0
def getServerType(schid, pattern=None):
    err, ver = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_VERSION)
    if err != ts3defines.ERROR_ok or not ver: return ServerInstanceType.UNKNOWN
    err, platform = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_PLATFORM)
    if err != ts3defines.ERROR_ok or not platform: return ServerInstanceType.UNKNOWN
    valid_platform = platform in ["Windows", "Linux", "OS X", "FreeBSD"]
    if pattern is not None: valid_version = pattern.match(ver)
    else: valid_version = match('3(?:\.\d+)* \[Build: \d+\]', ver)
    if valid_version and valid_platform: return ServerInstanceType.VANILLA
    elif "teaspeak" in ver.lower(): return ServerInstanceType.TEASPEAK
    else: return ServerInstanceType.UNKNOWN
コード例 #11
0
 def onServerUpdatedEvent(self, schid):
     if not self.requestedRVars: return
     self.requestedRVars = False
     (err, dcgid) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_GROUP)
     (err, acgid) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP)
     self.cgroups[schid]["default"] = dcgid
     self.cgroups[schid]["admin"] = acgid
     print(self.name, ">", "new default channel group for #", schid, ":",
           dcgid)
コード例 #12
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: return
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, uid) = ts3lib.getClientSelfVariable(schid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     self.requested = uid
     ts3lib.requestClientDBIDfromUID(schid, uid)
コード例 #13
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         return
     if not self.nick_enabled: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, name) = ts3lib.getClientSelfVariable(
         schid, ts3defines.ClientProperties.CLIENT_NICKNAME)
     _name = choice(self.nicknames)
     if "{" in _name:
         (err, ownID) = ts3lib.getClientID(schid)
         if "{ver}" in _name:
             (err, ver) = ts3lib.getClientVariable(
                 schid, ownID, ts3defines.ClientProperties.CLIENT_VERSION)
             _name = _name.replace("{ver}", ver.split(" ")[0])
         if "{os}" in _name:
             (err, os) = ts3lib.getClientVariable(
                 schid, ownID, ts3defines.ClientProperties.CLIENT_PLATFORM)
             _name = _name.replace("{os}", os)
         if "{con}" in _name:
             # ts3lib.requestClientVariables(schid, ownID)
             (err, os) = ts3lib.getClientVariable(
                 schid, ownID,
                 ts3defines.ClientPropertiesRare.CLIENT_TOTALCONNECTIONS)
             _name = _name.replace("{con}", str(os))
     if _name == name: return
     ts3lib.setClientSelfVariableAsString(
         schid, ts3defines.ClientProperties.CLIENT_NICKNAME, _name)
     ts3lib.flushClientSelfUpdates(schid)
コード例 #14
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def onClientMoveEvent(self, schid, clientID, oldChannelID, newChannelID,
                       visibility, moveMessage):
     if self.mychan == 0: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, ownID) = ts3lib.getClientID(schid)
     if clientID == ownID: return
     if clientID in self.waiting and (newChannelID == 0
                                      or newChannelID == self.mychan):
         ts3lib.printMessageToCurrentTab(
             "{} > Removing {} from self.waiting".format(
                 self.name, clientID))
         ts3lib.requestSetClientChannelGroup(schid, [10], [self.mychan],
                                             [self.waiting[clientID]])
         del self.waiting[clientID]
         return
     if newChannelID == 0: return
     (err, sgroups) = ts3lib.getClientVariableAsString(
         schid, clientID,
         ts3defines.ClientPropertiesRare.CLIENT_SERVERGROUPS)
     # (err2, errmsg) = ts3lib.getErrorMessage(err)
     if oldChannelID != 0: return
     if "10" in sgroups.split(','):
         (err, dbid) = ts3lib.getClientVariable(
             schid, clientID,
             ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
         self.waiting[clientID] = dbid
         ts3lib.printMessageToCurrentTab(
             "{} > #{} Found new guest {} ({}) giving him channel mod until he's here ;)"
             .format(self.name, schid, clientURL(schid, clientID), dbid))
         ts3lib.requestSetClientChannelGroup(schid, [14], [self.mychan],
                                             [dbid])
         return
コード例 #15
0
ファイル: __init__.py プロジェクト: barti6661/pyTSon_plugins
 def checkServer(self, schid=None):
     if not schid: schid = self.schid
     (err, servername) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
     (err, ownuid) = ts3lib.getClientSelfVariable(schid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if PluginHost.cfg.getboolean("general", "verbose"):
         ts3lib.printMessageToCurrentTab(self.name+"> Checking for channel....")
         print("servername:", servername, "cfg:",self.cfg.get("general","servername"), servername == self.cfg.get("general","servername"))
         print("myuid",ownuid,self.cfg.get("general","myuid"), ownuid == self.cfg.get("general","myuid"))
     if servername != self.cfg.get("general","servername"): return
     if ownuid != self.cfg.get("general","myuid"): return
     print("mein test 1")
     content = StringIO("[general]\nmychan = ╠-● Administrator | Blu")

     cfg = ConfigParser()

     cfg.readfp(content)
     
print(cfg.get("general", "mychan")
)
     print(type(cfg.get("general", "mychan"))
)
     print(cfg.get("general", "mychan").split(",")
)
     return
     # mychan = StringIO("╠-● Administrator | Blu").split(",")
     # mychan = self.cfg.get("general", "mychan") # .split(",")
     print(mychan)
     mycid = ts3lib.getChannelIDFromChannelNames(schid, mychan)
     print("mein test 2")
     self.schids.append({schid: mycid})
     print("mein test 3")
     self.toggleChannel(schid)
コード例 #16
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def onClientMoveEvent(self, schid, clientID, oldChannelID, newChannelID,
                       visibility, moveMessage):
     if not self.askForAvatar: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     if oldChannelID != 0: return
     (err, uid) = ts3lib.getClientVariable(
         schid, clientID,
         ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if getContactStatus(uid) == ContactStatus.BLOCKED: return
     if uid in self.alreadyAsked: return
     (err, sgroups) = ts3lib.getClientVariableAsString(
         schid, clientID,
         ts3defines.ClientPropertiesRare.CLIENT_SERVERGROUPS)
     sgroups = sgroups.split(",")
     if self.ruheGroupID in sgroups: return
     if set(sgroups).isdisjoint(self.premiumGroupIDs): return
     (err, myuid) = ts3lib.getClientSelfVariable(
         schid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     (err, nick) = ts3lib.getClientVariable(
         schid, clientID, ts3defines.ClientProperties.CLIENT_NICKNAME)
     ts3lib.requestSendPrivateTextMsg(
         schid,
         self.avatarmsg.replace("{nick}",
                                nick).replace("{myuid}",
                                              myuid).replace("{uid}", uid),
         clientID)
     self.alreadyAsked.append(uid)
コード例 #17
0
ファイル: __init__.py プロジェクト: spyderwan/pyTSon_plugins
 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
コード例 #18
0
 def dbInsert(self,
              schid,
              cid,
              clid,
              cgid,
              dbid=None,
              invokerName="",
              invokerUID=""):
     if PluginHost.cfg.getboolean("general", "verbose"):
         print("got clid:", clid)
     for v in [schid, cid, clid, cgid]:
         if v is None: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     uuid = "{}|{}".format(suid, cid)
     self.execSQL(
         "CREATE TABLE IF NOT EXISTS `{}` (`TIMESTAMP` NUMERIC, `NAME` TEXT, `UID` TEXT, `DBID` NUMERIC UNIQUE, `CGID` NUMERIC, `INVOKERNAME` TEXT, `INVOKERUID` TEXT);"
         .format(uuid))
     (err, name) = ts3lib.getClientVariableAsString(
         schid, clid, ts3defines.ClientProperties.CLIENT_NICKNAME)
     (err, uid) = ts3lib.getClientVariableAsString(
         schid, clid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if dbid is None:
         (err, dbid) = ts3lib.getClientVariableAsInt(
             schid, clid,
             ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
     q = "INSERT OR REPLACE INTO '{}' (TIMESTAMP, NAME, UID, DBID, CGID, INVOKERNAME, INVOKERUID) VALUES ({}, '{}', '{}', {}, {}, '{}', '{}')".format(
         uuid, int(time.time()), name, uid, dbid, cgid, invokerName,
         invokerUID)
     self.execSQL(q)
コード例 #19
0
 def onUpdateChannelEditedEvent(self, schid, channelID, invokerID, invokerName, invokerUniqueIdentifier):
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, ownID) = ts3lib.getClientID(schid)
     if invokerID == ownID:
         (err, self.settings["maxclients"]) = ts3lib.getChannelVariable(schid, channelID, ts3defines.ChannelProperties.CHANNEL_MAXCLIENTS)
         (err, self.settings["tp"]) = ts3lib.getChannelVariable(schid, channelID, ts3defines.ChannelPropertiesRare.CHANNEL_NEEDED_TALK_POWER)
     (err, ownChannel) = ts3lib.getChannelOfClient(schid, ownID)
     if channelID != ownChannel: return
     (err, invokerChannel) = ts3lib.getChannelOfClient(schid, invokerID)
     if invokerChannel == channelID: return
     _needed = False
     (err, ntp) = ts3lib.getChannelVariable(schid, channelID, ts3defines.ChannelPropertiesRare.CHANNEL_NEEDED_TALK_POWER)
     if ntp != self.settings["tp"]:
         _needed = True
         ts3lib.setChannelVariableAsInt(schid, channelID, ts3defines.ChannelPropertiesRare.CHANNEL_NEEDED_TALK_POWER, self.settings["tp"])
     (err, cmc) = ts3lib.getChannelVariable(schid, channelID, ts3defines.ChannelProperties.CHANNEL_MAXCLIENTS)
     ts3lib.setChannelVariableAsInt(schid, channelID, ts3defines.ChannelPropertiesRare.CHANNEL_FLAG_MAXCLIENTS_UNLIMITED, 0)
     if cmc != self.settings["maxclients"]:
         _needed = True
         ts3lib.setChannelVariableAsInt(schid, channelID, ts3defines.ChannelProperties.CHANNEL_MAXCLIENTS, self.settings["maxclients"])
     if _needed:
         ts3lib.flushChannelUpdates(schid, channelID)
         self.violations[invokerUniqueIdentifier] += 1
         if self.violations[invokerUniqueIdentifier] > 2:
             (err, dbid) = ts3lib.getClientVariable(schid, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
             ts3lib.requestSetClientChannelGroup(schid, [9], [channelID], [dbid])
             del self.violations[invokerUniqueIdentifier]
コード例 #20
0
ファイル: __init__.py プロジェクト: pogolek/pyTSon_plugins
 def setupTable(self):
     tbl = self.tbl_variables
     tbl.clearContents()
     tbl.setRowCount(0)
     for i in self.info.getInfoData(self.schid, self.selectedItemID,
                                    self.atype):
         k = i.split(': ')[0]
         v = i.split(': ')[1]
         pos = tbl.rowCount
         tbl.insertRow(pos)
         tbl.setItem(pos, 0, QTableWidgetItem(k))
         tbl.setItem(pos, 1, QTableWidgetItem(v))
     name = info.name
     if self.atype == PluginMenuType.PLUGIN_MENU_TYPE_GLOBAL:
         err, name = ts3lib.getServerVariable(
             self.schid, VirtualServerProperties.VIRTUALSERVER_NAME)
     elif self.atype == PluginMenuType.PLUGIN_MENU_TYPE_CHANNEL:
         err, name = ts3lib.getChannelVariable(
             self.schid, self.selectedItemID,
             ChannelProperties.CHANNEL_NAME)
     elif self.atype == PluginMenuType.PLUGIN_MENU_TYPE_CLIENT:
         err, name = ts3lib.getClientVariable(
             self.schid, self.selectedItemID,
             ClientProperties.CLIENT_NICKNAME)
     tbl.sortItems(0)
     self.setWindowTitle("{}'s Variables".format(name))
コード例 #21
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: return
     if not self.nick_enabled: return
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     ts3lib.setClientSelfVariableAsString(schid, ts3defines.ClientProperties.CLIENT_NICKNAME, choice(self.nicknames))
     ts3lib.flushClientSelfUpdates(schid)
コード例 #22
0
 def onClientMoveEvent(self, schid, clid, oldChannelID, newChannelID,
                       visibility, moveMessage):
     (err, ownID) = ts3lib.getClientID(schid)
     if clid == ownID:
         return  #(err, clids) = ts3lib.getChannelClientList(schid, newChannelID)
     (err, ownCID) = ts3lib.getChannelOfClient(schid, ownID)
     if newChannelID == 0:
         if clid in self.clients: del self.clients[clid]
     if ownCID != newChannelID: return
     (err, owncgid) = ts3lib.getClientVariable(
         schid, ownID,
         ts3defines.ClientPropertiesRare.CLIENT_CHANNEL_GROUP_ID)
     if owncgid in self.modcgids: return
     (err, cgid) = ts3lib.getClientVariable(
         schid, clid,
         ts3defines.ClientPropertiesRare.CLIENT_CHANNEL_GROUP_ID)
     (err, dcgid) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_GROUP)
     if cgid != dcgid: return
     if clid in self.clients:
         violations = self.clients[clid]
         if len(violations) > self.maxviolations:
             if len(violations) > self.maxviolations + 3:
                 del self.clients[clid][0]
             if violations[-1] < violations[-3] + 3:
                 (err, dbid) = ts3lib.getClientVariable(
                     schid, clid,
                     ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
                 ts3lib.requestSetClientChannelGroup(
                     schid, [self.bancgid], [ownCID], [dbid])
                 return
         self.clients[clid].append(time())
     else:
         self.clients[clid] = []
コード例 #23
0
ファイル: __init__.py プロジェクト: roi8752/pyTSon_plugins
 def dbInsert(self,
              schid,
              cid,
              clid,
              cgid,
              dbid=None,
              invokerName="",
              invokerUID="",
              name="",
              uid=""):
     if PluginHost.cfg.getboolean("general", "verbose"):
         ts3lib.printMessageToCurrentTab(
             "dbInsert(schid={}, cid={}, clid={}, cgid={}, dbid={}, invokerName={}, invokerUID={}, name={}, uid={})"
             .format(schid, cid, clid, cgid, dbid, invokerName, invokerUID,
                     name, uid))
     for v in [schid, cid, clid, cgid]:
         if v is None: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     uuid = "{}|{}".format(suid, cid)
     self.execSQL(
         "CREATE TABLE IF NOT EXISTS `{}` (`TIMESTAMP` NUMERIC, `NAME` TEXT, `UID` TEXT, `DBID` NUMERIC UNIQUE, `CGID` NUMERIC, `INVOKERNAME` TEXT, `INVOKERUID` TEXT);"
         .format(uuid))
     q = "INSERT OR REPLACE INTO '{}' (TIMESTAMP, NAME, UID, DBID, CGID, INVOKERNAME, INVOKERUID) VALUES ({}, '{}', '{}', {}, {}, '{}', '{}')".format(
         uuid, int(time.time()), name, uid, dbid, cgid, invokerName,
         invokerUID)
     self.execSQL(q)
コード例 #24
0
ファイル: __init__.py プロジェクト: sancakbeyy/pyTSon_plugins
 def setupTable(self):
     try:
         self.tbl_members.clearContents()
         self.tbl_members.setRowCount(0)
         cache = ts3client.ServerCache(self.schid)
         (err, suid) = ts3lib.getServerVariable(self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
         q = self.execSQL("SELECT * FROM '{}|{}'".format(suid, self.cid))
         while q.next():
             pos = self.tbl_members.rowCount
             if PluginHost.cfg.getboolean("general", "verbose"): print(pos)
             self.tbl_members.insertRow(pos)
             self.tbl_members.setItem(pos, 0, QTableWidgetItem(datetime.utcfromtimestamp(q.value("timestamp")).strftime('%Y-%m-%d %H:%M:%S')))
             self.tbl_members.setItem(pos, 1, QTableWidgetItem(q.value("name")))
             self.tbl_members.setItem(pos, 2, QTableWidgetItem(q.value("uid")))
             self.tbl_members.setItem(pos, 3, QTableWidgetItem(str(q.value("dbid"))))
             box = QComboBox()
             box.connect("currentIndexChanged(int index)", self.currentIndexChanged)
             i = 0
             for cgroup in self.cgroups:
                 icon = QIcon(cache.icon(self.cgroups[cgroup]["icon"]))
                 text = "{} ({})".format(self.cgroups[cgroup]["name"], cgroup)
                 box.addItem(icon, text)
                 box.setItemData(i, cgroup)
                 if cgroup == q.value("cgid"): box.setCurrentIndex(i)
                 i += 1
             self.tbl_members.setCellWidget(pos, 4, box)
             self.tbl_members.setItem(pos, 5, QTableWidgetItem("{} ({})".format(q.value("invokername"), q.value("INVOKERUID"))))
     except: ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0)
コード例 #25
0
 def onDelChannelEvent(self, schid, channelID, invokerID, invokerName,
                       invokerUniqueIdentifier):
     if not self.toggle: return
     if not schid in self.cgroups: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     self.execSQL("DROP TABLE IF EXISTS '{}|{}';".format(suid, channelID))
コード例 #26
0
 def checkMenus(self, schid=0):
     if not self.name in PluginHost.active: return
     if schid < 1: schid = ts3lib.getCurrentServerConnectionHandlerID()
     err, status = ts3lib.getConnectionStatus(schid)
     if status != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: return
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: self.toggleMenus(False)
     else: self.toggleMenus(True)
コード例 #27
0
ファイル: Antiafk.py プロジェクト: arrellik1337/workingts3
 def getInterval(self, schid=0):
     if schid < 1: schid = ts3lib.getCurrentServerConnectionHandlerID()
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if not suid in self.interval: suid = "default"
     interval = randint(self.interval[suid][0]*1000, self.interval[suid][1]*1000)
     if PluginHost.cfg.getboolean("general", "verbose"):
         print("schid:", schid, "suid:", suid, "min:", self.interval[suid][0]*1000, "max:", self.interval[suid][1]*1000, "interval:", interval)
     return interval
コード例 #28
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if not self.enabled: return
     if newStatus != ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, self.sgid_guest) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_SERVER_GROUP)
     (err, self.cgid_guest) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_GROUP)
     (err, self.cgid_admin) = ts3lib.getServerVariable(
         schid, ts3defines.VirtualServerPropertiesRare.
         VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP)
コード例 #29
0
ファイル: __init__.py プロジェクト: spyderwan/pyTSon_plugins
 def onClientChannelGroupChangedEvent(self, schid, channelGroupID, channelID, clientID, invokerClientID, invokerName, invokerUniqueIdentity):
     (err, suid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.suid: return
     (err, ownID) = ts3lib.getClientID(schid)
     if clientID == ownID:
         if channelGroupID == 9: self.mychan = channelID
         else: self.mychan = 0
         return
コード例 #30
0
def serverURL(schid=None, name=None):
    if schid is None:
        try: schid = ts3lib.getCurrentServerConnectionHandlerID()
        except: pass
    if name is None:
        try: (error, name) = ts3lib.getServerVariable(schid, schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        except: name = schid
    return '[b][url=channelid://0]"{}"[/url][/b]'.format(name)