# HG changeset patch # User Michiel Broek # Date 1557414116 -7200 # Node ID ff30227c09034f9fda76a3c6f0817d6b0c48365a # Parent 95cf33f8021f7cb3adc9732f0cc0bc797b6877b9 Removed ARCHIVER commands and web pages. diff -r 95cf33f8021f -r ff30227c0903 thermferm/server.c --- a/thermferm/server.c Thu May 09 16:40:17 2019 +0200 +++ b/thermferm/server.c Thu May 09 17:01:56 2019 +0200 @@ -255,299 +255,6 @@ -/* - * ARCHIVE DIR - * ARCHIVE GET filename - * ARCHIVE LOG filename - * ARCHIVE HELP - */ -int cmd_archive(char *buf) -{ - char *opt, *param, *name = NULL, *filename = NULL, *logname = NULL, mbits[11], tstr[24]; - DIR *dd; - FILE *fp; - struct dirent *result; - ls_list *lsx = NULL, *tmp; - struct stat sbuf; - struct tm *tbuf; - time_t ftime; - int found; - units_list *unit; - - - opt = strtok(buf, " \0"); - opt = strtok(NULL, " \0"); - - if (opt == NULL) { - srv_send((char *)"501 Subcommand missing"); - return 0; - } - param = strtok(NULL, "\0"); - - if (strcmp(opt, (char *)"HELP") == 0) { - srv_send((char *)"100 Help text follows:"); - srv_send((char *)"Recognized commands:"); - srv_send((char *)"ARCHIVE DIR Archived logfiles directory"); - srv_send((char *)"ARCHIVE GET filename Archived logfile download"); - srv_send((char *)"ARCHIVE LOG filename Archived logfile data in graphsteps"); - srv_send((char *)"."); - return 0; - } - - if (strcmp(opt, (char *)"DIR") == 0) { - - if (getenv((char *)"USER") == NULL) { - name = xstrcpy((char *)"/root"); - } else { - name = xstrcpy(getenv((char *)"HOME")); - } - name = xstrcat(name, (char *)"/.thermferm/log/"); - - if ((dd = opendir(name))) { - for (;;) { - if (! (result = readdir(dd))) { - syslog(LOG_NOTICE, "readdir: error=%d", errno); - break; - } - if (result->d_name[0] != '.') { - filename = xstrcpy(name); - filename = xstrcat(filename, result->d_name); - /* - * Remove files from the list when they are in use - */ - found = 0; - for (unit = Config.units; unit; unit = unit->next) { - if (unit->mode != UNITMODE_OFF) { - logname = xstrcpy(unit->product_code); - logname = xstrcat(logname, (char *)" "); - logname = xstrcat(logname, unit->product_name); - logname = xstrcat(logname, (char *)".log"); - if (! strcmp(result->d_name, logname)) - found = 1; - free(logname); - logname = NULL; - } - } - if ((found == 0) && ((stat(filename, &sbuf)) == 0)) { - fill_list(&lsx, result->d_name, sbuf.st_mode, sbuf.st_size, sbuf.st_mtime); - } - free(filename); - filename = NULL; - } - } - closedir(dd); - } else { - syslog(LOG_NOTICE, "opendir: \"%s\" error=%d", name, errno); - } - - sort_list(&lsx); - - srv_send((char *)"212 Archive directory follows:"); - for (tmp = lsx; tmp; tmp = tmp->next) { - sprintf(mbits, "----------"); - if (tmp->mode & S_IRUSR) - mbits[1] = 'r'; - if (tmp->mode & S_IWUSR) - mbits[2] = 'w'; - if (tmp->mode & S_IXUSR) - mbits[3] = 'x'; - if (tmp->mode & S_IRGRP) - mbits[4] = 'r'; - if (tmp->mode & S_IWGRP) - mbits[5] = 'w'; - if (tmp->mode & S_IXGRP) - mbits[6] = 'x'; - if (tmp->mode & S_IROTH) - mbits[7] = 'r'; - if (tmp->mode & S_IWOTH) - mbits[8] = 'w'; - if (tmp->mode & S_IXOTH) - mbits[9] = 'x'; - ftime = tmp->mtime; - tbuf = localtime(&ftime); - sprintf(tstr, "%02d %s %04d %02d:%02d", tbuf->tm_mday, MONTH[tbuf->tm_mon], tbuf->tm_year+1900, tbuf->tm_hour, tbuf->tm_min); - srv_send((char *)"%s,%s,%d,%s", tmp->d_name, mbits, tmp->size, tstr); - } - srv_send((char *)"."); - tidy_lslist(&lsx); - - free(name); - name = NULL; - return 0; - } - - if (param == NULL) { - srv_send((char *)"502 Parameter missing"); - return 0; - } - - if (strcmp(opt, (char *)"GET") == 0) { - if (getenv((char *)"USER") == NULL) { - name = xstrcpy((char *)"/root"); - } else { - name = xstrcpy(getenv((char *)"HOME")); - } - name = xstrcat(name, (char *)"/.thermferm/log/"); - name = xstrcat(name, param); - - if ((fp = fopen(name, "r"))) { - char buffer[256]; - - srv_send((char *)"212 Archive file follows:"); - while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { - int i; - - for (i = 0; i < strlen(buffer); i++) { - if (buffer[i] == '\n') - buffer[i] = '\0'; - if (buffer[i] == '\r') - buffer[i] = '\0'; - } - srv_send(buffer); - } - srv_send((char *)"."); - fclose(fp); - } else { - srv_send((char *)"440 No such file"); - } - - free(name); - name = NULL; - return 0; - } - - if (strcmp(opt, (char *)"LOG") == 0) { - if (getenv((char *)"USER") == NULL) { - name = xstrcpy((char *)"/root"); - } else { - name = xstrcpy(getenv((char *)"HOME")); - } - name = xstrcat(name, (char *)"/.thermferm/log/"); - name = xstrcat(name, param); - - if ((fp = fopen(name, "r"))) { - char buffer[256], outbuf[256], q[5], hr[3]; - char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n, *chiller_n; - char *heater_u, *cooler_u; - int lines = 0, heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, graphstep = 0; - float room_t = 0.0; - - srv_send((char *)"212 Logfile list follows:"); - while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { - lines++; - } - fseek(fp, 0L, SEEK_SET); - /* - * We have counted the lines in the logfile including the header lines. - * The header lines should be ignored but there are so few of them, we - * just include them in the total. - * Now find a reasonable interval of lines to sent to the client. - */ - for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) { - if (lines < GRAPH_DATALINES[graphstep]) { - break; - } - } - if (graphstep > MAX_INTERVALS) - graphstep = MAX_INTERVALS; - syslog(LOG_NOTICE, "ARCHIVE LOG %s: lines=%d, interval=%d, graphstep=%d", param, lines, GRAPH_INTERVAL[graphstep], graphstep); - - while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { - /* - * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA,18.000,20.1,5.312 - * | | | | | | | | | | | | | | | - * date_n | | | | | | | | | | | | | | - * mode_n ----------+ | | | | | | | | | | | | | - * air_n -----------------+ | | | | | | | | | | | | - * beer_n -----------------------+ | | | | | | | | | | | - * target_lo_n ------------------------+ | | | | | | | | | | - * heater_n -------------------------------+ | | | | | | | | | - * cooler_n ---------------------------------+ | | | | | | | | - * not used ------------------------------------+ | | | | | | | - * not used ---------------------------------------+ | | | | | | - * heater_u --------------------------------------------+ | | | | | - * cooler_u ------------------------------------------------+ | | | | - * not used ---------------------------------------------------+ | | | - * room_n ----------------------------------------------------------+ | | - * target_hi_n -----------------------------------------------------------+ | - * chiller_n ------------------------------------------------------------------+ - */ - hr[0] = q[0] = buffer[11]; - hr[1] = q[1] = buffer[12]; - q[2] = buffer[14]; - q[3] = buffer[15]; - hr[2] = '\0'; - buffer[strlen(buffer) -1] = '\0'; - date_n = strtok(buffer, ",\0"); /* timestamp */ - mode_n = strtok(NULL, ",\0"); /* unit mode */ - air_n = strtok(NULL, ",\0"); /* air temp */ - beer_n = strtok(NULL, ",\0"); /* beer temp */ - target_lo_n = strtok(NULL, ",\0"); /* target low temp */ - heater_n = strtok(NULL, ",\0"); /* current heater state */ - cooler_n = strtok(NULL, ",\0"); /* current cooler state */ - heater_u = strtok(NULL, ",\0"); /* current fan state */ - heater_u = strtok(NULL, ",\0"); /* current door state */ - heater_u = strtok(NULL, ",\0"); /* heater use counter */ - cooler_u = strtok(NULL, ",\0"); /* cooler use counter */ - room_n = strtok(NULL, ",\0"); /* fan use counter */ - room_n = strtok(NULL, ",\0"); /* room temperature */ - target_hi_n = strtok(NULL, ",\0"); /* target high temp */ - chiller_n = strtok(NULL, ",\0"); /* chiller temp */ - - if (strncmp(mode_n, (char *)"Mode", 4)) { - /* - * Output a line at the right intervals - */ - int hour = atoi(hr); - if (((graphstep == 1)) || - ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) || - ((graphstep == 3) && ((q[2] == '0' && q[3] == '0') || (q[2] == '1' && q[3] == '5') || (q[2] == '3' && q[3] == '0') || (q[2] == '4' && q[3] == '5'))) || - ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) || - ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) || - ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */ - ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */ - ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */ - heat_used = cool_used = 0; - if (heater_u && strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) { - if (h && heater_l) { - heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); - } - } - if (cooler_u && strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) { - if (c && cooler_l) { - cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); - } - } - if (room_n) - sscanf(room_n, "%f", &room_t); - if (target_hi_n == NULL) - target_hi_n = target_lo_n; - snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s", - date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, heat_used, cool_used, room_t,target_hi_n, chiller_n); - srv_send(outbuf); - if (heater_u && h && strcmp(heater_u, "NA")) - heater_l = h; - if (cooler_u && c & strcmp(cooler_u, "NA")) - cooler_l = c; - } - } - } - - srv_send((char *)"."); - fclose(fp); - } else { - srv_send((char *)"440 No such file"); - } - - free(name); - name = NULL; - } - - return 0; -} - - - int delete_Device(char *uuid) { devices_list *current = Config.devices; @@ -2419,10 +2126,7 @@ /* * Process commands from the client */ - if (strncmp(buf, "ARCHIVE", 7) == 0) { - cmd_archive(buf); - - } else if (strncmp(buf, "DEVICE", 6) == 0) { + if (strncmp(buf, "DEVICE", 6) == 0) { if (cmd_device(buf)) wrconfig(); @@ -2435,8 +2139,6 @@ srv_send((char *)"Recognized commands:"); srv_send((char *)""); // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 - srv_send((char *)"ARCHIVE [parameters] Archive commands"); - srv_send((char *)"ARCHIVE HELP Archive help screen"); srv_send((char *)"DEVICE [parameters] Device commands"); srv_send((char *)"DEVICE HELP Device help screen"); srv_send((char *)"GLOBAL [parameters] Global commands"); diff -r 95cf33f8021f -r ff30227c0903 www-thermferm/archives.php --- a/www-thermferm/archives.php Thu May 09 16:40:17 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,328 +0,0 @@ - - * - * Copyright (C) 2015-2018 - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * ThermFerm is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ThermFerm; see the file COPYING. If not, write to the Free - * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - - -require_once('utilities.php'); -$my_style = 'ui-redmond'; - -if (isset($_GET['action'])) { - switch ($_GET['action']) { - case 'dl': archive_dl(); - break; - case 'view': archive_view(); - break; - default: break; - } -} else { - archive_dir(); -} - -exit; - -/**************************************************************************** - * - */ - -/* - * View an archived file in graph format - */ -function archive_view() { - - global $my_style; - - $name = urldecode($_GET['name']); - $return = urldecode($_GET['return']); - - $answer = send_cmd('GLOBAL GET'); - $arr = explode("\r\n", $answer); - $version = "?"; - - if (startsWith($arr[0], "213")) { - $j = 1; - while (1) { - if (strcmp($arr[$j], ".") == 0) - break; - $f = explode(",", $arr[$j]); - - if ($f[0] == "RELEASE") - $version = $f[1]; - $j++; - } - } - - $outstr = ''.PHP_EOL; - $outstr .= ''.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' Archive View '.$name.''.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - - $outstr .= ' '.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= '
'.PHP_EOL; - - $outstr .= ' '.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - - $outstr .= ' '.PHP_EOL; - $outstr .= build_footer(); - echo $outstr; -} - - - -/* - * Download popup. The file contents is dynamic generated from - * the thermferm server. - */ -function archive_dl() { - - $name = urldecode($_GET['name']) . ".log"; - - header('Content-Type: text/plain'); - header('Content-Disposition: attachment; filename="'.$name.'"'); - - $answer = send_cmd('ARCHIVE GET '.$name); - $arr = explode("\r\n", $answer); - - $outstr = ''; - if (startsWith($arr[0], "212")) { - $j = 1; - while (1) { - if (strcmp($arr[$j], ".") == 0) - break; - $outstr .= $arr[$j].PHP_EOL; - $j++; - } - } - echo $outstr; - exit(); -} - - - -/* - * Show directory - */ -function archive_dir() { - - $answer = send_cmd("ARCHIVE DIR"); - $reply = explode("\r\n", $answer); - - $outstr = build_header("Archived logfiles"); - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - - if (startsWith($reply[0], "212")) { - $j = 1; - while (1) { - if (strcmp($reply[$j], ".") == 0) - break; - $f = explode(",", $reply[$j]); - $name = urlencode(basename($f[0], ".log")); - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $j++; - } - } - - $outstr .= '
File nameModeSizeDateAction
'.$f[0].''.$f[1].''.$f[2].''.$f[3].'Download'; - $outstr .= ' View
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= build_footer(); - echo $outstr; -} - - - diff -r 95cf33f8021f -r ff30227c0903 www-thermferm/maintenance.php --- a/www-thermferm/maintenance.php Thu May 09 16:40:17 2019 +0200 +++ b/www-thermferm/maintenance.php Thu May 09 17:01:56 2019 +0200 @@ -79,9 +79,6 @@ $outstr .= '
'.PHP_EOL; $outstr .= ' '.PHP_EOL; $outstr .= '
'.PHP_EOL; -$outstr .= '
'.PHP_EOL; -$outstr .= ' '.PHP_EOL; -$outstr .= '
'.PHP_EOL; $outstr .= '
'.PHP_EOL; $outstr .= '