summaryrefslogtreecommitdiff
path: root/windows/WinUI/ToolbarItem.xaml.cs
diff options
context:
space:
mode:
authorGrant Limberg <grant.limberg@zerotier.com>2016-11-08 14:54:55 -0800
committerGrant Limberg <grant.limberg@zerotier.com>2016-11-08 14:54:55 -0800
commit6b0543ba27511d7bd7b40cfca2f24608a6b8d9ee (patch)
tree28dea243c77542335bf745882dd02e6c27b4e5eb /windows/WinUI/ToolbarItem.xaml.cs
parent54206fd44d5bda4b9fd0f5dacbaefdbe81e15b18 (diff)
downloadinfinitytier-6b0543ba27511d7bd7b40cfca2f24608a6b8d9ee.tar.gz
infinitytier-6b0543ba27511d7bd7b40cfca2f24608a6b8d9ee.zip
starts up to a toolbar icon with context menu. still much more to do
Diffstat (limited to 'windows/WinUI/ToolbarItem.xaml.cs')
-rw-r--r--windows/WinUI/ToolbarItem.xaml.cs127
1 files changed, 127 insertions, 0 deletions
diff --git a/windows/WinUI/ToolbarItem.xaml.cs b/windows/WinUI/ToolbarItem.xaml.cs
new file mode 100644
index 00000000..e34863dd
--- /dev/null
+++ b/windows/WinUI/ToolbarItem.xaml.cs
@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+using System.Text.RegularExpressions;
+using System.Timers;
+using System.Windows.Threading;
+using System.IO;
+using System.Diagnostics;
+
+namespace WinUI
+{
+ /// <summary>
+ /// Interaction logic for ToolbarItem.xaml
+ /// </summary>
+ public partial class ToolbarItem : Window
+ {
+ APIHandler handler;
+
+ 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)
+ {
+ Console.WriteLine("TrayContextMenuOpen");
+ }
+
+ private void ToolbarItem_PreviewTrayContextMenuOpen(object sender, System.Windows.RoutedEventArgs e)
+ {
+ Console.WriteLine("PreviewTrayContextMenuOpen");
+ }
+ }
+}