1 package Debbugs::Config; # assumes Some/Module.pm
7 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
9 # set the version for version checking
14 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
16 # your exported package globals go here,
17 # as well as any optionally exported functions
18 @EXPORT_OK = qw(%Globals %Severity &ParseConfigFile);
24 # initialize package globals, first exported ones
26 %Globals = ( "debug" => 0,
30 "email-domain" => "bugs.domain.com",
31 "list-domain" => "lists.domain.com",
32 "web-domain" => "web.domain.com",
33 "cgi-domain" => "cgi.domain.com",
35 "project-short" => "debbugs",
36 "project-long" => "Debbugs Test Project",
37 "owner-name" => "Fred Flintstone",
38 "owner-email" => "owner\@bugs.domain.com",
40 "work-dir" => "/var/lib/debbugs/spool",
41 "spool-dir" => "/var/lib/debbugs/spool/incoming",
42 "www-dir" => "/var/lib/debbugs/www",
43 "doc-dir" => "/var/lib/debbugs/www/txt",
44 "maintainer-file" => "/etc/debbugs/Maintainers" );
48 chop $string while $string =~ /\s$/;
52 #############################################################################
53 # Read Config File and parse
54 #############################################################################
56 { my $configfile = $_[0];
62 print "V: Loading Config File\n" if $Globals{ "verbose" };
63 open(CONFIG,$configfile) or &fail( "E: Unable to open `$configfile'" );
68 print "V: Parsing Config File\n" if $Globals{ "verbose" };
69 print "D3: Parse Config:\n@config\n" if $Globals{ 'debug' } > 2;
70 for( my $i=0; $i<=$#config; $i++)
73 next unless length $_;
76 if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
77 { $Globals{ 'email-domain' } = strip( $1 ); }
78 elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
79 { $Globals{ 'list-domain' } = strip( $1 ); }
80 elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
81 { $Globals{ 'web-domain' } = strip( $1 ); }
82 elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
83 { $Globals{ 'cgi-domain' } = strip( $1 ); }
84 elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
85 { $Globals{ 'project-short' } = strip( $1 ); }
86 elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
87 { $Globals{ 'project-long' } = strip( $1 ); }
88 elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
89 { $Globals{ 'owner-name' } = strip( $1 ); }
90 elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
91 { $Globals{ 'owner-email' } = strip( $1 ); }
92 elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
93 { $Globals{ 'spool-dir' } = strip( $1 ); }
94 elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
95 { $Globals{ 'work-dir' } = strip( $1 ); }
96 elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
97 { $Globals{ 'www-dir' } = strip( $1 ); }
98 elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
99 { $Globals{ 'doc-dir' } = strip( $1 ); }
100 elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
101 { $Globals{ 'maintainer-file' } = strip( $1 ); }
102 elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
103 { $Globals{ 'submit-list' } = strip( $1 ); }
104 elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
105 { $Globals{ 'maint-list' } = strip( $1 ); }
106 elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
107 { $Globals{ 'quiet-list' } = strip( $1 ); }
108 elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
109 { $Globals{ 'forwarded-list' } = strip( $1 ); }
110 elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
111 { $Globals{ 'done-list' } = strip( $1 ); }
112 elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
113 { $Globals{ 'request-list' } = strip( $1 ); }
114 elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
115 { $Globals{ 'submitter-list' } = strip( $1 ); }
116 elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
117 { $Globals{ 'control-list' } = strip( $1 ); }
118 elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
119 { $Globals{ 'summary-list' } = strip( $1 ); }
120 elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
121 { $Globals{ 'mirror-list' } = strip( $1 ); }
122 elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
123 { $Globals{ 'mailer' } = strip( $1 ); }
124 elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
125 { $Globals{ 'singular' } = strip( $1 ); }
126 elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
127 { $Globals{ 'plural' } = strip( $1 ); }
128 elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
129 { $Globals{ 'expire-age' } = strip( $1 ); }
130 elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
131 { $Globals{ 'save-expired' } = strip( $1 ); }
132 elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
133 { $Globals{ 'mirrors' } = strip( $1 ); }
134 elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
135 { $Globals{ 'default-severity' } = strip( $1 ); }
136 elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
137 { $Globals{ 'normal-severity' } = strip( $1 ); }
138 elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
139 { $Severity{ $1 } = $2;
140 print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
143 if( $Globals{ "debug" } )
145 print "D1: Configuration\n";
146 print "\tBallot Type = $Globals{ 'ballottype' }\n";
147 print "\tDatabase = $Globals{ 'database' }\n";
148 print "\tBallot Ack = $Globals{ 'response' }\n";
149 print "\tBallot Template = $Globals{ 'ballot' }\n";
150 print "\tTitle = $Globals{ 'title' }\n";
155 END { } # module clean-up code here (global destructor)