~ubuntu-branches/ubuntu/trusty/ntop/trusty

« back to all changes in this revision

Viewing changes to admin.c

  • Committer: Bazaar Package Importer
  • Author(s): Ola Lundqvist
  • Date: 2008-06-15 14:38:28 UTC
  • mfrom: (2.1.11 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080615143828-oalh84nda2hje4do
Tags: 3:3.3-11
Correction of Polish translation encoding, closes: #479490. Thanks
to Christian Perrier <bubulle@debian.org> for the help.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 *  Copyright (C) 1998-2005 Luca Deri <deri@ntop.org>
 
2
 *  Copyright (C) 1998-2007 Luca Deri <deri@ntop.org>
3
3
 *
4
4
 *                          http://www.ntop.org/
5
5
 *
55
55
        safe_snprintf(__FILE__, __LINE__, buf, LEN_GENERAL_WORK_BUFFER,
56
56
                      "<tr><th "TH_BG" align=\"left\"><img src=\"/user.gif\">"
57
57
                      "&nbsp;%s</th><td "TD_BG"><a href=\"/%s?%s\">"
58
 
                      "<img alt=\"Modify User\" src=\"/modifyUser.gif\" "
 
58
                      "<img class=tooltip alt=\"Modify User\" src=\"/"CONST_EDIT_IMG"\" "
59
59
                        "border=\"0\" align=\"absmiddle\"></a>"
60
60
                      "&nbsp;</td></tr></th></tr>\n",
61
61
                      &key_data.dptr[1], CONST_MODIFY_USERS, key_data.dptr);
66
66
        safe_snprintf(__FILE__, __LINE__, buf, LEN_GENERAL_WORK_BUFFER,
67
67
                      "<tr><th "TH_BG" align=\"left\"><img src=\"/user.gif\">"
68
68
                      "&nbsp;%s</tg><td "TD_BG"><a href=\"/%s?%s\">"
69
 
                      "<img alt=\"Modify User\" src=\"/modifyUser.gif\" border=\"0\" "
 
69
                      "<img class=tooltip alt=\"Modify User\" src=\"/"CONST_EDIT_IMG"\" border=\"0\" "
70
70
                          "align=\"absmiddle\"></a>"
71
71
                      "&nbsp;<A HREF=/%s?%s>"
72
 
                      "<img alt=\"Delete User\" src=\"/deleteUser.gif\" border=\"0\" "
 
72
                      "<img class=tooltip alt=\"Delete User\" src=\"/deleteUser.gif\" border=\"0\" "
73
73
                          "align=\"absmiddle\">"
74
74
                      "</a></td></tr></th></tr>\n",
75
75
                      &key_data.dptr[1], CONST_MODIFY_USERS, ebuf, CONST_DELETE_USER, ebuf);
127
127
  } else {
128
128
    sendString("<CENTER>\n");
129
129
 
130
 
    sendString("<script Language=\"JavaScript\">\nfunction CheckForm(theForm) {\nif (theForm.pw.value != theForm.pw1.value) {\n    alert(\"Passwords do not match. Please try again.\");\n    theForm.pw1.focus();\n    return(false);\n  }\n  return (true);\n}\n</script>\n");
 
130
    sendString("<script Language=\"JavaScript\">\nfunction CheckForm(theForm) "
 
131
               "{\nif (theForm.pw.value != theForm.pw1.value) {\n    alert(\"Passwords do not match. "
 
132
               "Please try again.\");\n    theForm.pw1.focus();\n    return(false);\n  }\n  return(true);"
 
133
               "\n}\n</script>\n");
131
134
 
132
135
    sendString("<FORM METHOD=POST ACTION=/doAddUser onsubmit=\"return CheckForm(this)\">\n");
133
136
 
143
146
      sendString("<INPUT TYPE=text NAME=user SIZE=20>\n");
144
147
 
145
148
    sendString("</TD>\n</TR>\n");
146
 
    sendString("<TR>\n<TH ALIGN=right>Password:&nbsp;</TH>"
 
149
    sendString("<TR><TH ALIGN=right>Password:&nbsp;</TH>"
147
150
               "<TD ALIGN=left><INPUT TYPE=password NAME=pw SIZE=20></TD></TR>\n");
148
 
    sendString("<TR>\n<TH ALIGN=right>Verify Password:&nbsp;</TH>"
 
151
    sendString("<TR><TH ALIGN=right>Verify Password:&nbsp;</TH>"
149
152
               "<TD ALIGN=left><INPUT TYPE=password NAME=pw1 SIZE=20></TD></TR>\n");
 
153
 
 
154
    /*********** Communities **********/
 
155
    
 
156
    {
 
157
      int i, numUsers=0, len = strlen(COMMUNITY_PREFIX);
 
158
      datum key_data, return_data;
 
159
      char *aubuf=NULL, *userCommunities[20], communities[128], key[256];
 
160
      
 
161
      sendString("<TR><TH ALIGN=right VALIGN=top>Authorised Communities:&nbsp;</TH>"
 
162
                 "<TD ALIGN=left>\n<SELECT NAME=communities MULTIPLE>\n");
 
163
      
 
164
      memset(userCommunities, 0, sizeof(userCommunities));
 
165
 
 
166
      if(user != NULL) {
 
167
        snprintf(key, sizeof(key), "%s%s", COMMUNITY_PREFIX, &user[1]);
 
168
        
 
169
        if(fetchPwValue(key, communities, sizeof(communities)) == 0) {
 
170
          char *strtokState, *item;
 
171
          
 
172
          item = strtok_r(communities, "&", &strtokState);
 
173
          for(i=0; (item != NULL) && (i < sizeof(userCommunities)-1); i++) {
 
174
            userCommunities[i] = item;
 
175
            item = strtok_r(NULL, "&", &strtokState);
 
176
          }
 
177
          
 
178
          if(item != NULL)
 
179
            traceEvent(CONST_TRACE_ERROR, "Too many communities for user='%s'", &user[1]);
 
180
          
 
181
          userCommunities[i] = NULL;
 
182
        }
 
183
      }
 
184
      
 
185
      return_data = gdbm_firstkey(myGlobals.prefsFile);
 
186
 
 
187
      while(return_data.dptr != NULL) {
 
188
        key_data = return_data;
 
189
 
 
190
        if(!strncmp(key_data.dptr, COMMUNITY_PREFIX, len)) {
 
191
          int found = 0;
 
192
          char *communityName = &key_data.dptr[len];
 
193
 
 
194
          for(i=0; userCommunities[i] != NULL; i++)
 
195
            if(strcmp(userCommunities[i], communityName) == 0) {
 
196
              found = 1;
 
197
          }
 
198
 
 
199
          /* Make sure that at least a user is selected */
 
200
          if((numUsers == 0) && (userCommunities[0] == NULL)) found = 1;
 
201
 
 
202
          safe_snprintf(__FILE__, __LINE__, tmpStr, sizeof(tmpStr),
 
203
                        "<option value=%s %s>%s</option>\n",
 
204
                        communityName,
 
205
                        found ? "SELECTED" : "", 
 
206
                        communityName);
 
207
          sendString(tmpStr);
 
208
          numUsers++;
 
209
        }
 
210
 
 
211
        return_data = gdbm_nextkey(myGlobals.prefsFile, key_data);
 
212
        free(key_data.dptr);
 
213
      }
 
214
 
 
215
      if(aubuf != NULL) free(aubuf); /* (**) */
 
216
 
 
217
      sendString("</SELECT>\n</TD></TR>\n");
 
218
    }
 
219
 
 
220
 
150
221
    sendString("</TABLE>"TABLE_OFF"\n");
151
222
 
152
223
    safe_snprintf(__FILE__, __LINE__, tmpStr, sizeof(tmpStr),
157
228
    sendString("</FORM>\n");
158
229
    sendString("</CENTER>\n");
159
230
  }
 
231
 
160
232
  sendMenuFooter(0, 2);
161
233
}
162
234
 
200
272
}
201
273
/* *******************************/
202
274
 
 
275
#define MAX_NUM_COMMUNITIES     32
 
276
 
203
277
void doAddUser(int len) {
204
 
  char *err=NULL;
205
 
 
 
278
  char *err=NULL, key_str[64], value_str[256];
 
279
  int j;
 
280
  
206
281
  if(len <= 0) {
207
282
    err = "ERROR: both user and password must be non empty fields.";
208
283
  } else {
209
 
    char postData[256], *key, *user=NULL, *pw=NULL;
210
 
    int i, idx, badChar=0;
 
284
    char postData[256], *key, *user=NULL, *pw=NULL, *communities[MAX_NUM_COMMUNITIES];
 
285
    int i, idx, badChar=0, num_communities = 0;
211
286
 
212
287
    if((idx = readHTTPpostData(len, postData, sizeof(postData))) < 0)
213
288
      return; /* FIXME (DL): an HTTP error code should be sent here */
222
297
          user = &postData[i+1];
223
298
        else if(strcmp(key, "pw") == 0)
224
299
          pw = &postData[i+1];
 
300
        else if(strcmp(key, "communities") == 0) {
 
301
          if(num_communities+1 < MAX_NUM_COMMUNITIES) {
 
302
            communities[num_communities] = strdup(&postData[i+1]);
 
303
            
 
304
            for(j=0; j<strlen(communities[num_communities]); j++)
 
305
              if(communities[num_communities][j] == '&') {
 
306
                communities[num_communities][j] = '\0';
 
307
                break;
 
308
              }
 
309
 
 
310
            num_communities++;
 
311
          }
 
312
        }
225
313
        key = NULL;
226
314
      }
227
315
    }
273
361
      traceEvent(CONST_TRACE_INFO, "User='%s' - Pw='%s [%s]'", user, pw, data_data.dptr);
274
362
#endif
275
363
 
 
364
      snprintf(key_str, sizeof(key_str), "%s%s", COMMUNITY_PREFIX, user);
 
365
      value_str[0] = '\0';
 
366
      
 
367
      if(num_communities > 0) {
 
368
        strcat(value_str, communities[0]);
 
369
        
 
370
        for(j=1; j<num_communities; j++) {
 
371
          strcat(value_str, "&");
 
372
          strcat(value_str, communities[j]);
 
373
        }
 
374
        
 
375
        //traceEvent(CONST_TRACE_INFO, "========-----> [%s][%s]", key_str, value_str);
 
376
        storePwValue(key_str, value_str);
 
377
      }
 
378
      
276
379
      if(gdbm_store(myGlobals.pwFile, key_data, data_data, GDBM_REPLACE) != 0)
277
380
        err = "FATAL ERROR: unable to add the new user.";
278
 
 
 
381
      
279
382
      /* Added user, clear the list */
280
383
      clearUserUrlList();
281
384
 
299
402
 
300
403
if(err != NULL) {
301
404
    sendHTTPHeader(FLAG_HTTP_TYPE_HTML, 0, 1);
302
 
    printHTMLheader("ntop user add", NULL, BITFLAG_HTML_NO_REFRESH);
 
405
    printHTMLheader("ntop: Add/Modify User", NULL, BITFLAG_HTML_NO_REFRESH);
303
406
    sendString("<P><HR><P>\n");
304
407
    printFlagedWarning(err);
305
408
    sendMenuFooter(1, 2);
336
439
      encodeWebFormURL(key_data.dptr, ebuf, sizeof(ebuf));
337
440
      safe_snprintf(__FILE__, __LINE__, buf, LEN_GENERAL_WORK_BUFFER, "<TR><TH "TH_BG" ALIGN=LEFT><IMG SRC=/user.gif>"
338
441
              "&nbsp;'%s*'</TH><TD "TD_BG"><A HREF=/%s?%s>"
339
 
                  "<IMG ALT=\"Modify URL\" SRC=/modifyUser.gif BORDER=0 align=absmiddle></A>"
340
 
                  "&nbsp;<A HREF=/%s?%s><IMG ALT=\"Delete URL\" SRC=/deleteUser.gif BORDER=0 align=absmiddle>"
341
 
                  "</A></TD></TR></TH></TR>\n", &key_data.dptr[1], CONST_MODIFY_URL, ebuf, CONST_DELETE_URL, ebuf);
 
442
                    "<IMG CLASS=TOOLTIP ALT=\"Modify URL\" SRC=/"CONST_EDIT_IMG" BORDER=0 align=absmiddle></A>"
 
443
                    "&nbsp;<A HREF=/%s?%s><IMG CLASS=TOOLTIP ALT=\"Delete URL\" SRC=/deleteUser.gif BORDER=0 align=absmiddle>"
 
444
                    "</A></TD></TR></TH></TR>\n", &key_data.dptr[1], CONST_MODIFY_URL, ebuf, CONST_DELETE_URL, ebuf);
342
445
      sendString(buf);
343
446
      numUsers++;
344
447
    }
363
466
  char tmpStr[128];
364
467
 
365
468
  printHTMLheader("Manage ntop URLs", NULL, BITFLAG_HTML_NO_REFRESH);
 
469
 
366
470
  sendString("<P><HR><P>\n");
367
471
 
368
472
  if((url != NULL) && ((strlen(url) < 1) || (url[0] != '2'))) {
390
494
      sendString("<INPUT TYPE=text NAME=url SIZE=20>&nbsp;*");
391
495
    }
392
496
    sendString("</TD>\n</TR>\n");
 
497
 
 
498
    /*********** Users **********/
393
499
    sendString("<TR>\n<TH ALIGN=right VALIGN=top>Authorised Users:&nbsp;</TH>"
394
500
               "<TD ALIGN=left><SELECT NAME=users MULTIPLE>\n");
395
501
 
442
548
      free(key_data.dptr);
443
549
    }
444
550
 
445
 
    if(aubuf != NULL)
446
 
      free(aubuf); /* (**) */
 
551
    if(aubuf != NULL) free(aubuf); /* (**) */
447
552
 
448
553
    sendString("</SELECT>\n</TD></TR>\n");
 
554
 
449
555
    sendString("</TABLE>"TABLE_OFF"\n");
450
556
 
451
557
    if(url == NULL)
990
1096
 
991
1097
/* ************************************************* */
992
1098
 
993
 
int processNtopConfigData (char *buf, int savePref)
994
 
{
995
 
    char *strtokState, *mainState;
996
 
    int startCap = FALSE, action;
997
 
    UserPref tmpPrefs;
998
 
    char *devices = NULL, *foundDevices = NULL, *token;
999
 
 
1000
 
    /* traceEvent(CONST_TRACE_INFO, "RRD: buf='%s'", buf);   */
1001
 
 
1002
 
    token = strtok_r(buf, "&", &mainState);
1003
 
    tmpPrefs = myGlobals.savedPref;
1004
 
 
1005
 
    /* however, switch off all chkbox fields. If they've been set, they'll get
1006
 
     * processed. If they stay turned off, it is a sign that they've been
1007
 
     * unchecked and we need to handle this.
1008
 
     */
1009
 
    tmpPrefs.enableSessionHandling = tmpPrefs.enablePacketDecoding = 0;
1010
 
    tmpPrefs.stickyHosts = tmpPrefs.trackOnlyLocalHosts = 0;
1011
 
    tmpPrefs.disablePromiscuousMode = tmpPrefs.disableMutexExtraInfo = 0;
1012
 
    tmpPrefs.disableInstantSessionPurge = tmpPrefs.disableStopcap = 0;
1013
 
    tmpPrefs.debugMode = tmpPrefs.daemonMode = tmpPrefs.w3c = 0;
1014
 
    tmpPrefs.numericFlag = tmpPrefs.mergeInterfaces = 0;
1015
 
#if !defined(WIN32) && defined(HAVE_PCAP_SETNONBLOCK)
1016
 
    tmpPrefs.setNonBlocking = 0;
1017
 
#endif
1018
 
    tmpPrefs.dontTrustMACaddr = 0;
1019
 
    tmpPrefs.enableOtherPacketDump = tmpPrefs.enableSuspiciousPacketDump = 0;
1020
 
    tmpPrefs.enableSessionHandling = 0;
1021
 
#ifdef MAKE_WITH_SSLWATCHDOG_RUNTIME
1022
 
    tmpPrefs.useSSLwatchdog = 0;
1023
 
#endif
1024
 
 
1025
 
#ifdef MAKE_WITH_SCHED_YIELD
1026
 
    tmpPrefs.disableSchedYield = 0;
1027
 
#endif
1028
 
 
1029
 
    devices = tmpPrefs.devices;
1030
 
        tmpPrefs.devices = NULL;
1031
 
 
1032
 
        while(token != NULL) {
1033
 
        char *key, *value;
1034
 
 
1035
 
        key = strtok_r(token, "=", &strtokState);
1036
 
        if(key != NULL) value = strtok_r(NULL, "=", &strtokState); else value = NULL;
1037
 
 
1038
 
        /* traceEvent(CONST_TRACE_INFO, "RRD: key(%s)=%s", key, value);   */
1039
 
 
1040
 
        if(key) {
1041
 
            action = processNtopPref (key, value, savePref, &tmpPrefs);
1042
 
 
1043
 
            if (action) {
1044
 
                startCap = TRUE;
1045
 
            }
1046
 
 
1047
 
            if(!strcmp(key, NTOP_PREF_DEVICES))
1048
 
              foundDevices = value;
1049
 
        }
1050
 
        token = strtok_r(NULL, "&", &mainState);
1051
 
    }
1052
 
 
1053
 
        if(!foundDevices) {
1054
 
       delPrefsValue(NTOP_PREF_DEVICES);
1055
 
           if(tmpPrefs.devices) free(tmpPrefs.devices);
1056
 
           tmpPrefs.devices = NULL;
1057
 
        }
1058
 
 
1059
 
        if(devices) {
1060
 
         free(devices);
1061
 
    }
1062
 
 
1063
 
    /* Now we need to delete all the preferences that were unchecked.
1064
 
     * Radio box & checkbox preferences that were set in a previous instance
1065
 
     * but cleared in this instance will not appear in the POST data. So, if
1066
 
     * the value has changed from what existed before, we need to remove them
1067
 
     * from the saved preferences file.
1068
 
     */
1069
 
    if (myGlobals.savedPref.enableSessionHandling &&
1070
 
        !tmpPrefs.enableSessionHandling) {
1071
 
        /* default for enableSessionHandling is TRUE */
1072
 
        processNtopPref (NTOP_PREF_EN_SESSION, FALSE, savePref, &tmpPrefs);
1073
 
 
1074
 
    }
1075
 
 
1076
 
    if (myGlobals.savedPref.enablePacketDecoding &&
1077
 
        !tmpPrefs.enablePacketDecoding) {
1078
 
        processNtopPref (NTOP_PREF_EN_PROTO_DECODE, FALSE, savePref, &tmpPrefs);
1079
 
    }
1080
 
 
1081
 
    if (myGlobals.savedPref.stickyHosts && !tmpPrefs.stickyHosts) {
1082
 
        processNtopPref (NTOP_PREF_STICKY_HOSTS, FALSE, savePref, &tmpPrefs);
1083
 
    }
1084
 
 
1085
 
    if (myGlobals.savedPref.trackOnlyLocalHosts &&
1086
 
        !tmpPrefs.trackOnlyLocalHosts) {
1087
 
        processNtopPref (NTOP_PREF_TRACK_LOCAL, FALSE, savePref, &tmpPrefs);
1088
 
    }
1089
 
 
1090
 
    if (myGlobals.savedPref.disablePromiscuousMode &&
1091
 
        !tmpPrefs.disablePromiscuousMode) {
1092
 
        processNtopPref (NTOP_PREF_NO_PROMISC, FALSE, savePref, &tmpPrefs);
1093
 
    }
1094
 
 
1095
 
    if (myGlobals.savedPref.daemonMode && !tmpPrefs.daemonMode) {
1096
 
        processNtopPref (NTOP_PREF_DAEMON, FALSE, savePref, &tmpPrefs);
1097
 
    }
1098
 
 
1099
 
    if (myGlobals.savedPref.noInvalidLunDisplay &&
1100
 
        !tmpPrefs.noInvalidLunDisplay) {
1101
 
        processNtopPref (NTOP_PREF_NO_INVLUN, FALSE, savePref, &tmpPrefs);
1102
 
    }
1103
 
 
1104
 
    if (myGlobals.savedPref.w3c && !tmpPrefs.w3c) {
1105
 
        processNtopPref (NTOP_PREF_W3C, FALSE, savePref, &tmpPrefs);
1106
 
    }
1107
 
 
1108
 
    if (myGlobals.savedPref.numericFlag && !tmpPrefs.numericFlag) {
1109
 
        processNtopPref (NTOP_PREF_NUMERIC_IP, FALSE, savePref, &tmpPrefs);
1110
 
    }
1111
 
 
1112
 
    if (myGlobals.savedPref.mergeInterfaces && !tmpPrefs.mergeInterfaces) {
1113
 
        processNtopPref (NTOP_PREF_MERGEIF, FALSE, savePref, &tmpPrefs);
1114
 
    }
1115
 
 
1116
 
    if (myGlobals.savedPref.disableInstantSessionPurge &&
1117
 
        !tmpPrefs.disableInstantSessionPurge) {
1118
 
        processNtopPref (NTOP_PREF_NO_ISESS_PURGE, FALSE, savePref, &tmpPrefs);
1119
 
    }
1120
 
 
1121
 
#if !defined(WIN32) && defined(HAVE_PCAP_SETNONBLOCK)
1122
 
    if (myGlobals.savedPref.setNonBlocking && !tmpPrefs.setNonBlocking) {
1123
 
        processNtopPref (NTOP_PREF_NOBLOCK, FALSE, savePref, &tmpPrefs);
1124
 
    }
1125
 
#endif
1126
 
 
1127
 
    if (myGlobals.savedPref.disableStopcap && !tmpPrefs.disableStopcap) {
1128
 
        processNtopPref (NTOP_PREF_NO_STOPCAP, FALSE, savePref, &tmpPrefs);
1129
 
    }
1130
 
 
1131
 
    if (myGlobals.savedPref.dontTrustMACaddr && !tmpPrefs.dontTrustMACaddr) {
1132
 
        processNtopPref (NTOP_PREF_NO_TRUST_MAC, FALSE, savePref, &tmpPrefs);
1133
 
    }
1134
 
 
1135
 
#ifdef MAKE_WITH_SSLWATCHDOG_RUNTIME
1136
 
    if (myGlobals.savedPref.useSSLwatchdog && !tmpPrefs.useSSLwatchdog) {
1137
 
        processNtopPref (NTOP_PREF_USE_SSLWATCH, FALSE, savePref, &tmpPrefs);
1138
 
    }
1139
 
#endif
1140
 
 
1141
 
#ifdef MAKE_WITH_SCHED_YIELD
1142
 
    if (myGlobals.savedPref.disableSchedYield && !tmpPrefs.disableSchedYield) {
1143
 
        processNtopPref (NTOP_PREF_NO_SCHEDYLD, FALSE, savePref, &tmpPrefs);
1144
 
    }
1145
 
#endif
1146
 
 
1147
 
    if (myGlobals.savedPref.debugMode && !tmpPrefs.debugMode) {
1148
 
        processNtopPref (NTOP_PREF_DBG_MODE, FALSE, savePref, &tmpPrefs);
1149
 
    }
1150
 
 
1151
 
    if (myGlobals.savedPref.enableOtherPacketDump &&
1152
 
        !tmpPrefs.enableOtherPacketDump) {
1153
 
        processNtopPref (NTOP_PREF_DUMP_OTHER, FALSE, savePref, &tmpPrefs);
1154
 
    }
1155
 
 
1156
 
    if (myGlobals.savedPref.enableSuspiciousPacketDump &&
1157
 
        !tmpPrefs.enableSuspiciousPacketDump) {
1158
 
        processNtopPref (NTOP_PREF_DUMP_SUSP, FALSE, savePref, &tmpPrefs);
1159
 
    }
1160
 
 
1161
 
    if (myGlobals.savedPref.disableMutexExtraInfo &&
1162
 
        !tmpPrefs.disableMutexExtraInfo) {
1163
 
        processNtopPref (NTOP_PREF_NO_MUTEX_EXTRA, FALSE, savePref, &tmpPrefs);
1164
 
    }
1165
 
 
1166
 
    /* Copy over the preferences now */
1167
 
    myGlobals.savedPref = tmpPrefs;
1168
 
 
1169
 
    return (startCap);
1170
 
}
 
1099
 int processNtopConfigData (char *buf, int savePref) {
 
1100
   char *strtokState, *mainState;
 
1101
   int startCap = FALSE, action;
 
1102
   UserPref tmpPrefs;
 
1103
   char *devices = NULL, *foundDevices = NULL, *token;
 
1104
   char basic_prefs = 0, display_prefs = 0, ip_prefs = 0, advanced_prefs = 0, debug_prefs = 0, db_prefs = 0;
 
1105
 
 
1106
   /* traceEvent(CONST_TRACE_INFO, "RRD: buf='%s'", buf); */
 
1107
 
 
1108
   token = strtok_r(buf, "&", &mainState);
 
1109
   tmpPrefs = myGlobals.savedPref;
 
1110
 
 
1111
   /* however, switch off all chkbox fields. If they've been set, they'll get
 
1112
    * processed. If they stay turned off, it is a sign that they've been
 
1113
    * unchecked and we need to handle this.
 
1114
    */
 
1115
   tmpPrefs.enableSessionHandling = tmpPrefs.enablePacketDecoding = 0;
 
1116
   tmpPrefs.stickyHosts = tmpPrefs.trackOnlyLocalHosts = 0;
 
1117
   tmpPrefs.disablePromiscuousMode = tmpPrefs.disableMutexExtraInfo = 0;
 
1118
   tmpPrefs.disableInstantSessionPurge = tmpPrefs.disableStopcap = 0;
 
1119
   tmpPrefs.debugMode = tmpPrefs.daemonMode = tmpPrefs.w3c = 0;
 
1120
   tmpPrefs.numericFlag = tmpPrefs.mergeInterfaces = tmpPrefs.enableL7 = 0;
 
1121
   tmpPrefs.dontTrustMACaddr = 0;
 
1122
   tmpPrefs.enableOtherPacketDump = tmpPrefs.enableSuspiciousPacketDump = 0;
 
1123
   tmpPrefs.enableSessionHandling = 0;
 
1124
#ifdef MAKE_WITH_SSLWATCHDOG_RUNTIME
 
1125
   tmpPrefs.useSSLwatchdog = 0;
 
1126
#endif
 
1127
 
 
1128
#ifdef MAKE_WITH_SCHED_YIELD
 
1129
   tmpPrefs.disableSchedYield = 0;
 
1130
#endif
 
1131
 
 
1132
   devices = tmpPrefs.devices;
 
1133
   tmpPrefs.devices = NULL;
 
1134
 
 
1135
   while(token != NULL) {
 
1136
     char *key, *value;
 
1137
 
 
1138
     key = strtok_r(token, "=", &strtokState);
 
1139
     if(key != NULL) value = strtok_r(NULL, "=", &strtokState); else value = NULL;
 
1140
 
 
1141
     /* traceEvent(CONST_TRACE_INFO, "RRD: key(%s)=%s", key, value); */
 
1142
 
 
1143
     if(key) {
 
1144
       action = processNtopPref(key, value, savePref, &tmpPrefs);
 
1145
 
 
1146
       if (action) {
 
1147
         startCap = TRUE;
 
1148
       }
 
1149
 
 
1150
       if(!strcmp(key, "BASIC_PREFS")) basic_prefs = 1;
 
1151
       else if(!strcmp(key, "DISPLAY_PREFS")) display_prefs = 1;
 
1152
       else if(!strcmp(key, "IP_PREFS")) ip_prefs = 1;
 
1153
       else if(!strcmp(key, "ADVANCED_PREFS")) advanced_prefs = 1;
 
1154
       else if(!strcmp(key, "DEBUG_PREFS")) debug_prefs = 1;
 
1155
       else if(!strcmp(key, "DB_PREFS")) db_prefs = 1;
 
1156
 
 
1157
       if(!strcmp(key, NTOP_PREF_DEVICES))
 
1158
         foundDevices = value;
 
1159
     }
 
1160
     
 
1161
     token = strtok_r(NULL, "&", &mainState);
 
1162
   }
 
1163
 
 
1164
   if((!foundDevices) && basic_prefs) {
 
1165
     delPrefsValue(NTOP_PREF_DEVICES);
 
1166
     if(tmpPrefs.devices) free(tmpPrefs.devices);
 
1167
     tmpPrefs.devices = NULL;
 
1168
   }
 
1169
 
 
1170
   if(devices) {
 
1171
     free(devices);
 
1172
   }
 
1173
 
 
1174
   /* Now we need to delete all the preferences that were unchecked.
 
1175
    * Radio box & checkbox preferences that were set in a previous instance
 
1176
    * but cleared in this instance will not appear in the POST data. So, if
 
1177
    * the value has changed from what existed before, we need to remove them
 
1178
    * from the saved preferences file.
 
1179
    */
 
1180
 
 
1181
     if (basic_prefs && myGlobals.savedPref.enableSessionHandling &&
 
1182
         !tmpPrefs.enableSessionHandling) {
 
1183
       /* default for enableSessionHandling is TRUE */
 
1184
       processNtopPref(NTOP_PREF_EN_SESSION, FALSE, savePref, &tmpPrefs);
 
1185
     }
 
1186
 
 
1187
     if (basic_prefs && myGlobals.savedPref.enablePacketDecoding &&
 
1188
         !tmpPrefs.enablePacketDecoding) {
 
1189
       processNtopPref(NTOP_PREF_EN_PROTO_DECODE, FALSE, savePref, &tmpPrefs);
 
1190
     }
 
1191
 
 
1192
     if (basic_prefs && myGlobals.savedPref.stickyHosts && !tmpPrefs.stickyHosts) {
 
1193
       processNtopPref(NTOP_PREF_STICKY_HOSTS, FALSE, savePref, &tmpPrefs);
 
1194
     }
 
1195
 
 
1196
     if (basic_prefs && myGlobals.savedPref.trackOnlyLocalHosts &&
 
1197
         !tmpPrefs.trackOnlyLocalHosts) {
 
1198
       processNtopPref(NTOP_PREF_TRACK_LOCAL, FALSE, savePref, &tmpPrefs);
 
1199
     }
 
1200
 
 
1201
     if (basic_prefs && myGlobals.savedPref.disablePromiscuousMode &&
 
1202
         !tmpPrefs.disablePromiscuousMode) {
 
1203
       processNtopPref(NTOP_PREF_NO_PROMISC, FALSE, savePref, &tmpPrefs);
 
1204
     }
 
1205
 
 
1206
     if (basic_prefs && myGlobals.savedPref.daemonMode && !tmpPrefs.daemonMode) {
 
1207
       processNtopPref(NTOP_PREF_DAEMON, FALSE, savePref, &tmpPrefs);
 
1208
     }
 
1209
   
 
1210
     if (display_prefs && myGlobals.savedPref.noInvalidLunDisplay &&
 
1211
         !tmpPrefs.noInvalidLunDisplay) {
 
1212
       processNtopPref(NTOP_PREF_NO_INVLUN, FALSE, savePref, &tmpPrefs);
 
1213
     }
 
1214
 
 
1215
   if (display_prefs && myGlobals.savedPref.w3c && !tmpPrefs.w3c) {
 
1216
     processNtopPref(NTOP_PREF_W3C, FALSE, savePref, &tmpPrefs);
 
1217
   }
 
1218
 
 
1219
   if (ip_prefs && myGlobals.savedPref.numericFlag && !tmpPrefs.numericFlag) {
 
1220
     processNtopPref(NTOP_PREF_NUMERIC_IP, FALSE, savePref, &tmpPrefs);
 
1221
   }
 
1222
 
 
1223
   if (advanced_prefs && myGlobals.savedPref.mergeInterfaces && !tmpPrefs.mergeInterfaces) {
 
1224
     processNtopPref(NTOP_PREF_MERGEIF, FALSE, savePref, &tmpPrefs);
 
1225
   }
 
1226
 
 
1227
   if (advanced_prefs && myGlobals.savedPref.enableL7 && !tmpPrefs.enableL7) {
 
1228
     processNtopPref(NTOP_PREF_ENABLE_L7PROTO, FALSE, savePref, &tmpPrefs);
 
1229
   }
 
1230
 
 
1231
   if (advanced_prefs && myGlobals.savedPref.disableInstantSessionPurge &&
 
1232
       !tmpPrefs.disableInstantSessionPurge) {
 
1233
     processNtopPref(NTOP_PREF_NO_ISESS_PURGE, FALSE, savePref, &tmpPrefs);
 
1234
   }
 
1235
 
 
1236
   if (advanced_prefs && myGlobals.savedPref.dontTrustMACaddr && !tmpPrefs.dontTrustMACaddr) {
 
1237
     processNtopPref(NTOP_PREF_NO_TRUST_MAC, FALSE, savePref, &tmpPrefs);
 
1238
   }
 
1239
 
 
1240
#ifdef MAKE_WITH_SSLWATCHDOG_RUNTIME
 
1241
   if (advanced_prefs && myGlobals.savedPref.useSSLwatchdog && !tmpPrefs.useSSLwatchdog) {
 
1242
     processNtopPref(NTOP_PREF_USE_SSLWATCH, FALSE, savePref, &tmpPrefs);
 
1243
   }
 
1244
#endif
 
1245
 
 
1246
#ifdef MAKE_WITH_SCHED_YIELD
 
1247
   if (advanced_prefs && myGlobals.savedPref.disableSchedYield && !tmpPrefs.disableSchedYield) {
 
1248
     processNtopPref(NTOP_PREF_NO_SCHEDYLD, FALSE, savePref, &tmpPrefs);
 
1249
   }
 
1250
#endif
 
1251
 
 
1252
   if (debug_prefs && myGlobals.savedPref.debugMode && !tmpPrefs.debugMode) {
 
1253
     processNtopPref(NTOP_PREF_DBG_MODE, FALSE, savePref, &tmpPrefs);
 
1254
   }
 
1255
 
 
1256
   if (debug_prefs && myGlobals.savedPref.enableOtherPacketDump &&
 
1257
       !tmpPrefs.enableOtherPacketDump) {
 
1258
     processNtopPref(NTOP_PREF_DUMP_OTHER, FALSE, savePref, &tmpPrefs);
 
1259
   }
 
1260
 
 
1261
   if (debug_prefs && myGlobals.savedPref.enableSuspiciousPacketDump &&
 
1262
       !tmpPrefs.enableSuspiciousPacketDump) {
 
1263
     processNtopPref(NTOP_PREF_DUMP_SUSP, FALSE, savePref, &tmpPrefs);
 
1264
   }
 
1265
 
 
1266
   if (debug_prefs && myGlobals.savedPref.disableMutexExtraInfo &&
 
1267
       !tmpPrefs.disableMutexExtraInfo) {
 
1268
     processNtopPref(NTOP_PREF_NO_MUTEX_EXTRA, FALSE, savePref, &tmpPrefs);
 
1269
   }
 
1270
 
 
1271
   if (db_prefs && myGlobals.savedPref.saveRecordsIntoDb && !tmpPrefs.saveRecordsIntoDb) {
 
1272
     processNtopPref(NTOP_PREF_SAVE_REC_INTO_DB, FALSE, savePref, &tmpPrefs);
 
1273
   }
 
1274
 
 
1275
   if (db_prefs && myGlobals.savedPref.saveSessionsIntoDb && !tmpPrefs.saveSessionsIntoDb) {
 
1276
     processNtopPref(NTOP_PREF_SAVE_SESSIONS_INTO_DB, FALSE, savePref, &tmpPrefs);
 
1277
   }
 
1278
 
 
1279
   /* Copy over the preferences now */
 
1280
   myGlobals.savedPref = tmpPrefs;
 
1281
 
 
1282
   /* Handle immediates */
 
1283
   myGlobals.runningPref.traceLevel = myGlobals.savedPref.traceLevel;
 
1284
 
 
1285
   return (startCap);
 
1286
 }
1171
1287
 
1172
1288
/* ************************************************* */
1173
1289
 
1174
1290
void printNtopConfigHeader (char *url, UserPrefDisplayPage configScr)
1175
1291
{
1176
 
    char buf[1024];
1177
 
    char theLink[32];
1178
 
 
1179
 
    safe_snprintf (__FILE__, __LINE__, theLink, sizeof(theLink),
1180
 
                   "/configNtop.html?&showD=");
1181
 
 
1182
 
    switch (configScr) {
1183
 
    case showPrefBasicPref:
1184
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1185
 
                      "[ <B>Basic Preferences</B> ]&nbsp;"
1186
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1187
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1188
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1189
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1190
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>",
1191
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1192
 
        break;
1193
 
 
1194
 
    case showPrefDisplayPref:
1195
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1196
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1197
 
                      "[ <B>Display Preferences</B> ]&nbsp;"
1198
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1199
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1200
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1201
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>",
1202
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1203
 
        break;
1204
 
    case showPrefIPPref:
1205
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1206
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1207
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1208
 
                      "[ <B>IP Preferences</B> ]&nbsp;"
1209
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1210
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1211
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>",
1212
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1213
 
        break;
1214
 
    case showPrefFCPref:
1215
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1216
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1217
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1218
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1219
 
                      "[ <B>FC Preferences</B> ]&nbsp;"
1220
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1221
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>",
1222
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1223
 
        break;
1224
 
    case showPrefAdvPref:
1225
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1226
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1227
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1228
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1229
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1230
 
                      "[ <B>Advanced Preferences</B> ]&nbsp;"
1231
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>",
1232
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1233
 
        break;
1234
 
    case showPrefDbgPref:
1235
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1236
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1237
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1238
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1239
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1240
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1241
 
                      "[ <B>Debugging Preferences</B> ]&nbsp;</p>",
1242
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1243
 
        break;
1244
 
    case showPrefPluginPref:
1245
 
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
1246
 
                      "[ <A HREF=%s1>Basic Preferences</A> ]&nbsp;"
1247
 
                      "[ <A HREF=%s2>Display Preferences</A> ]&nbsp;"
1248
 
                      "[ <A HREF=%s3>IP Preferences</A> ]&nbsp;"
1249
 
                      "[ <A HREF=%s4>FC Preferences</A> ]&nbsp;"
1250
 
                      "[ <A HREF=%s5>Advanced Preferences</A> ]&nbsp;"
1251
 
                      "[ <A HREF=%s6>Debugging Preferences</A> ]&nbsp;</p>"
1252
 
                      "[ <B>Plugin Preferences</B> ]&nbsp;</p>",
1253
 
                      theLink, theLink, theLink, theLink, theLink, theLink);
1254
 
        break;
1255
 
    }
1256
 
 
1257
 
    sendString (buf);
1258
 
 
1259
 
    safe_snprintf (__FILE__, __LINE__, buf, sizeof (buf),
1260
 
                   "<FORM ACTION=%s%d method=POST>"
1261
 
                   " <TABLE BORDER=1 "TABLE_DEFAULTS">\n"
1262
 
                   "<TR><TH ALIGN=CENTER "DARK_BG">Preference</TH>"
1263
 
                   "<TH ALIGN=CENTER "DARK_BG">Configured Value</TH></TR>\n",
1264
 
                   theLink, configScr);
1265
 
    sendString (buf);
 
1292
  char buf[1024];
 
1293
  char theLink[32];
 
1294
 
 
1295
  safe_snprintf (__FILE__, __LINE__, theLink, sizeof(theLink),
 
1296
                 "/configNtop.html?&showD=");
 
1297
 
 
1298
  switch (configScr) {
 
1299
  case showPrefBasicPref:
 
1300
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1301
                  "[ <B>Basic Prefs</B> ]&nbsp;"
 
1302
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1303
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1304
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1305
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1306
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1307
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1308
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1309
    break;
 
1310
 
 
1311
  case showPrefDisplayPref:
 
1312
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1313
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1314
                  "[ <B>Display Prefs</B> ]&nbsp;"
 
1315
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1316
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1317
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1318
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1319
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1320
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1321
    break;
 
1322
 
 
1323
  case showPrefIPPref:
 
1324
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1325
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1326
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1327
                  "[ <B>IP Prefs</B> ]&nbsp;"
 
1328
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1329
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1330
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1331
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1332
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1333
    break;
 
1334
 
 
1335
  case showPrefFCPref:
 
1336
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1337
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1338
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1339
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1340
                  "[ <B>FC Prefs</B> ]&nbsp;"
 
1341
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1342
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1343
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1344
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1345
    break;
 
1346
 
 
1347
  case showPrefAdvPref:
 
1348
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1349
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1350
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1351
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1352
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1353
                  "[ <B>Advanced Prefs</B> ]&nbsp;"
 
1354
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1355
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1356
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1357
    break;
 
1358
 
 
1359
  case showPrefDbgPref:
 
1360
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1361
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1362
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1363
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1364
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1365
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1366
                  "[ <B>Debugging Prefs</B> ]&nbsp;"
 
1367
                  "[ <A HREF=%s7>DB Prefs</A> ]&nbsp;</p>",
 
1368
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1369
    break;
 
1370
 
 
1371
  case showPrefDBPref:
 
1372
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "<P ALIGN=CENTER>"
 
1373
                  "[ <A HREF=%s1>Basic Prefs</A> ]&nbsp;"
 
1374
                  "[ <A HREF=%s2>Display Prefs</A> ]&nbsp;"
 
1375
                  "[ <A HREF=%s3>IP Prefs</A> ]&nbsp;"
 
1376
                  "[ <A HREF=%s4>FC Prefs</A> ]&nbsp;"
 
1377
                  "[ <A HREF=%s5>Advanced Prefs</A> ]&nbsp;"
 
1378
                  "[ <A HREF=%s6>Debugging Prefs</A> ]&nbsp;"
 
1379
                  "[ <B>DB Prefs</B> ]&nbsp;</p>",
 
1380
                  theLink, theLink, theLink, theLink, theLink, theLink, theLink);
 
1381
    break;
 
1382
  }
 
1383
 
 
1384
  sendString (buf);
 
1385
 
 
1386
  safe_snprintf (__FILE__, __LINE__, buf, sizeof (buf),
 
1387
                 "<FORM ACTION=%s%d method=POST>"
 
1388
                 " <TABLE BORDER=1 "TABLE_DEFAULTS">\n"
 
1389
                 "<TR><TH ALIGN=CENTER "DARK_BG">Preference</TH>"
 
1390
                 "<TH ALIGN=CENTER "DARK_BG">Configured Value</TH></TR>\n",
 
1391
                 theLink, configScr);
 
1392
  sendString (buf);
1266
1393
}
1267
1394
 
1268
1395
/* ***************************************************** */
1290
1417
 
1291
1418
/* ***************************************************** */
1292
1419
 
1293
 
void handleNtopConfig (char* url, UserPrefDisplayPage configScr, int postLen)
1294
 
{
 
1420
void handleNtopConfig(char* url, UserPrefDisplayPage configScr,
 
1421
                      int postLen) {
1295
1422
  char buf[1024], hostStr[MAXHOSTNAMELEN+16];
1296
1423
  bool startCap = FALSE;
1297
1424
  int len;
1301
1428
   * Configuration is dealt with via POST method. So read the data first.
1302
1429
   */
1303
1430
  if (postLen) {
1304
 
    if ((len = readHTTPpostData (postLen, buf, 1024)) != postLen) {
 
1431
    if((len = readHTTPpostData (postLen, buf, 1024)) != postLen) {
1305
1432
      traceEvent (CONST_TRACE_WARNING, "handleNtopConfig: Unable to retrieve "
1306
1433
                  "all POST data (%d, expecting %d). Aborting processing\n",
1307
1434
                  len, postLen);
1308
 
    }
1309
 
    else {
 
1435
    } else {
1310
1436
      /* =============================================
1311
1437
       * Parse input URI & store specified preferences
1312
1438
       * =============================================
1330
1456
          if (strncmp (token, NTOP_SAVE_PREFS,
1331
1457
                       strlen (NTOP_SAVE_PREFS)) == 0) {
1332
1458
            savePref = TRUE;
1333
 
          }
1334
 
          else if (strncmp (token, NTOP_RESTORE_DEF,
 
1459
          } else if (strncmp (token, NTOP_RESTORE_DEF,
1335
1460
                            strlen (NTOP_RESTORE_DEF)) == 0) {
1336
1461
            restoreDef = TRUE;
1337
1462
          }
1341
1466
          initUserPrefs (&defaults);
1342
1467
          defaults.samplingRate =  myGlobals.savedPref.samplingRate;
1343
1468
          pref = &defaults;
1344
 
        }
1345
 
        else {
 
1469
        } else {
1346
1470
          /* process preferences and start capture if necessary */
1347
1471
          processNtopConfigData (buf, savePref);
1348
1472
          if (startCap) {
1358
1482
   * =========================================
1359
1483
   */
1360
1484
  sendHTTPHeader(FLAG_HTTP_TYPE_HTML, 0, 1);
1361
 
  printHTMLheader("Configure NTOP", NULL, 0);
 
1485
  printHTMLheader("Configure ntop", NULL, 0);
1362
1486
 
1363
1487
  sendString ("<CENTER>\n");
1364
1488
 
1365
 
  printNtopConfigHeader (url, configScr);
 
1489
  printNtopConfigHeader(url, configScr);
1366
1490
 
1367
1491
  switch (configScr) {
1368
1492
  case showPrefBasicPref:
1391
1515
 
1392
1516
        pcap_freealldevs(devpointer);
1393
1517
 
1394
 
      } else {
1395
 
        /*
1396
 
          traceEvent(CONST_TRACE_INFO, "pcap_findalldevs failed [rc=%d][%s]\n",
1397
 
          rc, ebuf);
1398
 
        */
 
1518
      } else {  
 
1519
        sendString("<INPUT TYPE=hidden name=\""NTOP_PREF_DEVICES"\" value=\"\">");
 
1520
#ifndef WIN32
 
1521
        if(myGlobals.userId == 0)
 
1522
          traceEvent(CONST_TRACE_INFO, "pcap_findalldevs failed [rc=%d][%s]\n", rc, ebuf);
 
1523
        else
 
1524
          sendString("<font color=red>You cannot set the capture interface: missing privileges.</font><br>"
 
1525
                     "You need to start ntop with super-user privileges [-u]");
 
1526
#endif
1399
1527
      }
1400
 
      sendString("</TD></TR>");
 
1528
      sendString("</TD></TR>\n");
1401
1529
    }
1402
1530
 
1403
1531
  default:
1404
 
    CONFIG_STR_ENTRY (DARK_BG, "Capture File Path (-f)", NTOP_PREF_CAPFILE, 50,
1405
 
                      pref->rFileName,
1406
 
                      "Capture file to read from (takes precedence over "
1407
 
                      "interface specification)");
1408
 
 
1409
 
    CONFIG_STR_ENTRY (DARK_BG, "Capture Filter Expression (-B)",
1410
 
                      NTOP_PREF_FILTER,
1411
 
                      50, pref->currentFilterExpression,
1412
 
                      "Restrict the traffic seen by ntop. BPF syntax.");
1413
 
 
1414
 
    CONFIG_INT_ENTRY (DARK_BG, "Packet sampling rate (-C)", NTOP_PREF_SAMPLING,
1415
 
                      50, pref->samplingRate, "Sampling rate [1 = no sampling]");
 
1532
    CONFIG_STR_ENTRY(DARK_BG, "Capture File Path (-f)", NTOP_PREF_CAPFILE, 50,
 
1533
                     pref->rFileName,
 
1534
                     "Capture file to read from (takes precedence over "
 
1535
                     "interface specification)");
 
1536
 
 
1537
    CONFIG_STR_ENTRY(DARK_BG, "Capture Filter Expression (-B)",
 
1538
                     NTOP_PREF_FILTER,
 
1539
                     50, pref->currentFilterExpression,
 
1540
                     "Restrict the traffic seen by ntop. BPF syntax.");
 
1541
 
 
1542
    CONFIG_INT_ENTRY(DARK_BG, "Packet sampling rate (-C)", NTOP_PREF_SAMPLING,
 
1543
                     50, pref->samplingRate, "Sampling rate [1 = no sampling]");
1416
1544
 
1417
1545
    if (pref->webAddr == NULL) {
1418
1546
      safe_snprintf (__FILE__, __LINE__, hostStr, sizeof (hostStr),
1419
1547
                     "%d", pref->webPort);
1420
 
    }
1421
 
    else {
 
1548
    } else {
1422
1549
      safe_snprintf (__FILE__, __LINE__, hostStr, sizeof (hostStr),
1423
1550
                     "%s:%d", pref->webAddr, pref->webPort);
1424
1551
    }
1425
 
    CONFIG_STR_ENTRY (DARK_BG, "HTTP Server (-w)", NTOP_PREF_WEBPORT,
1426
 
                      50, hostStr,
1427
 
                      "HTTP Server [Address:]Port of ntop's web interface");
 
1552
    CONFIG_STR_ENTRY(DARK_BG, "HTTP Server (-w)", NTOP_PREF_WEBPORT,
 
1553
                     50, hostStr,
 
1554
                     "HTTP Server [Address:]Port of ntop's web interface");
1428
1555
 
1429
1556
#ifdef HAVE_OPENSSL
1430
1557
    if (pref->sslAddr == NULL) {
1431
1558
      safe_snprintf (__FILE__, __LINE__, hostStr, sizeof (hostStr),
1432
1559
                     "%d", pref->sslPort);
1433
 
    }
1434
 
    else {
 
1560
    } else {
1435
1561
      safe_snprintf (__FILE__, __LINE__, hostStr, sizeof (hostStr),
1436
1562
                     "%s:%d", pref->sslAddr, pref->sslPort);
1437
1563
    }
1438
 
    CONFIG_STR_ENTRY (DARK_BG, "HTTPS Server (-W)", NTOP_PREF_SSLPORT, 50,
1439
 
                      hostStr, "HTTPS Server [Address:]Port of ntop's web "
1440
 
                      "interface");
 
1564
    CONFIG_STR_ENTRY(DARK_BG, "HTTPS Server (-W)", NTOP_PREF_SSLPORT, 50,
 
1565
                     hostStr, "HTTPS Server [Address:]Port of ntop's web "
 
1566
                     "interface");
1441
1567
#endif
1442
1568
 
1443
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Enable Session Handling (-z)",
1444
 
                         NTOP_PREF_EN_SESSION,
1445
 
                         pref->enableSessionHandling, "");
1446
 
 
1447
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Enable Protocol Decoders (-b)",
1448
 
                         NTOP_PREF_EN_PROTO_DECODE,
1449
 
                         pref->enablePacketDecoding, "");
1450
 
 
1451
 
    CONFIG_STR_ENTRY (DARK_BG, "Flow Spec (-F)", NTOP_PREF_FLOWSPECS, 50,
1452
 
                      pref->flowSpecs,
1453
 
                      "Flow is a stream of captured packets that match a specified rule");
1454
 
 
1455
 
    CONFIG_STR_ENTRY (DARK_BG, "Local Subnet Address (-m)",
1456
 
                      NTOP_PREF_LOCALADDR, 50,
1457
 
                      pref->localAddresses,
1458
 
                      "Local subnets in ntop reports (use , to separate them). Mandatory for packet capture files");
1459
 
 
1460
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Sticky Hosts (-c)",
1461
 
                         NTOP_PREF_STICKY_HOSTS, pref->stickyHosts,
1462
 
                         "Don't purge idle hosts from memory");
1463
 
 
1464
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Track Local Hosts (-g)",
1465
 
                         NTOP_PREF_TRACK_LOCAL,
1466
 
                         pref->trackOnlyLocalHosts,
1467
 
                         "Capture data only about local hosts");
1468
 
 
1469
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Disable Promiscuous Mode (-s)",
1470
 
                         NTOP_PREF_NO_PROMISC,
1471
 
                         pref->disablePromiscuousMode,
1472
 
                         "Don't set the interface(s) into promiscuous mode");
1473
 
 
1474
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Run as daemon (-d)", NTOP_PREF_DAEMON,
1475
 
                         pref->daemonMode, "Run Ntop as a daemon");
 
1569
    CONFIG_RADIO_ENTRY(DARK_BG, "Enable Session Handling (-z)",
 
1570
                       NTOP_PREF_EN_SESSION,
 
1571
                       pref->enableSessionHandling, "");
 
1572
 
 
1573
    CONFIG_RADIO_ENTRY(DARK_BG, "Enable Protocol Decoders (-b)",
 
1574
                       NTOP_PREF_EN_PROTO_DECODE,
 
1575
                       pref->enablePacketDecoding, "");
 
1576
 
 
1577
    CONFIG_STR_ENTRY(DARK_BG, "Flow Spec (-F)", NTOP_PREF_FLOWSPECS, 50,
 
1578
                     pref->flowSpecs,
 
1579
                     "Flow is a stream of captured packets that match a specified rule");
 
1580
 
 
1581
    CONFIG_STR_ENTRY(DARK_BG, "Local Subnet Address (-m)",
 
1582
                     NTOP_PREF_LOCALADDR, 50,
 
1583
                     pref->localAddresses,
 
1584
                     "Local subnets in ntop reports (use , to separate them). Mandatory for packet capture files");
 
1585
 
 
1586
    CONFIG_RADIO_ENTRY(DARK_BG, "Sticky Hosts (-c)",
 
1587
                       NTOP_PREF_STICKY_HOSTS, pref->stickyHosts,
 
1588
                       "Don't purge idle hosts from memory");
 
1589
 
 
1590
    CONFIG_RADIO_ENTRY(DARK_BG, "Track Local Hosts (-g)",
 
1591
                       NTOP_PREF_TRACK_LOCAL,
 
1592
                       pref->trackOnlyLocalHosts,
 
1593
                       "Capture data only about local hosts");
 
1594
 
 
1595
    CONFIG_RADIO_ENTRY(DARK_BG, "Disable Promiscuous Mode (-s)",
 
1596
                       NTOP_PREF_NO_PROMISC,
 
1597
                       pref->disablePromiscuousMode,
 
1598
                       "Don't set the interface(s) into promiscuous mode");
 
1599
 
 
1600
    CONFIG_RADIO_ENTRY(DARK_BG, "Run as daemon (-d)", NTOP_PREF_DAEMON,
 
1601
                       pref->daemonMode, "Run Ntop as a daemon");
1476
1602
    break;
1477
1603
 
1478
1604
  case showPrefDisplayPref:
1479
 
    CONFIG_INT_ENTRY (DARK_BG, "Refresh Time (-r)", NTOP_PREF_REFRESH_RATE,
1480
 
                      5, pref->refreshRate,
1481
 
                      "Delay (in secs) between automatic screen updates for "
1482
 
                      "supported HTML pages");
1483
 
 
1484
 
    CONFIG_INT_ENTRY (DARK_BG, "Max Table Rows (-e)", NTOP_PREF_MAXLINES, 5,
1485
 
                      pref->maxNumLines,
1486
 
                      "Max number of lines that ntop will display on each "
1487
 
                      " generated HTML page");
 
1605
    sendString("<INPUT TYPE=HIDDEN NAME=DISPLAY_PREFS VALUE=1>");
 
1606
 
 
1607
    CONFIG_INT_ENTRY(DARK_BG, "Refresh Time (-r)", NTOP_PREF_REFRESH_RATE,
 
1608
                     5, pref->refreshRate,
 
1609
                     "Delay (in secs) between automatic screen updates for "
 
1610
                     "supported HTML pages");
 
1611
 
 
1612
    CONFIG_INT_ENTRY(DARK_BG, "Max Table Rows (-e)", NTOP_PREF_MAXLINES, 5,
 
1613
                     pref->maxNumLines,
 
1614
                     "Max number of lines that ntop will display on each "
 
1615
                     " generated HTML page");
1488
1616
 
1489
1617
    sendString("<TR><TD ALIGN=LEFT "DARK_BG">Show Menus For</TD><TD ALIGN=LEFT>");
1490
1618
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf),
1506
1634
    sendString(buf);
1507
1635
    sendString("</TD></TR>");
1508
1636
 
1509
 
    CONFIG_RADIO_ENTRY (DARK_BG, "No Info On Invalid LUNs",
1510
 
                         NTOP_PREF_NO_INVLUN,
1511
 
                         pref->noInvalidLunDisplay,
1512
 
                         "Don't display info about non-existent LUNs");
 
1637
    CONFIG_RADIO_ENTRY(DARK_BG, "No Info On Invalid LUNs",
 
1638
                       NTOP_PREF_NO_INVLUN,
 
1639
                       pref->noInvalidLunDisplay,
 
1640
                       "Don't display info about non-existent LUNs");
1513
1641
 
1514
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Use W3C", NTOP_PREF_W3C,
1515
 
                         pref->w3c,
1516
 
                         "Generate 'BETTER' (but not perfect) w3c "
1517
 
                         "compliant html 4.01 output");
 
1642
    CONFIG_RADIO_ENTRY(DARK_BG, "Use W3C", NTOP_PREF_W3C,
 
1643
                       pref->w3c,
 
1644
                       "Generate 'BETTER' (but not perfect) w3c "
 
1645
                       "compliant html 4.01 output");
1518
1646
    break;
1519
1647
 
1520
1648
  case showPrefIPPref:
 
1649
    sendString("<INPUT TYPE=HIDDEN NAME=IP_PREFS VALUE=1>");
 
1650
 
1521
1651
    sendString("<TR><TD ALIGN=LEFT "DARK_BG">Use IPv4 or IPv6 (-4/-6)</TD><TD ALIGN=LEFT>");
1522
1652
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf),
1523
1653
                  "<INPUT TYPE=radio NAME=%s VALUE=%d %s>v4<br>\n",
1537
1667
                  (pref->ipv4or6 == AF_UNSPEC) ? "CHECKED" : "");
1538
1668
    sendString(buf);
1539
1669
 
1540
 
    CONFIG_STR_ENTRY (DARK_BG, "Local Domain Name (-D)",
1541
 
                      NTOP_PREF_DOMAINNAME, 10, pref->domainName,
1542
 
                      "Only if ntop is having difficulty determining it "
1543
 
                      "from the interface or in case of capture files");
1544
 
 
1545
 
    CONFIG_RADIO_ENTRY (DARK_BG, "No DNS (-n)", NTOP_PREF_NUMERIC_IP,
1546
 
                         pref->numericFlag, "Skip DNS resolution, showing "
1547
 
                         "only numeric IP addresses");
1548
 
 
1549
 
    CONFIG_STR_ENTRY (DARK_BG, "TCP/UDP Protocols To Monitor (-p)",
1550
 
                      NTOP_PREF_PROTOSPECS, 50, pref->protoSpecs,
1551
 
                      "format is &lt;label&gt;=&lt;protocol list&gt; [, &lt;"
1552
 
                      "label&gt;=&lt;protocol list&gt;] OR a filename"
1553
 
                      "of a file containing such a format");
1554
 
    CONFIG_STR_ENTRY (DARK_BG, "P3P-CP", NTOP_PREF_P3PCP, 50,
1555
 
                      pref->P3Pcp,
1556
 
                      "Return value for p3p compact policy header");
1557
 
 
1558
 
    CONFIG_STR_ENTRY (DARK_BG, "P3P-URI", NTOP_PREF_P3PURI, 50,
1559
 
                      pref->P3Puri,
1560
 
                      "Return value for p3p policyref header");
1561
 
 
1562
 
    CONFIG_STR_ENTRY (DARK_BG, "Host Mapper URL (-U)", NTOP_PREF_MAPPERURL,
1563
 
                      50, pref->mapperURL,
1564
 
                      "URL of the mapper.pl utility, for looking up geographical "
1565
 
                      "location of the host");
 
1670
    CONFIG_STR_ENTRY(DARK_BG, "Local Domain Name (-D)",
 
1671
                     NTOP_PREF_DOMAINNAME, 10, pref->domainName,
 
1672
                     "Only if ntop is having difficulty determining it "
 
1673
                     "from the interface or in case of capture files");
 
1674
 
 
1675
    CONFIG_RADIO_ENTRY(DARK_BG, "No DNS (-n)", NTOP_PREF_NUMERIC_IP,
 
1676
                       pref->numericFlag, "Skip DNS resolution, showing "
 
1677
                       "only numeric IP addresses");
 
1678
 
 
1679
    CONFIG_STR_ENTRY(DARK_BG, "TCP/UDP Protocols To Monitor (-p)",
 
1680
                     NTOP_PREF_PROTOSPECS, 50, pref->protoSpecs,
 
1681
                     "format is &lt;label&gt;=&lt;protocol list&gt; [, &lt;"
 
1682
                     "label&gt;=&lt;protocol list&gt;] OR a filename"
 
1683
                     "of a file containing such a format");
 
1684
    CONFIG_STR_ENTRY(DARK_BG, "P3P-CP", NTOP_PREF_P3PCP, 50,
 
1685
                     pref->P3Pcp,
 
1686
                     "Return value for p3p compact policy header");
 
1687
 
 
1688
    CONFIG_STR_ENTRY(DARK_BG, "P3P-URI", NTOP_PREF_P3PURI, 50,
 
1689
                     pref->P3Puri,
 
1690
                     "Return value for p3p policyref header");
 
1691
 
1566
1692
    break;
1567
1693
 
1568
1694
  case showPrefFCPref:
1569
 
    CONFIG_STR_ENTRY (DARK_BG, "WWN Mapper File (-N)", NTOP_PREF_WWN_MAP,
1570
 
                      50, pref->fcNSCacheFile,
1571
 
                      "Location of file mapping VSAN/FC_ID to WWN/Alias");
 
1695
    sendString("<INPUT TYPE=HIDDEN NAME=FC_PREFS VALUE=1>");
 
1696
 
 
1697
    CONFIG_STR_ENTRY(DARK_BG, "WWN Mapper File (-N)", NTOP_PREF_WWN_MAP,
 
1698
                     50, pref->fcNSCacheFile,
 
1699
                     "Location of file mapping VSAN/FC_ID to WWN/Alias");
1572
1700
    break;
1573
 
 
 
1701
    
1574
1702
  case showPrefAdvPref:
1575
 
    CONFIG_INT_ENTRY (DARK_BG, "Max Hashes (-x)", NTOP_PREF_MAXHASH, 5,
1576
 
                      pref->maxNumHashEntries,
1577
 
                      "Limit number of host hash entries created in order"
1578
 
                      " to limit memory used by ntop");
1579
 
 
1580
 
    CONFIG_INT_ENTRY (DARK_BG, "Max Sessions (-X)", NTOP_PREF_MAXSESSIONS, 5,
1581
 
                      pref->maxNumSessions,
1582
 
                      "Limit number of IP sessions entries created in order"
1583
 
                      " to limit memory used by ntop");
1584
 
 
1585
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Don't Merge Interfaces (-M)",
1586
 
                         NTOP_PREF_MERGEIF, pref->mergeInterfaces,
1587
 
                         "Yes = merge data from all interfaces (if possible), No = do not merge data from all interfaces");
1588
 
 
1589
 
    CONFIG_RADIO_ENTRY (DARK_BG, "No Instant Session Purge",
1590
 
                         NTOP_PREF_NO_ISESS_PURGE,
1591
 
                         pref->disableInstantSessionPurge,
1592
 
                         "Makes ntop respect the timeouts for completed "
1593
 
                         "sessions");
1594
 
 
1595
 
#if !defined(WIN32) && defined(HAVE_PCAP_SETNONBLOCK)
1596
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Set Pcap to Nonblocking",
1597
 
                         NTOP_PREF_NOBLOCK, pref->setNonBlocking,
1598
 
                         "On platforms without independent select().<br>"
1599
 
                         "<B>WARNING</B>: Selecting this option will increase "
1600
 
                         "CPU usage significantly - see the man page and FAQ.");
 
1703
    sendString("<INPUT TYPE=HIDDEN NAME=ADVANCED_PREFS VALUE=1>");
 
1704
 
 
1705
    CONFIG_INT_ENTRY(DARK_BG, "Max Hashes (-x)", NTOP_PREF_MAXHASH, 5,
 
1706
                     pref->maxNumHashEntries,
 
1707
                     "Limit number of host hash entries created in order"
 
1708
                     " to limit memory used by ntop");
 
1709
 
 
1710
    CONFIG_INT_ENTRY(DARK_BG, "Max Sessions (-X)", NTOP_PREF_MAXSESSIONS, 5,
 
1711
                     pref->maxNumSessions,
 
1712
                     "Limit number of IP sessions entries created in order"
 
1713
                     " to limit memory used by ntop");
 
1714
 
 
1715
    CONFIG_RADIO_ENTRY(DARK_BG, "Don't Merge Interfaces (-M)",
 
1716
                       NTOP_PREF_MERGEIF, pref->mergeInterfaces,
 
1717
                       "Yes = merge data from all interfaces (if possible), No = do not merge data from all interfaces");
 
1718
 
 
1719
#ifdef HAVE_LIBPCRE
 
1720
    CONFIG_RADIO_ENTRY(DARK_BG, "Enable Protocol Guessing",
 
1721
                       NTOP_PREF_ENABLE_L7PROTO, pref->enableL7,
 
1722
                       "Enabling patterm matching, ntop will be able to guess the protocol being used. "
 
1723
                       "Neverthelss this practice has a little performance penalty.");
1601
1724
#endif
1602
 
    CONFIG_RADIO_ENTRY (DARK_BG, "No web on memory error",
1603
 
                         NTOP_PREF_NO_STOPCAP, pref->disableStopcap,
1604
 
                         "Change default of having the web interface available "
1605
 
                         "albeit with static content until ntop is shutdown");
1606
 
 
1607
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Don't Trust MAC Address (-o)",
1608
 
                         NTOP_PREF_NO_TRUST_MAC, pref->dontTrustMACaddr,
1609
 
                         "Situations which may require this option include "
1610
 
                         "port/VLAN mirror");
1611
 
 
1612
 
    CONFIG_STR_ENTRY (DARK_BG, "Pcap Log Base Path (-O)",
1613
 
                      NTOP_PREF_PCAP_LOGBASE, 50, pref->pcapLogBasePath,
1614
 
                      "Directory where packet dump files are created");
 
1725
 
 
1726
    CONFIG_RADIO_ENTRY(DARK_BG, "No Instant Session Purge",
 
1727
                       NTOP_PREF_NO_ISESS_PURGE,
 
1728
                       pref->disableInstantSessionPurge,
 
1729
                       "Makes ntop respect the timeouts for completed "
 
1730
                       "sessions");
 
1731
 
 
1732
    CONFIG_RADIO_ENTRY(DARK_BG, "Don't Trust MAC Address (-o)",
 
1733
                       NTOP_PREF_NO_TRUST_MAC, pref->dontTrustMACaddr,
 
1734
                       "Situations which may require this option include "
 
1735
                       "port/VLAN mirror");
 
1736
 
 
1737
    CONFIG_STR_ENTRY(DARK_BG, "Pcap Log Base Path (-O)",
 
1738
                     NTOP_PREF_PCAP_LOGBASE, 50, pref->pcapLogBasePath,
 
1739
                     "Directory where packet dump files are created");
1615
1740
 
1616
1741
#ifdef MAKE_WITH_SSLWATCHDOG_RUNTIME
1617
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Use SSL Watchdog",
1618
 
                         NTOP_PREF_USE_SSLWATCH, pref->useSSLwatchdog,
1619
 
                         "");
 
1742
    CONFIG_RADIO_ENTRY(DARK_BG, "Use SSL Watchdog",
 
1743
                       NTOP_PREF_USE_SSLWATCH, pref->useSSLwatchdog,
 
1744
                       "");
1620
1745
#endif
1621
1746
 
1622
1747
#ifdef MAKE_WITH_SCHED_YIELD
1623
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Disable SchedYield",
1624
 
                         NTOP_PREF_NO_SCHEDYLD, pref->disableSchedYield,
1625
 
                         "");
 
1748
    CONFIG_RADIO_ENTRY(DARK_BG, "Disable SchedYield",
 
1749
                       NTOP_PREF_NO_SCHEDYLD, pref->disableSchedYield,
 
1750
                       "");
1626
1751
#endif
1627
1752
    break;
1628
1753
 
1629
1754
  case showPrefDbgPref:
1630
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Run in debug mode (-K)",
1631
 
                         NTOP_PREF_DBG_MODE, pref->debugMode,
1632
 
                         "Simplifies debugging Ntop");
1633
 
 
1634
 
    CONFIG_INT_ENTRY (DARK_BG, "Trace Level (-t)", NTOP_PREF_TRACE_LVL, 5,
1635
 
                      pref->traceLevel,
1636
 
                      "Level of detailed messages ntop will display");
1637
 
 
1638
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Save Other Packets (-j)",
1639
 
                         NTOP_PREF_DUMP_OTHER, pref->enableOtherPacketDump,
1640
 
                         "Useful for understanding packets unclassified by "
1641
 
                         "Ntop");
1642
 
 
1643
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Save Suspicious Packets (-q)",
1644
 
                         NTOP_PREF_DUMP_SUSP,
1645
 
                         pref->enableSuspiciousPacketDump,
1646
 
                         "Create a dump file (pcap) of suspicious packets");
1647
 
 
1648
 
    CONFIG_STR_ENTRY (DARK_BG, "Log HTTP Requests (-a)",
1649
 
                      NTOP_PREF_ACCESS_LOG, 50, pref->accessLogFile,
1650
 
                      "Request HTTP logging and specify the location of the "
1651
 
                      "log file");
 
1755
    sendString("<INPUT TYPE=HIDDEN NAME=DEBUG_PREFS VALUE=1>");
 
1756
 
 
1757
    CONFIG_RADIO_ENTRY(DARK_BG, "Run in debug mode (-K)",
 
1758
                       NTOP_PREF_DBG_MODE, pref->debugMode,
 
1759
                       "Simplifies debugging Ntop");
 
1760
 
 
1761
    CONFIG_INT_ENTRY(DARK_BG, "Trace Level (-t)<br><i>&nbsp;&nbsp;&nbsp;(takes effect immediately)</i>", NTOP_PREF_TRACE_LVL, 5,
 
1762
                     pref->traceLevel,
 
1763
                     "Level of detailed messages ntop will display");
 
1764
 
 
1765
    CONFIG_RADIO_ENTRY(DARK_BG, "Save Other Packets (-j)",
 
1766
                       NTOP_PREF_DUMP_OTHER, pref->enableOtherPacketDump,
 
1767
                       "Useful for understanding packets unclassified by "
 
1768
                       "Ntop");
 
1769
 
 
1770
    CONFIG_RADIO_ENTRY(DARK_BG, "Save Suspicious Packets (-q)",
 
1771
                       NTOP_PREF_DUMP_SUSP,
 
1772
                       pref->enableSuspiciousPacketDump,
 
1773
                       "Create a dump file (pcap) of suspicious packets");
 
1774
 
 
1775
    CONFIG_STR_ENTRY(DARK_BG, "Log HTTP Requests (-a)",
 
1776
                     NTOP_PREF_ACCESS_LOG, 50, pref->accessLogFile,
 
1777
                     "Request HTTP logging and specify the location of the "
 
1778
                     "log file");
1652
1779
 
1653
1780
#ifndef WIN32
1654
 
    CONFIG_INT_ENTRY (DARK_BG, "Use Syslog (-L)", NTOP_PREF_USE_SYSLOG, 5,
1655
 
                      pref->useSyslog,
1656
 
                      "Send log messages to the system log instead of stdout");
 
1781
    CONFIG_INT_ENTRY(DARK_BG, "Use Syslog (-L)", NTOP_PREF_USE_SYSLOG, 5,
 
1782
                     pref->useSyslog,
 
1783
                     "Send log messages to the system log instead of stdout");
1657
1784
#endif
1658
1785
 
1659
 
    CONFIG_STR_ENTRY (DARK_BG, "Write captured frames to (-l)",
1660
 
                      NTOP_PREF_PCAP_LOG, 50, pref->pcapLog,
1661
 
                      "Causes a dump file to be created of the captured by "
1662
 
                      "ntop in libpcap format");
1663
 
 
1664
 
    CONFIG_RADIO_ENTRY (DARK_BG, "Disable Extra Mutex Info",
1665
 
                         NTOP_PREF_NO_MUTEX_EXTRA,
1666
 
                         pref->disableMutexExtraInfo,
1667
 
                         "Disables storing of extra information about the locks"
1668
 
                         " and unlocks of the protective mutexes Ntop uses");
 
1786
    CONFIG_STR_ENTRY(DARK_BG, "Write captured frames to (-l)",
 
1787
                     NTOP_PREF_PCAP_LOG, 50, pref->pcapLog,
 
1788
                     "Causes a dump file to be created of the captured by "
 
1789
                     "ntop in libpcap format");
 
1790
 
 
1791
    CONFIG_RADIO_ENTRY(DARK_BG, "Disable Extra Mutex Info",
 
1792
                       NTOP_PREF_NO_MUTEX_EXTRA,
 
1793
                       pref->disableMutexExtraInfo,
 
1794
                       "Disables storing of extra information about the locks"
 
1795
                       " and unlocks of the protective mutexes Ntop uses");
 
1796
    break;
 
1797
 
 
1798
  case showPrefDBPref:
 
1799
    sendString("<INPUT TYPE=HIDDEN NAME=DB_PREFS VALUE=1>");
 
1800
 
 
1801
    CONFIG_RADIO_ENTRY(DARK_BG, "Save Data into DB",
 
1802
                       NTOP_PREF_SAVE_REC_INTO_DB,
 
1803
                       pref->saveRecordsIntoDb,
 
1804
                       "Enable/disable ntop to save data (sessions and NetFlow flows) into the SQL (MySQL) database.");
 
1805
 
 
1806
    if(pref->saveRecordsIntoDb) {
 
1807
      CONFIG_RADIO_ENTRY(DARK_BG, "Save Sessions into DB",
 
1808
                         NTOP_PREF_SAVE_SESSIONS_INTO_DB,
 
1809
                         pref->saveSessionsIntoDb,
 
1810
                         "Enable/disable ntop to save TCP/UDP sessiond into the SQL (MySQL) database.");      
 
1811
    } else
 
1812
      pref->saveSessionsIntoDb = 0;
 
1813
 
 
1814
    CONFIG_STR_ENTRY(DARK_BG, "DB Configuration", 
 
1815
                     NTOP_PREF_SQL_DB_CONFIG, 20, pref->sqlDbConfig,
 
1816
                     "Database (MySQL) database configuration: format &lt;Db host&gt;:&lt;DB user&gt;:&lt;DB User Pw&gt;.<br>"
 
1817
                     "Note that the credentials must allow this user to create tables,<br>"
 
1818
                     " hence make sure that the user privileges are properly specified.<p>"
 
1819
                     "<b>Note</b>: changes will have effect at the next ntop restart");
 
1820
 
 
1821
    CONFIG_INT_ENTRY(DARK_BG, "DB Max record lifetime", 
 
1822
                     NTOP_PREF_SQL_REC_LIFETIME, 5,
 
1823
                     pref->sqlRecDaysLifetime,
 
1824
                     "Maximum database (MySQL) records (flows and netflows) persistence [days] in the database after which <br>"
 
1825
                     "will be automatically removed. Set this parameter to 0 (zero) to disable record purge.");
1669
1826
    break;
1670
1827
  }
1671
1828
 
1672
1829
  sendString ("</TABLE>");
1673
 
  /* Save Preferences */
 
1830
  /* Save Prefs */
1674
1831
  if (configScr == showPrefDisplayPref) {
1675
1832
    sendString("<tr><td colspan=\"2\" align=\"center\">&nbsp;<p>"
1676
 
               "<input type=submit name=SP value=\"Save&nbsp;Preferences\">&nbsp;"
1677
 
               "<input type=submit name=AP value=\"Apply&nbsp;Preferences\">&nbsp;"
1678
 
               "<input type=submit name=RD value=\"Restore&nbsp;Defaults\">"
 
1833
               "<input type=submit name=" NTOP_SAVE_PREFS " value=\"Save&nbsp;Prefs\">&nbsp;"
 
1834
               "<input type=submit name=AP value=\"Apply&nbsp;Prefs\">&nbsp;"
 
1835
               "<input type=submit name=" NTOP_RESTORE_DEF " value=\"Restore&nbsp;Defaults\">"
1679
1836
               "</td></tr></table>\n"
1680
1837
               "</form>\n<p></center>\n");
1681
 
  }
1682
 
  else {
 
1838
  } else {
1683
1839
    sendString("<tr><td colspan=\"2\" align=\"center\">&nbsp;<p>"
1684
 
               "<input type=submit name=SP value=\"Save&nbsp;Preferences\">&nbsp;"
1685
 
               "<input type=submit name=RD value=\"Restore&nbsp;Defaults\">"
 
1840
               "<input type=submit name=" NTOP_SAVE_PREFS " value=\"Save&nbsp;Prefs\">&nbsp;"
 
1841
               "<input type=submit name=" NTOP_RESTORE_DEF " value=\"Restore&nbsp;Defaults\">"
1686
1842
               "</td></tr></table>\n"
1687
1843
               "</form>\n<p></center>\n");
1688
1844
  }
1689
1845
 
1690
 
  sendString ("<P Align=CENTER><FONT COLOR = \"FF00FF\">Settings take effect at next startup</FONT></CENTER><P>");
 
1846
  sendString ("<P Align=CENTER><FONT COLOR = \"FF00FF\">Except as indicated, settings take effect at next startup</FONT></CENTER><P>");
1691
1847
  sendString ("<P Align=CENTER><FONT COLOR = \"FF00FF\">See <a href = \"info.html\">Show Configuration</A>"
1692
1848
              " for runtime values</FONT></CENTER><P>");
1693
1849