diff options
Diffstat (limited to 'embeddable-dll-service/csharp/Program.cs')
-rw-r--r-- | embeddable-dll-service/csharp/Program.cs | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/embeddable-dll-service/csharp/Program.cs b/embeddable-dll-service/csharp/Program.cs deleted file mode 100644 index dfefc3ec..00000000 --- a/embeddable-dll-service/csharp/Program.cs +++ /dev/null @@ -1,92 +0,0 @@ -/* SPDX-License-Identifier: MIT - * - * Copyright (C) 2019-2020 WireGuard LLC. All Rights Reserved. - */ - -using System; -using System.Net.Sockets; -using System.IO; -using System.Text; -using System.Diagnostics; -using System.Threading; -using System.Runtime.InteropServices; - -namespace Tunnel -{ - class Program - { - - [DllImport("kernel32.dll")] - private static extern bool SetConsoleCtrlHandler(SetConsoleCtrlEventHandler handler, bool add); - private delegate bool SetConsoleCtrlEventHandler(UInt32 signal); - - public static void Main(string[] args) - { - if (args.Length == 2 && args[0] == "/service") - { - Service.Run(args[1]); - return; - } - - var baseDirectory = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); - var configFile = Path.Combine(baseDirectory, "demobox.conf"); - var logFile = Path.Combine(baseDirectory, "log.bin"); - - try { File.Delete(logFile); } catch { } - Ringlogger log = new Ringlogger(logFile, "GUI"); - - var logPrintingThread = new Thread(() => - { - var cursor = Ringlogger.CursorAll; - while (Thread.CurrentThread.IsAlive) - { - var lines = log.FollowFromCursor(ref cursor); - foreach (var line in lines) - Console.WriteLine(line); - Thread.Sleep(300); - } - }); - logPrintingThread.Start(); - - log.Write("Generating keys"); - var keys = Keypair.Generate(); - log.Write("Exchanging keys with demo server"); - var client = new TcpClient("demo.wireguard.com", 42912); - var stream = client.GetStream(); - var reader = new StreamReader(stream, Encoding.UTF8); - var pubKeyBytes = Encoding.UTF8.GetBytes(keys.Public + "\n"); - stream.Write(pubKeyBytes, 0, pubKeyBytes.Length); - stream.Flush(); - var ret = reader.ReadLine().Split(':'); - client.Close(); - var status = ret.Length >= 1 ? ret[0] : ""; - var serverPubkey = ret.Length >= 2 ? ret[1] : ""; - var serverPort = ret.Length >= 3 ? ret[2] : ""; - var internalIP = ret.Length >= 4 ? ret[3] : ""; - - if (status != "OK") - throw new InvalidOperationException(String.Format("Server status is {0}", status)); - - SetConsoleCtrlHandler(delegate - { - Service.Remove(configFile); - Environment.Exit(0); - return true; - }, true); - - log.Write("Writing config file to disk"); - var configFileContents = String.Format("[Interface]\nPrivateKey = {0}\nAddress = {1}/24\nDNS = 8.8.8.8, 8.8.4.4\n\n[Peer]\nPublicKey = {2}\nEndpoint = demo.wireguard.com:{3}\nAllowedIPs = 0.0.0.0/0\n", keys.Private, internalIP, serverPubkey, serverPort); - File.WriteAllText(configFile, configFileContents); - - try - { - Service.Add(configFile); - logPrintingThread.Join(); - } - finally - { - Service.Remove(configFile); - } - } - } -} |