Beispiel #1
0
 public static extern uint ts3server_initServerLib(ref server_callback_struct arg0, LogTypes arg1, string arg2);
Beispiel #2
0
        static void Main(string[] args)
        {
            /* Assign the used callback function pointers */
            server_callback_struct cbs = new server_callback_struct();

            cbs.onClientConnected_delegate         = new onClientConnected_type(callback.onClientConnected);
            cbs.onClientDisconnected_delegate      = new onClientDisconnected_type(callback.onClientDisconnected);
            cbs.onClientMoved_delegate             = new onClientMoved_type(callback.onClientMoved);
            cbs.onChannelCreated_delegate          = new onChannelCreated_type(callback.onChannelCreated);
            cbs.onChannelEdited_delegate           = new onChannelEdited_type(callback.onChannelEdited);
            cbs.onChannelDeleted_delegate          = new onChannelDeleted_type(callback.onChannelDeleted);
            cbs.onServerTextMessageEvent_delegate  = new onServerTextMessageEvent_type(callback.onServerTextMessageEvent);
            cbs.onChannelTextMessageEvent_delegate = new onChannelTextMessageEvent_type(callback.onChannelTextMessageEvent);
            cbs.onUserLoggingMessageEvent_delegate = new onUserLoggingMessageEvent_type(callback.onUserLoggingMessageEvent);
            cbs.onClientStartTalkingEvent_delegate = new onClientStartTalkingEvent_type(callback.onClientStartTalkingEvent);
            cbs.onClientStopTalkingEvent_delegate  = new onClientStopTalkingEvent_type(callback.onClientStopTalkingEvent);
            cbs.onAccountingErrorEvent_delegate    = new onAccountingErrorEvent_type(callback.onAccountingErrorEvent);

            /* Initialize server lib with callbacks */
            uint error = ts3server.ts3server_initServerLib(ref cbs, LogTypes.LogType_FILE | LogTypes.LogType_CONSOLE | LogTypes.LogType_USERLOGGING, null);

            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Failed to initialize serverlib: {0}.", error);
                return;
            }

            /* Query and print client lib version */
            IntPtr versionPtr = IntPtr.Zero;

            error = ts3server.ts3server_getServerLibVersion(out versionPtr);
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Failed to get clientlib version: {0}.", error);
                return;
            }
            string version = Marshal.PtrToStringAnsi(versionPtr);

            Console.WriteLine(version);
            ts3server.ts3server_freeMemory(versionPtr);               /* Release dynamically allocated memory */

            string filename = string.Format("keypair_{0}.txt", 9987); // 9987 = default port
            string keyPair;

            if (ts3server.readKeyPairFromFile(filename, out keyPair) != 0)
            {
                keyPair = "";
            }

            /* Create virtual server using default port 9987 with max 10 slots */

            /* Create the virtual server with specified port, name, keyPair and max clients */
            uint64 serverID = 0;

            Console.WriteLine("Create virtual server using keypair '{0}'", keyPair);
            IntPtr pServerID = IntPtr.Zero;

            error = ts3server.ts3server_createVirtualServer(9987, "0.0.0.0", "TeamSpeak 3 SDK Testserver", keyPair, 10, out serverID);
            if (error != public_errors.ERROR_ok)
            {
                IntPtr errormsgPtr = IntPtr.Zero;
                ts3server.ts3server_getGlobalErrorMessage(error, out errormsgPtr);
                if (error == public_errors.ERROR_ok)
                {
                    string errormsg = Marshal.PtrToStringAnsi(errormsgPtr);
                    Console.WriteLine("Error creating virtual server: {0} ({1})", errormsg, error);
                    ts3server.ts3server_freeMemory(errormsgPtr);
                }
                return;
            }

            /* If we didn't load the keyPair before, query it from virtual server and save to file */
            if (keyPair == null)
            {
                IntPtr keyPairPtr = IntPtr.Zero;
                error = ts3server.ts3server_getVirtualServerKeyPair(serverID, out keyPairPtr);
                if (error != public_errors.ERROR_ok)
                {
                    IntPtr errormsgPtr = IntPtr.Zero;
                    ts3server.ts3server_getGlobalErrorMessage(error, out errormsgPtr);
                    if (error == public_errors.ERROR_ok)
                    {
                        string errormsg = Marshal.PtrToStringAnsi(errormsgPtr);
                        Console.WriteLine("Error querying keyPair: %s\n", errormsg);
                        ts3server.ts3server_freeMemory(errormsgPtr);
                    }
                    return;
                }
                keyPair = Marshal.PtrToStringAnsi(keyPairPtr);

                /* Save keyPair to file "keypair_<port>.txt"*/
                if (ts3server.writeKeyPairToFile(filename, keyPair) != 0)
                {
                    return;
                }
            }

            /* Set welcome message */
            error = ts3server.ts3server_setVirtualServerVariableAsString(serverID, VirtualServerProperties.VIRTUALSERVER_WELCOMEMESSAGE, "Hello TeamSpeak 3");
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Error setting server welcomemessage: {0}", error);
                return;
            }

            /* Set server password */
            error = ts3server.ts3server_setVirtualServerVariableAsString(serverID, VirtualServerProperties.VIRTUALSERVER_PASSWORD, "secret");
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Error setting server password: {0}", error);
                return;
            }

            /* Flush above two changes to server */
            error = ts3server.ts3server_flushVirtualServerVariable(serverID);
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Error flushing server variables: {0}", error);
                return;
            }

            /* Wait for user input */
            Console.WriteLine("\n--- Press Return to shutdown server and exit ---");
            Console.ReadLine();

            /* Stop virtual server */
            error = ts3server.ts3server_stopVirtualServer(serverID);
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Error stopping virtual server: {0}", error);
                return;
            }

            /* Shutdown server lib */
            error = ts3server.ts3server_destroyServerLib();
            if (error != public_errors.ERROR_ok)
            {
                Console.WriteLine("Error destroying server lib: {0}", error);
                return;
            }
        }