This shows you the differences between two versions of the page.
— |
sdk:scripts:webpage [2015/05/05 15:04] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== SDK Script webpage.are ====== | ||
+ | <code c webpage.are> | ||
+ | /* DESC: This script will generate a page which can be viewed in the Web Manager | ||
+ | * Copyright (C) 2012 NetModule AG, Switzerland | ||
+ | */ | ||
+ | |||
+ | ID = 1; | ||
+ | |||
+ | /* show interface overview */ | ||
+ | void show_interfaces () | ||
+ | { | ||
+ | interfaces = mkarray(); | ||
+ | nr_interfaces = 0; | ||
+ | |||
+ | status = nb_status("lan"); | ||
+ | stlist = qsort(struct_fields(status)); | ||
+ | |||
+ | for (j = 0; j < length(stlist); j++) { | ||
+ | key = stlist[j]; | ||
+ | |||
+ | pos = strstr(key, "_ADDRESS"); | ||
+ | if (!is_void(pos)) { | ||
+ | ifc = left(key, pos); | ||
+ | interfaces[nr_interfaces++] = ifc; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | nb_page_respond(page, '<h3>LAN Interfaces Overview</h3>\n'); | ||
+ | nb_page_respond(page, '<table>\n'); | ||
+ | |||
+ | interfaces = qsort(interfaces); | ||
+ | for (i=0; i<nr_interfaces; i++) { | ||
+ | ifc = interfaces[i]; | ||
+ | nb_page_respond(page, '<tr>\n'); | ||
+ | nb_page_respond(page, '<td>%s</td>', ifc); | ||
+ | nb_page_respond(page, '<td><a href="sdkPage.php?id=%08X&ifc=%s">view</a></td>\n', ID, ifc); | ||
+ | nb_page_respond(page, '</tr>\n'); | ||
+ | } | ||
+ | |||
+ | nb_page_respond(page, '</table>\n'); | ||
+ | nb_page_finish(page); | ||
+ | } | ||
+ | |||
+ | /* show interface status */ | ||
+ | void show_interface (string ifc) | ||
+ | { | ||
+ | status = nb_status("lan"); | ||
+ | stlist = struct_fields(status); | ||
+ | |||
+ | nb_page_respond(page, '<h3>Interface %s Status</h3>\n', ifc); | ||
+ | nb_page_respond(page, '<table>\n'); | ||
+ | |||
+ | pattern = strcat(ifc, "_"); | ||
+ | plen = strlen(pattern); | ||
+ | for (j = 0; j < length(stlist); j++) { | ||
+ | key = stlist[j]; | ||
+ | if (left(key, plen) == pattern) { | ||
+ | nb_page_respond(page, '<tr>\n'); | ||
+ | nb_page_respond(page, '<td>%s</td>', substr(key, plen)); | ||
+ | nb_page_respond(page, '<td>%s</td>', struct_get(status, key)); | ||
+ | nb_page_respond(page, '</tr>\n'); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | nb_page_respond(page, '</table>\n'); | ||
+ | nb_page_respond(page, '<br><br><a href="sdkPage.php?id=%08X">back</a>\n', ID); | ||
+ | nb_page_finish(page); | ||
+ | } | ||
+ | |||
+ | /* register page */ | ||
+ | page = nb_page_register(ID, "LAN Interfaces", "Network Overview"); | ||
+ | if (is_void(page)) { | ||
+ | printf("unable to register page\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | printf("waiting for requests...\n"); | ||
+ | while (1) { | ||
+ | /* wait for page request */ | ||
+ | request = nb_page_request(page); | ||
+ | |||
+ | if (!is_void(request)) { | ||
+ | /* evaluate GET params */ | ||
+ | GET = struct_get(request, "GET"); | ||
+ | |||
+ | ifc = ""; | ||
+ | for (k = 0; k < length(GET); k++) { | ||
+ | key = struct_get(GET[k], "key"); | ||
+ | if (key == "ifc") { | ||
+ | ifc = struct_get(GET[k], "value"); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | if (ifc != "") { | ||
+ | /* show requested interface */ | ||
+ | show_interface(ifc); | ||
+ | } else { | ||
+ | /* show interface overview */ | ||
+ | show_interfaces(); | ||
+ | } | ||
+ | } | ||
+ | sleep(1); | ||
+ | } | ||
+ | |||
+ | nb_page_unregister(page); | ||
+ | |||
+ | exit(0); | ||
+ | |||
+ | </code> | ||