Ejemplo n.º 1
0
    def onChannelGroupListFinishedEvent(self, schid):
        (error, sname) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        (error, suid) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)

        # Start checking for channelgroup updates or if server is known
        self.checkServer(schid, sname, suid, self.channel_group_list, self.channel_group_list_name)

        # Reset temporary lists
        self.channel_group_list = []
        self.channel_group_list_name = []
Ejemplo n.º 2
0
 def onClientMoveEvent(self, schid, clientID, oldChannelID, newChannelID,
                       visibility, moveMessage):
     if self.debug:
         ts3lib.printMessageToCurrentTab(
             "oldChannelID: {0}".format(oldChannelID))
     if not oldChannelID == 0: return
     (error, _clid) = ts3lib.getClientID(schid)
     if self.debug:
         ts3lib.printMessageToCurrentTab(
             "_clid: {0} | clientID: {1}".format(_clid, clientID))
     if clientID == _clid: return
     if self.debug:
         ts3lib.printMessageToCurrentTab(
             "newChannelID: {0} | self.default: {1}".format(
                 newChannelID, self.default))
     if not newChannelID == self.default: return
     #(error, uid) = ts3lib.getClientVariableAsString(schid, clientID, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     #if self.debug: ts3lib.printMessageToCurrentTab("uid: {0} | self.tmp: {1}".format(uid,self.tmp))
     #if uid in self.tmp: return
     (error, suid) = ts3lib.getServerVariableAsString(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if self.debug:
         ts3lib.printMessageToCurrentTab(
             "suid: {0} | self.cfg.sections(): {1} | self.cfg.has_section(suid): {2}"
             .format(suid, self.cfg.sections(), self.cfg.has_section(suid)))
     if not self.cfg.has_section(suid): return
     self.update = clientID
     ts3lib.requestClientVariables(schid, clientID)
Ejemplo n.º 3
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         (error, uid) = ts3lib.getServerVariableAsString(
             schid, ts3defines.VirtualServerProperties.
             VIRTUALSERVER_UNIQUE_IDENTIFIER)
         if uid in self.subAll: self.subscribeAll(schid)
         elif uid in self.subNone: self.unsubscribeAll(schid)
         elif uid in self.subOpen: self.subscribeOpen(schid)
Ejemplo n.º 4
0
 def iconID(self):
     (err, icon) = ts3lib.getServerVariableAsString(
         self.schid,
         ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_ICON_ID)
     if err != ts3defines.ERROR_ok:
         raise ts3Error("Error getting server icon id: (%s, %s)" %
                        (err, ts3lib.getErrorMessage(err)[1]))
     return icon
Ejemplo n.º 5
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         (error, suid) = ts3lib.getServerVariableAsString(
             schid, ts3defines.VirtualServerProperties.
             VIRTUALSERVER_UNIQUE_IDENTIFIER)
         if self.cfg.has_section(suid):
             self.default == self.getDefaultChannel(schid)
     elif newStatus == ts3defines.ConnectStatus.STATUS_DISCONNECTED:
         self.default = 0
Ejemplo n.º 6
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         if ts3lib.getServerVariableAsString(
                 schid, ts3defines.VirtualServerProperties.
                 VIRTUALSERVER_UNIQUE_IDENTIFIER
         ) == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=":
             return
         # if not self.timer.isActive(): self.timer.start(int(self.config.get('GENERAL', 'refresh'))*1000);
     elif newStatus == ts3defines.ConnectStatus.STATUS_DISCONNECTED:
         if self.timer.isActive(): self.timer.stop()
Ejemplo n.º 7
0
    def name(self):
        if self._name: return self._name

        (err, svname) = ts3lib.getServerVariableAsString(
            self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        if err != ts3defines.ERROR_ok:
            raise ts3Error("Error getting server name: (%s, %s)" %
                           (err, ts3lib.getErrorMessage(err)[1]))
        self._name = svname
        return svname
Ejemplo n.º 8
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
         self.schid = schid
         if uid in self.subAll: QTimer.singleShot(2500, self.subscribeAll)
         elif uid in self.subNone: QTimer.singleShot(2500, self.unsubscribeAll)
         elif uid in self.subOpen: QTimer.singleShot(2500, self.subscribeOpen)
         if uid == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=":
             self.toSub = [136205,136209,545989]#support1-3,48=afk,46=iloveradio
             QTimer.singleShot(2500, self.subChannels)
Ejemplo n.º 9
0
    def name(self):
        if "name" in self.cache:
            return self.cache["name"]

        err, n = ts3lib.getServerVariableAsString(
            self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        if err != ts3defines.ERROR_ok:
            _errprint("Error getting server name", err, self.schid)
            return "ERROR_UNABLE_TO_GET_SERVERNAME"
        else:
            self.cache["name"] = n
            return n
Ejemplo n.º 10
0
    def name(self):
        if "name" in self.cache:
            return self.cache["name"]

        err, n = ts3lib.getServerVariableAsString(self.schid,
                                                  ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        if err != ts3defines.ERROR_ok:
            _errprint("Error getting server name", err, self.schid)
            return "ERROR_UNABLE_TO_GET_SERVERNAME"
        else:
            self.cache["name"] = n
            return n
Ejemplo n.º 11
0
 def commandRegister(self, schid, targetMode, toID, fromID, params=""):
     (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if uid == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=": # GommeHD
         (error, uid) = ts3lib.getClientVariableAsString(schid, int(params), ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
         self.answerMessage(schid, targetMode, toID, int(params), ""+
         "Um dich auf diesem Teamspeak Server zu registrieren musst du folgendes tun:\n\n"+
         "1. Auf den Minecraft Server [color=green]gommehd.net[/color] joinen.\n"+
         "2. In den Minecraft chat [color=red]/ts set {0}[/color] eingeben.\n".format(uid)+
         "3. Im Teamspeak Chat dem User [URL=client://0/serveradmin~Gomme-Bot]Gomme-Bot[/URL] deinen Minecraft Namen schreiben (Groß/Kleinschreibung beachten)\n"+
         "4. Wenn die Registrierung erfolgreich warst erhälst du die Server Gruppe \"Registriert\". Es kann eine Zeit lang dauern bis dein Minecraft Kopf hinter deinem Namen erscheint.")
     elif uid == "U3UjHePU9eZ9bvnzIyLff4lvXBM=": pass
     else: self.answerMessage(schid, targetMode, toID, fromID, "Server not recognized or does not have a registration feature.")
Ejemplo n.º 12
0
    def setClientChannelGroup(self, schid, status, cid, chid):        
        (error, suid) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
        (error, curr_channelgroup) = ts3.getClientVariableAsString(schid, cid, ts3defines.ClientPropertiesRare.CLIENT_CHANNEL_GROUP_ID)

        db = self.db.exec_("SELECT db_f_channelgroup, db_b_channelgroup FROM server WHERE db_suid='"+str(suid)+"' LIMIT 1")
        if not self.db.lastError().isValid():
            if db.next():
                if status == 1 and (db.value("db_b_channelgroup") == "" or db.value("db_b_channelgroup") == int(curr_channelgroup)): return
                if status == 0 and (db.value("db_f_channelgroup") == "" or db.value("db_f_channelgroup") == int(curr_channelgroup)): return
                (error, cdbid) = ts3.getClientVariableAsUInt64(schid, cid, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
                group = None
                if status == 1: group = db.value("db_b_channelgroup")
                if status == 0: group = db.value("db_f_channelgroup")
                ts3.requestSetClientChannelGroup(schid, [group], [chid], [cdbid], self.error_setClientChannelGroup)
Ejemplo n.º 13
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
         if uid == self.cfg.get("general", "uid"):
             # ts3lib.getChannelIDFromChannelNames(serverConnectionHandlerID, channelNameArray)
             (error, clist) = ts3lib.getChannelList(schid)
             for c in clist:
                 (error, permanent) = ts3lib.getChannelVariableAsInt(schid, c, ts3defines.ChannelProperties.CHANNEL_FLAG_PERMANENT)
                 if permanent:
                     (error, name) = ts3lib.getChannelVariableAsString(schid, c, ts3defines.ChannelProperties.CHANNEL_NAME)
                     if name.startswith("Support "):
                         self.supchans.append(c)
                     elif name.startswith("[cspacer10]● Support"):
                         self.supmain = c
             self.cfg.set("general", "enabled", "True")
         else: self.cfg.set("general", "enabled", "False")
Ejemplo n.º 14
0
    def __init__(self, schid):
        """
        Instantiates a new ServerCache object referenced by the server
        connection handler id (an Exception is raised if the path in the
        filesystem could not be located).
        @param schid: the ID of the serverconnection
        @type schid: int
        """
        err, uid = (ts3lib.getServerVariableAsString(schid,
                    ts3defines.VirtualServerProperties.
                    VIRTUALSERVER_UNIQUE_IDENTIFIER))

        if err != ts3defines.ERROR_ok:
            raise Exception("Error getting Server unique identifier: %s" % err)

        self.path = os.path.join(ts3lib.getConfigPath(), "cache",
                                 base64.b64encode(
                                 uid.encode("utf-8")).decode("utf-8"))
        if not os.path.isdir(self.path):
            raise Exception("No such file or directory: %s" % self.path)
Ejemplo n.º 15
0
 def onUpdateClientEvent(self, schid, clientID, invokerID, invokerName,
                         invokerUniqueIdentifier):
     if not self.update == clientID: return
     self.update = 0
     (error, connects) = ts3lib.getClientVariableAsUInt64(
         schid, clientID,
         ts3defines.ClientPropertiesRare.CLIENT_TOTALCONNECTIONS)
     (error, uid) = ts3lib.getClientVariableAsString(
         schid, clientID,
         ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     if self.debug:
         ts3lib.printMessageToCurrentTab(
             "error: {0} | connects: {1} | uid: {2}".format(
                 error, connects, uid))
     if connects > 1 and not uid == "x63jNGEr/PXnu9l3bFECzMzWfXk=": return
     (error, suid) = ts3lib.getServerVariableAsString(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     (error, country) = ts3lib.getClientVariableAsString(
         schid, clientID, ts3defines.ClientPropertiesRare.CLIENT_COUNTRY)
     if self.debug:
         ts3lib.printMessageToCurrentTab("error: {0} | country: {1}".format(
             error, country))
     msg = self.cfg.get(suid, country, fallback=self.cfg.get(suid, 'US'))
     if '{nick}' in msg:
         msg = msg.replace('{nick}', self.clientURL(schid, clientID, uid))
     if '{country}' in msg: msg = msg.replace('{country}', country)
     if '{cid}' in msg: msg = msg.replace('{cid}', clientID)
     if '{uid}' in msg: msg = msg.replace('{uid}', uid)
     if '{connects}' in msg: msg = msg.replace('{connects}', connects)
     msg = [msg[i:i + 1024] for i in range(0, len(msg), 1024)]
     for message in msg:
         ts3lib.requestSendPrivateTextMsg(schid, "{0}".format(message),
                                          clientID)
     (error, ownid) = ts3lib.getClientID(schid)
     (error, _uid) = ts3lib.getClientVariableAsString(
         schid, ownid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
     ts3lib.clientChatClosed(schid, uid, clientID)
     ts3lib.printMessageToCurrentTab(
         "Sent client {0} the welcome message for {1}".format(
             clientID, suid))
Ejemplo n.º 16
0
    def __init__(self, schid):
        """
        Instantiates a new ServerCache object referenced by the server
        connection handler id (an Exception is raised if the path in the
        filesystem could not be located).
        @param schid: the ID of the serverconnection
        @type schid: int
        """
        err, uid = (ts3lib.getServerVariableAsString(
            schid,
            ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
                    )

        if err != ts3defines.ERROR_ok:
            raise Exception("Error getting Server unique identifier: %s" % err)

        self.path = os.path.join(
            ts3lib.getConfigPath(), "cache",
            base64.b64encode(uid.encode("utf-8")).decode("utf-8"))
        if not os.path.isdir(self.path):
            raise Exception("No such file or directory: %s" % self.path)
Ejemplo n.º 17
0
    def processCommand(self, schid, command):
        tokens = command.split(' ')

        if len(tokens) == 0:
            return True

        (err, myid) = ts3lib.getClientID(schid)
        if err != ts3defines.ERROR_ok:
            ts3lib.printMessageToCurrentTab("Error getting client id: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True

        (err, cid) = ts3lib.getChannelOfClient(schid, myid)
        if err != ts3defines.ERROR_ok:
            ts3lib.printMessageToCurrentTab("Error getting channel id: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True

        if tokens[0] == "time":
            err = ts3lib.requestSendChannelTextMsg(schid, "It's %s" % time.asctime(time.localtime(time.time())), cid)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error sending txt message: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True
        elif tokens[0] == "greet":
            (err, svname) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error getting server name: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
                return True

            (err, cname) = ts3lib.getChannelVariableAsString(schid, cid, ts3defines.ChannelProperties.CHANNEL_NAME)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error getting channel name: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
                return True

            err = ts3lib.requestSendChannelTextMsg(schid, "Welcome in %s on %s" % (cname, svname), cid)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error sending txt message: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True
Ejemplo n.º 18
0
 def getServerName(serverConnectionHandlerID):
     return ts3lib.getServerVariableAsString(
         serverConnectionHandlerID,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)[1]
Ejemplo n.º 19
0
 def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber):
     if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
         (error, uid) = ts3lib.getServerVariableAsString(
             schid, ts3defines.VirtualServerProperties.
             VIRTUALSERVER_UNIQUE_IDENTIFIER)
         if uid == self.supserver: self.toggle(True)
Ejemplo n.º 20
0
    def setStatus(self, schid):
        err, ownid = ts3.getClientID(schid)
        err, schids = ts3.getServerConnectionHandlerList()

        regex = re.compile(r'.*(<{0}>.*</{0}>).*'.format(self.tag),
                           re.IGNORECASE)

        host = ""
        port = 9987
        pw = ""
        name = ""
        nick = ""

        err, host, port, pw = ts3.getServerConnectInfo(schid)
        err, name = ts3.getServerVariable(
            schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
        err, nick = ts3.getServerVariable(
            schid, 83
        )  # ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_NICKNAME
        if err == ts3defines.ERROR_ok and nick.strip(): nick = nick.split(":")
        err, ip = ts3.getConnectionVariableAsString(
            schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
        if err != ts3defines.ERROR_ok or not ip.strip():
            err, ip = ts3.getServerVariableAsString(
                schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_IP)
        err, port = ts3.getConnectionVariableAsString(
            schid, ownid,
            ts3defines.ConnectionProperties.CONNECTION_SERVER_PORT)
        if err != ts3defines.ERROR_ok or not port or port < 1:
            err, port = ts3.getServerVariableAsString(
                schid,
                ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT)

        for tab in schids:
            err, meta_data = ts3.getClientSelfVariable(
                tab, ts3defines.ClientProperties.CLIENT_META_DATA)
            meta_data = regex.sub("", meta_data)
            if tab == schid:
                ts3.setClientSelfVariableAsInt(
                    tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY,
                    ts3defines.AwayStatus.AWAY_NONE)
            else:
                err, away = ts3.getClientSelfVariable(
                    tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY)
                if away != ts3defines.AwayStatus.AWAY_ZZZ:
                    ts3.setClientSelfVariableAsInt(
                        tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY,
                        ts3defines.AwayStatus.AWAY_ZZZ)
                if self.cfg.getboolean('general', 'enabled'):
                    if host:
                        newmeta = xml.Element(self.tag)
                        c = xml.SubElement(newmeta, "tab")
                        c.set("i", str(schid))
                        if name: c.text = escape(name.strip())
                        c.set("h", escape(host))
                        if port and port != 9987:
                            c.set("port", "{}".format(port))
                        if pw and self.cfg.getboolean('general', 'pw'):
                            c.set("p", pw)
                        # if ip and ip.strip(): c.set("ip", ip)
                        # if nick: c.set("nick", ":".join(nick))
                        meta_data = "{old}{new}".format(
                            old=meta_data,
                            new=xml.tostring(newmeta).decode("utf-8"))
                        # meta_data = "{}<server>{}{}</server>".format(meta_data, ip, ":" + port if port else "")
                try:
                    name = name[:78] + (name[78:] and '..')
                except:
                    pass
                _away_message = self.cfg.get('general', 'status')
                if "{" in _away_message:
                    _away_message = _away_message\
                    .replace('{host}', host if host else "")\
                    .replace('{nick}', nick[0] if nick and len(nick) > 0 else "")\
                    .replace('{name}', name if name else "")\
                    .replace('{nickname}', nick[0] if nick else name)\
                    .replace('{ip}', ip if ip else "")\
                    .replace('{port}', str(port) if port else "")
                err, away_message = ts3.getClientSelfVariable(
                    tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE)
                if away_message != _away_message:
                    ts3.setClientSelfVariableAsString(
                        tab,
                        ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE,
                        _away_message)
            ts3.setClientSelfVariableAsString(
                tab, ts3defines.ClientProperties.CLIENT_META_DATA, meta_data)
            ts3.flushClientSelfUpdates(tab)