diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-11-04 20:34:49 -0800 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-11-04 20:34:49 -0800 |
commit | 86c74d8a65ae45d6ff0433da7d4d4acb6cba8fcb (patch) | |
tree | aaa63e4fba3a2fa86803721753e8903d0957a910 /windows/WinUI | |
parent | 49086e4556bbe0c31abb8d4e640d854859430d49 (diff) | |
download | infinitytier-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.cs | 7 | ||||
-rw-r--r-- | windows/WinUI/MainWindow.xaml.cs | 66 | ||||
-rw-r--r-- | windows/WinUI/WinUI.csproj | 4 | ||||
-rw-r--r-- | windows/WinUI/app.manifest | 55 |
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> |