using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Diagnostics; using System; using System.Threading; using System.Management.Automation; using ZitiDesktopEdge.Models; namespace ZitiDesktopEdge { /// /// Interaction logic for MainMenu.xaml /// public partial class MainMenu : UserControl { public delegate void AttachementChanged(bool attached); public event AttachementChanged OnAttachmentChange; public string menuState = "Main"; public string licenseData = "it's open source - someone motivated could track this down. we'll add this some day i'm sure"; public MainMenu() { InitializeComponent(); LicensesItems.Text = licenseData; } private void HideMenu(object sender, MouseButtonEventArgs e) { menuState = "Menu"; UpdateState(); MainMenuArea.Visibility = Visibility.Collapsed; } private void CloseApp(object sender, MouseButtonEventArgs e) { Application.Current.Shutdown(); } private void ShowAbout(object sender, MouseButtonEventArgs e) { menuState = "About"; UpdateState(); } private void ShowAdvanced(object sender, MouseButtonEventArgs e) { menuState = "Advanced"; UpdateState(); } private void ShowLicenses(object sender, MouseButtonEventArgs e) { menuState = "Licenses"; UpdateState(); } private void ShowConfig(object sender, MouseButtonEventArgs e) { menuState = "Config"; UpdateState(); } private void ShowLogs(object sender, MouseButtonEventArgs e) { menuState = "Logs"; UpdateState(); } private void ShowUILogs(object sender, MouseButtonEventArgs e) { menuState = "UILogs"; UpdateState(); } private void UpdateState() { MainItems.Visibility = Visibility.Collapsed; AboutItems.Visibility = Visibility.Collapsed; MainItemsButton.Visibility = Visibility.Collapsed; AboutItemsButton.Visibility = Visibility.Collapsed; BackArrow.Visibility = Visibility.Collapsed; AdvancedItems.Visibility = Visibility.Collapsed; LicensesItems.Visibility = Visibility.Collapsed; LogsItems.Visibility = Visibility.Collapsed; ConfigItems.Visibility = Visibility.Collapsed; if (menuState=="About") { MenuTitle.Content = "About"; AboutItemsButton.Visibility = Visibility.Visible; AboutItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; } else if (menuState=="Advanced") { MenuTitle.Content = "Advanced Settings"; AdvancedItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; } else if (menuState=="Licenses") { MenuTitle.Content = "Third Party Licenses"; LicensesItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; } else if (menuState=="Logs") { ServiceClient.Client client = (ServiceClient.Client)Application.Current.Properties["ServiceClient"]; MenuTitle.Content = "Service Logs"; LogsItems.Text = client.GetLogs(); LogsItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; } else if (menuState == "UILogs") { ServiceClient.Client client = (ServiceClient.Client)Application.Current.Properties["ServiceClient"]; MenuTitle.Content = "Application Logs"; LogsItems.Text = UILog.GetLogs(); LogsItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; } else if (menuState=="Config") { MenuTitle.Content = "Tunnel Configuration"; ConfigItems.Visibility = Visibility.Visible; BackArrow.Visibility = Visibility.Visible; ConfigIp.Value = Application.Current.Properties["ip"]?.ToString(); ConfigSubnet.Value = Application.Current.Properties["subnet"]?.ToString(); ConfigMtu.Value = Application.Current.Properties["mtu"]?.ToString(); ConfigDns.Value = Application.Current.Properties["dns"]?.ToString(); } else { MenuTitle.Content = "Main Menu"; MainItems.Visibility = Visibility.Visible; MainItemsButton.Visibility = Visibility.Visible; } } private void GoBack(object sender, MouseButtonEventArgs e) { if (menuState=="Config"||menuState=="Logs"||menuState=="UILogs") { menuState = "Advanced"; } else if (menuState=="Licenses") { menuState = "About"; } else { menuState = "Menu"; } UpdateState(); } private void ShowPrivacy(object sender, MouseButtonEventArgs e) { Process.Start(new ProcessStartInfo("https://netfoundry.io/privacy") { UseShellExecute = true }); } private void ShowTerms(object sender, MouseButtonEventArgs e) { Process.Start(new ProcessStartInfo("https://netfoundry.io/terms") { UseShellExecute = true }); } private void ShowFeedback(object sender, MouseButtonEventArgs e) { Process.Start(new ProcessStartInfo("mailto:ziti-support@netfoundry.io") { UseShellExecute = true }); } private void ShowSupport(object sender, MouseButtonEventArgs e) { Process.Start(new ProcessStartInfo("https://openziti.discourse.group/") { UseShellExecute = true }); } private void DetachWindow(object sender, MouseButtonEventArgs e) { Application.Current.MainWindow.ShowInTaskbar = true; DetachButton.Visibility = Visibility.Collapsed; AttachButton.Visibility = Visibility.Visible; Arrow.Visibility = Visibility.Collapsed; if (OnAttachmentChange != null) { OnAttachmentChange(false); } MainMenuArea.Visibility = Visibility.Collapsed; } private void RetachWindow(object sender, MouseButtonEventArgs e) { Application.Current.MainWindow.ShowInTaskbar = false; DetachButton.Visibility = Visibility.Visible; AttachButton.Visibility = Visibility.Collapsed; Arrow.Visibility = Visibility.Visible; if (OnAttachmentChange != null) { OnAttachmentChange(true); } } } }