Changeset 2368


Ignore:
Timestamp:
2001-05-07T13:53:03+12:00 (23 years ago)
Author:
sjboddie
Message:

Many cgi arguments used by the collector are now stored in a gdbm database
on disk instead of being passed about in the url. This was done to prevent
specific url length problems in some situations when using the collector.
Since the same problem could potentially surface within other parts of
Greenstone we should probably look at a similar but more general solution
to be used throughout Greenstone. I'll leave that for another day though
:-)

Location:
trunk/gsdl/src/recpt
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/recpt/Makefile.in

    r2234 r2368  
    114114        statusaction.h pageaction.h comtypes.h recptproto.h \
    115115        pingaction.h queryaction.h documentaction.h \
    116         extlinkaction.h htmlutils.h \
     116        extlinkaction.h htmlutils.h argdb.h \
    117117        querytools.h formattools.h tipaction.h authenaction.h infodbclass.h \
    118118                userdb.h usersaction.h vlistbrowserclass.h hlistbrowserclass.h \
     
    140140        vlistbrowserclass.cpp hlistbrowserclass.cpp datelistbrowserclass.cpp \
    141141        invbrowserclass.cpp pagedbrowserclass.cpp htmlbrowserclass.cpp \
    142         phindbrowserclass.cpp  historydb.cpp collectoraction.cpp
     142        phindbrowserclass.cpp  historydb.cpp collectoraction.cpp argdb.cpp
    143143
    144144
     
    166166        htmlgen.o statusaction.o pageaction.o comtypes.o \
    167167        recptproto.o pingaction.o queryaction.o documentaction.o \
    168         extlinkaction.o htmlutils.o querytools.o \
     168        extlinkaction.o htmlutils.o querytools.o argdb.o \
    169169        formattools.o tipaction.o authenaction.o \
    170170                infodbclass.o userdb.o usersaction.o vlistbrowserclass.o \
  • trunk/gsdl/src/recpt/collectoraction.cpp

    r2303 r2368  
    3737#include "gsdltimes.h"
    3838#include "nullproto.h"
     39#include "argdb.h"
    3940
    4041#if !defined (__WIN32__)
     
    8485  arg_ainfo.defaultstatus = cgiarginfo::weak;
    8586  arg_ainfo.argdefault = "";
    86   arg_ainfo.savedarginfo = cgiarginfo::must;
     87  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    8788  argsinfo.addarginfo (NULL, arg_ainfo);
    8889
     
    100101  arg_ainfo.defaultstatus = cgiarginfo::weak;
    101102  arg_ainfo.argdefault = "";
    102   arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     103  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    103104  argsinfo.addarginfo (NULL, arg_ainfo);
    104105
     
    108109  arg_ainfo.defaultstatus = cgiarginfo::weak;
    109110  arg_ainfo.argdefault = "";
    110   arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     111  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    111112  argsinfo.addarginfo (NULL, arg_ainfo);
    112113
     
    116117  arg_ainfo.defaultstatus = cgiarginfo::weak;
    117118  arg_ainfo.argdefault = "0";
    118   arg_ainfo.savedarginfo = cgiarginfo::must;
     119  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    119120  argsinfo.addarginfo (NULL, arg_ainfo);
    120121
     
    124125  arg_ainfo.defaultstatus = cgiarginfo::weak;
    125126  arg_ainfo.argdefault = "";
    126   arg_ainfo.savedarginfo = cgiarginfo::must;
     127  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    127128  argsinfo.addarginfo (NULL, arg_ainfo);
    128129
     
    133134  arg_ainfo.defaultstatus = cgiarginfo::weak;
    134135  arg_ainfo.argdefault = "0";
    135   arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     136  arg_ainfo.savedarginfo = cgiarginfo::mustnot; 
    136137  argsinfo.addarginfo (NULL, arg_ainfo);
    137138
     
    141142  arg_ainfo.defaultstatus = cgiarginfo::weak;
    142143  arg_ainfo.argdefault = "";
    143   arg_ainfo.savedarginfo = cgiarginfo::must;
     144  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    144145  argsinfo.addarginfo (NULL, arg_ainfo);
    145146
     
    149150  arg_ainfo.defaultstatus = cgiarginfo::weak;
    150151  arg_ainfo.argdefault = "";
    151   arg_ainfo.savedarginfo = cgiarginfo::must;
     152  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    152153  argsinfo.addarginfo (NULL, arg_ainfo);
    153154
     
    157158  arg_ainfo.defaultstatus = cgiarginfo::weak;
    158159  arg_ainfo.argdefault = "";
    159   arg_ainfo.savedarginfo = cgiarginfo::must;
     160  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    160161  argsinfo.addarginfo (NULL, arg_ainfo);
    161162
     
    165166  arg_ainfo.defaultstatus = cgiarginfo::weak;
    166167  arg_ainfo.argdefault = "";
    167   arg_ainfo.savedarginfo = cgiarginfo::must;
     168  arg_ainfo.savedarginfo = cgiarginfo::mustnot; // saved on disk
    168169  argsinfo.addarginfo (NULL, arg_ainfo);
    169170
     
    286287}
    287288
    288 bool collectoraction::check_cgiargs (cgiargsinfoclass &/*argsinfo*/, cgiargsclass &args,
     289bool collectoraction::check_cgiargs (cgiargsinfoclass &argsinfo, cgiargsclass &args,
    289290                     ostream &logout) {
    290291
     
    312313    // system call)
    313314    gsdl_system ("perl -S cleantmp.pl", false, logout);
     315  }
     316
     317  if (current_page != "intro" && current_page != "bildstatus" &&
     318      current_page != "bildframe1" && current_page != "new") {
     319    // update arguments that were saved to the harddrive
     320    enum source_t {default_arg, compressed_arg, cgi_arg, program_arg};
     321    text_tmap saved_args;
     322    saved_args["bc1inputdir1"] = "";
     323    saved_args["bc1inputdir2"] = "";
     324    saved_args["bc1inputdir3"] = "";
     325    saved_args["bc1inputdir4"] = "";
     326    saved_args["bc1fullname"] = "";
     327    saved_args["bc1contactemail"] = "";
     328    saved_args["bc1aboutdesc"] = "";
     329    saved_args["bc1clone"] = "";
     330
     331    // update the argdb database with any arguments that were set
     332    // by previous page
     333    text_tmap::iterator here = saved_args.begin();
     334    text_tmap::iterator end = saved_args.end();
     335    while (here != end) {
     336      if (args.lookupcgiarg((*here).first).source != default_arg) {
     337    (*here).second = args[(*here).first];
     338      }
     339      here++;
     340    }
     341
     342    argdb *args_on_disk = new argdb(filename_cat(get_collectdir(args), "argdb.db"));
     343    if (!args_on_disk->update_args(saved_args)) {
     344      // error
     345
     346    }
     347
     348    // update args from argdb
     349    saved_args.erase(saved_args.begin(), saved_args.end());
     350    if (!args_on_disk->get_args(saved_args)) {
     351      // error
     352
     353    }
     354    delete args_on_disk;
     355    here = saved_args.begin();
     356    end = saved_args.end();
     357    while (here != end) {
     358      if (!(*here).second.empty()) {
     359    args[(*here).first] = (*here).second;
     360      }
     361      here ++;
     362    }
    314363  }
    315364
  • trunk/gsdl/src/recpt/win32.mak

    r2338 r2368  
    7676        datelistbrowserclass.h invbrowserclass.h pagedbrowserclass.h \
    7777        htmlbrowserclass.h historydb.h phindbrowserclass.h collectoraction.h \
    78         nullprtoto.h
     78        nullproto.h argdb.h
    7979
    8080CGIHEADERS = cgiwrapper.h
     
    9191        vlistbrowserclass.cpp hlistbrowserclass.cpp datelistbrowserclass.cpp \
    9292        invbrowserclass.cpp pagedbrowserclass.cpp htmlbrowserclass.cpp \
    93         historydb.cpp phindbrowserclass.cpp collectoraction.cpp nullproto.cpp
     93        historydb.cpp phindbrowserclass.cpp collectoraction.cpp nullproto.cpp \
     94        argdb.cpp
    9495
    9596CGISOURCES = librarymain.cpp cgiwrapper.cpp
     
    106107        vlistbrowserclass.obj hlistbrowserclass.obj datelistbrowserclass.obj \
    107108        invbrowserclass.obj pagedbrowserclass.obj htmlbrowserclass.obj \
    108         historydb.obj phindbrowserclass.obj collectoraction.obj nullproto.obj
     109        historydb.obj phindbrowserclass.obj collectoraction.obj nullproto.obj \
     110        argdb.obj
    109111
    110112CGIOBJECTS = librarymain.obj cgiwrapper.obj
Note: See TracChangeset for help on using the changeset viewer.