using System.Net; using System.Net.NetworkInformation; namespace ChekTimeDahua { internal class Program { static async Task Main(string[] args) { #if DEBUG args = new string[4]; args[0] = "set"; args[1] = "172.16.50.14"; args[2] = "admin"; args[3] = "4NUDZhJ7"; #endif string server, login, password; if (args.Length != 4) return; server = args[1]; login = args[2]; password = args[3]; switch (args[0]) { case "check": string baseUrl = $"http://{server}"; var credCache = new CredentialCache(); credCache.Add(new Uri(baseUrl), "Digest", new NetworkCredential(login, password)); using (var handler = new HttpClientHandler { Credentials = credCache, ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true }) using (var httpClient = new HttpClient(handler)) { string requestUrl = $"{baseUrl}/cgi-bin/global.cgi?action=getCurrentTime"; var response = await httpClient.GetAsync(requestUrl); try { response.EnsureSuccessStatusCode(); } catch (Exception) { Console.WriteLine("1"); return; } var r = await response.Content.ReadAsStringAsync(); var r2 = Convert.ToDateTime(r.Split("=")[1]); if (r2 <= DateTime.Now.AddMinutes(2) && r2 >= DateTime.Now.AddMinutes(-2)) Console.WriteLine("0"); else Console.WriteLine("1"); } break; case "update": string baseUrlU = $"http://{server}"; var credCacheU = new CredentialCache(); credCacheU.Add(new Uri(baseUrlU), "Digest", new NetworkCredential(login, password)); using (var handler = new HttpClientHandler { Credentials = credCacheU, ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true }) using (var httpClient = new HttpClient(handler)) { string requestUrl = $"{baseUrlU}/cgi-bin/global.cgi?action=setCurrentTime&time={DateTime.Now:yyyy-MM-dd HH:mm:ss}"; var response = await httpClient.GetAsync(requestUrl); try { response.EnsureSuccessStatusCode(); } catch (Exception) { Console.WriteLine("1"); return; } var r = await response.Content.ReadAsStringAsync(); //r = r.Replace("\r\n", ""); if (r.StartsWith("OK")) { Console.WriteLine("0"); } else Console.WriteLine("1"); } break; case "set": var list = new List(); var lines = File.ReadAllLines("listCam.csv"); foreach (var line in lines) { list.Add(line); } foreach (var host in list) { using (Ping ping = new Ping()) { PingReply pingReply = ping.Send(host); if (pingReply.Status != IPStatus.Success) { Console.WriteLine($"{host}\t NO PING"); continue; } } string baseUrlS = $"http://{host}"; var credCacheS = new CredentialCache(); credCacheS.Add(new Uri(baseUrlS), "Digest", new NetworkCredential(login, password)); using (var handler = new HttpClientHandler { Credentials = credCacheS, ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true }) using (var httpClient = new HttpClient(handler)) { string requestUrl = $"{baseUrlS}/cgi-bin/global.cgi?action=setCurrentTime&time={DateTime.Now:yyyy-MM-dd HH:mm:ss}"; var response = await httpClient.GetAsync(requestUrl); try { response.EnsureSuccessStatusCode(); } catch (Exception) { Console.WriteLine($"{host}\t Rechek"); } var r = await response.Content.ReadAsStringAsync(); //r = r.Replace("\r\n", ""); if (r.StartsWith("OK")) { Console.WriteLine($"{host}\t OK"); } else Console.WriteLine($"{host}\t Rechek"); } } break; default: break; } } } }