using System; using System.Data; using MySql.Data.MySqlClient; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json.Linq; class Program { // API Key und MySQL Verbindungseinstellungen const string apiKey = "w41axaew9zz7w5bzunn4ujyk45uitln7ftxyxsm5m7321vputnloh21z6868www0hwwe58"; const string connectionString = "Server=192.168.178.201;Database=domainchecker;User ID=root;Password=1td5rugut8;"; static async Task Main(string[] args) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { try { connection.Open(); // SQL-Abfrage um alle Domains mit 'Unknown' Version abzurufen string query = "SELECT `domain`, `version`, `letzte_pruefung`, `cms_name` FROM `wp_versionen` WHERE version = 'Unknown'"; MySqlCommand command = new MySqlCommand(query, connection); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { string domain = reader["domain"].ToString(); string cmsName = reader["cms_name"].ToString(); // Überprüfe CMS Version mit API string apiResponse = await CheckCMSVersion(domain); if (!string.IsNullOrEmpty(apiResponse)) { JObject jsonResponse = JObject.Parse(apiResponse); var results = jsonResponse["results"]; // Überprüfe, ob das ermittelte CMS mit dem in der DB übereinstimmt foreach (var result in results) { string name = result["name"].ToString(); string version = result["version"].ToString(); if (name.Equals(cmsName, StringComparison.OrdinalIgnoreCase)) { reader.Close(); // Aktualisiere die Version in der MySQL Datenbank UpdateCMSVersion(connection, domain, version); reader = command.ExecuteReader(); break; } } } // Warte 10 Sekunden vor der nächsten API-Anfrage await Task.Delay(10000); } reader.Close(); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } } } static async Task CheckCMSVersion(string domain) { string url = $"https://whatcms.org/API/Tech?key={apiKey}&url={domain}"; using (HttpClient client = new HttpClient()) { try { HttpResponseMessage response = await client.GetAsync(url); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); return responseBody; } catch (HttpRequestException e) { Console.WriteLine($"Request error: {e.Message}"); return null; } } } static void UpdateCMSVersion(MySqlConnection connection, string domain, string version) { try { string updateQuery = "UPDATE `wp_versionen` SET `version` = @version, `letzte_pruefung` = NOW() WHERE `domain` = @domain"; MySqlCommand updateCommand = new MySqlCommand(updateQuery, connection); updateCommand.Parameters.AddWithValue("@version", version); updateCommand.Parameters.AddWithValue("@domain", domain); int rowsAffected = updateCommand.ExecuteNonQuery(); if (rowsAffected > 0) { Console.WriteLine($"Domain '{domain}' erfolgreich aktualisiert mit Version '{version}'."); } else { Console.WriteLine($"Keine Aktualisierung für Domain '{domain}'."); } } catch (Exception ex) { Console.WriteLine("Update error: " + ex.Message); } } }