[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 05/23] check reachability and dns


MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: arf20 <aruizfernandez05@xxxxxxxxx>

---
 .gitignore     |   1 +
 index.htm.tmpl |   8 +++++
 monitor        | Bin 52712 -> 0 bytes
 monitor.c      |  94 ++++++++++++++++++++++++++++++++++++-------------
 monitor.cfg    |   8 ++---
 5 files changed, 83 insertions(+), 28 deletions(-)
 create mode 100644 .gitignore
 delete mode 100755 monitor

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dd3516c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+monitor
diff --git a/index.htm.tmpl b/index.htm.tmpl
index 462f744..e545845 100644
--- a/index.htm.tmpl
+++ b/index.htm.tmpl
@@ -8,6 +8,14 @@
 table, th, td {
   border: 1px solid #abb2bf;
 }
+
+.up {
+    background-color: green;
+}
+
+.down {
+    background-color: red;
+}
         </style>
     </head>
 
diff --git a/monitor b/monitor
deleted file mode 100755
index 9c88a54119a6915b9e3cbe36c7f999cfae49b2af..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 52712
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

diff --git a/monitor.c b/monitor.c
index e86154b..f965417 100644
--- a/monitor.c
+++ b/monitor.c
@@ -31,7 +31,6 @@ typedef struct {
 static target_t targets[256];
 static size_t target_n = 0;
 
-static CURL *curl;
 
 static char timestr[256];
 
@@ -93,16 +92,7 @@ monitor_init(const char *cfg_file) {
         return -1;
     }
 
-    curl = curl_easy_init();
-    if (!curl) {
-        fprintf(stderr, "Error allocating cURL handle\n");
-        return -1;
-    }
-
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
-
-    return 0;
+        return 0;
 }
 
 const char *
@@ -111,15 +101,15 @@ monitor_generate_status_html()
     static char buff[65535];
 
     static char *status_html[] = {
-        "down",
-        "up"
+        "<td class=\"down\">down</td>",
+        "<td class=\"up\">up</td>"
     };
    
     char *pos = buff;
 
     for (size_t i = 0; i < target_n; i++) {
         pos += snprintf(pos, 65535,
-            "<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n",
+            "<tr><td>%s</td><td>%s</td>%s</tr>\n",
             type_str[targets[i].type],
             targets[i].target,
             status_html[targets[i].status]);
@@ -129,40 +119,91 @@ monitor_generate_status_html()
 }
 
 static int
-check_reach(const char *endpoint)
+check_reach(const char *target)
 {
-    return STATUS_DOWN;
+    static char ping_cmd[256];
+    
+    snprintf(ping_cmd, 256, "ping -W1 -c1 %s > /dev/null", target);
+    /* i know */
+    if (system(ping_cmd) == 0) {
+        printf("reachable\n");
+        return STATUS_UP;
+    } else {
+        printf("unreachable\n");
+        return STATUS_DOWN;
+    }
 }
 
 static int
-check_dns(const char *endpoint)
+check_dns(const char *name)
 {
-    return STATUS_DOWN;
+    static char dig_cmd[512];
+    static char cmd_out[256];
+
+    snprintf(dig_cmd, 512, "dig +nocookie +short %s NS", name);
+    FILE *pf = popen(dig_cmd, "r");
+    fread(cmd_out, 256, 1, pf);
+    pclose(pf);
+
+    if (*cmd_out == '\0') {
+        printf("no ns\n");
+        return STATUS_DOWN;
+    }
+    
+    *strchr(cmd_out, '\n') = '\0';
+
+    snprintf(dig_cmd, 512, "dig +nocookie +short @%s %s A", cmd_out, name);
+    pf = popen(dig_cmd, "r");
+    fread(cmd_out, 256, 1, pf);
+    pclose(pf);
+    
+    if (*cmd_out == '\0') {
+        printf("no a\n");
+        return STATUS_DOWN;
+    }
+    
+    *strchr(cmd_out, '\n') = '\0';
+
+    printf("%s\n", cmd_out);
+
+    return STATUS_UP;
 }
 
 static int
 check_http(const char *endpoint)
 {
+    CURL *curl = curl_easy_init();
+    if (!curl) {
+        fprintf(stderr, "Error allocating cURL handle\n");
+        return -1;
+    }
+
+    //curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
+    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1);
+
     curl_easy_setopt(curl, CURLOPT_URL, endpoint);
     CURLcode curl_code = curl_easy_perform(curl);
     if (curl_code != CURLE_OK) {
-        printf("[%s] [monitor] check http: %s: curl_easy_perform() failed: %s\n",
-            timestr, endpoint, curl_easy_strerror(curl_code));
+        printf("curl_easy_perform() failed: %s\n",
+            curl_easy_strerror(curl_code));
         return STATUS_DOWN;
     }
 
     long http_code;
     curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
 
-    printf("[%s] [monitor] check http: %s: %ld\n",
-        timestr, endpoint, http_code);
+    curl_easy_cleanup(curl);
 
-    return STATUS_UP;
+    printf("%ld\n", http_code);
+
+    return http_code == 200 ? STATUS_UP : STATUS_DOWN;
 }
 
 void
 monitor_check()
 {
+    static size_t check_num = 0;
     time_t time_now = time(NULL);
     struct tm *tm_now = gmtime(&time_now);
     strftime(timestr, 256, "%Y-%m-%d %H-%M-%S", tm_now);
@@ -173,7 +214,12 @@ monitor_check()
         check_http
     };
 
-    for (size_t i = 0; i < target_n; i++)
+    for (size_t i = 0; i < target_n; i++) {
+        printf("[%s] [monitor] check #%ld %s: %s: ",
+            timestr, check_num, type_str[targets[i].type], targets[i].target);
         targets[i].status = check_funcs[targets[i].type](targets[i].target);
+    }
+
+    check_num++;
 }
 
diff --git a/monitor.cfg b/monitor.cfg
index d8a838f..b34ec8a 100644
--- a/monitor.cfg
+++ b/monitor.cfg
@@ -1,7 +1,7 @@
 # Monitor config
 # type=target
-reach=2.59.235.35
-dns=arf20.com
-web=http://arf20.com
-web=https://arf20.com
+reach=10.0.0.0
+dns=arf20.co
+web=http://arf20.com:4321
+web=https://arf20.co
 
-- 
2.47.3


References:
[arfnet2-status PATCH 00/23] First releasearf20 <arf20@xxxxxxxxx>