diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-01-03 13:58:15 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-01-03 13:58:15 +0100 |
commit | 4aca87515a5083ae0e31ce3177189fd43b6d05ac (patch) | |
tree | 7b1d9a31393ca090757dc6f0d3859b4fcd93f271 /release/src/router/httpd/ddns.c | |
parent | 008d0be72b2f160382c6e880765e96b64a050c65 (diff) | |
download | tomato-4aca87515a5083ae0e31ce3177189fd43b6d05ac.tar.gz tomato-4aca87515a5083ae0e31ce3177189fd43b6d05ac.tar.bz2 |
patch to Vanilla Tomato 1.28
Diffstat (limited to 'release/src/router/httpd/ddns.c')
-rw-r--r-- | release/src/router/httpd/ddns.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/release/src/router/httpd/ddns.c b/release/src/router/httpd/ddns.c new file mode 100644 index 00000000..2863cf72 --- /dev/null +++ b/release/src/router/httpd/ddns.c @@ -0,0 +1,90 @@ +/* + + Tomato Firmware + Copyright (C) 2006-2009 Jonathan Zarate + +*/ + +#include "tomato.h" + +#include <time.h> +#include <sys/stat.h> + + +void asp_ddnsx(int argc, char **argv) +{ + char *p, *q; + int i; + char s[256]; + char m[256]; + char name[64]; + time_t tt; + struct stat st; + + switch (get_wan_proto()) { + case WP_PPTP: + p = "pptp_get_ip"; + break; + case WP_L2TP: + p = "l2tp_get_ip"; + break; + default: + p = "wan_ipaddr"; + break; + } + + web_printf( + "\nddnsx_ip = '%s';\n" + "ddnsx_msg = [", + nvram_safe_get(p)); + + for (i = 0; i < 2; ++i) { + web_puts(i ? "','" : "'"); + sprintf(name, "/var/lib/mdu/ddnsx%d.msg", i); + f_read_string(name, m, sizeof(m)); // null term'd even on error + if (m[0] != 0) { + if ((stat(name, &st) == 0) && (st.st_mtime > Y2K)) { + strftime(s, sizeof(s), "%a, %d %b %Y %H:%M:%S %z: ", localtime(&st.st_mtime)); + web_puts(s); + } + web_putj(m); + } + } + + web_puts("'];\nddnsx_last = ["); + + for (i = 0; i < 2; ++i) { + web_puts(i ? "','" : "'"); + sprintf(name, "ddnsx%d", i); + if (!nvram_match(name, "")) { + sprintf(name, "ddnsx%d_cache", i); + if ((p = nvram_get(name)) == NULL) continue; + tt = strtoul(p, &q, 10); + if (*q++ != ',') continue; + if (tt > Y2K) { + strftime(s, sizeof(s), "%a, %d %b %Y %H:%M:%S %z: ", localtime(&tt)); + web_puts(s); + } + web_putj(q); + } + } + web_puts("'];\n"); +} + +void asp_ddnsx_ip(int argc, char **argv) +{ + const char *p; + + switch (get_wan_proto()) { + case WP_PPTP: + p = "pptp_get_ip"; + break; + case WP_L2TP: + p = "l2tp_get_ip"; + break; + default: + p = "wan_ipaddr"; + break; + } + web_puts(nvram_safe_get(p)); +} |