* Installing DAD 1. Database setup - Create a database. The recommended name for your database is 'dad'. - Edit config.pm and change $DBI_DATASOURCE, $DBI_USER, and $DBI_PASSWORD to correspond to the location and authorization scheme for the database you've created. - Apply the SQL commands in 'schema' to your database. 2. Perl module setup - Copy DAD's modules (auth.pm, config.pm, private.pm, public.pm, and report.pm) to a subdirectory called "DAD" somewhere in your Perl include path. For instance, If your Perl include path includes "/usr/lib/perl5/site_perl", you could put the modules in "/usr/lib/perl5/site_perl/DAD". You can get a list of directories in your Perl include path by running "perl -V" and looking at the list of directories it tells you are in "@INC". Make sure you have the modules HTML::Entities and "URI::Escape" installed. HTML::Entities is in the HTML::Parser module. URI::Escape is in the libwww-perl module. 3. Web server setup - Configure DAD::public (ad delivery) in your httpd.conf with something like: SetHandler perl-script PerlHandler DAD::public - Configure DAD::private (administrative interface), preferably on a server that is not publically accessible with something like: SetHandler perl-script PerlHandler DAD::private - Configure DAD::report (reporting to clients) with something like: SetHandler perl-script AuthName "DAD Reporting" AuthType Basic require valid-user PerlAuthenHandler DAD::auth PerlHandler DAD::report - Edit $TARGET_FRAME in config.pm to change the name of the frame that ad clickthroughs will appear in, if desired. - Edit $INTERNAL_IP in config.pm to be regular expression that matches IP addresses you don't want to count for ad impressions or clickthroughs. Because this is a regular expression, don't forget to backslash-escape periods. - Edit $REDIRECT_FATAL in config.pm to change the URL that users will get redirected to if the redirection URL in their ad clickthrough is missing. - Edit %FATAL_ADS in config.pm and fatal_ad() in public.pm to set up the correct failure-mode behavior if DAD can't talk to the database to handle ads correctly. The keys in %FATAL_ADS are group names or other tokens whose rule-based behavior you've defined in fatal_ad(). The values are hashes that have four keys (url, src, height, width) that describe the clickthrough URL, image source, image height, and image width of the ad that should be displayed in a given fatal situation. The sample behavior in %FATAL_ADS and fatal_ad() is definitely not right for you. You should change it. 4. Auxiliary programs - If you are going to use bridge.c (a small cgi that can be used with products that can't do virtual subrequests (e.g. Discussion or chat CGIs)), edit the #defines for DAD_SERVER, DAD_PORT, and DAD_BASE_URL as appropriate for your server. Make bridge with 'make bridge' and put it in a CGI-enabled directory of your web space. - schedule makeSummaries.pl to be run shortly after midnight every day - schedule resetRDI.pl to be run sometime in the early morning every day