Exemple #1
0
    def onClientPokeEvent(self, serverConnectionHandlerID, fromClientID,
                          pokerName, pokerUID, message, ffIgnored):
        #is it me?
        (err, schids) = ts3lib.getServerConnectionHandlerList()
        if err == ts3defines.ERROR_ok:
            for schid in schids:
                (err, myid) = ts3lib.getClientID(schid)
                if err == ts3defines.ERROR_ok:
                    if fromClientID == myid:
                        return 0
                else:
                    ts3lib.printMessageToCurrentTab(
                        "error getting own client id")
        else:
            ts3lib.printMessageToCurrentTab("error getting schids")

        (err, name) = ts3lib.getClientVariableAsString(
            serverConnectionHandlerID, fromClientID,
            ts3defines.ClientProperties.CLIENT_NICKNAME)
        if err != ts3defines.ERROR_ok:
            err = ts3lib.requestClientPoke(serverConnectionHandlerID,
                                           fromClientID, "?")
        else:
            err = ts3lib.requestClientPoke(serverConnectionHandlerID,
                                           fromClientID, "?")

        self.lastpoker = (serverConnectionHandlerID, fromClientID)

        if err != ts3defines.ERROR_ok:
            ts3lib.printMessageToCurrentTab("poke error: %d" % err)
            return 0
        else:
            return 0
 def restoreTabs(self):
     try:
         err, schids = ts3lib.getServerConnectionHandlerList()
         if err != ERROR_ok: return
         if len(schids) > 1: return
         for schid in schids:
             (err, status) = ts3lib.getConnectionStatus(schid)
             if err != ERROR_ok: return
             if status != ConnectStatus.STATUS_DISCONNECTED: return
         self._tabs = {}
         self._timers = []
         with open(self.backup_file) as f:
             self._tabs = load(f)
         i = 0
         self._delay = self.delay
         for tab in self._tabs:
             i += 1
             # if self._tabs[tab]["status"] == ConnectStatus.STATUS_CONNECTION_ESTABLISHED:
             timer = QTimer()
             self._timers.append(timer)
             timer.singleShot(self._delay, self.restoreTab)
             # self.restoreTab(tab)
             self._delay += self.increase
     except:
         ts3lib.logMessage(format_exc(), LogLevel.LogLevel_ERROR, "pyTSon",
                           0)
Exemple #3
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)
Exemple #4
0
 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)
 def servers(self):
     (err, srids) = ts3lib.getServerConnectionHandlerList()
     if err != ts3defines.ERROR_ok:
         raise ts3Error(
             "Error getting server connection handler ID list: (%s, %s)" %
             (err, ts3lib.getErrorMessage(err)[1]))
     for schid in srids:
         yield self.getServer(schid)
Exemple #6
0
 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()
         for schid in schids:
             sendCommand(self.name, buildBadges(badges, overwolf), schid)
     except: ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0)
Exemple #7
0
 def __init__(self):
     self.ts3host = ts3SessionHost(self)
     err, schids = ts3lib.getServerConnectionHandlerList()
     for schid in schids:
         (err, status) = ts3lib.getConnectionStatus(schid)
         self.onConnectStatusChangeEvent(schid, status, err)
     log(
         self, LogLevel.LogLevel_DEBUG,
         "[color=orange]{name}[/color] Plugin for pyTSon by [url=https://github.com/{author}]{author}[/url] loaded."
         .format(name=self.name, author=self.author), 0)
Exemple #8
0
 def __init__(self):
     self.timer.timeout.connect(self.tick)
     self.timer.setTimerType(2)
     err, schids = ts3lib.getServerConnectionHandlerList()
     for schid in schids:
         err, status = ts3lib.getConnectionStatus(schid)
         self.onConnectStatusChangeEvent(schid, status, err)
     if PluginHost.cfg.getboolean("general", "verbose"):
         ts3lib.printMessageToCurrentTab(
             "{0}[color=orange]{1}[/color] Plugin for pyTSon by [url=https://github.com/{2}]{2}[/url] loaded."
             .format(timestamp(), self.name, self.author))
 def printQueries(self):
     (err, schids) = ts3lib.getServerConnectionHandlerList()
     for schid in schids:
         (err, cids) = ts3lib.getChannelList(schid)
         for cid in cids:
             (err, clids) = ts3lib.getChannelClientList(schid, cid)
             msg = []
             for clid in clids:
                 (err, ctype) = ts3lib.getClientVariable(schid, clid, ts3defines.ClientPropertiesRare.CLIENT_TYPE)
                 if ctype != ts3defines.ClientType.ClientType_SERVERQUERY: continue
                 msg.append(clientURL(schid, clid))
             if len(msg) < 1: continue
             ts3lib.printMessage(schid, "<{0}> {1} has [b]{2}[/b] Query Clients: {3}".format(time(), channelURL(schid, cid), len(msg), ", ".join(msg)),
                                 ts3defines.PluginMessageTarget.PLUGIN_MESSAGE_TARGET_SERVER)
Exemple #10
0
 def __init__(self):
     self.ts3host = ts3SessionHost(self)
     err, schids = ts3lib.getServerConnectionHandlerList()
     for schid in schids:
         (err, status) = ts3lib.getConnectionStatus(schid)
         self.onConnectStatusChangeEvent(schid, status, err)
     if PluginHost.cfg.getboolean("general", "verbose"):
         i = 1
         for active in PluginHost.active:
             print(i, active)
             i += 1
         ts3lib.printMessageToCurrentTab(
             "{0}[color=orange]{1}[/color] Plugin for pyTSon by [url=https://github.com/{2}]{2}[/url] loaded."
             .format(timestamp(), self.name, self.author))
Exemple #11
0
 def setStatus(self, schid):
     try:
         err, ownid = ts3.getClientID(schid)
         err, schids = ts3.getServerConnectionHandlerList()
         regex = re.compile(r'.*(<{0}>.*</{0}>).*'.format(self.tag),
                            re.IGNORECASE)
         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_message = ts3.getClientSelfVariable(
                     tab,
                     ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE)
                 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)
                 host = ""
                 port = 0
                 name = ""
                 if self.cfg.getboolean('general', 'enabled'):
                     err, host, port, pw = ts3.getServerConnectInfo(schid)
                     # err, ip = ts3.getConnectionVariableAsString(schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP)
                     # err, port = ts3.getConnectionVariableAsString(schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_PORT)
                     # err, ip = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_IP)
                     # err, port = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT)
                     if host:
                         newmeta = xml.Element(self.tag)
                         c = xml.SubElement(newmeta, "tab")
                         c.set("id", str(schid))
                         err, name = ts3.getServerVariable(
                             schid, ts3defines.VirtualServerProperties.
                             VIRTUALSERVER_NAME)
                         if name: c.text = escape(name.strip())
                         c.set("host", escape(host))
                         if port and port != 9987:
                             c.set("port", "{}".format(port))
                         if pw and self.cfg.getboolean('general', 'pw'):
                             c.set("pw", pw)
                         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 "")
                 _away_message = self.cfg.get('general', 'status').replace(
                     '{host}', host if host else "").replace(
                         '{name}', name if name else "").replace(
                             '{port}',
                             str(port) if port else "")
                 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)
     except:
         from traceback import format_exc
         ts3.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR,
                        "pyTSon", 0)
         pass
Exemple #12
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)