#!perl ################################################################################ # WeBWorK mod_perl (c) 1995-2002 WeBWorK Team, Univeristy of Rochester # $Id: global.conf.dist,v 1.18 2003-04-23 06:35:06 sh002i Exp $ ################################################################################ # This file is used to set up the default WeBWorK course environment for all # requests. Values may be overwritten by the course.conf for a specific course. # All package variables set in this file are added to the course environment. # If you wish to set a variable here but omit it from the course environment, # use the "my" keyword. The following variables are available to this file: # # $webworkRoot directory that contains the WeBWorK distribution # $webworkURL base URL handled by Apache::WeBWorK # $courseName name of the course being used ################################################################################ # WeBWorK settings ################################################################################ %webworkDirs = ( root => "$webworkRoot", bin => "$webworkRoot/bin", conf => "$webworkRoot/conf", courses => "$webworkRoot/courses", lib => "$webworkRoot/lib", logs => "$webworkRoot/logs", macros => "$webworkRoot/macros", tmp => "$webworkRoot/tmp", ); %webworkFiles = ( environment => "$webworkDirs{conf}/global.conf", hardcopySnippets => { preamble => "$webworkDirs{conf}/hardcopyPreamble.tex", setHeader => "$webworkDirs{conf}/hardcopySetHeader.pg", problemDivider => "$webworkDirs{conf}/hardcopyProblemDivider.tex", setFooter => "$webworkDirs{conf}/hardcopySetFooter.pg", setDivider => "$webworkDirs{conf}/hardcopySetDivider.tex", postamble => "$webworkDirs{conf}/hardcopyPostamble.tex", }, screenSnippets => { setHeader => "$webworkDirs{conf}/screenSetHeader.pg", }, logs => { timing => "$webworkDirs{logs}/timing.log", }, ); %webworkURLs = ( root => "$webworkURLRoot", home => "http://host.yourdomaon.edu/webwork-info", htdocs => "/webwork_files", docs => "http://webhost.math.rochester.edu/webworkdocs/docs", oldProf => "/webwork-old/profLogin.pl", ); ################################################################################ # Default course-specific settings ################################################################################ my $courseRoot = "$webworkDirs{courses}/$courseName"; %courseDirs = ( root => "$courseRoot", DATA => "$courseRoot/DATA", auth_DATA => "$courseRoot/DATA/.auth", html => "$courseRoot/html", html_images => "$courseRoot/html/images", html_temp => "$courseRoot/html/tmp", logs => "$courseRoot/logs", scoring => "$courseRoot/scoring", templates => "$courseRoot/templates", macros => "$courseRoot/templates/macros", ); %courseFiles = ( environment => "$courseDirs{root}/course.conf", motd => "$courseDirs{root}/motd.txt", ); # quick hack to fix transaction logging. blah. $webworkFiles{logs}->{transaction} = "$courseDirs{logs}/transaction.log"; my $courseURLRoot = "$webworkURLs{htdocs}/courses/$courseName"; %courseURLs = ( root => "$courseURLRoot", html => "$courseURLRoot", html_temp => "$courseURLRoot/tmp", ); ################################################################################ # Other site-specific options ################################################################################ %mail = ( smtpServer => "mail.math.rochester.edu", smtpSender => "webwork\@math.rochester.edu", # allowedRecipients defines addresses that the PG system is allowed to # send mail to. this prevents subtle PG exploits. This should be set # in course.conf to the addresses of professors of each course. Sending # mail from the PG system (i.e. questionaires, essay questions) will # fail if this is not set somewhere (either here or in course.conf). #allowedRecipients => [ # "yourname\@host.yourdomain.edu", #], # if defined, feedbackRecipients overrides the list of recipients for # feedback email. It's appropriate to set this in the course.conf for # specific courses, but probably not in global.conf. if not defined, # mail is sent to all professors and TAs for a given course #feedbackRecipients => [ # "prof1\@host.yourdomain.edu", # "prof2\@host.yourdomain.edu", #], # feedbackVerbosity: # 0: send only the feedback comment and context link # 1: as in 0, plus user, set, problem, and PG data # 2: as in 1, plus the problem environment (debugging data) feedbackVerbosity => 1, ); %externalPrograms = ( mkdir => "/bin/mkdir", tth => "/usr/local/bin/tth", pdflatex => "/usr/local/bin/pdflatex", latex => "/usr/local/bin/latex", dvipng => "/usr/local/bin/dvipng -mode ljfivemp -D600 -Q6 -x1000.5 -bgTransparent", gif2eps => "$webworkDirs{bin}/gif2eps", png2eps => "$webworkDirs{bin}/png2eps", gif2png => "$webworkDirs{bin}/gif2png", ); ################################################################################ # Frontend options ################################################################################ %templates = ( system => "$webworkDirs{conf}/barebones.template", ); ################################################################################ # Database and session ################################################################################ # dbInfo records some data for the "old" WW/Classlist/Auth.pm database system # {auth,wwdb,cldb}_type = database type: GDBM currently implemented # {auth_passwd,auth_perm,auth_keys,wwdb,cldb}_file = path to database file %dbInfo = ( auth_type => "GDBM", auth_passwd_file => "$courseDirs{auth_DATA}/$courseName\_password_DB", auth_perm_file => "$courseDirs{auth_DATA}/$courseName\_permissions_DB", auth_keys_file => "$courseDirs{auth_DATA}/keys", wwdb_type => "GDBM", wwdb_file => "$courseDirs{DATA}/$courseName\_webwork_DB", cldb_type => "GDBM", cldb_file => "$courseDirs{DATA}/$courseName\_classlist_DB", psvn_digits => 5, ); # dbLayout records the schema and source for each table in the "new" DB.pm # database system. consult DB.pm for the authoritative list of tables. # schema = perl module to use for access to the table # driver = perl module to use for access to the data source # source = location of data source (i.e. path, url, DBI spec) # params = extra information needed by the schema (optional) # note: schema and driver must have the same interface. %dbLayout = ( password => { record => "WeBWorK::DB::Record::Password", schema => "WeBWorK::DB::Schema::Auth1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{auth_DATA}/$courseName\_password_DB", }, permission => { record => "WeBWorK::DB::Record::PermissionLevel", schema => "WeBWorK::DB::Schema::Auth1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{auth_DATA}/$courseName\_permissions_DB", }, key => { record => "WeBWorK::DB::Record::Key", schema => "WeBWorK::DB::Schema::Auth1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{auth_DATA}/keys", }, user => { record => "WeBWorK::DB::Record::User", schema => "WeBWorK::DB::Schema::Classlist1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{DATA}/$courseName\_classlist_DB", }, set => { record => "WeBWorK::DB::Record::Set", schema => "WeBWorK::DB::Schema::Null", driver => "WeBWorK::DB::Driver::Null", source => undef, }, set_user => { record => "WeBWorK::DB::Record::UserSet", schema => "WeBWorK::DB::Schema::WW1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{DATA}/$courseName\_webwork_DB", params => { psvnLength => 5 }, }, problem => { record => "WeBWorK::DB::Record::Problem", schema => "WeBWorK::DB::Schema::Null", driver => "WeBWorK::DB::Driver::Null", source => undef, }, problem_user => { record => "WeBWorK::DB::Record::UserProblem", schema => "WeBWorK::DB::Schema::WW1Hash", driver => "WeBWorK::DB::Driver::GDBM", source => "$courseDirs{DATA}/$courseName\_webwork_DB", params => { psvnLength => 5 }, }, ); # This lets you specify a minimum permission level needed to perform # certain actions. In the current system, >=10 will allow a professor # to perform the action, >=5 will allow a TA to, and >=0 will allow a # student to perform an action (almost never what you want). %permissionLevels = ( "become_student" => 10, ); # $sessionKeyTimeout defines seconds of inactivity before a key expires $sessionKeyTimeout = 60*30; # $sessionKeyLength defines the length (in characters) of the session key $sessionKeyLength = 40; # @sessionKeyChars lists the legal session key characters @sessionKeyChars = ('A'..'Z', 'a'..'z', '0'..'9', '.', '^', '/', '!', '*'); # Practice users are users who's names start with $practiceUser # (you can comment this out to remove practice user support) $practiceUserPrefix = "practice"; # There is a practice user who can be logged in multiple times. He's # commented out by default, though, so you don't hurt yourself. It is # kindof a backdoor to the practice user system, since he doesn't have a # password. Come to think of it, why do we even have this?! #$debugPracticeUser = "practice666"; ################################################################################ # PG translation options ################################################################################ %pg = ( options => { # default translation options displayMode => "images", showOldAnswers => 1, showCorrectAnswers => 0, showHints => 0, showSolutions => 0, catchWarnings => 1, # default grader grader => "avg_problem_grader", }, # modules lists module names and the packages each contains modules => [ [qw(DynaLoader)], [qw(Exporter)], [qw(GD)], [qw(AlgParser AlgParserWithImplicitExpand Expr ExprWithImplicitExpand)], [qw(AnswerHash AnswerEvaluator)], [qw(WWPlot)], # required by Circle (and others) [qw(Circle)], [qw(Complex)], [qw(Complex1)], [qw(Distributions)], [qw(Fraction)], [qw(Fun)], [qw(Hermite)], [qw(Label)], [qw(List)], [qw(Match)], [qw(MatrixReal1)], # required by Matrix [qw(Matrix)], [qw(Multiple)], [qw(PGrandom)], [qw(Regression)], [qw(Select)], [qw(Units)], [qw(VectorField)], ], # defaults used by answer evaluators ansEvalDefaults => { functAbsTolDefault => .001, functLLimitDefault => .0000001, functMaxConstantOfIntegration => 1E8, functNumOfPoints => 3, functRelPercentTolDefault => .1, functULimitDefault => .9999999, functVarDefault => "x", functZeroLevelDefault => 1E-14, functZeroLevelTolDefault => 1E-12, numAbsTolDefault => .001, numFormatDefault => "", numRelPercentTolDefault => .1, numZeroLevelDefault => 1E-14, numZeroLevelTolDefault => 1E-12, }, );