mirror of
https://github.com/openziti/desktop-edge-win.git
synced 2026-10-14 16:50:03 +00:00
Merge branch 'release-0.0.30' into test-git-push
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -58,6 +58,16 @@
|
||||
<local:MenuItem HorizontalAlignment="Stretch" Icon="/Assets/Images/wrench.png" Width="Auto" Label="Tunnel Configuration" MouseUp="ShowConfig"></local:MenuItem>
|
||||
<local:MenuItem HorizontalAlignment="Stretch" Icon="/Assets/Images/logs.png" Width="Auto" Label="Service Logs" MouseUp="ShowLogs"></local:MenuItem>
|
||||
<local:MenuItem HorizontalAlignment="Stretch" Icon="/Assets/Images/logs.png" Width="Auto" Label="Application Logs" MouseUp="ShowUILogs"></local:MenuItem>
|
||||
<local:MenuItem HorizontalAlignment="Stretch" Icon="/Assets/Images/advanced.png" Width="Auto" Label="Set Logging Level" MouseUp="SetLogLevel"></local:MenuItem>
|
||||
</StackPanel>
|
||||
<StackPanel Name="LogLevelItems" Visibility="Collapsed" Orientation="Vertical" HorizontalAlignment="Stretch">
|
||||
<local:SubOptionItem x:Name="LogFatal" HorizontalAlignment="Stretch" Width="Auto" Label="Fatal" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogError" HorizontalAlignment="Stretch" Width="Auto" Label="Error" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogWarn" HorizontalAlignment="Stretch" Width="Auto" Label="Warn" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogInfo" HorizontalAlignment="Stretch" Width="Auto" Label="Info" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogDebug" HorizontalAlignment="Stretch" Width="Auto" Label="Debug" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogTrace" HorizontalAlignment="Stretch" Width="Auto" Label="Trace" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
<local:SubOptionItem x:Name="LogVerbose" HorizontalAlignment="Stretch" Width="Auto" Label="Verbose" MouseUp="SetLevel"></local:SubOptionItem>
|
||||
</StackPanel>
|
||||
<StackPanel Name="ConfigItems" Visibility="Collapsed" Orientation="Vertical" HorizontalAlignment="Stretch">
|
||||
<local:MenuEditItem x:Name="ConfigIp" HorizontalAlignment="Stretch" Width="Auto" Label="IPv4 Address:"></local:MenuEditItem>
|
||||
@@ -71,7 +81,8 @@
|
||||
<StackPanel Name="AboutItemsArea" Orientation="Vertical" HorizontalAlignment="Stretch" Visibility="Collapsed">
|
||||
<Label Name="VersionInfo" HorizontalAlignment="Center" FontSize="10" Height="50" Padding="0,30,0,0" Foreground="#638190" Margin="0,-20,0,0" FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans"></Label>
|
||||
</StackPanel>
|
||||
<Label Name="MainItemsButton" Margin="0,30,0,0" Foreground="#F4044D" FontWeight="SemiBold" Content="Quit Ziti Desktop Edge" Cursor="Hand" MouseUp="CloseApp" FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans" HorizontalAlignment="Center"></Label>
|
||||
<Label Name="UpdateAvailable" Visibility="Collapsed" Margin="0,0,0,0" Foreground="#F4044D" FontWeight="Normal" Content="An Upgrade is available, click to download" Cursor="Hand" MouseUp="DoUpdate" FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans" HorizontalAlignment="Center"></Label>
|
||||
<Label Name="MainItemsButton" Margin="0,10,0,0" Foreground="#F4044D" FontWeight="SemiBold" Content="Quit Ziti Desktop Edge" Cursor="Hand" MouseUp="CloseApp" FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans" HorizontalAlignment="Center"></Label>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -10,6 +10,9 @@ using System.Reflection;
|
||||
using System.Web;
|
||||
using System.Net.Mail;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ZitiDesktopEdge
|
||||
{
|
||||
@@ -21,12 +24,18 @@ namespace ZitiDesktopEdge
|
||||
|
||||
public delegate void AttachementChanged(bool attached);
|
||||
public event AttachementChanged OnAttachmentChange;
|
||||
public delegate void LogLevelChanged(string level);
|
||||
public event LogLevelChanged OnLogLevelChanged;
|
||||
public string menuState = "Main";
|
||||
public string licenseData = "it's open source.";
|
||||
public string LogLevel = "";
|
||||
private string _updateUrl = "https://api.github.com/repos/openziti/desktop-edge-win/releases/latest";
|
||||
private string _downloadUrl = "";
|
||||
|
||||
public MainMenu() {
|
||||
InitializeComponent();
|
||||
LicensesItems.Text = licenseData;
|
||||
CheckUpdates();
|
||||
}
|
||||
|
||||
private void HideMenu(object sender, MouseButtonEventArgs e) {
|
||||
@@ -39,6 +48,10 @@ namespace ZitiDesktopEdge
|
||||
Application.Current.Shutdown();
|
||||
}
|
||||
|
||||
private void DoUpdate(object sender, MouseButtonEventArgs e) {
|
||||
System.Diagnostics.Process.Start(_downloadUrl);
|
||||
}
|
||||
|
||||
private void ShowAbout(object sender, MouseButtonEventArgs e) {
|
||||
menuState = "About";
|
||||
UpdateState();
|
||||
@@ -64,6 +77,39 @@ namespace ZitiDesktopEdge
|
||||
menuState = "UILogs";
|
||||
UpdateState();
|
||||
}
|
||||
private void SetLogLevel(object sender, MouseButtonEventArgs e) {
|
||||
menuState = "LogLevel";
|
||||
UpdateState();
|
||||
}
|
||||
|
||||
private void CheckUpdates() {
|
||||
HttpWebRequest httpWebRequest = WebRequest.CreateHttp(_updateUrl);
|
||||
httpWebRequest.Method = "GET";
|
||||
httpWebRequest.ContentType = "application/json";
|
||||
httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36";
|
||||
HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
|
||||
StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream());
|
||||
string result = streamReader.ReadToEnd();
|
||||
JObject json = JObject.Parse(result);
|
||||
string currentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
string serverVersion = json.Property("tag_name").Value.ToString() + ".0";
|
||||
|
||||
Version installed = new Version(currentVersion);
|
||||
Version published = new Version(serverVersion);
|
||||
int compare = installed.CompareTo(published);
|
||||
if (compare<0) {
|
||||
UpdateAvailable.Content = "An Upgrade is available, click to download";
|
||||
UpdateAvailable.Visibility = Visibility.Visible;
|
||||
} else if (compare>0) {
|
||||
UpdateAvailable.Content = "Your version is newer than the released version";
|
||||
UpdateAvailable.Visibility = Visibility.Visible;
|
||||
}
|
||||
JArray assets = JArray.Parse(json.Property("assets").Value.ToString());
|
||||
foreach (JObject asset in assets.Children<JObject>()) {
|
||||
_downloadUrl = asset.Property("browser_download_url").Value.ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateState() {
|
||||
MainItems.Visibility = Visibility.Collapsed;
|
||||
@@ -75,16 +121,23 @@ namespace ZitiDesktopEdge
|
||||
LicensesItems.Visibility = Visibility.Collapsed;
|
||||
LogsItems.Visibility = Visibility.Collapsed;
|
||||
ConfigItems.Visibility = Visibility.Collapsed;
|
||||
LogLevelItems.Visibility = Visibility.Collapsed;
|
||||
|
||||
if (menuState=="About") {
|
||||
if (menuState == "About") {
|
||||
MenuTitle.Content = "About";
|
||||
AboutItemsArea.Visibility = Visibility.Visible;
|
||||
AboutItems.Visibility = Visibility.Visible;
|
||||
BackArrow.Visibility = Visibility.Visible;
|
||||
|
||||
// Service Version - Lose the snapshot
|
||||
string version = File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "OpenZiti", "Service", "Version.txt"));
|
||||
if (version.IndexOf("-") > 0) version = version.Split('-')[0];
|
||||
string version = "";
|
||||
try {
|
||||
ServiceClient.TunnelStatus s = (ServiceClient.TunnelStatus)Application.Current.Properties["CurrentTunnelStatus"];
|
||||
version = $"{s.ServiceVersion.Version}@{s.ServiceVersion.Revision}";
|
||||
} catch (Exception e) {
|
||||
#if DEBUG
|
||||
Debug.WriteLine(e.ToString());
|
||||
#endif
|
||||
}
|
||||
|
||||
// Interface Version
|
||||
VersionInfo.Content = "App: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()+" Service: "+ version;
|
||||
@@ -108,6 +161,12 @@ namespace ZitiDesktopEdge
|
||||
LogsItems.Text = UILog.GetLogs();
|
||||
LogsItems.Visibility = Visibility.Visible;
|
||||
BackArrow.Visibility = Visibility.Visible;
|
||||
} else if (menuState == "LogLevel") {
|
||||
ResetLevels();
|
||||
|
||||
MenuTitle.Content = "Set Log Level";
|
||||
LogLevelItems.Visibility = Visibility.Visible;
|
||||
BackArrow.Visibility = Visibility.Visible;
|
||||
} else if (menuState=="Config") {
|
||||
MenuTitle.Content = "Tunnel Configuration";
|
||||
ConfigItems.Visibility = Visibility.Visible;
|
||||
@@ -215,5 +274,32 @@ namespace ZitiDesktopEdge
|
||||
OnAttachmentChange(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetLevels() {
|
||||
if (this.LogLevel == "") this.LogLevel = "error";
|
||||
LogVerbose.IsSelected = false;
|
||||
LogDebug.IsSelected = false;
|
||||
LogInfo.IsSelected = false;
|
||||
LogError.IsSelected = false;
|
||||
LogFatal.IsSelected = false;
|
||||
LogWarn.IsSelected = false;
|
||||
LogTrace.IsSelected = false;
|
||||
if (this.LogLevel == "verbose") LogVerbose.IsSelected = true;
|
||||
else if (this.LogLevel == "debug") LogDebug.IsSelected = true;
|
||||
else if (this.LogLevel == "info") LogInfo.IsSelected = true;
|
||||
else if (this.LogLevel == "error") LogError.IsSelected = true;
|
||||
else if (this.LogLevel == "fatal") LogFatal.IsSelected = true;
|
||||
else if (this.LogLevel == "warn") LogWarn.IsSelected = true;
|
||||
else if (this.LogLevel == "trace") LogTrace.IsSelected = true;
|
||||
}
|
||||
|
||||
private void SetLevel(object sender, MouseButtonEventArgs e) {
|
||||
SubOptionItem item = (SubOptionItem)sender;
|
||||
this.LogLevel = item.Label.ToLower();
|
||||
if (OnLogLevelChanged != null) {
|
||||
OnLogLevelChanged(this.LogLevel);
|
||||
}
|
||||
ResetLevels();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,21 +4,11 @@ using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using System.IO;
|
||||
using ZitiDesktopEdge.Models;
|
||||
using System.IO.Compression;
|
||||
|
||||
using ZitiDesktopEdge.ServiceClient;
|
||||
using System.ServiceProcess;
|
||||
using System.Linq;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Diagnostics;
|
||||
using System.Security.Principal;
|
||||
using System.Net;
|
||||
using System.Windows.Controls;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Interop;
|
||||
|
||||
namespace ZitiDesktopEdge {
|
||||
|
||||
@@ -75,7 +65,6 @@ namespace ZitiDesktopEdge {
|
||||
LaunchOrInstall();
|
||||
|
||||
SetNotifyIcon("white");
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void MainWindow_Activated(object sender, EventArgs e) {
|
||||
@@ -140,6 +129,7 @@ namespace ZitiDesktopEdge {
|
||||
Application.Current.Properties.Add("ServiceClient", serviceClient);
|
||||
Application.Current.Properties.Add("Identities", new List<ZitiIdentity>());
|
||||
MainMenu.OnAttachmentChange += AttachmentChanged;
|
||||
MainMenu.OnLogLevelChanged += LogLevelChanged;
|
||||
IdentityMenu.OnError += IdentityMenu_OnError;
|
||||
|
||||
try {
|
||||
@@ -154,6 +144,10 @@ namespace ZitiDesktopEdge {
|
||||
IdentityMenu.OnForgot += IdentityForgotten;
|
||||
}
|
||||
|
||||
private void LogLevelChanged(string level) {
|
||||
serviceClient.SetLogLevel(level);
|
||||
}
|
||||
|
||||
private void IdentityMenu_OnError(string message) {
|
||||
ShowError("Identity Error", message);
|
||||
}
|
||||
@@ -253,12 +247,14 @@ namespace ZitiDesktopEdge {
|
||||
private void ServiceClient_OnTunnelStatusEvent(object sender, TunnelStatusEvent e) {
|
||||
if (e == null) return; //just skip it for now...
|
||||
Debug.WriteLine($"==== TunnelStatusEvent: ");
|
||||
Application.Current.Properties.Add("CurrentTunnelStatus", e.Status);
|
||||
e.Status.Dump(Console.Out);
|
||||
this.Dispatcher.Invoke(() => {
|
||||
if(e.ApiVersion != Client.EXPECTED_API_VERSION) {
|
||||
SetCantDisplay("Version mismatch!", "The version of the Service is not compatible");
|
||||
return;
|
||||
}
|
||||
|
||||
this.MainMenu.LogLevel = e.Status.LogLevel;
|
||||
InitializeTimer((int)e.Status.Duration);
|
||||
LoadStatusFromService(e.Status);
|
||||
LoadIdentities(false);
|
||||
@@ -406,6 +402,7 @@ namespace ZitiDesktopEdge {
|
||||
try {
|
||||
Identity createdId = serviceClient.AddIdentity(System.IO.Path.GetFileName(jwtDialog.FileName), false, fileContent);
|
||||
ServiceClient.Client client = (ServiceClient.Client)Application.Current.Properties["ServiceClient"];
|
||||
|
||||
client.IdentityOnOff(createdId.FingerPrint, true);
|
||||
if (createdId != null) {
|
||||
identities.Add(ZitiIdentity.FromClient(createdId));
|
||||
@@ -546,5 +543,22 @@ namespace ZitiDesktopEdge {
|
||||
private void Label_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
|
||||
Placement();
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
serviceClient.SetLogLevel(NextLevel());
|
||||
}
|
||||
|
||||
int cur = 0;
|
||||
LogLevelEnum[] levels = new LogLevelEnum[] { LogLevelEnum.FATAL, LogLevelEnum.ERROR, LogLevelEnum.WARN, LogLevelEnum.INFO, LogLevelEnum.DEBUG, LogLevelEnum.TRACE, LogLevelEnum.VERBOSE };
|
||||
public LogLevelEnum NextLevel()
|
||||
{
|
||||
cur++;
|
||||
if (cur > 6)
|
||||
{
|
||||
cur = 0;
|
||||
}
|
||||
return levels[cur];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,5 +51,5 @@ using System.Windows;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("1.2.7.0")]
|
||||
[assembly: AssemblyFileVersion("1.2.7.0")]
|
||||
|
||||
@@ -24,8 +24,20 @@ using System.Windows.Documents;
|
||||
/// </summary>
|
||||
namespace ZitiDesktopEdge.ServiceClient
|
||||
{
|
||||
public enum LogLevelEnum
|
||||
{
|
||||
FATAL = 0,
|
||||
ERROR = 1,
|
||||
WARN = 2,
|
||||
INFO = 3,
|
||||
DEBUG = 4,
|
||||
TRACE = 5,
|
||||
VERBOSE = 6,
|
||||
}
|
||||
|
||||
internal class Client
|
||||
{
|
||||
|
||||
public const int EXPECTED_API_VERSION = 1;
|
||||
|
||||
public event EventHandler<TunnelStatusEvent> OnTunnelStatusEvent;
|
||||
@@ -378,6 +390,34 @@ namespace ZitiDesktopEdge.ServiceClient
|
||||
}
|
||||
}
|
||||
|
||||
public void SetLogLevel(string level) {
|
||||
try {
|
||||
send(new SetLogLevelFunction(level));
|
||||
SvcResponse resp = read<SvcResponse>(ipcReader);
|
||||
return;
|
||||
} catch (IOException ioe) {
|
||||
//almost certainly a problem with the pipe - recreate the pipe...
|
||||
//setupPipe();
|
||||
throw ioe;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetLogLevel(LogLevelEnum level)
|
||||
{
|
||||
try
|
||||
{
|
||||
send(new SetLogLevelFunction(Enum.GetName(level.GetType(), level)));
|
||||
SvcResponse resp = read<SvcResponse>(ipcReader);
|
||||
return;
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
//almost certainly a problem with the pipe - recreate the pipe...
|
||||
//setupPipe();
|
||||
throw ioe;
|
||||
}
|
||||
}
|
||||
|
||||
public Identity IdentityOnOff(string fingerprint, bool onOff)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -73,6 +73,10 @@ namespace ZitiDesktopEdge.ServiceClient
|
||||
public bool OnOff { get; set; }
|
||||
public string Fingerprint { get; set; }
|
||||
}
|
||||
public class SetLogLevelPayload
|
||||
{
|
||||
public string Level { get; set; }
|
||||
}
|
||||
|
||||
public class IdentityToggleFunction : ServiceFunction
|
||||
{
|
||||
@@ -88,6 +92,19 @@ namespace ZitiDesktopEdge.ServiceClient
|
||||
public IdentityTogglePayload Payload { get; set; }
|
||||
}
|
||||
|
||||
public class SetLogLevelFunction : ServiceFunction
|
||||
{
|
||||
public SetLogLevelFunction(string level)
|
||||
{
|
||||
this.Function = "SetLogLevel";
|
||||
this.Payload = new SetLogLevelPayload()
|
||||
{
|
||||
Level = level
|
||||
};
|
||||
}
|
||||
public SetLogLevelPayload Payload { get; set; }
|
||||
}
|
||||
|
||||
public class FingerprintPayload
|
||||
{
|
||||
public string Fingerprint { get; set; }
|
||||
@@ -148,6 +165,18 @@ namespace ZitiDesktopEdge.ServiceClient
|
||||
public string DNS { get; set; }
|
||||
}
|
||||
|
||||
class ServiceVersion
|
||||
{
|
||||
public string Version { get; set; }
|
||||
public string Revision { get; set; }
|
||||
public string BuildDate { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Version: {Version}, Revision: {Revision}, BuildDate: {BuildDate}";
|
||||
}
|
||||
}
|
||||
|
||||
class ZitiTunnelStatus : SvcResponse
|
||||
{
|
||||
public TunnelStatus Status { get; set; }
|
||||
@@ -163,21 +192,44 @@ namespace ZitiDesktopEdge.ServiceClient
|
||||
|
||||
public IpInfo IpInfo { get; set; }
|
||||
|
||||
public string LogLevel { get; set; }
|
||||
|
||||
public ServiceVersion ServiceVersion { get; set; }
|
||||
|
||||
public void Dump(System.IO.TextWriter writer)
|
||||
{
|
||||
writer.WriteLine($"Tunnel Active: {Active}");
|
||||
foreach (Identity id in Identities)
|
||||
{
|
||||
writer.WriteLine($" FingerPrint: {id.FingerPrint}");
|
||||
writer.WriteLine($" Name: {id.Name}");
|
||||
writer.WriteLine($" Active: {id.Active}");
|
||||
writer.WriteLine($" Status: {id.Status}");
|
||||
writer.WriteLine($" Services:");
|
||||
foreach (Service s in id.Services)
|
||||
{
|
||||
writer.WriteLine($" Name: {s.Name} HostName: {s.InterceptHost} Port: {s.InterceptPort}");
|
||||
try {
|
||||
writer.WriteLine($"Tunnel Active: {Active}");
|
||||
writer.WriteLine($" LogLevel : {LogLevel}");
|
||||
writer.WriteLine($" EvaluatedLogLevel: {EvaluateLogLevel()}");
|
||||
foreach (Identity id in Identities) {
|
||||
writer.WriteLine($" FingerPrint: {id.FingerPrint}");
|
||||
writer.WriteLine($" Name : {id.Name}");
|
||||
writer.WriteLine($" Active : {id.Active}");
|
||||
writer.WriteLine($" Status : {id.Status}");
|
||||
writer.WriteLine($" Services:");
|
||||
foreach (Service s in id.Services) {
|
||||
writer.WriteLine($" Name: {s.Name} HostName: {s.InterceptHost} Port: {s.InterceptPort}");
|
||||
}
|
||||
writer.WriteLine("=============================================");
|
||||
}
|
||||
writer.WriteLine("=============================================");
|
||||
} catch (Exception e) {
|
||||
if (writer!=null) writer.WriteLine(e.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public LogLevelEnum EvaluateLogLevel()
|
||||
{
|
||||
try
|
||||
{
|
||||
LogLevelEnum l = (LogLevelEnum) Enum.Parse(typeof(LogLevelEnum), LogLevel.ToUpper());
|
||||
return l;
|
||||
}
|
||||
catch
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine("Could not parse response LogLevel from sevice - guessing INFO? " + LogLevel);
|
||||
return LogLevelEnum.INFO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<UserControl x:Class="ZitiDesktopEdge.SubOptionItem"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:ZitiDesktopEdge"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="50" HorizontalAlignment="Stretch" d:DesignWidth="375" Cursor="Hand">
|
||||
<UserControl.Triggers>
|
||||
<EventTrigger RoutedEvent="UserControl.MouseEnter" >
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BgFill" From="0" To="0.2" Duration="0:0:0.5"></DoubleAnimation>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BgFill" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Visible}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BgFill" From="0" To="0.2" Duration="0:0:0.5"></DoubleAnimation>
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="UserControl.MouseLeave" >
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BgFill" From=".2" To="0" Duration="0:0:0.5"></DoubleAnimation>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BgFill" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Visible}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BgFill" From=".2" To="0" Duration="0:0:0.5"></DoubleAnimation>
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
</UserControl.Triggers>
|
||||
<Grid>
|
||||
<Rectangle Name="BgFill" Fill="#7d8faf" Opacity="0"></Rectangle>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<Grid Height="49">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="50"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Name="MainLabel" Grid.Column="0" Content="Main Menu" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="14" FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans" Foreground="Black"></Label>
|
||||
<Image x:Name="SelectedCheck" Grid.Column="1" Cursor="Hand" Source="/Assets/Images/Success.png" Width="20" Height="20" Margin="0,0,0,0" />
|
||||
</Grid>
|
||||
<Rectangle HorizontalAlignment="Stretch" Height="1" Fill="#7d8faf" Opacity="0.2"></Rectangle>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
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.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace ZitiDesktopEdge {
|
||||
/// <summary>
|
||||
/// Interaction logic for MenuItem.xaml
|
||||
/// </summary>
|
||||
public partial class SubOptionItem : UserControl {
|
||||
|
||||
private string _label = "";
|
||||
private bool _isSelected = false;
|
||||
|
||||
public string Label {
|
||||
get {
|
||||
return _label;
|
||||
}
|
||||
set {
|
||||
this._label = value;
|
||||
MainLabel.Content = this._label;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsSelected {
|
||||
get {
|
||||
return _isSelected;
|
||||
}
|
||||
set {
|
||||
this._isSelected = value;
|
||||
if (this._isSelected) SelectedCheck.Visibility = Visibility.Visible;
|
||||
else SelectedCheck.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
public SubOptionItem() {
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@
|
||||
<SuiteName>Ziti</SuiteName>
|
||||
<AutorunEnabled>true</AutorunEnabled>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.2.1.%2a</ApplicationVersion>
|
||||
<ApplicationVersion>1.2.7.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
@@ -147,6 +147,9 @@
|
||||
<Compile Include="RegistrationScreen.xaml.cs">
|
||||
<DependentUpon>RegistrationScreen.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ItemRenderers\SubOptionItem.xaml.cs">
|
||||
<DependentUpon>SubOptionItem.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ItemRenderers\SubMenuItem.xaml.cs">
|
||||
<DependentUpon>SubMenuItem.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@@ -201,6 +204,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\ItemRenderers\SubOptionItem.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Views\ItemRenderers\SubMenuItem.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -353,5 +360,8 @@
|
||||
<ItemGroup>
|
||||
<Resource Include="Assets\Images\No_Services.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Assets\Images\Success.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,361 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="17.4.1" version="17.5" Modules="professional" RootPath="." Language="en" Id="{7315FE7B-0418-4F38-8B12-6C0594276D30}">
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="AI_BackgroundColor" Value="lightblue" MsiKey="AI_BackgroundColor"/>
|
||||
<ROW Property="AI_FINDEXE_TITLE" Value="Select the installation package for [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
|
||||
<ROW Property="AI_FrameBtnsColor" Value="powderblue" MultiBuildValue="AnyCPU_Release:mediumorchid" MsiKey="AI_FrameBtnsColor"/>
|
||||
<ROW Property="AI_FrameColor" Value="powderblue" MultiBuildValue="AnyCPU_Release:deepskyblue" MsiKey="AI_FrameColor"/>
|
||||
<ROW Property="AI_ImagesColor" Value="powderblue" MsiKey="AI_ImagesColor"/>
|
||||
<ROW Property="AI_PROPPATH_PERBUILD_App.config" Value="ZitiUpdateService\bin\Release\App.config"/>
|
||||
<ROW Property="AI_PROPPATH_PERBUILD_ZitiDesktopEdge.exe" Value="DesktopEdge\bin\Release\ZitiDesktopEdge.exe"/>
|
||||
<ROW Property="AI_PROPPATH_PERBUILD_ZitiDesktopEdge.exe.config" Value="DesktopEdge\bin\Release\ZitiDesktopEdge.exe.config"/>
|
||||
<ROW Property="AI_PROPPATH_PERBUILD_ZitiUpdateService.exe" Value="ZitiUpdateService\bin\Release\ZitiUpdateService.exe"/>
|
||||
<ROW Property="AI_PROPPATH_PERBUILD_ZitiUpdateService.exe.config" Value="ZitiUpdateService\bin\Release\ZitiUpdateService.exe.config"/>
|
||||
<ROW Property="AI_ThemeStyle" Value="head" MsiKey="AI_ThemeStyle"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
|
||||
<ROW Property="ARPHELPTELEPHONE" Value="support@openziti.io"/>
|
||||
<ROW Property="ARPNOREPAIR" MultiBuildValue="DefaultBuild:1#AnyCPU_Release:1"/>
|
||||
<ROW Property="ARPPRODUCTICON" Value="ziti.exe" Type="8"/>
|
||||
<ROW Property="ARPURLINFOABOUT" Value="https://ziti.dev"/>
|
||||
<ROW Property="CTRLS" Value="2"/>
|
||||
<ROW Property="Manufacturer" Value="NetFoundry, Inc."/>
|
||||
<ROW Property="ProductCode" Value="1033:{F6DE6F87-82E2-4A8F-812D-1AB32DFDA816} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
<ROW Property="ProductName" Value="Ziti Desktop Edge"/>
|
||||
<ROW Property="ProductVersion" Value="1.2.9" Type="32"/>
|
||||
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
|
||||
<ROW Property="UpgradeCode" Value="{CB7E173A-663D-4A23-BB22-D1E8D885C2F3}"/>
|
||||
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME#AnyCPU_Release:Windows 9x/ME" ValueLocId="-"/>
|
||||
<ROW Property="WindowsType9XDisplay" MultiBuildValue="DefaultBuild:Windows 9x/ME#AnyCPU_Release:Windows 9x/ME" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT" MultiBuildValue="DefaultBuild:Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT40" MultiBuildValue="DefaultBuild:Windows NT 4.0#AnyCPU_Release:Windows NT 4.0" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT40Display" MultiBuildValue="DefaultBuild:Windows NT 4.0#AnyCPU_Release:Windows NT 4.0" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT50" MultiBuildValue="DefaultBuild:Windows 2000#AnyCPU_Release:Windows 2000" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT50Display" MultiBuildValue="DefaultBuild:Windows 2000#AnyCPU_Release:Windows 2000" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT5X" MultiBuildValue="DefaultBuild:Windows XP/2003#AnyCPU_Release:Windows XP/2003" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT5XDisplay" MultiBuildValue="DefaultBuild:Windows XP/2003#AnyCPU_Release:Windows XP/2003" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNTDisplay" MultiBuildValue="DefaultBuild:32-bit Windows versions" ValueLocId="-"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
|
||||
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>
|
||||
<ROW Directory="DesktopFolder" Directory_Parent="TARGETDIR" DefaultDir="DESKTO~1|DesktopFolder" IsPseudoRoot="1"/>
|
||||
<ROW Directory="SHORTCUTDIR" Directory_Parent="TARGETDIR" DefaultDir="SHORTC~1|SHORTCUTDIR" IsPseudoRoot="1"/>
|
||||
<ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="AI_ExePath" ComponentId="{F9B15650-F37D-424A-B159-B54B9F36EC2C}" Directory_="APPDIR" Attributes="260" KeyPath="AI_ExePath"/>
|
||||
<ROW Component="APPDIR" ComponentId="{B3881A25-6890-4920-9F69-CACA0C9ABA63}" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Component="App.config" ComponentId="{27FAD46C-8379-4680-8506-4BCBA5A012E8}" Directory_="APPDIR" Attributes="0" KeyPath="App.config" Type="0"/>
|
||||
<ROW Component="Microsoft.CSharp.dll" ComponentId="{540E8CA3-4E63-4463-8F75-60904D3984F8}" Directory_="APPDIR" Attributes="0" KeyPath="Microsoft.CSharp.dll"/>
|
||||
<ROW Component="Newtonsoft.Json.dll" ComponentId="{DAFA5618-17B9-4103-A746-BF92FEE18CDF}" Directory_="APPDIR" Attributes="0" KeyPath="Newtonsoft.Json.dll"/>
|
||||
<ROW Component="PresentationCore.dll" ComponentId="{15471205-60F3-4EA3-847E-D091DA990388}" Directory_="APPDIR" Attributes="0" KeyPath="PresentationCore.dll"/>
|
||||
<ROW Component="PresentationFramework.dll" ComponentId="{EEFFC81D-B6D0-4CCD-BD10-8F53F4BFCFB4}" Directory_="APPDIR" Attributes="0" KeyPath="PresentationFramework.dll"/>
|
||||
<ROW Component="ProductInformation" ComponentId="{4FC3A7CB-D334-466A-A919-E6A237EF4443}" Directory_="APPDIR" Attributes="260" KeyPath="Version"/>
|
||||
<ROW Component="SHORTCUTDIR" ComponentId="{3A88A759-A3FE-443F-A6D9-0D97BA424B2E}" Directory_="SHORTCUTDIR" Attributes="0"/>
|
||||
<ROW Component="System.Configuration.Install.dll" ComponentId="{68F557A9-3BD9-470A-86C3-0A21A6D86184}" Directory_="APPDIR" Attributes="0" KeyPath="System.Configuration.Install.dll"/>
|
||||
<ROW Component="System.Configuration.dll" ComponentId="{4DB49255-2025-4611-927B-62EBEE55ED0B}" Directory_="APPDIR" Attributes="0" KeyPath="System.Configuration.dll"/>
|
||||
<ROW Component="System.Core.dll" ComponentId="{6859AD42-0205-41C4-B2E8-A9F867941114}" Directory_="APPDIR" Attributes="0" KeyPath="System.Core.dll"/>
|
||||
<ROW Component="System.Data.DataSetExtensions.dll" ComponentId="{6EF01850-BA53-45D4-98BD-8B8207FFCD1E}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.DataSetExtensions.dll"/>
|
||||
<ROW Component="System.Data.dll" ComponentId="{A3C49BF5-381E-49BE-8002-20D06F50B5A3}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.dll"/>
|
||||
<ROW Component="System.Drawing.dll" ComponentId="{83C97776-B0D4-41BC-83A8-419A48143B8A}" Directory_="APPDIR" Attributes="0" KeyPath="System.Drawing.dll"/>
|
||||
<ROW Component="System.IO.Compression.FileSystem.dll" ComponentId="{4D32A321-7E4E-41F4-BB20-E5F21229977F}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.Compression.FileSystem.dll"/>
|
||||
<ROW Component="System.IO.Compression.dll" ComponentId="{DB86F772-E56A-4717-9882-4D5ED876F7B0}" Directory_="APPDIR" Attributes="0" KeyPath="System.IO.Compression.dll"/>
|
||||
<ROW Component="System.Management.Automation.dll" ComponentId="{6163962D-31BF-4344-8F04-7D4D24287C58}" Directory_="APPDIR" Attributes="0" KeyPath="System.Management.Automation.dll"/>
|
||||
<ROW Component="System.Management.Instrumentation.dll" ComponentId="{5A076034-ED4E-473B-BC20-CBABE41CAA02}" Directory_="APPDIR" Attributes="0" KeyPath="System.Management.Instrumentation.dll"/>
|
||||
<ROW Component="System.Management.dll" ComponentId="{BC151D0A-EB48-48F4-A319-09AF40828B30}" Directory_="APPDIR" Attributes="0" KeyPath="System.Management.dll"/>
|
||||
<ROW Component="System.Net.Http.dll" ComponentId="{8874D498-A1A1-4A4A-9CA2-56FBA1345317}" Directory_="APPDIR" Attributes="0" KeyPath="System.Net.Http.dll"/>
|
||||
<ROW Component="System.Net.NetworkInformation.dll" ComponentId="{34177941-95FE-4890-9C4E-34425B259E66}" Directory_="APPDIR" Attributes="0" KeyPath="System.Net.NetworkInformation.dll"/>
|
||||
<ROW Component="System.Net.dll" ComponentId="{4876BD50-CF74-4DDE-ACD9-9606AEA52E32}" Directory_="APPDIR" Attributes="0" KeyPath="System.Net.dll"/>
|
||||
<ROW Component="System.ServiceProcess.dll" ComponentId="{01957F6B-B2FC-46AA-AFEE-0B097325F64B}" Directory_="APPDIR" Attributes="0" KeyPath="System.ServiceProcess.dll"/>
|
||||
<ROW Component="System.Web.dll" ComponentId="{861576BD-AF1E-496B-B858-1D80FD3E2840}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.dll"/>
|
||||
<ROW Component="System.Windows.Forms.dll" ComponentId="{6439AF2A-8CFF-4524-B8C5-66FACA6A9381}" Directory_="APPDIR" Attributes="0" KeyPath="System.Windows.Forms.dll"/>
|
||||
<ROW Component="System.Xaml.dll" ComponentId="{7FF1DDA5-1219-4560-974C-B12C8E610815}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xaml.dll"/>
|
||||
<ROW Component="System.Xml.Linq.dll" ComponentId="{5C65D438-2F70-4A3E-ACDD-44D687A91FB8}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.Linq.dll"/>
|
||||
<ROW Component="System.Xml.dll" ComponentId="{D74AE161-A455-4A5B-838F-7E15C6D054C9}" Directory_="APPDIR" Attributes="0" KeyPath="System.Xml.dll"/>
|
||||
<ROW Component="System.dll" ComponentId="{18476955-6672-44F1-8D7A-29C882238B85}" Directory_="APPDIR" Attributes="0" KeyPath="System.dll"/>
|
||||
<ROW Component="WindowsBase.dll" ComponentId="{200C0EDA-429D-47F7-9FD9-64090E5CB3DA}" Directory_="APPDIR" Attributes="0" KeyPath="WindowsBase.dll"/>
|
||||
<ROW Component="ZitiDesktopEdge.exe" ComponentId="{FDDCF14B-4FAF-469F-810E-0877A0DD5F3B}" Directory_="APPDIR" Attributes="0" KeyPath="ZitiDesktopEdge.exe"/>
|
||||
<ROW Component="ZitiUpdateService.exe" ComponentId="{01B4F535-D4A3-44CD-BB2D-A3A905A095D6}" Directory_="APPDIR" Attributes="0" KeyPath="ZitiUpdateService.exe"/>
|
||||
<ROW Component="libgcc_s_seh1.dll" ComponentId="{B97B6447-8941-4F04-AA22-50D34E0A0F1A}" Directory_="APPDIR" Attributes="256" KeyPath="libgcc_s_seh1.dll"/>
|
||||
<ROW Component="libuv.dll" ComponentId="{70EA329D-3C8B-4A62-80F2-00126F1DBCEC}" Directory_="APPDIR" Attributes="256" KeyPath="libuv.dll"/>
|
||||
<ROW Component="libwinpthread1.dll" ComponentId="{C9800E18-A335-44F5-8D85-9A4155EF9AB1}" Directory_="APPDIR" Attributes="256" KeyPath="libwinpthread1.dll"/>
|
||||
<ROW Component="mscorlib.dll" ComponentId="{FFB3B870-8A8B-4FE1-BFC9-1780BCA20E0D}" Directory_="APPDIR" Attributes="0" KeyPath="mscorlib.dll"/>
|
||||
<ROW Component="ziti.dll" ComponentId="{123E1532-3EB0-4B87-AA61-43F950DF7B6F}" Directory_="APPDIR" Attributes="256" KeyPath="ziti.dll"/>
|
||||
<ROW Component="zititunnel.exe" ComponentId="{65D4F495-09EF-440F-82E5-46F5889305D5}" Directory_="APPDIR" Attributes="256" KeyPath="zititunnel.exe"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
|
||||
<ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ATTRIBUTE name="CurrentFeature" value="MainFeature"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
|
||||
<ROW File="PresentationFramework.dll" Component_="PresentationFramework.dll" FileName="PRESEN~1.DLL|PresentationFramework.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\PresentationFramework.dll" SelfReg="false"/>
|
||||
<ROW File="ZitiDesktopEdge.exe" Component_="ZitiDesktopEdge.exe" FileName="ZITIDE~1.EXE|ZitiDesktopEdge.exe" Attributes="0" SourcePath="<AI_APPPATH_PERBUILD_ZitiDesktopEdge.exe>" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="App.config" Component_="App.config" FileName="APP~1.CON|App.config" Attributes="0" SourcePath="<AI_APPPATH_PERBUILD_App.config>" SelfReg="false"/>
|
||||
<ROW File="System.Xml.Linq.dll" Component_="System.Xml.Linq.dll" FileName="SYSTEM~1.DLL|System.Xml.Linq.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Xml.Linq.dll" SelfReg="false"/>
|
||||
<ROW File="ZitiDesktopEdge.exe.config" Component_="App.config" FileName="ZITIDE~1.CON|ZitiDesktopEdge.exe.config" Attributes="0" SourcePath="<AI_APPPATH_PERBUILD_ZitiDesktopEdge.exe.config>" SelfReg="false"/>
|
||||
<ROW File="Microsoft.CSharp.dll" Component_="Microsoft.CSharp.dll" FileName="MICROS~1.DLL|Microsoft.CSharp.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\Microsoft.CSharp.dll" SelfReg="false"/>
|
||||
<ROW File="System.Management.Automation.dll" Component_="System.Management.Automation.dll" FileName="SYSTEM~2.DLL|System.Management.Automation.dll" Attributes="0" SourcePath="packages\System.Management.Automation.dll.10.0.10586.0\lib\net40\System.Management.Automation.dll" SelfReg="false"/>
|
||||
<ROW File="mscorlib.dll" Component_="mscorlib.dll" FileName="mscorlib.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\mscorlib.dll" SelfReg="false"/>
|
||||
<ROW File="Newtonsoft.Json.dll" Component_="Newtonsoft.Json.dll" FileName="NEWTON~1.DLL|Newtonsoft.Json.dll" Attributes="0" SourcePath="packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll" SelfReg="false"/>
|
||||
<ROW File="PresentationCore.dll" Component_="PresentationCore.dll" FileName="PRESEN~2.DLL|PresentationCore.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\PresentationCore.dll" SelfReg="false"/>
|
||||
<ROW File="System.Core.dll" Component_="System.Core.dll" FileName="SYSTEM~3.DLL|System.Core.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Core.dll" SelfReg="false"/>
|
||||
<ROW File="System.ServiceProcess.dll" Component_="System.ServiceProcess.dll" FileName="SYSTEM~4.DLL|System.ServiceProcess.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.ServiceProcess.dll" SelfReg="false"/>
|
||||
<ROW File="System.Data.DataSetExtensions.dll" Component_="System.Data.DataSetExtensions.dll" FileName="SYSTEM~5.DLL|System.Data.DataSetExtensions.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Data.DataSetExtensions.dll" SelfReg="false"/>
|
||||
<ROW File="System.Configuration.dll" Component_="System.Configuration.dll" FileName="SYSTEM~6.DLL|System.Configuration.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Configuration.dll" SelfReg="false"/>
|
||||
<ROW File="System.Drawing.dll" Component_="System.Drawing.dll" FileName="SYSTEM~7.DLL|System.Drawing.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Drawing.dll" SelfReg="false"/>
|
||||
<ROW File="System.Data.dll" Component_="System.Data.dll" FileName="SYSTEM~8.DLL|System.Data.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Data.dll" SelfReg="false"/>
|
||||
<ROW File="System.dll" Component_="System.dll" FileName="System.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.dll" SelfReg="false"/>
|
||||
<ROW File="System.IO.Compression.dll" Component_="System.IO.Compression.dll" FileName="SYSTEM~9.DLL|System.IO.Compression.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.IO.Compression.dll" SelfReg="false"/>
|
||||
<ROW File="System.IO.Compression.FileSystem.dll" Component_="System.IO.Compression.FileSystem.dll" FileName="SYSTE~10.DLL|System.IO.Compression.FileSystem.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.IO.Compression.FileSystem.dll" SelfReg="false"/>
|
||||
<ROW File="System.Management.dll" Component_="System.Management.dll" FileName="SYSTE~11.DLL|System.Management.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Management.dll" SelfReg="false"/>
|
||||
<ROW File="System.Management.Instrumentation.dll" Component_="System.Management.Instrumentation.dll" FileName="SYSTE~12.DLL|System.Management.Instrumentation.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Management.Instrumentation.dll" SelfReg="false"/>
|
||||
<ROW File="System.Net.dll" Component_="System.Net.dll" FileName="SYSTE~13.DLL|System.Net.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Net.dll" SelfReg="false"/>
|
||||
<ROW File="System.Net.Http.dll" Component_="System.Net.Http.dll" FileName="SYSTE~14.DLL|System.Net.Http.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Net.Http.dll" SelfReg="false"/>
|
||||
<ROW File="System.Net.NetworkInformation.dll" Component_="System.Net.NetworkInformation.dll" FileName="SYSTE~15.DLL|System.Net.NetworkInformation.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\Facades\System.Net.NetworkInformation.dll" SelfReg="false"/>
|
||||
<ROW File="System.Xaml.dll" Component_="System.Xaml.dll" FileName="SYSTE~16.DLL|System.Xaml.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Xaml.dll" SelfReg="false"/>
|
||||
<ROW File="System.Web.dll" Component_="System.Web.dll" FileName="SYSTE~17.DLL|System.Web.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Web.dll" SelfReg="false"/>
|
||||
<ROW File="System.Windows.Forms.dll" Component_="System.Windows.Forms.dll" FileName="SYSTE~18.DLL|System.Windows.Forms.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Windows.Forms.dll" SelfReg="false"/>
|
||||
<ROW File="System.Xml.dll" Component_="System.Xml.dll" FileName="SYSTE~19.DLL|System.Xml.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Xml.dll" SelfReg="false"/>
|
||||
<ROW File="WindowsBase.dll" Component_="WindowsBase.dll" FileName="WINDOW~1.DLL|WindowsBase.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\WindowsBase.dll" SelfReg="false"/>
|
||||
<ROW File="ZitiUpdateService.exe" Component_="ZitiUpdateService.exe" FileName="ZITIUP~1.EXE|ZitiUpdateService.exe" Attributes="0" SourcePath="<AI_APPPATH_PERBUILD_ZitiUpdateService.exe>" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ZitiUpdateService.exe.config" Component_="App.config" FileName="ZITIUP~1.CON|ZitiUpdateService.exe.config" Attributes="0" SourcePath="<AI_APPPATH_PERBUILD_ZitiUpdateService.exe.config>" SelfReg="false"/>
|
||||
<ROW File="System.Configuration.Install.dll" Component_="System.Configuration.Install.dll" FileName="SYSTE~20.DLL|System.Configuration.Install.dll" Attributes="0" SourcePath="..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Configuration.Install.dll" SelfReg="false"/>
|
||||
<ROW File="libgcc_s_seh1.dll" Component_="libgcc_s_seh1.dll" FileName="LIBGCC~1.DLL|libgcc_s_seh-1.dll" Attributes="0" SourcePath="service/libgcc_s_seh-1.dll" SelfReg="false"/>
|
||||
<ROW File="libuv.dll" Component_="libuv.dll" FileName="libuv.dll" Attributes="0" SourcePath="service/libuv.dll" SelfReg="false"/>
|
||||
<ROW File="libwinpthread1.dll" Component_="libwinpthread1.dll" FileName="LIBWIN~1.DLL|libwinpthread-1.dll" Attributes="0" SourcePath="service/libwinpthread-1.dll" SelfReg="false"/>
|
||||
<ROW File="ziti.dll" Component_="ziti.dll" FileName="ziti.dll" Attributes="0" SourcePath="service/ziti.dll" SelfReg="false"/>
|
||||
<ROW File="zititunnel.exe" Component_="zititunnel.exe" FileName="ZITI-T~1.EXE|ziti-tunnel.exe" Attributes="0" SourcePath="service/ziti-tunnel.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ziti.ico" Component_="App.config" FileName="ziti.ico" Attributes="0" SourcePath="ziti.ico" SelfReg="false"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.AppPathsComponent">
|
||||
<ROW Name="AI_APPPATH_PERBUILD_App.config" Path="[|AI_PROPPATH_PERBUILD_App.config]" Type="2" Content="0"/>
|
||||
<ROW Name="AI_APPPATH_PERBUILD_ZitiDesktopEdge.exe" Path="[|AI_PROPPATH_PERBUILD_ZitiDesktopEdge.exe]" Type="2" Content="0"/>
|
||||
<ROW Name="AI_APPPATH_PERBUILD_ZitiDesktopEdge.exe.config" Path="[|AI_PROPPATH_PERBUILD_ZitiDesktopEdge.exe.config]" Type="2" Content="0"/>
|
||||
<ROW Name="AI_APPPATH_PERBUILD_ZitiUpdateService.exe" Path="[|AI_PROPPATH_PERBUILD_ZitiUpdateService.exe]" Type="2" Content="0"/>
|
||||
<ROW Name="AI_APPPATH_PERBUILD_ZitiUpdateService.exe.config" Path="[|AI_PROPPATH_PERBUILD_ZitiUpdateService.exe.config]" Type="2" Content="0"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
|
||||
<ROW BootstrOptKey="GlobalOptions" DownloadFolder="[AppDataFolder][|Manufacturer]\[|ProductName]\prerequisites" Options="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
||||
<ROW BuildKey="AnyCPU_Release" BuildName="AnyCPU_Release" BuildOrder="2" BuildType="1" PackageFolder="Output" PackageFileName="Ziti Desktop Edge Client-[|ProductVersion]" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExeIconPath="ziti.ico" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Ziti Desktop Edge Client-[|ProductVersion]"/>
|
||||
<ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="1" PackageFolder="Output" PackageFileName="Ziti Desktop Edge Client-[|ProductVersion]" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExeIconPath="ziti.ico" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Ziti Desktop Edge Client-[|ProductVersion]" MsiPackageType="x64"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
||||
<ROW Path="<AI_DICTS>ui.ail"/>
|
||||
<ROW Path="<AI_DICTS>ui_en.ail"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.DigCertStoreComponent">
|
||||
<ROW DigitalCertificate="..\WinSign.p12" TimeStampUrl="http://timestamp.digicert.com" SignerDescription="[|ProductName]" SignOptions="7" SignTool="0" UseSha256="1" Password="7699ECA4D093C4035580B953B142A311C9FB727A"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
|
||||
<ROW Fragment="CommonUI.aip" Path="<AI_FRAGS>CommonUI.aip"/>
|
||||
<ROW Fragment="FolderDlg.aip" Path="<AI_THEMES>azure\fragments\FolderDlg.aip"/>
|
||||
<ROW Fragment="MaintenanceTypeDlg.aip" Path="<AI_THEMES>azure\fragments\MaintenanceTypeDlg.aip"/>
|
||||
<ROW Fragment="MaintenanceWelcomeDlg.aip" Path="<AI_THEMES>azure\fragments\MaintenanceWelcomeDlg.aip"/>
|
||||
<ROW Fragment="PreparePrereqDlg.aip" Path="<AI_THEMES>azure\fragments\PreparePrereqDlg.aip"/>
|
||||
<ROW Fragment="PrerequisitesDlg.aip" Path="<AI_THEMES>azure\fragments\PrerequisitesDlg.aip"/>
|
||||
<ROW Fragment="ProgressPrereqDlg.aip" Path="<AI_THEMES>azure\fragments\ProgressPrereqDlg.aip"/>
|
||||
<ROW Fragment="SequenceDialogs.aip" Path="<AI_THEMES>azure\fragments\SequenceDialogs.aip"/>
|
||||
<ROW Fragment="Sequences.aip" Path="<AI_FRAGS>Sequences.aip"/>
|
||||
<ROW Fragment="StaticUIStrings.aip" Path="<AI_FRAGS>StaticUIStrings.aip"/>
|
||||
<ROW Fragment="UI.aip" Path="<AI_THEMES>azure\fragments\UI.aip"/>
|
||||
<ROW Fragment="Validation.aip" Path="<AI_FRAGS>Validation.aip"/>
|
||||
<ROW Fragment="VerifyRemoveDlg.aip" Path="<AI_THEMES>azure\fragments\VerifyRemoveDlg.aip"/>
|
||||
<ROW Fragment="VerifyRepairDlg.aip" Path="<AI_THEMES>azure\fragments\VerifyRepairDlg.aip"/>
|
||||
<ROW Fragment="WelcomeDlg.aip" Path="<AI_THEMES>azure\fragments\WelcomeDlg.aip"/>
|
||||
<ROW Fragment="WelcomePrereqDlg.aip" Path="<AI_THEMES>azure\fragments\WelcomePrereqDlg.aip"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiActionTextComponent">
|
||||
<ROW Action="AI_DeleteLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_DeleteRLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractFiles" Description="Extracting files from archive" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractLzma" Description="Extracting files from archive" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiAppSearchComponent">
|
||||
<ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_LM" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_CU" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
|
||||
<ROW Name="Prereq.dll" SourcePath="<AI_CUSTACTS>Prereq.dll"/>
|
||||
<ROW Name="aicustact.dll" SourcePath="<AI_CUSTACTS>aicustact.dll"/>
|
||||
<ROW Name="lzmaextractor.dll" SourcePath="<AI_CUSTACTS>lzmaextractor.dll"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL" Ordering="201"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="197"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="201"/>
|
||||
<ROW Dialog_="MaintenanceWelcomeDlg" Control_="Next" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="99"/>
|
||||
<ROW Dialog_="CustomizeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_MAINT" Ordering="101"/>
|
||||
<ROW Dialog_="CustomizeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="1"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_MAINT" Ordering="198"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="202"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="ChangeButton" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="501"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceWelcomeDlg" Condition="AI_MAINT" Ordering="1"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="RemoveButton" Event="NewDialog" Argument="VerifyRemoveDlg" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="601"/>
|
||||
<ROW Dialog_="VerifyRemoveDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="1"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="RepairButton" Event="NewDialog" Argument="VerifyRepairDlg" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="601"/>
|
||||
<ROW Dialog_="VerifyRepairDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="1"/>
|
||||
<ROW Dialog_="VerifyRepairDlg" Control_="Repair" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="399" Options="1"/>
|
||||
<ROW Dialog_="VerifyRemoveDlg" Control_="Remove" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="299" Options="1"/>
|
||||
<ROW Dialog_="PatchWelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_PATCH" Ordering="201"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_PATCH" Ordering="199"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="PatchWelcomeDlg" Condition="AI_PATCH" Ordering="203"/>
|
||||
<ROW Dialog_="ResumeDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_RESUME" Ordering="299"/>
|
||||
<ROW Dialog_="WelcomePrereqDlg" Control_="Next" Event="NewDialog" Argument="PrerequisitesDlg" Condition="AI_BOOTSTRAPPER" Ordering="1"/>
|
||||
<ROW Dialog_="PrerequisitesDlg" Control_="Next" Event="EndDialog" Argument="Return" Condition="AI_BOOTSTRAPPER" Ordering="1"/>
|
||||
<ROW Dialog_="PrerequisitesDlg" Control_="Back" Event="NewDialog" Argument="WelcomePrereqDlg" Condition="AI_BOOTSTRAPPER" Ordering="1"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
|
||||
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
|
||||
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
|
||||
<ROW Action="AI_AppSearchEx" Type="1" Source="Prereq.dll" Target="DoAppSearchEx"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DATA_SETTER" Type="51" Source="CustomActionData" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>
|
||||
<ROW Action="AI_DeleteCadLzma" Type="51" Source="AI_DeleteLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DeleteLzma" Type="1025" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
|
||||
<ROW Action="AI_DeleteRCadLzma" Type="51" Source="AI_DeleteRLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DeleteRLzma" Type="1281" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
|
||||
<ROW Action="AI_DpiContentScale" Type="1" Source="aicustact.dll" Target="DpiContentScale"/>
|
||||
<ROW Action="AI_EnableDebugLog" Type="321" Source="aicustact.dll" Target="EnableDebugLog"/>
|
||||
<ROW Action="AI_ExtractCadLzma" Type="51" Source="AI_ExtractLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_ExtractFiles" Type="1" Source="Prereq.dll" Target="ExtractSourceFiles" AdditionalSeq="AI_DATA_SETTER"/>
|
||||
<ROW Action="AI_ExtractLzma" Type="1025" Source="lzmaextractor.dll" Target="ExtractLZMAFiles"/>
|
||||
<ROW Action="AI_FindExeLzma" Type="1" Source="lzmaextractor.dll" Target="FindEXE"/>
|
||||
<ROW Action="AI_InstallModeCheck" Type="1" Source="aicustact.dll" Target="UpdateInstallMode" WithoutSeq="true"/>
|
||||
<ROW Action="AI_LaunchApp" Type="1" Source="aicustact.dll" Target="[#ZitiDesktopEdge.exe]"/>
|
||||
<ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH" Target="[AI_SETUPEXEPATH_ORIGINAL]"/>
|
||||
<ROW Action="AI_RESTORE_LOCATION" Type="65" Source="aicustact.dll" Target="RestoreLocation"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Type="1" Source="aicustact.dll" Target="AI_ResolveKnownFolders"/>
|
||||
<ROW Action="AI_RunFinishActions" Type="1" Source="aicustact.dll" Target="RunFinishActions" WithoutSeq="true"/>
|
||||
<ROW Action="AI_SHOW_LOG" Type="65" Source="aicustact.dll" Target="LaunchLogFile" WithoutSeq="true"/>
|
||||
<ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>
|
||||
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFiles64Folder][Manufacturer]\[ProductName]#AnyCPU_Release:[ProgramFiles64Folder][Manufacturer]\[ProductName]"/>
|
||||
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
|
||||
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatCompsComponent">
|
||||
<ROW Feature_="MainFeature" Component_="APPDIR"/>
|
||||
<ROW Feature_="MainFeature" Component_="ProductInformation"/>
|
||||
<ROW Feature_="MainFeature" Component_="PresentationFramework.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="ZitiDesktopEdge.exe"/>
|
||||
<ROW Feature_="MainFeature" Component_="App.config"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Xml.Linq.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="Microsoft.CSharp.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Management.Automation.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="mscorlib.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="Newtonsoft.Json.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="PresentationCore.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Core.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.ServiceProcess.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Data.DataSetExtensions.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Configuration.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Drawing.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Data.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.IO.Compression.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.IO.Compression.FileSystem.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Management.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Management.Instrumentation.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Net.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Net.Http.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Net.NetworkInformation.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Xaml.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Web.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Windows.Forms.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Xml.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="WindowsBase.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="ZitiUpdateService.exe"/>
|
||||
<ROW Feature_="MainFeature" Component_="System.Configuration.Install.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="SHORTCUTDIR"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_ExePath"/>
|
||||
<ROW Feature_="MainFeature" Component_="libgcc_s_seh1.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="libuv.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="libwinpthread1.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="ziti.dll"/>
|
||||
<ROW Feature_="MainFeature" Component_="zititunnel.exe"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
|
||||
<ROW Name="ziti.exe" SourcePath="ziti.ico" Index="0"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
|
||||
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel <> 5)" Sequence="210"/>
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
<ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1501"/>
|
||||
<ROW Action="AI_PREPARE_UPGRADE" Condition="AI_UPGRADE="No" AND (Not Installed)" Sequence="1397"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
|
||||
<ROW Action="AI_EnableDebugLog" Sequence="51"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="102" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_DeleteCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="199" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_DeleteRCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="198" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_ExtractCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="197" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_FindExeLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="196" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_ExtractLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="1549" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_DeleteRLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="1548" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_DeleteLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="6599" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_AppSearchEx" Sequence="101"/>
|
||||
<ROW Action="AI_ExtractFiles" Sequence="1399" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Action="AI_DATA_SETTER" Sequence="1398"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Sequence="53"/>
|
||||
<ROW Action="AI_DpiContentScale" Sequence="52"/>
|
||||
<ROW Action="AI_EnableDebugLog" Sequence="51"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="102"/>
|
||||
<ROW Action="AI_AppSearchEx" Sequence="101"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
|
||||
<ROW Condition="( Version9X OR VersionNT64 )" Description="[ProductName] cannot be installed on [WindowsTypeNTDisplay]." DescriptionLocId="AI.LaunchCondition.NoNT" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="((VersionNT <> 501) AND (VersionNT <> 502))" Description="[ProductName] cannot be installed on [WindowsTypeNT5XDisplay]." DescriptionLocId="AI.LaunchCondition.NoNT5X" IsPredefined="true" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Condition="(VersionNT <> 400)" Description="[ProductName] cannot be installed on [WindowsTypeNT40Display]." DescriptionLocId="AI.LaunchCondition.NoNT40" IsPredefined="true" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Condition="(VersionNT <> 500)" Description="[ProductName] cannot be installed on [WindowsTypeNT50Display]." DescriptionLocId="AI.LaunchCondition.NoNT50" IsPredefined="true" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Condition="SETUPEXEDIR OR (REMOVE="ALL")" Description="This package can only be run from a bootstrapper." DescriptionLocId="AI.LaunchCondition.RequireBootstrapper" IsPredefined="true" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
<ROW Condition="VersionNT" Description="[ProductName] cannot be installed on [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild;AnyCPU_Release"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegLocatorComponent">
|
||||
<ROW Signature_="AI_EXE_PATH_CU" Root="1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
|
||||
<ROW Signature_="AI_EXE_PATH_LM" Root="2" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
|
||||
<ROW Registry="AI_ExePath" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Value="[AI_SETUPEXEPATH]" Component_="AI_ExePath"/>
|
||||
<ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
|
||||
<ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiServCtrlComponent">
|
||||
<ROW ServiceControl="ZitiUpdateService.exe" Name="Ziti Desktop Monitor Service" Event="160" Wait="0" Component_="ZitiUpdateService.exe"/>
|
||||
<ROW ServiceControl="zititunnel.exe" Name="ziti" Event="161" Wait="1" Component_="zititunnel.exe"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiServInstComponent">
|
||||
<ROW ServiceInstall="ZitiUpdateService.exe" Name="Ziti Desktop Monitor Service" DisplayName="Ziti Desktop Monitor Service" ServiceType="16" StartType="2" ErrorControl="1" Component_="ZitiUpdateService.exe" Description="Monitor and update your Ziti Access Services"/>
|
||||
<ROW ServiceInstall="zititunnel.exe" Name="ziti" DisplayName="Ziti Desktop Edge Service" ServiceType="16" StartType="2" ErrorControl="32769" Component_="zititunnel.exe" Description="Access your Ziti Secured Assets"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiShortsComponent">
|
||||
<ROW Shortcut="ZitiDesktopEdge.exe" Directory_="SHORTCUTDIR" Name="ZITIDE~1|Ziti Desktop Edge" Component_="ZitiDesktopEdge.exe" Target="[#ZitiDesktopEdge.exe]" Description="Ziti Desktop Edge configuration interface" Hotkey="0" Icon_="ziti.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
|
||||
<ROW Shortcut="ZitiDesktopEdge.exe_1" Directory_="DesktopFolder" Name="ZITIDE~1|Ziti Desktop Edge" Component_="ZitiDesktopEdge.exe" Target="[#ZitiDesktopEdge.exe]" Description="Ziti Desktop Edge configuration interface" Hotkey="0" Icon_="ziti.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiThemeComponent">
|
||||
<ATTRIBUTE name="UsedTheme" value="azure"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiUpgradeComponent">
|
||||
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="0.0.1" VersionMax="[|ProductVersion]" Attributes="257" ActionProperty="OLDPRODUCTS"/>
|
||||
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.PreReqComponent">
|
||||
<ROW PrereqKey="OpenZitiWintunInstal" DisplayName="OpenZitiWintunInstaller" VersionMin="1.0.0.0" SetupFileUrl="ZitiWintunInstaller/bin/Release/OpenZitiWintunInstaller.msi" Location="0" ExactSize="0" Operator="1" Options="ym" TargetName="OpenZiti\OpenZitiWintunInstaller.msi"/>
|
||||
<ATTRIBUTE name="PrereqsOrder" value="OpenZitiWintunInstal"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.PreReqSearchComponent">
|
||||
<ROW SearchKey="UpgradeCode" Prereq="OpenZitiWintunInstal" SearchType="4" SearchString="{1ABDBE15-0F36-4633-BA6F-8A32D8CF4838}" VerMin="1.0.0.0" Order="1" Property="PreReqSearch"/>
|
||||
</COMPONENT>
|
||||
</DOCUMENT>
|
||||
+2
-32
@@ -11,8 +11,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
||||
EndProject
|
||||
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "ZitiWintunInstaller", "ZitiWintunInstaller\ZitiWintunInstaller.wixproj", "{1A5D850F-2E38-4524-8745-29A96FA62683}"
|
||||
EndProject
|
||||
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "OpenZitiWintunInstaller", "OpenZitiWintunInstaller\OpenZitiWintunInstaller.wapproj", "{84DBA1A4-D8E9-4282-94FF-121809B48F1F}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -28,47 +26,19 @@ Global
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|ARM.ActiveCfg = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|ARM64.ActiveCfg = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|x64.ActiveCfg = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Debug|x86.Build.0 = Debug|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|Any CPU.Build.0 = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|ARM.ActiveCfg = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|ARM64.ActiveCfg = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|x64.ActiveCfg = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|x86.ActiveCfg = Release|x86
|
||||
{1A5D850F-2E38-4524-8745-29A96FA62683}.Release|x86.Build.0 = Release|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x64.Build.0 = Debug|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x86.Build.0 = Debug|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM.Build.0 = Release|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM.Deploy.0 = Release|ARM
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|ARM64.Deploy.0 = Release|ARM64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x64.ActiveCfg = Release|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x64.Build.0 = Release|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x64.Deploy.0 = Release|x64
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x86.ActiveCfg = Release|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x86.Build.0 = Release|x86
|
||||
{84DBA1A4-D8E9-4282-94FF-121809B48F1F}.Release|x86.Deploy.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
These release notes will catalog the changes in the Windows service.
|
||||
For UI changes or installer changes see [release-notes.md]()
|
||||
|
||||
# Release 0.0.30
|
||||
|
||||
* What's New
|
||||
|
||||
* Continually improved logging
|
||||
* changed ip from 169.254.0.0/16 to 100.64.0.0/10
|
||||
* [#120](https://github.com/openziti/desktop-edge-win/issues/120) - Allow UI/client to get and set log level dynamically via ipc
|
||||
|
||||
* Bug fixes
|
||||
|
||||
* [#116](https://github.com/openziti/desktop-edge-win/issues/116) - Removes information from the config that wasn't needed in config.json
|
||||
|
||||
# Release 0.0.29
|
||||
|
||||
* What's New
|
||||
|
||||
* Continually improved logging
|
||||
* Add support for 'verbose' logging along with error, warn, info, debug, trace
|
||||
* Continually improved logging
|
||||
* Add support for 'verbose' logging along with error, warn, info, debug, trace
|
||||
|
||||
* Bug fixes
|
||||
|
||||
@@ -17,8 +29,8 @@ For UI changes or installer changes see [release-notes.md]()
|
||||
|
||||
* What's New
|
||||
|
||||
* Continually improved logging
|
||||
* Better DNS removal when services are no longer available or when an identity is removed
|
||||
* Continually improved logging
|
||||
* Better DNS removal when services are no longer available or when an identity is removed
|
||||
|
||||
* Bug fixes
|
||||
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
These release notes will try to cover the changes made for the installer. For changes made
|
||||
to the Windows service see [release-notes-service.md]()
|
||||
|
||||
# Release 1.2.6
|
||||
|
||||
* What's New
|
||||
|
||||
* 'About' updated to reflect actual service version
|
||||
* Added ability to set the log level of the service dynamically through Advanced Setttings
|
||||
*
|
||||
|
||||
* Bug fixes
|
||||
|
||||
* [#102](https://github.com/openziti/desktop-edge-win/pull/102) - DNS requests with "connection-specific local domain" would not resolve
|
||||
|
||||
# Release 1.0.4
|
||||
|
||||
* What's New
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ echo changing to service folder: %SVC_ROOT_DIR%
|
||||
cd %SVC_ROOT_DIR%
|
||||
|
||||
SET REPO_URL=https://github.com/openziti/ziti-tunneler-sdk-c.git
|
||||
SET ZITI_TUNNEL_REPO_BRANCH=v0.6.8
|
||||
SET ZITI_TUNNEL_REPO_BRANCH=v0.6.9
|
||||
SET TUNNELER_SDK_DIR=%SVC_ROOT_DIR%deps\ziti-tunneler-sdk-c\
|
||||
SET CGO_CFLAGS=-DNOGDI -I %TUNNELER_SDK_DIR%install\include
|
||||
SET CGO_LDFLAGS=-L %TUNNELER_SDK_DIR%install\lib
|
||||
|
||||
+44
-34
@@ -28,12 +28,12 @@ import (
|
||||
)
|
||||
|
||||
var domains []string // get any connection-specific local domains
|
||||
const MaxDnsRequests = 64
|
||||
var reqch = make(chan dnsreq, MaxDnsRequests)
|
||||
var proxiedRequests = make(chan *proxiedReq, MaxDnsRequests)
|
||||
var respChan = make(chan []byte, MaxDnsRequests)
|
||||
|
||||
var reqch = make(chan dnsreq, 64)
|
||||
var proxiedRequests = make(chan *proxiedReq, 64)
|
||||
var respChan = make(chan []byte, 64)
|
||||
|
||||
func processDNSquery(packet []byte, p *net.UDPAddr, s *net.UDPConn) {
|
||||
func processDNSquery(packet []byte, p *net.UDPAddr, s *net.UDPConn, ipVer int) {
|
||||
q := &dns.Msg{}
|
||||
if err := q.Unpack(packet); err != nil {
|
||||
log.Errorf("ERROR", err)
|
||||
@@ -101,14 +101,15 @@ func processDNSquery(packet []byte, p *net.UDPAddr, s *net.UDPConn) {
|
||||
}
|
||||
} else {
|
||||
// log.Debug("proxying ", dns.Type(query.Qtype), query.Name, q.Id, " for ", p)
|
||||
proxyDNS(q, p, s)
|
||||
proxyDNS(q, p, s, ipVer)
|
||||
}
|
||||
}
|
||||
|
||||
type dnsreq struct {
|
||||
q []byte
|
||||
s *net.UDPConn
|
||||
p *net.UDPAddr
|
||||
q []byte
|
||||
s *net.UDPConn
|
||||
p *net.UDPAddr
|
||||
ifId int
|
||||
}
|
||||
|
||||
func RunDNSserver(dnsBind []net.IP, ready chan bool) {
|
||||
@@ -124,7 +125,7 @@ func RunDNSserver(dnsBind []net.IP, ready chan bool) {
|
||||
ready <- true
|
||||
|
||||
for req := range reqch {
|
||||
processDNSquery(req.q, req.p, req.s)
|
||||
processDNSquery(req.q, req.p, req.s, req.ifId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,8 +137,10 @@ func runListener(ip net.IP, port int, reqch chan dnsreq) {
|
||||
Zone: "",
|
||||
}
|
||||
|
||||
id := 6
|
||||
network := "udp6"
|
||||
if len(ip.To4()) == net.IPv4len {
|
||||
id = 4
|
||||
network = "udp4"
|
||||
}
|
||||
|
||||
@@ -152,36 +155,39 @@ func runListener(ip net.IP, port int, reqch chan dnsreq) {
|
||||
if err != nil {
|
||||
if err == io.EOF || err == os.ErrClosed || strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
log.Warnf("DNS listener closing.")
|
||||
server.Close()
|
||||
_ = server.Close()
|
||||
break
|
||||
} else {
|
||||
server.Close()
|
||||
_ = server.Close()
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
reqch <- dnsreq{
|
||||
q: b[:nb],
|
||||
s: server,
|
||||
p: peer,
|
||||
q: b[:nb],
|
||||
s: server,
|
||||
p: peer,
|
||||
ifId: id,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
type proxiedReq struct {
|
||||
req *dns.Msg
|
||||
peer *net.UDPAddr
|
||||
s *net.UDPConn
|
||||
exp time.Time
|
||||
req *dns.Msg
|
||||
peer *net.UDPAddr
|
||||
s *net.UDPConn
|
||||
exp time.Time
|
||||
ipVer int
|
||||
}
|
||||
|
||||
func proxyDNS(req *dns.Msg, peer *net.UDPAddr, serv *net.UDPConn) {
|
||||
func proxyDNS(req *dns.Msg, peer *net.UDPAddr, serv *net.UDPConn, ipVer int) {
|
||||
proxiedRequests <- &proxiedReq{
|
||||
req: req,
|
||||
peer: peer,
|
||||
s: serv,
|
||||
exp: time.Now().Add(30 * time.Second),
|
||||
req: req,
|
||||
peer: peer,
|
||||
s: serv,
|
||||
exp: time.Now().Add(30 * time.Second),
|
||||
ipVer: ipVer,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,14 +230,14 @@ func runDNSproxy(dnsServers []string) {
|
||||
}
|
||||
|
||||
for _, proxy := range dnsUpstreams {
|
||||
go func() {
|
||||
go func(p *net.UDPConn) {
|
||||
resp := make([]byte, 1024) //make a buffer which is reused
|
||||
for {
|
||||
n, err := proxy.Read(resp)
|
||||
n, err := p.Read(resp)
|
||||
if err != nil {
|
||||
// something is wrong with the DNS connection panic and let DNS recovery kick in
|
||||
if err == io.EOF || err == os.ErrClosed || strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
log.Errorf("error receiving from ip: %v. error %v", proxy.RemoteAddr(), err)
|
||||
log.Errorf("error receiving from ip: %v. error %v", p.RemoteAddr(), err)
|
||||
return
|
||||
} else {
|
||||
log.Warnf("odd error: %v", err)
|
||||
@@ -240,7 +246,7 @@ func runDNSproxy(dnsServers []string) {
|
||||
respChan <- resp[:n]
|
||||
}
|
||||
}
|
||||
}()
|
||||
}(proxy)
|
||||
}
|
||||
|
||||
reqs := make(map[uint32]*proxiedReq)
|
||||
@@ -255,7 +261,7 @@ func runDNSproxy(dnsServers []string) {
|
||||
if _, err := proxy.Write(b); err != nil {
|
||||
//TODO: if this happens -does this mean the next dns server is not available?
|
||||
|
||||
proxy.Close() //first thing - close the proxy connection
|
||||
_ = proxy.Close() //first thing - close the proxy connection
|
||||
|
||||
// when this hits - it never seems to recover. throw a panic which will get recovered
|
||||
// via the defer specified above and try to recreate the connections. this is a heavy
|
||||
@@ -266,7 +272,7 @@ func runDNSproxy(dnsServers []string) {
|
||||
proxy.RemoteAddr(),
|
||||
err)
|
||||
} else {
|
||||
log.Tracef("Proxied request sent to %v from %v", proxy.RemoteAddr(), proxy.LocalAddr())
|
||||
log.Tracef("Proxied request sent to %v from ipv%d listener", proxy.RemoteAddr(), pr.ipVer)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,11 +283,15 @@ func runDNSproxy(dnsServers []string) {
|
||||
req, found := reqs[id]
|
||||
if found {
|
||||
delete(reqs, id)
|
||||
log.Tracef("proxy resolved %v from %v", reply.Question[0].Name, req.s.RemoteAddr())
|
||||
req.s.WriteMsgUDP(rep, nil, req.peer)
|
||||
log.Tracef("proxy resolved request for %v id:%d", reply.Question[0].Name, reply.Id)
|
||||
n, oobn, err := req.s.WriteMsgUDP(rep, nil, req.peer)
|
||||
if err != nil {
|
||||
log.Errorf("an error has occurred while trying to write a udp message. n:%d, oobn:%d, err:%v", n, oobn, err)
|
||||
}
|
||||
} else {
|
||||
log.Tracef("matching request was not found for %s %s",
|
||||
dns.Type(reply.Question[0].Qtype), reply.Question[0].Name)
|
||||
// keep this log but leave commented out. When two listeners are enabled (ipv4/v6) this msg will
|
||||
// just mean some other request was processed successfully and removed the entry from the map
|
||||
//log.Tracef("matching request was not found for id:%d. %s %s", reply.Id, dns.Type(reply.Question[0].Qtype), reply.Question[0].Name)
|
||||
}
|
||||
}
|
||||
case <-time.After(time.Minute):
|
||||
|
||||
@@ -21,6 +21,8 @@ import "C"
|
||||
import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/constants"
|
||||
|
||||
"net"
|
||||
"strings"
|
||||
"sync"
|
||||
@@ -35,9 +37,6 @@ type DnsManager interface {
|
||||
GetService(ip net.IP, port uint16) (*CZitiCtx, string, error)
|
||||
}
|
||||
|
||||
const defaultCidr = "169.254.0.0"
|
||||
const defaultMaskBits = 16
|
||||
|
||||
var initOnce = sync.Once{}
|
||||
var DNS = &dnsImpl{}
|
||||
|
||||
@@ -80,7 +79,7 @@ func normalizeDnsName(dnsName string) string {
|
||||
// assigned to a hostname an error will also be returned indicating why.
|
||||
func (dns *dnsImpl) RegisterService(svcId string, dnsNameToReg string, port uint16, ctx *CZitiCtx, svcName string) (net.IP, error) {
|
||||
log.Infof("adding DNS entry for service name %s@%s:%d", svcName, dnsNameToReg, port)
|
||||
DnsInit(defaultCidr, defaultMaskBits)
|
||||
DnsInit(constants.Ipv4ip, constants.Ipv4DefaultMask)
|
||||
dnsName := normalizeDnsName(dnsNameToReg)
|
||||
key := fmt.Sprint(dnsName, ':', port)
|
||||
|
||||
|
||||
+12
-1
@@ -178,9 +178,20 @@ func serviceCB(ziti_ctx C.ziti_context, service *C.ziti_service, status C.int, t
|
||||
ZitiContext: ctx,
|
||||
}
|
||||
} else {
|
||||
log.Warnf("could not find a service with id: %s, name: %s", service.id, service.name)
|
||||
log.Warnf("could not remove service? service not found with id: %s, name: %s in context %d", service.id, service.name, &ctx)
|
||||
}
|
||||
} else if status == C.ZITI_OK {
|
||||
//first thing's first - determine if the service is already in this runtime
|
||||
//if it is that means this is 'probably' a config change. to make it easy
|
||||
//just dereg/disconnect the service and then let the rest of this code execute
|
||||
found, ok := ctx.Services.Load(svcId)
|
||||
if ok && found != nil {
|
||||
log.Infof("service with id: %s, name: %s exists. updating service.", service.id, service.name)
|
||||
DNS.DeregisterService(ctx, name)
|
||||
ctx.Services.Delete(svcId)
|
||||
} else {
|
||||
log.Debugf("service not found with id: %s, name: %s in context %d", svcId, name, &ctx)
|
||||
}
|
||||
|
||||
if C.ZITI_CAN_BIND == ( service.perm_flags & C.ZITI_CAN_BIND ) {
|
||||
var v1Config C.ziti_server_cfg_v1
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package constants
|
||||
|
||||
const(
|
||||
Ipv4ip = "100.64.0.0"
|
||||
Ipv4MaxMask = 10
|
||||
Ipv4DefaultMask = 24
|
||||
)
|
||||
@@ -83,13 +83,20 @@ func (id *Identity) Path() string {
|
||||
}
|
||||
|
||||
type TunnelStatus struct {
|
||||
Active bool
|
||||
Duration int64
|
||||
Identities []*Identity
|
||||
IpInfo *TunIpInfo `json:"IpInfo,omitempty"`
|
||||
LogLevel string
|
||||
TunIpv4 string
|
||||
TunIpv4Mask int
|
||||
Active bool
|
||||
Duration int64
|
||||
Identities []*Identity
|
||||
IpInfo *TunIpInfo `json:"IpInfo,omitempty"`
|
||||
LogLevel string
|
||||
ServiceVersion ServiceVersion
|
||||
TunIpv4 string
|
||||
TunIpv4Mask int
|
||||
}
|
||||
|
||||
type ServiceVersion struct {
|
||||
Version string
|
||||
Revision string
|
||||
BuildDate string
|
||||
}
|
||||
|
||||
type ZitiTunnelStatus struct {
|
||||
|
||||
@@ -20,21 +20,26 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/dto"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/logging"
|
||||
"golang.org/x/sys/windows/svc/debug"
|
||||
"golang.org/x/sys/windows/svc/eventlog"
|
||||
"os"
|
||||
"strings"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/globals"
|
||||
|
||||
"golang.org/x/sys/windows/svc"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/service"
|
||||
"golang.org/x/sys/windows/svc"
|
||||
)
|
||||
|
||||
var log = globals.Logger()
|
||||
var log = logging.Logger()
|
||||
|
||||
func main() {
|
||||
l, _ := globals.ParseLevel("info")
|
||||
globals.InitLogger(l)
|
||||
service.Version = dto.ServiceVersion{
|
||||
Version: Version,
|
||||
Revision: Revision,
|
||||
BuildDate: BuildDate,
|
||||
}
|
||||
logging.InitLogger("info")
|
||||
|
||||
//if len(os.Args) < 2 {
|
||||
// // if no args supplied - expect to run as service
|
||||
@@ -52,9 +57,9 @@ func main() {
|
||||
|
||||
var err error
|
||||
if hasArgs {
|
||||
globals.Elog = debug.New(service.SvcName)
|
||||
logging.Elog = debug.New(service.SvcName)
|
||||
} else {
|
||||
globals.Elog, err = eventlog.Open(service.SvcName)
|
||||
logging.Elog, err = eventlog.Open(service.SvcName)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -69,9 +74,9 @@ func main() {
|
||||
usage("no command specified")
|
||||
}
|
||||
|
||||
defer globals.Elog.Close()
|
||||
defer logging.Elog.Close()
|
||||
|
||||
elog := globals.Elog
|
||||
elog := logging.Elog
|
||||
|
||||
cmd := strings.ToLower(os.Args[1])
|
||||
switch cmd {
|
||||
|
||||
@@ -23,14 +23,16 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Microsoft/go-winio"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/constants"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/idutil"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/logging"
|
||||
"github.com/openziti/foundation/identity/identity"
|
||||
idcfg "github.com/openziti/sdk-golang/ziti/config"
|
||||
"github.com/openziti/sdk-golang/ziti/enroll"
|
||||
"github.com/openziti/desktop-edge-win/service/cziti"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/config"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/dto"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/globals"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/idutil"
|
||||
"github.com/sirupsen/logrus"
|
||||
"golang.org/x/sys/windows/svc"
|
||||
"golang.zx2c4.com/wireguard/tun"
|
||||
"io"
|
||||
@@ -63,10 +65,11 @@ func SubMain(ops chan string, changes chan<- svc.Status) error {
|
||||
|
||||
rts.LoadConfig()
|
||||
l := rts.state.LogLevel
|
||||
logLevel, czitiLevel := globals.ParseLevel(l)
|
||||
globals.InitLogger(logLevel)
|
||||
_, czitiLevel := logging.ParseLevel(l)
|
||||
|
||||
_ = globals.Elog.Info(InformationEvent, SvcName+" starting. log file located at "+config.LogFile())
|
||||
logging.InitLogger(l )
|
||||
|
||||
_ = logging.Elog.Info(InformationEvent, SvcName+" starting. log file located at "+config.LogFile())
|
||||
|
||||
// create a channel for notifying any connections that they are to be interrupted
|
||||
interrupt = make(chan struct{}, 8)
|
||||
@@ -99,7 +102,7 @@ func SubMain(ops chan string, changes chan<- svc.Status) error {
|
||||
|
||||
// notify the service is running
|
||||
changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
|
||||
_ = globals.Elog.Info(InformationEvent, SvcName+" status set to running")
|
||||
_ = logging.Elog.Info(InformationEvent, SvcName+" status set to running")
|
||||
log.Info(SvcName + " status set to running. starting cancel loop")
|
||||
|
||||
waitForStopRequest(ops)
|
||||
@@ -244,12 +247,12 @@ func initialize(ipv4 string, ipv4mask int) error {
|
||||
func setTunInfo(s *dto.TunnelStatus, ipv4 string, ipv4mask int) {
|
||||
if strings.TrimSpace(ipv4) == "" {
|
||||
log.Infof("ip not provided using default: %v", ipv4)
|
||||
ipv4 = Ipv4ip
|
||||
ipv4 = constants.Ipv4ip
|
||||
rts.UpdateIpv4(ipv4)
|
||||
}
|
||||
if ipv4mask < 8 || ipv4mask > 24 {
|
||||
log.Warnf("provided mask is invalid: %d. using default value: %d", ipv4mask, Ipv4mask)
|
||||
ipv4mask = Ipv4mask
|
||||
if ipv4mask < 8 || ipv4mask > constants.Ipv4MaxMask {
|
||||
log.Warnf("provided mask is invalid: %d. using default value: %d", ipv4mask, constants.Ipv4DefaultMask)
|
||||
ipv4mask = constants.Ipv4DefaultMask
|
||||
rts.UpdateIpv4Mask(ipv4mask)
|
||||
}
|
||||
_, ipnet, err := net.ParseCIDR(fmt.Sprintf("%s/%d", ipv4, ipv4mask))
|
||||
@@ -294,7 +297,7 @@ func accept(p net.Listener, serveFunction func(net.Conn), debug string) {
|
||||
c, err := p.Accept()
|
||||
if err != nil {
|
||||
if err != winio.ErrPipeListenerClosed {
|
||||
log.Errorf("unexpected error while accepting a connection. exiting loop. %v", err)
|
||||
log.Errorf("%v unexpected error while accepting a connection. exiting loop. %v", debug, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -331,7 +334,7 @@ func serveIpc(conn net.Conn) {
|
||||
select {
|
||||
case <-interrupt:
|
||||
log.Info("request to interrupt read loop received")
|
||||
conn.Close()
|
||||
_ = conn.Close()
|
||||
log.Info("read loop interrupted")
|
||||
case <-done:
|
||||
log.Debug("loop finished normally")
|
||||
@@ -406,6 +409,8 @@ func serveIpc(conn net.Conn) {
|
||||
onOff := cmd.Payload["OnOff"].(bool)
|
||||
fingerprint := cmd.Payload["Fingerprint"].(string)
|
||||
toggleIdentity(enc, fingerprint, onOff)
|
||||
case "SetLogLevel":
|
||||
setLogLevel(enc, cmd.Payload["Level"].(string))
|
||||
case "Debug":
|
||||
dbg()
|
||||
respond(enc, dto.Response{
|
||||
@@ -426,6 +431,15 @@ func serveIpc(conn net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func setLogLevel(out *json.Encoder, level string) {
|
||||
goLevel, cLevel := logging.ParseLevel(level)
|
||||
logrus.Infof("Setting logger levels to %s", goLevel)
|
||||
logrus.SetLevel(goLevel)
|
||||
cziti.SetLogLevel(cLevel)
|
||||
rts.state.LogLevel = goLevel.String()
|
||||
respond(out, dto.Response{Message: "log level set", Code: SUCCESS, Error: "", Payload: nil})
|
||||
}
|
||||
|
||||
func serveLogs(conn net.Conn) {
|
||||
log.Debug("accepted a logs connection, writing logs to pipe")
|
||||
w := bufio.NewWriter(conn)
|
||||
@@ -590,7 +604,7 @@ func toggleIdentity(out *json.Encoder, fingerprint string, onOff bool) {
|
||||
if onOff {
|
||||
connectIdentity(id)
|
||||
} else {
|
||||
disconnectIdentity(id)
|
||||
_ = disconnectIdentity(id)
|
||||
}
|
||||
|
||||
respond(out, dto.Response{Message: "identity toggled", Code: SUCCESS, Error: "", Payload: idutil.Clean(*id)})
|
||||
@@ -836,7 +850,7 @@ func acceptServices() {
|
||||
switch c.Operation {
|
||||
case cziti.ADDED:
|
||||
//add the service to the identity
|
||||
svc := dto.Service{
|
||||
s := dto.Service{
|
||||
Name: c.Service.Name,
|
||||
InterceptHost: c.Service.InterceptHost,
|
||||
InterceptPort: c.Service.InterceptPort,
|
||||
@@ -844,22 +858,22 @@ func acceptServices() {
|
||||
AssignedIP: c.Service.AssignedIP,
|
||||
OwnsIntercept: c.Service.OwnsIntercept,
|
||||
}
|
||||
id.Services = append(id.Services, &svc)
|
||||
id.Services = append(id.Services, &s)
|
||||
|
||||
events.broadcast <- dto.ServiceEvent{
|
||||
ActionEvent: SERVICE_ADDED,
|
||||
Fingerprint: id.FingerPrint,
|
||||
Service: svc,
|
||||
Service: s,
|
||||
}
|
||||
log.Debug("dispatched added service change event")
|
||||
case cziti.REMOVED:
|
||||
for idx, svc := range id.Services {
|
||||
if svc.Name == c.Service.Name {
|
||||
for idx, s := range id.Services {
|
||||
if s.Name == c.Service.Name {
|
||||
id.Services = append(id.Services[:idx], id.Services[idx+1:]...)
|
||||
events.broadcast <- dto.ServiceEvent{
|
||||
ActionEvent: SERVICE_REMOVED,
|
||||
Fingerprint: id.FingerPrint,
|
||||
Service: *svc,
|
||||
Service: *s,
|
||||
}
|
||||
log.Debug(" dispatched remove service change event")
|
||||
}
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/dto"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/logging"
|
||||
"golang.org/x/sys/windows/svc"
|
||||
"sync"
|
||||
"time"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/dto"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/globals"
|
||||
)
|
||||
|
||||
var Version dto.ServiceVersion
|
||||
var pipeBase = `\\.\pipe\NetFoundry\tunneler\`
|
||||
|
||||
var activeIds = make(map[string]*dto.Identity)
|
||||
@@ -39,7 +39,7 @@ var eventsConnections int
|
||||
var Debug bool
|
||||
|
||||
var TunStarted time.Time
|
||||
var log = globals.Logger()
|
||||
var log = logging.Logger()
|
||||
|
||||
var events = newTopic()
|
||||
|
||||
@@ -87,8 +87,6 @@ const (
|
||||
NF_GROUP_NAME = "NetFoundry Tunneler Users"
|
||||
TunName = "ZitiTUN"
|
||||
|
||||
Ipv4ip = "169.254.1.1"
|
||||
Ipv4mask = 24
|
||||
Ipv4dns = "127.0.0.1" // use lo -- don't pass DNS queries through tunneler SDK
|
||||
|
||||
// IPv6 CIDR fe80:6e66:7a69:7469::/64
|
||||
|
||||
@@ -21,12 +21,11 @@ package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/logging"
|
||||
"golang.org/x/sys/windows/svc"
|
||||
"golang.org/x/sys/windows/svc/debug"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/globals"
|
||||
)
|
||||
|
||||
|
||||
type zitiService struct{}
|
||||
|
||||
func (m *zitiService) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) {
|
||||
@@ -52,26 +51,26 @@ loop:
|
||||
switch c.Cmd {
|
||||
case svc.Interrogate:
|
||||
changes <- c.CurrentStatus
|
||||
_ = globals.Elog.Info(InterrogateEvent, "interrogate request received")
|
||||
_ = logging.Elog.Info(InterrogateEvent, "interrogate request received")
|
||||
changes <- c.CurrentStatus
|
||||
case svc.Stop:
|
||||
_ = globals.Elog.Info(StopEvent, "issuing stop")
|
||||
_ = logging.Elog.Info(StopEvent, "issuing stop")
|
||||
control <- "stop"
|
||||
_ = globals.Elog.Info(StopEvent, "stop issued")
|
||||
_ = logging.Elog.Info(StopEvent, "stop issued")
|
||||
break loop
|
||||
case svc.Shutdown:
|
||||
_ = globals.Elog.Info(ShutdownEvent, "issuing shutdown")
|
||||
_ = logging.Elog.Info(ShutdownEvent, "issuing shutdown")
|
||||
control <- "stop"
|
||||
_ = globals.Elog.Info(ShutdownEvent, "shutdown issued")
|
||||
_ = logging.Elog.Info(ShutdownEvent, "shutdown issued")
|
||||
break loop
|
||||
case svc.Pause:
|
||||
changes <- svc.Status{State: svc.Paused, Accepts: cmdsAccepted}
|
||||
_ = globals.Elog.Info(PauseEvent, "request to pause service received. todo - unimplemented")
|
||||
_ = logging.Elog.Info(PauseEvent, "request to pause service received. todo - unimplemented")
|
||||
case svc.Continue:
|
||||
changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
|
||||
_ = globals.Elog.Info(ContinueEvent, "request to continue service received. todo - unimplemented")
|
||||
_ = logging.Elog.Info(ContinueEvent, "request to continue service received. todo - unimplemented")
|
||||
default:
|
||||
_ = globals.Elog.Error(1, fmt.Sprintf("unexpected control request #%d", c))
|
||||
_ = logging.Elog.Error(1, fmt.Sprintf("unexpected control request #%d", c))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,7 +85,7 @@ loop:
|
||||
}
|
||||
|
||||
func RunService(isDebug bool) {
|
||||
_ = globals.Elog.Info(InformationEvent, fmt.Sprintf("starting %s service", SvcStartName))
|
||||
_ = logging.Elog.Info(InformationEvent, fmt.Sprintf("starting %s service", SvcStartName))
|
||||
run := svc.Run
|
||||
if isDebug {
|
||||
log.Info("debug specified. using debug.run")
|
||||
@@ -95,8 +94,8 @@ func RunService(isDebug bool) {
|
||||
err := run(SvcStartName, &zitiService{})
|
||||
|
||||
if err != nil {
|
||||
_ = globals.Elog.Error(ErrorEvent, fmt.Sprintf("%s service failed: %v", SvcStartName, err))
|
||||
_ = logging.Elog.Error(ErrorEvent, fmt.Sprintf("%s service failed: %v", SvcStartName, err))
|
||||
return
|
||||
}
|
||||
_ = globals.Elog.Info(StopEvent, fmt.Sprintf("%s service stopped", SvcStartName))
|
||||
_ = logging.Elog.Info(StopEvent, fmt.Sprintf("%s service stopped", SvcStartName))
|
||||
}
|
||||
|
||||
@@ -23,8 +23,9 @@ import (
|
||||
"fmt"
|
||||
"github.com/openziti/desktop-edge-win/service/cziti"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/config"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/constants"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/dto"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/idutil"
|
||||
"github.com/openziti/desktop-edge-win/service/ziti-tunnel/util/idutil"
|
||||
"golang.org/x/sys/windows/registry"
|
||||
"golang.zx2c4.com/wireguard/tun"
|
||||
"golang.zx2c4.com/wireguard/windows/tunnel/winipcfg"
|
||||
@@ -77,7 +78,7 @@ func (t *RuntimeState) SaveState() {
|
||||
w := bufio.NewWriter(bufio.NewWriter(cfg))
|
||||
enc := json.NewEncoder(w)
|
||||
enc.SetIndent("", " ")
|
||||
_ = enc.Encode(t.state)
|
||||
_ = enc.Encode(t.ToStatus())
|
||||
_ = w.Flush()
|
||||
|
||||
err = cfg.Close()
|
||||
@@ -100,10 +101,14 @@ func (t *RuntimeState) ToStatus() dto.TunnelStatus {
|
||||
}
|
||||
|
||||
clean := dto.TunnelStatus{
|
||||
Active: t.state.Active,
|
||||
Duration: uptime,
|
||||
Identities: make([]*dto.Identity, idCount),
|
||||
IpInfo: t.state.IpInfo,
|
||||
Active: t.state.Active,
|
||||
Duration: uptime,
|
||||
Identities: make([]*dto.Identity, idCount),
|
||||
IpInfo: t.state.IpInfo,
|
||||
LogLevel: t.state.LogLevel,
|
||||
ServiceVersion: Version,
|
||||
TunIpv4: t.state.TunIpv4,
|
||||
TunIpv4Mask: t.state.TunIpv4Mask,
|
||||
}
|
||||
|
||||
for i, id := range t.state.Identities {
|
||||
@@ -143,11 +148,11 @@ func (t *RuntimeState) CreateTun(ipv4 string, ipv4mask int) error {
|
||||
|
||||
if strings.TrimSpace(ipv4) == "" {
|
||||
log.Infof("ip not provided using default: %v", ipv4)
|
||||
ipv4 = Ipv4ip
|
||||
ipv4 = constants.Ipv4ip
|
||||
}
|
||||
if ipv4mask < 8 || ipv4mask > 24 {
|
||||
log.Warnf("provided mask is invalid: %d. using default value: %d", ipv4mask, Ipv4mask)
|
||||
ipv4mask = Ipv4mask
|
||||
if ipv4mask < 8 || ipv4mask > constants.Ipv4MaxMask {
|
||||
log.Warnf("provided mask is invalid: %d. using default value: %d", ipv4mask, constants.Ipv4DefaultMask)
|
||||
ipv4mask = constants.Ipv4DefaultMask
|
||||
rts.UpdateIpv4Mask(ipv4mask)
|
||||
}
|
||||
ip, ipnet, err := net.ParseCIDR(fmt.Sprintf("%s/%d", ipv4, ipv4mask))
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package ipchanges
|
||||
package util
|
||||
|
||||
import (
|
||||
"github.com/michaelquigley/pfxlog"
|
||||
+12
-17
@@ -15,14 +15,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
package globals
|
||||
package logging
|
||||
|
||||
import (
|
||||
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
||||
"github.com/michaelquigley/pfxlog"
|
||||
"github.com/openziti/desktop-edge-win/service/cziti"
|
||||
"github.com/sirupsen/logrus"
|
||||
"golang.org/x/sys/windows/svc/debug"
|
||||
"golang.org/x/sys/windows/svc/eventlog"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -43,8 +43,9 @@ func Logger() *logrus.Entry {
|
||||
|
||||
var loggerInitialized = false
|
||||
|
||||
func InitLogger(logLevel logrus.Level) {
|
||||
logrus.SetLevel(logLevel)
|
||||
func InitLogger(level string) {
|
||||
l, _ := ParseLevel(level)
|
||||
logrus.SetLevel(l)
|
||||
|
||||
rl, _ := rotatelogs.New(config.LogFile() + ".%Y%m%d%H%M.log",
|
||||
rotatelogs.WithRotationTime(24 * time.Hour),
|
||||
@@ -65,6 +66,12 @@ func InitLogger(logLevel logrus.Level) {
|
||||
}
|
||||
}
|
||||
|
||||
func SetLogLevel(goLevel logrus.Level, cLevel int) {
|
||||
logrus.Infof("Setting logger levels to %s", goLevel)
|
||||
logrus.SetLevel(goLevel)
|
||||
cziti.SetLogLevel(cLevel)
|
||||
}
|
||||
|
||||
func ParseLevel(lvl string) (logrus.Level, int) {
|
||||
switch strings.ToLower(lvl) {
|
||||
case "panic":
|
||||
@@ -87,16 +94,4 @@ func ParseLevel(lvl string) (logrus.Level, int) {
|
||||
logrus.Warnf("level not recognized: [%s]. Using Info", lvl)
|
||||
return logrus.InfoLevel, 3
|
||||
}
|
||||
}
|
||||
|
||||
func InitEventLog(svcName string, interactive bool) {
|
||||
var err error
|
||||
if !interactive {
|
||||
Elog = debug.New(svcName)
|
||||
} else {
|
||||
Elog, err = eventlog.Open(svcName)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user