summaryrefslogtreecommitdiff
path: root/windows/WinUI
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-11-04 20:34:49 -0800
committerGrant Limberg <glimberg@gmail.com>2015-11-04 20:34:49 -0800
commit86c74d8a65ae45d6ff0433da7d4d4acb6cba8fcb (patch)
treeaaa63e4fba3a2fa86803721753e8903d0957a910 /windows/WinUI
parent49086e4556bbe0c31abb8d4e640d854859430d49 (diff)
downloadinfinitytier-86c74d8a65ae45d6ff0433da7d4d4acb6cba8fcb.tar.gz
infinitytier-86c74d8a65ae45d6ff0433da7d4d4acb6cba8fcb.zip
set manifest to require administrator privileges and read the authtoken and port from disk
Diffstat (limited to 'windows/WinUI')
-rw-r--r--windows/WinUI/APIHandler.cs7
-rw-r--r--windows/WinUI/MainWindow.xaml.cs66
-rw-r--r--windows/WinUI/WinUI.csproj4
-rw-r--r--windows/WinUI/app.manifest55
4 files changed, 117 insertions, 15 deletions
diff --git a/windows/WinUI/APIHandler.cs b/windows/WinUI/APIHandler.cs
index 2968c963..92b83021 100644
--- a/windows/WinUI/APIHandler.cs
+++ b/windows/WinUI/APIHandler.cs
@@ -14,7 +14,7 @@ namespace WinUI
public class APIHandler
{
- static string authtoken = "p3ptrzds5jkr2hbx5ipbyf04"; // delete me!
+ private string authtoken;
private string url = null;
@@ -23,9 +23,10 @@ namespace WinUI
url = "http://127.0.0.1:9993";
}
- public APIHandler(string host, int port)
+ public APIHandler(int port, string authtoken)
{
- url = "http://" + host + ":" + port;
+ url = "http://localhost:" + port;
+ this.authtoken = authtoken;
}
public ZeroTierStatus GetStatus()
diff --git a/windows/WinUI/MainWindow.xaml.cs b/windows/WinUI/MainWindow.xaml.cs
index 103165b3..535cb386 100644
--- a/windows/WinUI/MainWindow.xaml.cs
+++ b/windows/WinUI/MainWindow.xaml.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
@@ -23,7 +24,7 @@ namespace WinUI
/// </summary>
public partial class MainWindow : Window
{
- APIHandler handler = new APIHandler();
+ APIHandler handler;
Regex charRegex = new Regex("[0-9a-fxA-FX]");
Regex wholeStringRegex = new Regex("^[0-9a-fxA-FX]+$");
@@ -35,22 +36,63 @@ namespace WinUI
{
InitializeComponent();
- networksPage.SetAPIHandler(handler);
-
- updateStatus();
- if (!connected)
+ if (InitAPIHandler())
{
- MessageBox.Show("Unable to connect to ZeroTier Service.");
+ networksPage.SetAPIHandler(handler);
+
+ updateStatus();
+ if (!connected)
+ {
+ MessageBox.Show("Unable to connect to ZeroTier Service.");
+ }
+
+ updateNetworks();
+ updatePeers();
+
+ DataObject.AddPastingHandler(joinNetworkID, OnPaste);
+
+ timer.Elapsed += new ElapsedEventHandler(OnUpdateTimer);
+ timer.Interval = 2000;
+ timer.Enabled = true;
}
+ }
- updateNetworks();
- updatePeers();
+ private bool InitAPIHandler()
+ {
+ String ztDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One";
+ String authToken = "";
+ Int32 port = 9993;
+ try
+ {
+ byte[] tmp = File.ReadAllBytes(ztDir + "\\authtoken.secret");
+ authToken = System.Text.Encoding.ASCII.GetString(tmp).Trim();
+ }
+ catch
+ {
+ MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir, "ZeroTier One");
+ this.Close();
+ return false;
+ }
- DataObject.AddPastingHandler(joinNetworkID, OnPaste);
+ if ((authToken == null) || (authToken.Length <= 0))
+ {
+ MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir, "ZeroTier One");
+ this.Close();
+ return false;
+ }
+ try
+ {
+ byte[] tmp = File.ReadAllBytes(ztDir + "\\zerotier-one.port");
+ port = Int32.Parse(System.Text.Encoding.ASCII.GetString(tmp).Trim());
+ if ((port <= 0) || (port > 65535))
+ port = 9993;
+ }
+ catch
+ {
+ }
- timer.Elapsed += new ElapsedEventHandler(OnUpdateTimer);
- timer.Interval = 2000;
- timer.Enabled = true;
+ handler = new APIHandler(port, authToken);
+ return true;
}
private void updateStatus()
diff --git a/windows/WinUI/WinUI.csproj b/windows/WinUI/WinUI.csproj
index 5ebfedcf..c3eeaba4 100644
--- a/windows/WinUI/WinUI.csproj
+++ b/windows/WinUI/WinUI.csproj
@@ -63,6 +63,9 @@
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
+ <PropertyGroup>
+ <ApplicationManifest>app.manifest</ApplicationManifest>
+ </PropertyGroup>
<ItemGroup>
<Reference Include="Accessibility" />
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@@ -161,6 +164,7 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
+ <None Include="app.manifest" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
diff --git a/windows/WinUI/app.manifest b/windows/WinUI/app.manifest
new file mode 100644
index 00000000..b537bf49
--- /dev/null
+++ b/windows/WinUI/app.manifest
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+ <security>
+ <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+ <!-- UAC Manifest Options
+ If you want to change the Windows User Account Control level replace the
+ requestedExecutionLevel node with one of the following.
+
+ <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
+
+ Specifying requestedExecutionLevel node will disable file and registry virtualization.
+ If you want to utilize File and Registry Virtualization for backward
+ compatibility then delete the requestedExecutionLevel node.
+ -->
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+ <application>
+ <!-- A list of all Windows versions that this application is designed to work with.
+ Windows will automatically select the most compatible environment.-->
+
+ <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
+ <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
+
+ <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
+ <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
+
+ <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
+ <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
+
+ </application>
+ </compatibility>
+
+ <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
+ <!-- <dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+ </dependency>-->
+
+</asmv1:assembly>