summaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
Diffstat (limited to 'windows')
-rw-r--r--windows/WinUI/APIHandler.cs91
-rw-r--r--windows/WinUI/ToolbarItem.xaml.cs85
2 files changed, 91 insertions, 85 deletions
diff --git a/windows/WinUI/APIHandler.cs b/windows/WinUI/APIHandler.cs
index 2a8dea13..f2fb1d21 100644
--- a/windows/WinUI/APIHandler.cs
+++ b/windows/WinUI/APIHandler.cs
@@ -7,6 +7,7 @@ using System.Net;
using System.IO;
using System.Windows;
using Newtonsoft.Json;
+using System.Diagnostics;
namespace WinUI
{
@@ -18,7 +19,95 @@ namespace WinUI
private string url = null;
- public APIHandler()
+ private static APIHandler instance;
+
+ public static APIHandler Instance
+ {
+ get
+ {
+ if (instance == null)
+ {
+
+ }
+
+ return instance;
+ }
+ }
+
+ private static bool initHandler()
+ {
+ String localZtDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\ZeroTier\\One";
+ String globalZtDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One";
+
+ String authToken = "";
+ Int32 port = 9993;
+
+ if (!File.Exists(localZtDir + "\\authtoken.secret") || !File.Exists(localZtDir + "\\zerotier-one.port"))
+ {
+ // launch external process to copy file into place
+ String curPath = System.Reflection.Assembly.GetEntryAssembly().Location;
+ int index = curPath.LastIndexOf("\\");
+ curPath = curPath.Substring(0, index);
+ ProcessStartInfo startInfo = new ProcessStartInfo(curPath + "\\copyutil.exe", globalZtDir + " " + localZtDir);
+ startInfo.Verb = "runas";
+
+
+ var process = Process.Start(startInfo);
+ process.WaitForExit();
+ }
+
+ authToken = readAuthToken(localZtDir + "\\authtoken.secret");
+
+ if ((authToken == null) || (authToken.Length <= 0))
+ {
+ MessageBox.Show("Unable to read ZeroTier One authtoken", "ZeroTier One");
+ return false;
+ }
+
+ port = readPort(localZtDir + "\\zerotier-one.port");
+ instance = new APIHandler(port, authToken);
+ return true;
+ }
+
+ private static String readAuthToken(String path)
+ {
+ String authToken = "";
+
+ if (File.Exists(path))
+ {
+ try
+ {
+ byte[] tmp = File.ReadAllBytes(path);
+ authToken = System.Text.Encoding.UTF8.GetString(tmp).Trim();
+ }
+ catch
+ {
+ MessageBox.Show("Unable to read ZeroTier One Auth Token from:\r\n" + path, "ZeroTier One");
+ }
+ }
+
+ return authToken;
+ }
+
+ private static Int32 readPort(String path)
+ {
+ Int32 port = 9993;
+
+ try
+ {
+ byte[] tmp = File.ReadAllBytes(path);
+ port = Int32.Parse(System.Text.Encoding.ASCII.GetString(tmp).Trim());
+ if ((port <= 0) || (port > 65535))
+ port = 9993;
+ }
+ catch
+ {
+ }
+
+ return port;
+ }
+
+ private APIHandler()
{
url = "http://127.0.0.1:9993";
}
diff --git a/windows/WinUI/ToolbarItem.xaml.cs b/windows/WinUI/ToolbarItem.xaml.cs
index e34863dd..9ff7e860 100644
--- a/windows/WinUI/ToolbarItem.xaml.cs
+++ b/windows/WinUI/ToolbarItem.xaml.cs
@@ -24,94 +24,11 @@ namespace WinUI
/// </summary>
public partial class ToolbarItem : Window
{
- APIHandler handler;
+ APIHandler handler = APIHandler.Instance;
public ToolbarItem()
{
InitializeComponent();
-
- if (InitAPIHandler())
- {
-
- }
- else
- {
- MessageBox.Show("ZeroTier API Initialization Failed");
- }
- }
-
- private String readAuthToken(String path)
- {
- String authToken = "";
-
- if (File.Exists(path))
- {
- try
- {
- byte[] tmp = File.ReadAllBytes(path);
- authToken = System.Text.Encoding.UTF8.GetString(tmp).Trim();
- }
- catch
- {
- MessageBox.Show("Unable to read ZeroTier One Auth Token from:\r\n" + path, "ZeroTier One");
- }
- }
-
- return authToken;
- }
-
- private Int32 readPort(String path)
- {
- Int32 port = 9993;
-
- try
- {
- byte[] tmp = File.ReadAllBytes(path);
- port = Int32.Parse(System.Text.Encoding.ASCII.GetString(tmp).Trim());
- if ((port <= 0) || (port > 65535))
- port = 9993;
- }
- catch
- {
- }
-
- return port;
- }
-
- private bool InitAPIHandler()
- {
- String localZtDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\ZeroTier\\One";
- String globalZtDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One";
-
- String authToken = "";
- Int32 port = 9993;
-
- if (!File.Exists(localZtDir + "\\authtoken.secret") || !File.Exists(localZtDir + "\\zerotier-one.port"))
- {
- // launch external process to copy file into place
- String curPath = System.Reflection.Assembly.GetEntryAssembly().Location;
- int index = curPath.LastIndexOf("\\");
- curPath = curPath.Substring(0, index);
- ProcessStartInfo startInfo = new ProcessStartInfo(curPath + "\\copyutil.exe", globalZtDir + " " + localZtDir);
- startInfo.Verb = "runas";
-
-
- var process = Process.Start(startInfo);
- process.WaitForExit();
- }
-
- authToken = readAuthToken(localZtDir + "\\authtoken.secret");
-
- if ((authToken == null) || (authToken.Length <= 0))
- {
- MessageBox.Show("Unable to read ZeroTier One authtoken", "ZeroTier One");
- this.Close();
- return false;
- }
-
- port = readPort(localZtDir + "\\zerotier-one.port");
- handler = new APIHandler(port, authToken);
- return true;
}
private void ToolbarItem_TrayContextMenuOpen(object sender, System.Windows.RoutedEventArgs e)