public List <AddSoftware> getInstalledSW() { lSoftware = new List <AddSoftware>(); if (oScan.bInitialScan) { oScan = new RZScan(false, false); oScan.SWScan().Wait(); } return(oScan.InstalledSoftware); }
private void OSCAN_OnSWRepoLoaded(object sender, EventArgs e) { try { AnonymousDelegate update = delegate() { btInstallSoftware.Content = "Install new Software"; btInstallSoftware.IsEnabled = true; }; Dispatcher.Invoke(update); oSCAN.bCheckUpdates = true; oSCAN.SWScan(); } catch { } }
private async Task <bool> GetAADTokenAsync() { AuthenticationResult authResult = null; var app = App.PublicClientApp; var accounts = await app.GetAccountsAsync(); var firstAccount = accounts.FirstOrDefault(); try { authResult = await app.AcquireTokenSilent(scopes, firstAccount).ExecuteAsync(); } catch (MsalUiRequiredException ex) { // A MsalUiRequiredException happened on AcquireTokenSilent. // This indicates you need to call AcquireTokenInteractive to acquire a token System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}"); try { authResult = await app.AcquireTokenInteractive(scopes) .WithAccount(accounts.FirstOrDefault()) .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle) // optional, used to center the browser on the window .WithPrompt(Prompt.SelectAccount) .ExecuteAsync(); } catch (MsalException msalex) { Debug.WriteLine($"Error Acquiring Token:{System.Environment.NewLine}{msalex}"); } } catch (Exception ex) { Debug.WriteLine($"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}"); return(false); } if (authResult != null) { AADToken = authResult.AccessToken; // await GetHttpContentWithToken(graphAPIEndpoint, authResult.AccessToken); Intune_API.authResult = authResult; oSCAN.SWScan(); } return(true); }
/// <summary> /// Check if RuckZuck Token is still valid or request a new token if last refresh was mor than an hour /// </summary> /// <param name="request"></param> //private void _reAuthenticate(Request request) //{ // //Check if there is a token.. // //Guid gToken; // //if (!Guid.TryParse(_AuthenticationToken, out gToken)) // //{ // // dLastTokenRefresh = new DateTime(); // //} // //Re-Authenticate after 30min // if ((DateTime.Now - dLastTokenRefresh).TotalMinutes >= 30) // { // if (string.IsNullOrEmpty(Properties.Settings.Default.Location)) // { // //Properties.Settings.Default.Location = WebServiceURL; // //Properties.Settings.Default.Save(); // } // //RZRestAPI.sURL = Properties.Settings.Default.Location; // if (!string.IsNullOrEmpty(Properties.Settings.Default.Username)) // { // //_AuthenticationToken = RZRestAPI.GetAuthToken(Properties.Settings.Default.Username, ToInsecureString(DecryptString(Properties.Settings.Default.Password))); // //dLastTokenRefresh = DateTime.Now; // request.Debug("RZ Account: " + Properties.Settings.Default.Username); // } // else // { // //_AuthenticationToken = RZRestAPI.GetAuthToken("FreeRZ", GetTimeToken()); // dLastTokenRefresh = DateTime.Now; // request.Debug("RZ Account: FreeRZ"); // } // //if (!Guid.TryParse(_AuthenticationToken, out gToken)) // //{ // // dLastTokenRefresh = new DateTime(); // // request.Warning(_AuthenticationToken); // // _AuthenticationToken = ""; // // return; // //} // request.Debug("RZ Authentication Token:" + _AuthenticationToken); // } //} private void _findPackage(string name, string requiredVersion, string minimumVersion, string maximumVersion, int id, Request request) { //_reAuthenticate(request); //Check if AuthToken is still valid try { bool exactSearch = true; if (request.OptionKeys.Contains("Contains")) { name = request.GetOptionValue("Contains"); request.Message("exact search disabled."); exactSearch = false; } //Search all if no name is specified if (string.IsNullOrEmpty(name)) { exactSearch = false; } bool bUpdate = false; if (request.OptionKeys.Contains("Updates")) { request.Message("check updates for installed Software."); bUpdate = true; } List <GetSoftware> lResult = new List <GetSoftware>(); //Get all installed SW if (bUpdate) { oScan.GetSWRepository().Wait(6000); oScan.bCheckUpdates = false; oScan.SWScan().Wait(); oScan.CheckUpdates(null).Wait(); lSoftware = oScan.InstalledSoftware; List <AddSoftware> RequiredUpdates = oScan.NewSoftwareVersions; // RZApi.CheckForUpdate(lSoftware.ToArray()).ToList().Where(t => t.Architecture != "new").ToList(); foreach (var SW in RequiredUpdates) { try { if (string.IsNullOrEmpty(name)) { lResult.Add(new GetSoftware() { ProductName = SW.ProductName, ProductVersion = SW.ProductVersion, Manufacturer = SW.Manufacturer, ShortName = SW.ShortName, Description = SW.Description, ProductURL = SW.ProductURL }); } else { if ((SW.ProductName.ToLowerInvariant() == name.ToLowerInvariant() | SW.ShortName.ToLowerInvariant() == name.ToLowerInvariant()) && exactSearch) { lResult.Add(new GetSoftware() { ProductName = SW.ProductName, ProductVersion = SW.ProductVersion, Manufacturer = SW.Manufacturer, ShortName = SW.ShortName, Description = SW.Description, ProductURL = SW.ProductURL }); } if ((SW.ProductName.ToLowerInvariant().Contains(name.ToLowerInvariant()) | SW.ShortName.ToLowerInvariant().Contains(name.ToLowerInvariant())) && !exactSearch) { lResult.Add(new GetSoftware() { ProductName = SW.ProductName, ProductVersion = SW.ProductVersion, Manufacturer = SW.Manufacturer, ShortName = SW.ShortName, Description = SW.Description, ProductURL = SW.ProductURL }); } } } catch { } } if (lResult.Count == 0) { request.Warning("No updates found..."); } } else { if (string.IsNullOrEmpty(requiredVersion)) { //Find by ShortName if (exactSearch) { if (!string.IsNullOrEmpty(name)) { lResult = RZRestAPIv2.GetCatalog().Where(t => t.ShortName.ToLower() == name.ToLower()).OrderBy(t => t.ShortName).ToList(); } if (lResult.Count == 0) { //Find any lResult = RZRestAPIv2.GetCatalog().Where(t => t.ProductName.ToLower() == name.ToLower()).OrderBy(t => t.ProductName).ToList(); } } else { if (!string.IsNullOrEmpty(name)) { lResult = RZRestAPIv2.GetCatalog().Where(t => t.ShortName.ToLower().Contains(name.ToLower())).OrderBy(t => t.ShortName).ToList(); } if (lResult.Count == 0) { //Find any lResult = RZRestAPIv2.GetCatalog().Where(t => t.ProductName.ToLower().Contains(name.ToLower())).OrderBy(t => t.ShortName).ToList(); } if (lResult.Count == 0) { //Find any lResult = RZRestAPIv2.GetCatalog().Where(t => t.Manufacturer.ToLower().Contains(name.ToLower())).OrderBy(t => t.ShortName).ToList(); } } } else { //Find by Shortname if (exactSearch) { lResult = RZRestAPIv2.GetCatalog().Where(t => t.ShortName.ToLower() == name.ToLower() && t.ProductVersion.ToLower() == requiredVersion.ToLower()).OrderBy(t => t.ShortName).ToList(); } else { //Find any lResult = RZRestAPIv2.GetCatalog().Where(t => t.ShortName.ToLower().Contains(name.ToLower()) && t.ProductVersion.ToLower() == requiredVersion.ToLower()).OrderBy(t => t.ShortName).ToList(); if (lResult.Count == 0) { lResult = RZRestAPIv2.GetCatalog().Where(t => t.ProductName.ToLower().Contains(name.ToLower()) && t.ProductVersion.ToLower() == requiredVersion.ToLower()).OrderBy(t => t.ShortName).ToList(); } if (lResult.Count == 0) { lResult = RZRestAPIv2.GetCatalog().Where(t => t.Manufacturer.ToLower().Contains(name.ToLower()) && t.ProductVersion.ToLower() == requiredVersion.ToLower()).OrderBy(t => t.ShortName).ToList(); } } } } if (minimumVersion != null) { try { lResult = lResult.Where(p => Version.Parse(p.ProductVersion) >= Version.Parse(minimumVersion)).ToList(); } catch { lResult = lResult.Where(p => p.ProductVersion == minimumVersion).ToList(); } } if (maximumVersion != null) { try { lResult = lResult.Where(p => Version.Parse(p.ProductVersion) <= Version.Parse(maximumVersion)).ToList(); } catch { lResult = lResult.Where(p => p.ProductVersion == maximumVersion).ToList(); } } foreach (var SW in lResult.OrderBy(t => t.ShortName)) { request.YieldSoftwareIdentity(SW.ProductName + ";" + SW.ProductVersion + ";" + SW.Manufacturer, SW.ProductName, SW.ProductVersion, "", SW.Description, Properties.Settings.Default.Location, name, SW.SWId.ToString(), SW.ShortName); //Trust the original RucKZuck source if (string.Equals(Properties.Settings.Default.Location, RZRestAPIv2.sURL, StringComparison.InvariantCultureIgnoreCase)) { request.AddMetadata("FromTrustedSource", "True"); } } } catch (Exception ex) { request.Debug("E334:" + ex.Message); } }
private void Connect() { try { connection.Stop(); connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException()); } else { //Obsolete myHub.On <string, string>("getPS", (s1, s2) => { //using (PowerShell PowerShellInstance = PowerShell.Create()) //{ // try // { // PowerShellInstance.AddScript(s1); // var PSResult = PowerShellInstance.Invoke(); // if (PSResult.Count() > 0) // { // string sResult = PSResult.Last().BaseObject.ToString(); // if (sResult != sScriptResult) //obsolete from 1.0.07 -> returnPS // { // sScriptResult = sResult; // Random rnd = new Random(); // tReInit.Interval = rnd.Next(1000, 10000); //wait max 10s to ReInit // } // myHub.Invoke<string>("Respond", s2, Environment.MachineName + ":" + sResult).ContinueWith(task1 => // { // if (task1.IsFaulted) // { // Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException()); // } // }); // } // } // catch (Exception ex) // { // Console.WriteLine("There was an error: {0}", ex.Message); // } //} //Program.MinimizeFootprint(); }); myHub.On <string, string>("returnPS", (s1, s2) => { TimeSpan timeout = new TimeSpan(0, 5, 0); //default timeout = 5min DateTime dStart = DateTime.Now; TimeSpan dDuration = DateTime.Now - dStart; using (PowerShell PowerShellInstance = PowerShell.Create()) { Trace.WriteLine(DateTime.Now.ToString() + "\t run PS... " + s1); try { PowerShellInstance.AddScript(s1); PSDataCollection <PSObject> outputCollection = new PSDataCollection <PSObject>(); outputCollection.DataAdding += ConsoleOutput; PowerShellInstance.Streams.Error.DataAdding += ConsoleError; IAsyncResult async = PowerShellInstance.BeginInvoke <PSObject, PSObject>(null, outputCollection); while (async.IsCompleted == false || dDuration > timeout) { Thread.Sleep(200); dDuration = DateTime.Now - dStart; if (tReInit.Interval > 5000) { tReInit.Interval = 5000; } } //var PSResult = PowerShellInstance.Invoke(); //if (PSResult.Count() > 0) //{ // string sResult = PSResult.Last().BaseObject.ToString(); // if (sResult != sScriptResult) // { // sScriptResult = sResult; // Trace.WriteLine(" done. Result: " + sResult); // Random rnd = new Random(); // tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max Xs to ReInit // } //} //else //{ // Trace.WriteLine(" done. no result."); //} } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } } Program.MinimizeFootprint(); }); //New 0.9.0.6 myHub.On <string, string>("returnPSAsync", (s1, s2) => { Trace.WriteLine(DateTime.Now.ToString() + "\t run PS async... " + s1); var tSWScan = Task.Run(() => { using (PowerShell PowerShellInstance = PowerShell.Create()) { try { PowerShellInstance.AddScript(s1); var PSResult = PowerShellInstance.Invoke(); if (PSResult.Count() > 0) { string sResult = PSResult.Last().BaseObject.ToString(); if (!string.IsNullOrEmpty(sResult)) //Do not return empty results { if (sResult != sScriptResult) { sScriptResult = sResult; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max Xs to ReInit } } } } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } } Program.MinimizeFootprint(); }); }); myHub.On <string>("init", (s1) => { try { Trace.Write(DateTime.Now.ToString() + "\t Agent init... "); myHub.Invoke <string>("Init", Hostname).ContinueWith(task1 => { }); Trace.WriteLine(" done."); } catch { } try { foreach (string sGroup in Properties.Settings.Default.Groups.Split(';')) { myHub.Invoke <string>("JoinGroup", sGroup).ContinueWith(task1 => { }); } Program.MinimizeFootprint(); } catch { } }); myHub.On <string>("reinit", (s1) => { try { //Properties.Settings.Default.InventorySuccess = new DateTime(); //Properties.Settings.Default.HealthCheckSuccess = new DateTime(); //Properties.Settings.Default.Save(); Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } catch { } }); myHub.On <string>("status", (s1) => { try { Trace.Write(DateTime.Now.ToString() + "\t send status..."); string sResult = "{}"; using (PowerShell PowerShellInstance = PowerShell.Create()) { try { PowerShellInstance.AddScript(Properties.Settings.Default.PSStatus); var PSResult = PowerShellInstance.Invoke(); if (PSResult.Count() > 0) { sResult = PSResult.Last().BaseObject.ToString(); sResult = sResult.Replace(Environment.MachineName, Hostname); JObject jRes = JObject.Parse(sResult); jRes.Add("ScriptResult", sScriptResult); jRes.Add("Groups", Properties.Settings.Default.Groups); sResult = jRes.ToString(); } } catch (Exception ex) { Console.WriteLine(" There was an error: {0}", ex.Message); } } myHub.Invoke("Status", new object[] { Hostname, sResult }).ContinueWith(task1 => { }); Trace.WriteLine(" done."); Program.MinimizeFootprint(); } catch (Exception ex) { Trace.Write(DateTime.Now.ToString() + " ERROR: " + ex.Message); } }); myHub.On <string>("version", (s1) => { try { Trace.Write(DateTime.Now.ToString() + "\t Get Version... "); //Get File-Version sScriptResult = (FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location)).FileVersion.ToString(); Trace.WriteLine(sScriptResult); Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } catch (Exception ex) { Trace.Write(DateTime.Now.ToString() + " ERROR: " + ex.Message); } }); myHub.On <string>("wol", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { foreach (string sMAC in s1.Split(';')) { try { WOL.WakeUp(sMAC); //Send Broadcast //Send to local Gateway foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces()) { if (f.OperationalStatus == OperationalStatus.Up) { foreach (GatewayIPAddressInformation d in f.GetIPProperties().GatewayAddresses) { //Only use IPv4 if (d.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { WOL.WakeUp(d.Address, 9, sMAC); } } } } } catch { } } } } catch { } }); myHub.On <string>("setinstance", (s1) => { Trace.WriteLine(DateTime.Now.ToString() + "\t Set instance: " + s1); try { if (!string.IsNullOrEmpty(s1)) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Instance']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("INSTANCE", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } catch { } }); myHub.On <string>("setendpoint", (s1) => { Trace.WriteLine(DateTime.Now.ToString() + "\t Set Endpoint: " + s1); try { if (!string.IsNullOrEmpty(s1)) { if (s1.StartsWith("https://")) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Endpoint']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("ENDPOINT", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } } catch { } }); myHub.On <string>("setgroups", (s1) => { Trace.WriteLine(DateTime.Now.ToString() + "\t Set Groups: " + s1); try { if (!string.IsNullOrEmpty(s1)) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Groups']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("GROUPS", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } catch { } }); myHub.On <string>("getgroups", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { sScriptResult = Properties.Settings.Default.Groups; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } } catch { } }); myHub.On <string>("restartservice", (s1) => { try { RestartService(); sScriptResult = "restart Agent..."; } catch { } }); myHub.On <string>("rzinstall", (s1) => { RZInst(s1); }); myHub.On <string>("rzupdate", (s1) => { var tSWScan = Task.Run(() => { try { sScriptResult = "Detecting RZ updates..."; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit RZUpdater oUpdate = new RZUpdater(); RZScan oScan = new RZScan(false, false); oScan.GetSWRepository().Wait(30000); oScan.SWScan().Wait(30000); oScan.CheckUpdates(null).Wait(60000); if (string.IsNullOrEmpty(s1)) { sScriptResult = oScan.NewSoftwareVersions.Count.ToString() + " RZ updates found"; rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } List <string> lSW = new List <string>(); foreach (var oSW in oScan.NewSoftwareVersions) { if (string.IsNullOrEmpty(s1) || s1 == "HUB") { RZInst(oSW.ShortName); } else { var SWList = s1.Split(';'); if (SWList.Contains(oSW.ShortName)) { RZInst(oSW.ShortName); } } } } catch { } }); }); myHub.On <string>("rzscan", (s1) => { var tSWScan = Task.Run(() => { try { sScriptResult = "Detecting updates..."; Random rnd = new Random(); tReInit.Interval = rnd.Next(2000, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit RZUpdater oUpdate = new RZUpdater(); RZScan oScan = new RZScan(false, false); oScan.GetSWRepository().Wait(30000); oScan.SWScan().Wait(30000); oScan.CheckUpdates(null).Wait(30000); List <string> lSW = new List <string>(); foreach (var SW in oScan.NewSoftwareVersions) { lSW.Add(SW.ShortName + " " + SW.ProductVersion + " (old:" + SW.MSIProductID + ")"); } sScriptResult = JsonConvert.SerializeObject(lSW); rnd = new Random(); tReInit.Interval = rnd.Next(2000, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } catch { } }); }); myHub.On <string>("inject", (s1) => { var tSWScan = Task.Run(() => { try { sScriptResult = "Inject external code..."; try { ManagedInjection.Inject(s1); sScriptResult = "External code executed."; } catch (Exception ex) { sScriptResult = "Injection error:" + ex.Message; } } catch { } }); }); myHub.On <string, string>("userprocess", (cmd, arg) => { var tSWScan = Task.Run(() => { if (string.IsNullOrEmpty(cmd)) { cmd = Assembly.GetExecutingAssembly().Location; arg = Environment.MachineName + ":" + "%USERNAME%"; } try { if (string.IsNullOrEmpty(arg)) { ProcessExtensions.StartProcessAsCurrentUser(cmd, null, null, false); } else { ProcessExtensions.StartProcessAsCurrentUser(null, cmd + " " + arg, null, false); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }); }); myHub.Invoke <string>("Init", Hostname).ContinueWith(task1 => { try { if (task1.IsFaulted) { Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException()); } else { try { foreach (string sGroup in Properties.Settings.Default.Groups.Split(';')) { myHub.Invoke <string>("JoinGroup", sGroup).ContinueWith(task2 => { }); } Program.MinimizeFootprint(); } catch { } } } catch { } }); } }).Wait(); } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } }
public MainWindow() { DateTime dstart = DateTime.Now; InitializeComponent(); CommandArgs.AddRange(Environment.GetCommandLineArgs()); CommandArgs.RemoveAt(0); //Disbale SSL/TLS Errors System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; //Disable CRL Check System.Net.ServicePointManager.CheckCertificateRevocationList = false; //Get Proxy from IE WebRequest.DefaultWebProxy = WebRequest.GetSystemWebProxy(); if (Properties.Settings.Default.UpgradeSettings) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.UpgradeSettings = false; Properties.Settings.Default.Save(); } tbSVC.Text = Properties.Settings.Default.WebService; //Get Version FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location); tbVersion.Text = string.Format(tbVersion.Text, fvi.FileVersion); lVersion.Content = "Version: " + fvi.FileVersion; //Hide Tabs Style s = new Style(); s.Setters.Add(new Setter(UIElement.VisibilityProperty, Visibility.Collapsed)); tabWizard.ItemContainerStyle = s; if (string.IsNullOrEmpty(Properties.Settings.Default.UserKey)) { Properties.Settings.Default.UserKey = Guid.NewGuid().ToString(); Properties.Settings.Default.Save(); } //RZRestAPI.sURL = Properties.Settings.Default.WebService; RZRestAPI.DisableBroadcast = Properties.Settings.Default.DisableBroadcast; tbSVC.Text = RZRestAPI.sURL; tbIPFSGW.Text = Properties.Settings.Default.IPFSGW; cbRZCache.IsChecked = !Properties.Settings.Default.DisableBroadcast; //Authenticate; Authenticate(); //ReAuthenticate every 20min tReAuth.Interval = 1200000; tReAuth.Elapsed += TReAuth_Elapsed; tReAuth.Enabled = true; tReAuth.AutoReset = true; tReAuth.Start(); //Set SOAP Header //oAPI.SecuredWebServiceHeaderValue = new RZApi.SecuredWebServiceHeader() { AuthenticatedToken = sAuthToken }; oInstPanel.sAuthToken = sAuthToken; oInstPanel.onEdit += oInstPanel_onEdit; oUpdPanel.onEdit += oInstPanel_onEdit; //oInstPanel.OnSWUpdated += OUpdPanel_OnSWUpdated; oUpdPanel.OnSWUpdated += OUpdPanel_OnSWUpdated; double dSeconds = (DateTime.Now - dstart).TotalSeconds; dSeconds.ToString(); //Run PowerShell check in separate thread... Thread thread = new Thread(() => { try { Runspace runspace = RunspaceFactory.CreateRunspace(); runspace.Open(); PowerShell powershell = PowerShell.Create(); powershell.AddScript("(get-Host).Version"); powershell.Runspace = runspace; Collection <PSObject> results = powershell.Invoke(); if (((System.Version)(results[0].BaseObject)).Major < 4) { if (MessageBox.Show("The current Version of PowerShell is not supported. Do you want to update ?", "Update Powershell", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.Yes) == MessageBoxResult.Yes) { //Update... Process.Start("https://www.microsoft.com/en-us/download/details.aspx?id=50395"); this.Close(); } } } catch { } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); FileVersionInfo FI = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location); oSCAN = new RZScan(false, true); oSCAN.StaticInstalledSoftware.Add(new AddSoftware() { ProductName = "RuckZuck", Manufacturer = FI.CompanyName, ProductVersion = FI.ProductVersion.ToString() }); oSCAN.OnSWScanCompleted += OSCAN_OnSWScanCompleted; oSCAN.OnUpdatesDetected += OSCAN_OnUpdatesDetected; oSCAN.OnSWRepoLoaded += OSCAN_OnSWRepoLoaded; oSCAN.OnUpdScanCompleted += OSCAN_OnUpdScanCompleted; oSCAN.OnInstalledSWAdded += OSCAN_OnInstalledSWAdded; oSCAN.bCheckUpdates = true; oSCAN.GetSWRepository().ConfigureAwait(false); //oSCAN.tRegCheck.Start(); if (CommandArgs.Count > 0) { oInstPanel.EnableFeedback = false; oInstPanel.EnableEdit = false; oInstPanel.EnableSupport = false; } else { //Skip Startpage for registerred users... if (tbURL.IsEnabled) { tabWizard.SelectedItem = tabMain; oSCAN.SWScan(); oInstPanel.EnableFeedback = true; oInstPanel.EnableEdit = true; oInstPanel.EnableSupport = true; } else { oInstPanel.EnableSupport = false; oSCAN.SWScan(); } } }
static void Main(string[] args) { MessagingFactory messageFactory; NamespaceManager namespaceManager; //TopicClient myTopicClient; //lPackages.Add("AdobeReader DC MUI"); tStart = DateTime.Now; RZRestAPIv2.CustomerID = "swtesting"; RZRestAPIv2.DisableBroadcast = true; RZRestAPIv2.GetURL(RZRestAPIv2.CustomerID); #if !DEBUG RZScan oScan = new RZScan(false, false); oScan.SWScan().Wait(); if (oScan.InstalledSoftware.Count >= 2) { Console.WriteLine("Please run RZ.Bot.exe on a clean Machine !!!"); Console.ReadLine(); return; } #endif System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; System.Net.ServicePointManager.CheckCertificateRevocationList = false; Console.Write("Connecting ServiceBus..."); string sConnString = Properties.Settings.Default.ConnectionString; messageFactory = MessagingFactory.CreateFromConnectionString(sConnString); namespaceManager = NamespaceManager.CreateFromConnectionString(sConnString); if (namespaceManager == null) { Console.WriteLine("\nUnexpected Error"); return; } string TopicName = Properties.Settings.Default.TopicName; if (!namespaceManager.TopicExists(TopicName)) { namespaceManager.CreateTopic(TopicName); } Console.WriteLine("... connected."); if (!namespaceManager.SubscriptionExists(TopicName, string.Format(Properties.Settings.Default.Filtername, Environment.MachineName))) { SqlFilter dashboardFilter = new SqlFilter(Properties.Settings.Default.SQLFilter); namespaceManager.CreateSubscription(TopicName, string.Format(Properties.Settings.Default.Filtername, Environment.MachineName), dashboardFilter); return; } string sLastPackage = ""; var Client = messageFactory.CreateSubscriptionClient(TopicName, string.Format(Properties.Settings.Default.Filtername, Environment.MachineName), ReceiveMode.PeekLock); Client.OnMessage((message) => { try { if ((DateTime.Now - tStart).TotalHours >= 6) { Console.WriteLine("Max. runtime of 6h exceeded..."); return; } try { if (lPackages.IndexOf(message.Properties["ProductName"].ToString() + message.Properties["ProductVersion"].ToString() + message.Properties["Manufacturer"].ToString()) >= 0) { message.Complete(); return; } List <GetSoftware> lCat = RZRestAPIv2.GetCatalog(); RZUpdater oRZSW = new RZUpdater(); var CatItem = lCat.Find(t => t.ProductName.ToLower() == message.Properties["ProductName"].ToString().ToLower() && t.ProductVersion.ToLower() == message.Properties["ProductVersion"].ToString().ToLower() && t.Manufacturer.ToLower() == message.Properties["Manufacturer"].ToString().ToLower()); if (CatItem != null) { oRZSW.SoftwareUpdate = new SWUpdate(CatItem.ShortName); if (oRZSW.SoftwareUpdate.SW.ShortName == null) { oRZSW.SoftwareUpdate = new SWUpdate(message.Properties["ProductName"].ToString(), message.Properties["ProductVersion"].ToString(), message.Properties["Manufacturer"].ToString()); } } else { oRZSW.SoftwareUpdate = new SWUpdate(message.Properties["ProductName"].ToString(), message.Properties["ProductVersion"].ToString(), message.Properties["Manufacturer"].ToString()); oRZSW.SoftwareUpdate = new SWUpdate(oRZSW.SoftwareUpdate.SW.ShortName); } if (lPackages.IndexOf(oRZSW.SoftwareUpdate.SW.ShortName) >= 0) //check if there was a previous success { message.Complete(); return; } //if(message.Properties["ProductVersion"].ToString() != oRZSW.SoftwareUpdate.SW.ProductVersion) //{ // oRZSW.SoftwareUpdate = new SWUpdate(oRZSW.SoftwareUpdate.SW.ShortName); //} if (sLastPackage != oRZSW.SoftwareUpdate.SW.ShortName) { //oRZSW.SoftwareUpdate = new SWUpdate(oRZSW.SoftwareUpdate.SW.Shortname); oRZSW.SoftwareUpdate.SendFeedback = false; //we already process feedback... if (string.IsNullOrEmpty(oRZSW.SoftwareUpdate.SW.PSInstall)) { oRZSW.SoftwareUpdate.GetInstallType(); //Console.WriteLine("PreRequisites not valid ...!"); //message.Abandon(); //return; } if (string.IsNullOrEmpty(oRZSW.SoftwareUpdate.SW.ProductName)) { Console.WriteLine("Error: ProductName not valid... " + message.Properties["ProductName"].ToString()); message.Abandon(); //Console.WriteLine("Error: Product not found in Repository..."); } else { Console.WriteLine(oRZSW.SoftwareUpdate.SW.Manufacturer + " " + oRZSW.SoftwareUpdate.SW.ProductName + " " + oRZSW.SoftwareUpdate.SW.ProductVersion); Console.Write("Downloading..."); foreach (string sPreReq in oRZSW.SoftwareUpdate.SW.PreRequisites) { RZUpdater oRZSWPreReq = new RZUpdater(); oRZSWPreReq.SoftwareUpdate = new SWUpdate(sPreReq); oRZSWPreReq.SoftwareUpdate.SendFeedback = false; Console.WriteLine(); Console.Write("\tDownloading dependencies (" + oRZSWPreReq.SoftwareUpdate.SW.ShortName + ")..."); if (oRZSWPreReq.SoftwareUpdate.Download().Result) { Console.WriteLine("... done."); Console.Write("\tInstalling dependencies (" + oRZSWPreReq.SoftwareUpdate.SW.ShortName + ")..."); if (oRZSWPreReq.SoftwareUpdate.Install(false, true).Result) { Console.WriteLine("... done."); lPackages.Add(oRZSWPreReq.SoftwareUpdate.SW.ShortName); } else { Console.WriteLine("... Error. The installation failed."); message.Abandon(); } } } if (oRZSW.SoftwareUpdate.Download().Result) { Console.WriteLine("... done."); Console.Write("Installing..."); if (oRZSW.SoftwareUpdate.Install(false, true).Result) { Console.WriteLine("... done."); message.Complete(); //RZRestAPIv2.Feedback(oRZSW.SoftwareUpdate.SW.ProductName, oRZSW.SoftwareUpdate.SW.ProductVersion, oRZSW.SoftwareUpdate.SW.Manufacturer, "true", "RZBot", "ok..").Wait(3000); sLastPackage = oRZSW.SoftwareUpdate.SW.ShortName; lPackages.Add(oRZSW.SoftwareUpdate.SW.ShortName); lPackages.Add(message.Properties["ProductName"].ToString() + message.Properties["ProductVersion"].ToString() + message.Properties["Manufacturer"].ToString()); //return 0; } else { Console.WriteLine("... Error. Installation failed."); sLastPackage = oRZSW.SoftwareUpdate.SW.ShortName; message.DeadLetter(); //return 1603; } } else { Console.WriteLine("... Error. Download failed."); sLastPackage = oRZSW.SoftwareUpdate.SW.ShortName; message.DeadLetter(); //return 1602; } } } else { //Console.WriteLine("... retry later.."); sLastPackage = oRZSW.SoftwareUpdate.SW.ShortName; Thread.Sleep(1000); //message.Abandon(); // retry later.... message.DeadLetter(); return; } } catch (Exception ex) { Console.WriteLine("ERROR: " + ex.Message); message.Abandon(); } Console.ResetColor(); } catch { } }); Console.ReadLine(); }
private void Connect() { try { connection.Stop(); connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException()); } else { //Obsolete myHub.On <string, string>("getPS", (s1, s2) => { //using (PowerShell PowerShellInstance = PowerShell.Create()) //{ // try // { // PowerShellInstance.AddScript(s1); // var PSResult = PowerShellInstance.Invoke(); // if (PSResult.Count() > 0) // { // string sResult = PSResult.Last().BaseObject.ToString(); // if (sResult != sScriptResult) //obsolete from 1.0.07 -> returnPS // { // sScriptResult = sResult; // Random rnd = new Random(); // tReInit.Interval = rnd.Next(1000, 10000); //wait max 10s to ReInit // } // myHub.Invoke<string>("Respond", s2, Environment.MachineName + ":" + sResult).ContinueWith(task1 => // { // if (task1.IsFaulted) // { // Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException()); // } // }); // } // } // catch (Exception ex) // { // Console.WriteLine("There was an error: {0}", ex.Message); // } //} //Program.MinimizeFootprint(); }); myHub.On <string, string>("returnPS", (s1, s2) => { using (PowerShell PowerShellInstance = PowerShell.Create()) { try { PowerShellInstance.AddScript(s1); var PSResult = PowerShellInstance.Invoke(); if (PSResult.Count() > 0) { string sResult = PSResult.Last().BaseObject.ToString(); if (sResult != sScriptResult) { sScriptResult = sResult; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max Xs to ReInit } } } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } } Program.MinimizeFootprint(); }); //New 0.9.0.6 myHub.On <string, string>("returnPSAsync", (s1, s2) => { var tSWScan = Task.Run(() => { using (PowerShell PowerShellInstance = PowerShell.Create()) { try { PowerShellInstance.AddScript(s1); var PSResult = PowerShellInstance.Invoke(); if (PSResult.Count() > 0) { string sResult = PSResult.Last().BaseObject.ToString(); if (sResult != sScriptResult) { sScriptResult = sResult; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max Xs to ReInit } } } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } } Program.MinimizeFootprint(); }); }); myHub.On <string>("init", (s1) => { try { myHub.Invoke <string>("Init", Hostname).ContinueWith(task1 => { }); } catch { } try { foreach (string sGroup in Properties.Settings.Default.Groups.Split(';')) { myHub.Invoke <string>("JoinGroup", sGroup).ContinueWith(task1 => { }); } Program.MinimizeFootprint(); } catch { } }); myHub.On <string>("status", (s1) => { try { string sResult = "{}"; using (PowerShell PowerShellInstance = PowerShell.Create()) { try { PowerShellInstance.AddScript(Properties.Settings.Default.PSStatus); var PSResult = PowerShellInstance.Invoke(); if (PSResult.Count() > 0) { sResult = PSResult.Last().BaseObject.ToString(); sResult = sResult.Replace(Environment.MachineName, Hostname); JObject jRes = JObject.Parse(sResult); jRes.Add("ScriptResult", sScriptResult); jRes.Add("Groups", Properties.Settings.Default.Groups); sResult = jRes.ToString(); } } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } } myHub.Invoke("Status", new object[] { Hostname, sResult }).ContinueWith(task1 => { }); Program.MinimizeFootprint(); } catch { } }); myHub.On <string>("version", (s1) => { try { //Get File-Version sScriptResult = (FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location)).FileVersion.ToString(); Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } catch { } }); myHub.On <string>("wol", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { foreach (string sMAC in s1.Split(';')) { WOL.WakeUp(sMAC); } } } catch { } }); myHub.On <string>("setinstance", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Instance']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("INSTANCE", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } catch { } }); myHub.On <string>("setendpoint", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { if (s1.StartsWith("https://")) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Endpoint']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("ENDPOINT", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } } catch { } }); myHub.On <string>("setgroups", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { string sConfig = Assembly.GetExecutingAssembly().Location + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(sConfig); doc.SelectSingleNode("/configuration/applicationSettings/DevCDRAgent.Properties.Settings/setting[@name='Groups']/value").InnerText = s1; doc.Save(sConfig); RestartService(); //Update Advanced Installer Persistent Properties RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Zander Tools\\{0AC43E24-4308-4BE7-A369-D50DB4056B32}", true); if (myKey != null) { myKey.SetValue("GROUPS", s1.Trim(), RegistryValueKind.String); myKey.Close(); } } } catch { } }); myHub.On <string>("getgroups", (s1) => { try { if (!string.IsNullOrEmpty(s1)) { sScriptResult = Properties.Settings.Default.Groups; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } } catch { } }); myHub.On <string>("restartservice", (s1) => { try { RestartService(); sScriptResult = "restart Agent..."; } catch { } }); myHub.On <string>("rzinstall", (s1) => { RZInst(s1); }); myHub.On <string>("rzupdate", (s1) => { var tSWScan = Task.Run(() => { try { sScriptResult = "Detecting RZ updates..."; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit RZUpdater oUpdate = new RZUpdater(); RZScan oScan = new RZScan(false, false); oScan.GetSWRepository().Wait(30000); oScan.SWScan().Wait(30000); oScan.CheckUpdates(null).Wait(30000); sScriptResult = oScan.NewSoftwareVersions.Count.ToString() + " RZ updates found"; rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit List <string> lSW = new List <string>(); foreach (var oSW in oScan.NewSoftwareVersions) { RZInst(oSW.Shortname); } } catch { } }); }); myHub.On <string>("rzscan", (s1) => { var tSWScan = Task.Run(() => { try { sScriptResult = "Detecting updates..."; Random rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit RZUpdater oUpdate = new RZUpdater(); RZScan oScan = new RZScan(false, false); oScan.GetSWRepository().Wait(30000); oScan.SWScan().Wait(30000); oScan.CheckUpdates(null).Wait(30000); List <string> lSW = new List <string>(); foreach (var SW in oScan.NewSoftwareVersions) { lSW.Add(SW.Shortname + " " + SW.ProductVersion + " (old:" + SW.MSIProductID + ")"); } sScriptResult = JsonConvert.SerializeObject(lSW); rnd = new Random(); tReInit.Interval = rnd.Next(200, Properties.Settings.Default.StatusDelay); //wait max 5s to ReInit } catch { } }); }); myHub.Invoke <string>("Init", Hostname).ContinueWith(task1 => { if (task1.IsFaulted) { Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException()); } else { try { foreach (string sGroup in Properties.Settings.Default.Groups.Split(';')) { myHub.Invoke <string>("JoinGroup", sGroup).ContinueWith(task2 => { }); } Program.MinimizeFootprint(); } catch { } } }); } }).Wait(); } catch (Exception ex) { Console.WriteLine("There was an error: {0}", ex.Message); } }