handled arguments and removed hardwired sensitive variables

This commit is contained in:
Claudio Boggian
2023-11-13 12:00:10 +01:00
parent 6e46e413ba
commit 33977d5047
+91 -71
View File
@@ -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)
/// <summary>
/// This method retrive alerts from SolarEdge Monitoring site
/// </summary>
/// <param name="args"> [0] UserName - [1] Password - [2] SiteId </param>
/// <returns>Write on console the result</returns>
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 <UserName> <Password> <SiteId>");
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<SolarEdgeModel>(responseText);
var groupOpenAlert = apiResult?.Alerts?.Where(x => x.Open == true).ToList();
ArgumentNullException.ThrowIfNull(groupOpenAlert);
result.Count = groupOpenAlert.Count;
result.Alerts = new List<Alert>();
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<SolarEdgeModel>(responseText);
var groupOpenAlert = apiResult.Alerts.Where(x => x.Open == true).ToList();
result.Count = groupOpenAlert.Count;
result.Alerts = new List<Alert>();
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);
}