+extern FileListObject AccessLog;
+extern int PerUserLimitsNumber;
+extern struct PerUserLimitStruct PerUserLimits[MAX_USER_LIMITS];
+extern enum PerUserFileCreationEnum PerUserFileCreation;
+extern char ImageDir[MAXLEN];
+
+struct param_list
+{
+ //! The name of the value of the parameter.
+ const char *name;
+ //! The bit to set if the value is found.
+ unsigned long int value;
+ //! The value is invalid if any bit of this mask is set in the parameter.
+ unsigned long int exclude;
+};
+
+struct sort_list
+{
+ //! The name of the value of the parameter.
+ const char *name;
+ //! The bit to set if the value is found.
+ unsigned long int value;
+};
+
+struct select_list
+{
+ //! The name of the value of the parameter.
+ const char *name;
+ //! The value to assign when the name is selected.
+ int value;
+};
+
+static struct param_list report_type_values[]=
+{
+ {"users_sites",REPORT_TYPE_USERS_SITES,0},
+ {"topusers",REPORT_TYPE_TOPUSERS,0},
+ {"topsites",REPORT_TYPE_TOPSITES,0},
+ {"sites_users",REPORT_TYPE_SITES_USERS,0},
+ {"date_time",REPORT_TYPE_DATE_TIME,0},
+ {"denied",REPORT_TYPE_DENIED,0},
+ {"auth_failures",REPORT_TYPE_AUTH_FAILURES,0},
+ {"site_user_time_date",REPORT_TYPE_SITE_USER_TIME_DATE,0},
+ {"downloads",REPORT_TYPE_DOWNLOADS,0},
+};
+
+static struct param_list data_field_values[]=
+{
+ {"user",DATA_FIELD_USER,0},
+ {"date",DATA_FIELD_DATE,0},
+ {"time",DATA_FIELD_TIME,0},
+ {"url",DATA_FIELD_URL,0},
+ {"connect",DATA_FIELD_CONNECT,0},
+ {"bytes",DATA_FIELD_BYTES,0},
+ {"in_cache",DATA_FIELD_IN_CACHE,0},
+ {"out_cache",DATA_FIELD_OUT_CACHE,0},
+ {"elapsed",DATA_FIELD_ELAPSED,0},
+};
+
+static struct param_list topuserfields_values[]=
+{
+ {"NUM",TOPUSERFIELDS_NUM,0},
+ {"DATE_TIME",TOPUSERFIELDS_DATE_TIME,0},
+ {"USERID",TOPUSERFIELDS_USERID,0},
+ {"USERIP",TOPUSERFIELDS_USERIP,0},
+ {"CONNECT",TOPUSERFIELDS_CONNECT,0},
+ {"BYTES",TOPUSERFIELDS_BYTES,0},
+ {"%BYTES",TOPUSERFIELDS_SETYB,0},
+ {"SETYB",TOPUSERFIELDS_SETYB,0},
+ {"IN-CACHE-OUT",TOPUSERFIELDS_IN_CACHE_OUT,0},
+ {"USED_TIME",TOPUSERFIELDS_USED_TIME,0},
+ {"MILISEC",TOPUSERFIELDS_MILISEC,0},
+ {"%TIME",TOPUSERFIELDS_PTIME,0},
+ {"TOTAL",TOPUSERFIELDS_TOTAL,0},
+ {"AVERAGE",TOPUSERFIELDS_AVERAGE,0},
+};
+
+static struct param_list userreportfields_values[]=
+{
+ {"CONNECT",USERREPORTFIELDS_CONNECT,0},
+ {"BYTES",USERREPORTFIELDS_BYTES,0},
+ {"%BYTES",USERREPORTFIELDS_SETYB,0},
+ {"SETYB",USERREPORTFIELDS_SETYB,0},
+ {"IN-CACHE-OUT",USERREPORTFIELDS_IN_CACHE_OUT,0},
+ {"USED_TIME",USERREPORTFIELDS_USED_TIME,0},
+ {"MILISEC",USERREPORTFIELDS_MILISEC,0},
+ {"%TIME",USERREPORTFIELDS_PTIME,0},
+ {"TOTAL",USERREPORTFIELDS_TOTAL,0},
+ {"AVERAGE",USERREPORTFIELDS_AVERAGE,0},
+};
+
+static struct param_list index_values[]=
+{
+ {"yes",INDEX_YES,~INDEX_YES},
+ {"no",INDEX_NO,~INDEX_NO},
+ {"only",INDEX_ONLY,~INDEX_ONLY},
+};
+
+static struct param_list index_tree_values[]=
+{
+ {"date",INDEX_TREE_DATE,~INDEX_TREE_DATE},
+ {"file",INDEX_TREE_FILE,~INDEX_TREE_FILE},
+};
+
+static struct param_list indexfields_values[]=
+{
+ {"DIRSIZE",INDEXFIELDS_DIRSIZE,0},
+};
+
+static struct param_list ntml_userformat_values[]=
+{
+ {"user",NTLMUSERFORMAT_USER,~NTLMUSERFORMAT_USER},
+ {"domainname+username",NTLMUSERFORMAT_DOMAINUSER,~NTLMUSERFORMAT_DOMAINUSER},
+};
+
+static struct param_list recnouser_values[]=
+{
+ {"ip",RECORDWITHOUTUSER_IP,~RECORDWITHOUTUSER_IP},
+ {"ignore",RECORDWITHOUTUSER_IGNORE,~RECORDWITHOUTUSER_IGNORE},
+ {"everybody",RECORDWITHOUTUSER_EVERYBODY,~RECORDWITHOUTUSER_EVERYBODY},
+};
+
+static struct param_list datafileurl_values[]=
+{
+ {"ip",DATAFILEURL_IP,~DATAFILEURL_IP},
+ {"name",DATAFILEURL_NAME,~DATAFILEURL_NAME},
+};
+
+static struct param_list displayvalue_values[]=
+{
+ {"bytes",DISPLAY_BYTES,~DISPLAY_BYTES},
+ {"abbreviation",DISPLAY_ABBREV,~DISPLAY_ABBREV},
+};
+
+static struct param_list datetime_values[]=
+{
+ {"elap",DATETIME_ELAP,0},
+ {"bytes",DATETIME_BYTE,0},
+};
+
+static struct param_list realtime_unauth_values[]=
+{
+ {"show",REALTIME_UNAUTH_REC_SHOW,~REALTIME_UNAUTH_REC_SHOW},
+ {"ignore",REALTIME_UNAUTH_REC_IGNORE,~REALTIME_UNAUTH_REC_IGNORE},
+};
+
+struct sort_list topuser_sort[]=
+{
+ {"BYTES",TOPUSER_SORT_BYTES},
+ {"USER",TOPUSER_SORT_USER},
+ {"CONNECT",TOPUSER_SORT_CONNECT},
+ {"TIME",TOPUSER_SORT_TIME},
+};
+
+struct sort_list topsite_sort[]=
+{
+ {"BYTES",TOPSITE_SORT_BYTES},
+ {"CONNECT",TOPSITE_SORT_CONNECT},
+ {"TIME",TOPSITE_SORT_TIME},
+ {"USER",TOPSITE_SORT_USER},
+};
+
+struct sort_list user_sort[]=
+{
+ {"BYTES",USER_SORT_BYTES},
+ {"SITE",USER_SORT_SITE},
+ {"CONNECT",USER_SORT_CONNECT},
+ {"TIME",USER_SORT_TIME},
+};
+
+static struct select_list per_user_limit_create_file[]=
+{
+ {"always",PUFC_Always}, //always create an empty file
+ {"as_required",PUFC_AsRequired}, //create the file if necessary (no empty file is created)
+};