From 33977d50477521ce919d8001fade5bf38a6d4877 Mon Sep 17 00:00:00 2001 From: Claudio Boggian Date: Mon, 13 Nov 2023 12:00:10 +0100 Subject: [PATCH] handled arguments and removed hardwired sensitive variables --- console_solaredge/Program.cs | 162 ++++++++++++++++++++--------------- 1 file changed, 91 insertions(+), 71 deletions(-) diff --git a/console_solaredge/Program.cs b/console_solaredge/Program.cs index 6826249..0516312 100644 --- a/console_solaredge/Program.cs +++ b/console_solaredge/Program.cs @@ -4,81 +4,101 @@ using System.Net.Http.Headers; using System.Text; using static console_solaredge.Model; -SolarEdgeModel result = new(); -var credential = Convert.ToBase64String(Encoding.ASCII.GetBytes($"ced@pal.it:#zPG6tax1yuiWU*8iw")); -var handler = new HttpClientHandler(); -handler.CookieContainer = new CookieContainer(); - -using (var client = new HttpClient(handler)) +internal class Program { - client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential); - var response = await client.GetAsync("https://monitoring.solaredge.com/solaredge-web/p/site/3834979/#/dashboard"); - var cookies = handler.CookieContainer.GetCookies(new Uri("https://monitoring.solaredge.com")); - string csrfToken = null; - foreach (Cookie cookie in cookies) + /// + /// This method retrive alerts from SolarEdge Monitoring site + /// + /// [0] UserName - [1] Password - [2] SiteId + /// Write on console the result + private static async Task Main(string[] args) { - if (cookie.Name == "CSRF-TOKEN") + if (args.Length == 0) { + + Console.WriteLine("No args found, use di this script with folowing args:"); + Console.WriteLine("./console_solaredge "); + throw new ArgumentNullException(nameof(args)); + } + + SolarEdgeModel result = new(); + var credential = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{args[0]}:{args[1]}")); + var handler = new HttpClientHandler(); + handler.CookieContainer = new CookieContainer(); + + using (var client = new HttpClient(handler)) { - csrfToken = cookie.Value; - break; + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential); + var response = await client.GetAsync($"https://monitoring.solaredge.com/solaredge-web/p/site/{args[2]}/#/dashboard"); + var cookies = handler.CookieContainer.GetCookies(new Uri("https://monitoring.solaredge.com")); + + string? csrfToken = null; + foreach (Cookie cookie in cookies) + { + if (cookie.Name == "CSRF-TOKEN") + { + csrfToken = cookie.Value; + break; + } + } + + ArgumentNullException.ThrowIfNull(csrfToken); + + var alertRequest = new HttpRequestMessage(HttpMethod.Post, $"https://monitoring.solaredge.com/solaredge-apigw/api/rna/v1.0/site/{args[2]}/alerts?count=20&page=1"); + alertRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"); + alertRequest.Headers.Add("Accept", "application/json, text/plain, */*"); + alertRequest.Headers.Add("Accept-Language", "it,it-IT;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"); + alertRequest.Headers.Add("Connection", "keep-alive"); + alertRequest.Headers.Add("Origin", "https://monitoring.solaredge.com"); + alertRequest.Headers.Add("Referer", $"https://monitoring.solaredge.com/solaredge-web/p/site/{args[2]}/"); + alertRequest.Headers.Add("Sec-Fetch-Dest", "empty"); + alertRequest.Headers.Add("Sec-Fetch-Mode", "cors"); + alertRequest.Headers.Add("Sec-Fetch-Site", "same-origin"); + alertRequest.Headers.Add("X-CSRF-TOKEN", csrfToken); + alertRequest.Headers.Add("sec-ch-ua", "\"Microsoft Edge\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\""); + alertRequest.Headers.Add("sec-ch-ua-mobile", "?0"); + alertRequest.Headers.Add("sec-ch-ua-platform", "Windows"); + alertRequest.Content = new StringContent("[{\"fieldFilterOperator\":\"IN\",\"fieldName\":\"status\",\"fieldValue\":[\"OPEN\"]}]", Encoding.UTF8, "application/json"); + + var alertResponse = await client.SendAsync(alertRequest); + string responseText = await alertResponse.Content.ReadAsStringAsync(); + + var apiResult = JsonConvert.DeserializeObject(responseText); + var groupOpenAlert = apiResult?.Alerts?.Where(x => x.Open == true).ToList(); + + ArgumentNullException.ThrowIfNull(groupOpenAlert); + result.Count = groupOpenAlert.Count; + result.Alerts = new List(); + + foreach (var alert in groupOpenAlert) + { + result.Alerts.Add(alert); + } + } + + if (result.Count > 0) + { + Console.WriteLine("Alert Count: " + result.Count); + Console.WriteLine(""); + + foreach (var alert in result.Alerts) + { + Console.WriteLine($"[{result.Alerts.ToList().IndexOf(alert) + 1}]"); + Console.WriteLine("Type :\t\t" + alert.AlertType); + Console.WriteLine("Impact :\t" + alert.Impact); + Console.WriteLine("Device :\t" + alert.ComponentType); + Console.WriteLine("Device S\\N :\t" + alert.ReporterSerialNumber); + Console.WriteLine("On Date :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.CreationDate).ToLocalTime().ToString("dd/MM/yyyy HH:mm")); + Console.WriteLine("Last Trigger :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.LastTrigger).ToLocalTime().ToString("dd/MM/yyyy HH:mm")); + Console.WriteLine(""); + } + + Environment.Exit(2); + } + else + { + Console.WriteLine("OK - System run without alert!"); + Environment.Exit(0); } } - - ArgumentNullException.ThrowIfNull(csrfToken); - - var alertRequest = new HttpRequestMessage(HttpMethod.Post, "https://monitoring.solaredge.com/solaredge-apigw/api/rna/v1.0/site/3834979/alerts?count=20&page=1"); - alertRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"); - alertRequest.Headers.Add("Accept", "application/json, text/plain, */*"); - alertRequest.Headers.Add("Accept-Language", "it,it-IT;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"); - alertRequest.Headers.Add("Connection", "keep-alive"); - alertRequest.Headers.Add("Origin", "https://monitoring.solaredge.com"); - alertRequest.Headers.Add("Referer", "https://monitoring.solaredge.com/solaredge-web/p/site/3834979/"); - alertRequest.Headers.Add("Sec-Fetch-Dest", "empty"); - alertRequest.Headers.Add("Sec-Fetch-Mode", "cors"); - alertRequest.Headers.Add("Sec-Fetch-Site", "same-origin"); - alertRequest.Headers.Add("X-CSRF-TOKEN", csrfToken); - alertRequest.Headers.Add("sec-ch-ua", "\"Microsoft Edge\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\""); - alertRequest.Headers.Add("sec-ch-ua-mobile", "?0"); - alertRequest.Headers.Add("sec-ch-ua-platform", "Windows"); - alertRequest.Content = new StringContent("[{\"fieldFilterOperator\":\"IN\",\"fieldName\":\"status\",\"fieldValue\":[\"OPEN\"]}]", Encoding.UTF8, "application/json"); - - var alertResponse = await client.SendAsync(alertRequest); - string responseText = await alertResponse.Content.ReadAsStringAsync(); - - var apiResult = JsonConvert.DeserializeObject(responseText); - var groupOpenAlert = apiResult.Alerts.Where(x => x.Open == true).ToList(); - - result.Count = groupOpenAlert.Count; - result.Alerts = new List(); - - foreach (var alert in groupOpenAlert) - { - result.Alerts.Add(alert); - } -} - -if (result.Count > 0) -{ - Console.WriteLine("Alert Count: " + result.Count); - Console.WriteLine(""); - - foreach (var alert in result.Alerts) - { - Console.WriteLine($"[{ result.Alerts.ToList().IndexOf(alert) + 1}]"); - Console.WriteLine("Type :\t\t" + alert.AlertType); - Console.WriteLine("Impact :\t" + alert.Impact); - Console.WriteLine("Device :\t" + alert.ComponentType); - Console.WriteLine("Device S\\N :\t" + alert.ReporterSerialNumber); - Console.WriteLine("On Date :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.CreationDate).ToLocalTime().ToString("dd/MM/yyyy HH:mm")); - Console.WriteLine("Last Trigger :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.LastTrigger).ToLocalTime().ToString("dd/MM/yyyy HH:mm")); - Console.WriteLine(""); - } - - Environment.Exit(2); -} -else -{ - Console.WriteLine("System run without alert!"); - Environment.Exit(0); } \ No newline at end of file