4 use vars qw( $freeside_bin $freeside_test $freeside_conf
5 $datasrc $user $pass $x
7 $cgi $username $name $email $user_pw $crypt_pw $dbh $sth
11 #use CGI::Carp qw(fatalsToBrowser);
17 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
18 $ENV{'SHELL'} = '/bin/sh';
19 $ENV{'IFS'} = " \t\n";
22 $ENV{'BASH_ENV'} = '';
24 $freeside_bin = '/home/freeside/bin/';
25 $freeside_test = '/home/freeside/test/';
26 $freeside_conf = '/usr/local/etc/freeside/';
28 $datasrc = 'DBI:mysql:http_auth';
32 #my(@pw_set)= ( 'a'..'z', 'A'..'Z', '0'..'9', '(', ')', '#', '!', '.', ',' );
33 #my(@pw_set)= ( 'a'..'z', 'A'..'Z', '0'..'9' );
34 @pw_set = ( 'a'..'z', '0'..'9' );
35 @saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
41 $username = $cgi->param('username');
42 $username =~ /^\s*([a-z][\w]{0,15})\s*$/i
43 or &idiot("Illegal username. Please use 1-16 alphanumeric characters, and start your username with a letter.");
46 $name = $cgi->param('name');
47 $name =~ /^([\w\-\,\. ]*)$/
48 or &idiot("Illegal name. ".
49 "Only alphanumerics, the dash, comma and period are legal.");
52 $email = $cgi->param('email');
53 $email =~ /^([\w\-\.\+]+\@[\w\-\.]+)$/
54 or &idiot("Illegal email address.");
59 $user_pw = join('',map($pw_set[ int(rand $#pw_set) ], (0..7) ) );
60 $crypt_pw = crypt($user_pw,$saltset[int(rand(64))].$saltset[int(rand(64))]);
64 local $SIG{HUP} = 'IGNORE';
65 local $SIG{INT} = 'IGNORE';
66 local $SIG{QUIT} = 'IGNORE';
67 local $SIG{TERM} = 'IGNORE';
68 local $SIG{TSTP} = 'IGNORE';
69 local $SIG{PIPE} = 'IGNORE';
73 $dbh = DBI->connect( $datasrc, $user, $pass, {
74 'AutoCommit' => 'true',
75 } ) or die "DBI->connect error: $DBI::errstr\n";
76 $x = $DBI::errstr; #silly; to avoid "used only once" warning
78 $sth = $dbh->prepare("INSERT INTO mysql_auth VALUES (". join(", ",
79 $dbh->quote($username),
80 $dbh->quote($crypt_pw),
81 $dbh->quote('freeside'),
84 $sth->execute or &idiot($sth->errstr);
86 $dbh->disconnect or die $dbh->errstr;
95 <TITLE>Freeside demo registration successful</TITLE>
97 <BODY BGCOLOR="#FFFFFF">
101 <img border=0 alt="Silicon Interactive Software Design" src="http://www.sisd.com/freeside/small-logo.gif">
103 <center><font color="#ff0000" size=7>freeside demo registration successful</font></center>
106 <P>Your sample database has been setup. Your username, password, and URL
107 have been emailed to you.
114 system("/usr/bin/mysqladmin --user=$user --password=$pass ".
115 "create $username >/dev/null");
117 open(MAPSECRETS, ">>${freeside_conf}mapsecrets")
118 or die "Can\'t open ${freeside_conf}mapsecrets: $!";
119 print MAPSECRETS "$username secrets.$username\n";
122 open(SECRETS, ">${freeside_conf}secrets.$username")
123 or die "Can\'t open ${freeside_conf}secrets.$username: $!";
124 chmod 0600, "${freeside_conf}secrets.$username";
125 print SECRETS "DBI:mysql:$username\nfreeside\nmaelcolm\n";
128 mkdir "${freeside_conf}conf.DBI:mysql:$username", 0755;
130 open(ADDRESS, ">${freeside_conf}conf.DBI:mysql:$username/address")
131 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/address: $!";
133 Internet Service Provider, Inc.
140 open(DOMAIN, ">${freeside_conf}conf.DBI:mysql:$username/domain")
141 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/domain: $!";
142 print DOMAIN "this-is-an-example-domain.tld\n";
145 open(HOME, ">${freeside_conf}conf.DBI:mysql:$username/home")
146 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/home: $!";
147 print HOME "/home\n";
150 open(INVOICE_FROM, ">${freeside_conf}conf.DBI:mysql:$username/invoice_from")
151 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/invoice_from: $!";
152 print INVOICE_FROM "$email\n";
155 open(LPR, ">${freeside_conf}conf.DBI:mysql:$username/lpr")
156 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/lpr: $!";
157 print LPR "cat >/dev/null\n";
160 mkdir "${freeside_conf}conf.DBI:mysql:$username/registries", 0755;
161 mkdir "${freeside_conf}conf.DBI:mysql:$username/registries/internic", 0755;
162 open(FROM, ">${freeside_conf}conf.DBI:mysql:$username/registries/internic/from")
163 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/registries/internic/from: $!";
164 print FROM "$email\n";
166 open(NAMESERVERS, ">${freeside_conf}conf.DBI:mysql:$username/registries/internic/nameservers")
167 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/registries/internic/nameservers: $!";
168 print NAMESERVERS <<END;
169 10.0.0.1 ns1.this-is-an-example-domain.tld
170 10.0.0.2 ns2.this-is-an-example-domain.tld
171 10.0.0.3 ns3.this-is-an-example-domain.tld
174 open(TECH_CONTACT, ">${freeside_conf}conf.DBI:mysql:$username/registries/internic/tech_contact")
175 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/registries/internic/tech_contact: $!";
176 print TECH_CONTACT "EXAMPLE-INTERNIC-HANDLE\n";
178 system ("cp", "${freeside_conf}.domain-template.txt",
179 "${freeside_conf}conf.DBI:mysql:$username/registries/internic/template"
181 open(TO, ">${freeside_conf}conf.DBI:mysql:$username/registries/internic/to")
182 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/registries/internic/to: $!";
186 open(SHELLS, ">${freeside_conf}conf.DBI:mysql:$username/shells")
187 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/shells: $!";
201 open(SMTPMACHINE, ">${freeside_conf}conf.DBI:mysql:$username/smtpmachine")
202 or die "Can\'t open ${freeside_conf}conf.DBI:mysql:$username/smtpmachine: $!";
203 print SMTPMACHINE "localhost\n";
207 mkdir("/usr/local/etc/freeside/counters.DBI:mysql:$username",0755)
208 or die "Can't create counter spooldir: $!";
210 system("${freeside_bin}fs-setup.webdemo", "$username");
211 system("${freeside_test}cgi-test",
212 "http://freeside.sisd.com/", $username, $user_pw);
216 $ENV{SMTPHOSTS} = "localhost";
217 $ENV{MAILADDRESS} = 'ivan@sisd.com';
218 $header = Mail::Header->new( [
219 'From: ivan@sisd.com',
221 'Cc: ivan-fsreg@sisd.com',
222 'Sender: ivan@sisd.com',
223 'Reply-To: ivan@sisd.com',
224 'Date: '. time2str("%a, %d %b %Y %X %z", time),
225 'Subject: Freeside demo information',
227 $msg = Mail::Internet->new(
230 "Hello $name <$email>,\n",
232 "Your sample Freeside database has been setup.\n",
234 "Point your web browswer at http://freeside.sisd.com/ and use the following\n",
235 "authentication information:\n",
237 "Username: $username\n",
238 "Password: $user_pw\n",
240 "You may wish to subscribe to the Freeside mailing list - send a blank\n",
241 "message to ivan-freeside-subscribe\@sisd.com.\n",
244 "Ivan Kohler <ivan\@sisd.com>\n",
245 "20 4,16 \* \* \* saytime\n",
248 $msg->smtpsend or die "Can\'t send registration email!";
254 print $cgi->header, <<END;
257 <TITLE>Registration error</TITLE>
259 <BODY BGCOLOR="#FFFFFF">
261 <H4>Registration error</H4>
264 <P>Hit the <I>Back</I> button in your web browser, correct this mistake,
265 and submit the form again.