Python:TeamSpeakClient

From Devicenull's Code

Jump to: navigation, search

This is a very basic interface to TeamSpeaks telnet protocol

import telnetlib
 
class TeamSpeakRcon:
	def __init__(self,srvip,srvport=51234):
		self.server_ip = srvip
		self.server_port = srvport
		self.super_login = 0
		self.admin_login = 0
 
	def connect(self):
		self.telnet = telnetlib.Telnet(self.server_ip,self.server_port)
		self.telnet.set_debuglevel(2)
		self.telnet.read_until("[TS]",3)
		self.super_login = 0
		self.admin_login = 0
 
	def slogin(self,user,passwd):
		self.telnet.write("slogin %s %s\n" % (user,passwd))
		data = self.telnet.read_until("\n",1)
		if data == "":
			raise Exception, "No Data Received"
		if data[0:2] == "OK":
			self.super_login = 1
			return 1
		return 0
 
	def select(self,port):
		self.telnet.write("sel %s\n" % port)
		data = self.telnet.read_until("\n",1)
		if data == "":
			raise Exception, "No Data Received"
		if data[0:2] == "OK":
			return 1
		return 0
 
	def banclear(self):
		self.telnet.write("banclear\n")
		data = self.telnet.read_until("\n",2)
		if data == "":
			raise Exception, "No Data Received"
		if data[0:2] == "OK":
			return 1
		return 0
 
	def userlist(self):
		self.telnet.write("dbuserlist\n")
		# skip header
		self.telnet.read_until("name\r\n",2)
		working = 1
		admins = []
		while working:
			data = self.telnet.read_until("\n",1)
			if data == "" or data[0:2] == "OK":
				working = 0
				continue
			# id      sa      created lastonline      name
			admininfo = data.split("\t")
			admins.append({"id":admininfo[0],"sa":admininfo[1],"created":admininfo[2],"lastonline":admininfo[3],"name":admininfo[4].strip().replace('"','')})
 
		return admins
Personal tools