home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / TeamSpeak / TeamSpeak3-Client-win32-3.0.0.exe / plugins / clientquery_plugin / examples / connectinfo.py < prev    next >
Text File  |  2011-08-03  |  3KB  |  94 lines

  1. #
  2. # TeamSpeak 3 ClientQuery example
  3. # Copyright (c) 2010 TeamSpeak Systems GmbH
  4. #
  5. # Demonstration how to query the current server and channel data from a running TeamSpeak 3 Client
  6. #
  7.  
  8. import string
  9. from clientquery import *
  10.  
  11. HOST = 'localhost'
  12. PORT = 25639
  13.  
  14. #
  15. # Demonstrate connecting to a local TeamSpeak 3 clientquery
  16. #
  17. def getServerChannelConnectInfo():
  18.     # Create TCP socket and connect to clientquery on localhost:25639
  19.     s = connectTS3Query(HOST, PORT)
  20.     if not s:
  21.         return None
  22.  
  23.     # Once connected, check if we receive "TS3 Client".
  24.     # If not, this is no TS3 clientquery
  25.     (data, err) = receive(s)
  26.     if err or not data or not string.lower(data[0]).startswith('ts3 client'):
  27.         print 'Not a TS ClientQuery'
  28.         return None
  29.  
  30.     # Send "currentchannelid" to get the current channel ID
  31.     send(s, 'whoami')
  32.     (data, err) = receive(s)
  33.     if err:
  34.         return None
  35.     #myClientID = int(getParamValue(data[0], 'clid'))  # Unused in this sample
  36.     currentChannelID = int(getParamValue(data[0], 'cid'))
  37.  
  38.     # Send "serverconnectinfo" to get server IP, port and password
  39.     send(s, 'serverconnectinfo')
  40.     (data, err) = receive(s)
  41.     if err:
  42.         return None
  43.     ip = getParamValue(data[0], 'ip')
  44.     port = int(getParamValue(data[0], 'port'))
  45.     password = getParamValue(data[0], 'password')
  46.     if not ip or not port:
  47.         print 'No IP or port specified'
  48.         return None
  49.  
  50.     # Send "channelconnectinfo" to get current channel path and password
  51.     send(s, 'channelconnectinfo')
  52.     (data, err) = receive(s)
  53.     if err:
  54.         return None
  55.     path = getParamValue(data[0], 'path').replace('\s', ' ')
  56.     channelPassword = getParamValue(data[0], 'password')
  57.     if not path:
  58.         print 'No channel path specified'
  59.         return None
  60.  
  61.     # Verify server password
  62.     if password:
  63.         send(s, 'verifyserverpassword password=%s' % password)
  64.         (data, err) = receive(s)
  65.         if err:
  66.             # If a user is ServerAdmin, it is possible he has no password stored in the bookmark as he can connect to the server without password
  67.             # In this case the application should prompt the user for the correct password
  68.             print 'Server password validation failed'
  69.     
  70.     # Verify channel password
  71.     if channelPassword:
  72.         send(s, 'verifychannelpassword cid=%d password=%s' % (currentChannelID, channelPassword))
  73.         (data, err) = receive(s)
  74.         if err:
  75.             # If a user is ServerAdmin or ChannelAdmin, it is possible he has no password stored as he can join the channel without password
  76.             # In this case the application should prompt the user for the correct password
  77.             print 'Channel password validation failed'
  78.     
  79.     # Finally we have the required data available: Current server IP, port, password, current channel path, password
  80.     # Send this data to invite another user and pass it to the startTS3Client function available in the startts3client.py demo.
  81.     return (ip, port, password, path, channelPassword)
  82.  
  83. def main():
  84.     info = getServerChannelConnectInfo()
  85.     if not info:
  86.         print 'Failed to receive server and channel connect info'
  87.         return
  88.     (ip, port, password, path, channelPassword) = info
  89.     print 'Server: %s:%d, Password: %s' % (ip, port, password)
  90.     print 'Channel: %s, Password: %s' % (path, channelPassword)
  91.  
  92. if __name__ == '__main__':
  93.     main()
  94.