diff options
author | jocuri%softhome.net <> | 2004-03-08 21:52:25 +0100 |
---|---|---|
committer | jocuri%softhome.net <> | 2004-03-08 21:52:25 +0100 |
commit | 66bd251608fb87bdd273967e99c3624d38b8c5fe (patch) | |
tree | 44c9451df71965cee3379ead2eb6077f908a46f7 | |
parent | 4c4edf2e8527920576ffa36972c0dc1855f1d9b3 (diff) | |
download | bugzilla-66bd251608fb87bdd273967e99c3624d38b8c5fe.tar.gz bugzilla-66bd251608fb87bdd273967e99c3624d38b8c5fe.tar.xz |
Patch for bug 143490: eliminate unsupported calls from checksetup.pl when running in Windows; original code by Cedric Caron <cedric.caron@urbanet.ch>; patch by Andrei Benea <abenea@home.ro>; r=vlad,justdave, a=justdave.
-rwxr-xr-x | checksetup.pl | 228 |
1 files changed, 139 insertions, 89 deletions
diff --git a/checksetup.pl b/checksetup.pl index a6b673a60..2c7dc9d6a 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -452,14 +452,20 @@ $index_html = 0; END if (!LocalVarExists('mysqlpath')) { - my $mysql_binaries = `which mysql`; - if ($mysql_binaries =~ /no mysql/ || $mysql_binaries eq '') { - # If which didn't find it, just provide a reasonable default - $mysql_binaries = "/usr/bin"; + my $mysql_binaries; + if ($^O !~ /MSWin32/i) { + $mysql_binaries = `which mysql`; + if ($mysql_binaries =~ /no mysql/ || $mysql_binaries eq '') { + # If which didn't find it, just provide a reasonable default + $mysql_binaries = "/usr/bin"; + } else { + $mysql_binaries =~ s:/mysql\n$::; + } } else { - $mysql_binaries =~ s:/mysql\n$::; - } - + # provide a reasonable default for Windows + $mysql_binaries = 'c:\mysql\bin'; + } + LocalVar('mysqlpath', <<"END"); # # In order to do certain functions in Bugzilla (such as sync the shadow @@ -467,18 +473,23 @@ if (!LocalVarExists('mysqlpath')) { # Because it's possible that these files aren't in your path, you can specify # their location here. # Please specify only the directory name, with no trailing slash. -\$mysqlpath = "$mysql_binaries"; +\$mysqlpath = '$mysql_binaries'; END } if (!LocalVarExists('cvsbin')) { - my $cvs_executable = `which cvs`; - if ($cvs_executable =~ /no cvs/ || $cvs_executable eq '') { - # If which didn't find it, just set to blank - $cvs_executable = ""; + my $cvs_executable; + if ($^O !~ /MSWin32/i) { + $cvs_executable = `which cvs`; + if ($cvs_executable =~ /no cvs/ || $cvs_executable eq '') { + # If which didn't find it, just set to blank + $cvs_executable = ""; + } else { + chomp $cvs_executable; + } } else { - chomp $cvs_executable; + $cvs_executable = ""; } LocalVar('cvsbin', <<"END"); @@ -493,20 +504,25 @@ END if (!LocalVarExists('interdiffbin')) { - my $interdiff_executable = `which interdiff`; - if ($interdiff_executable =~ /no interdiff/ || $interdiff_executable eq '') { - if (!$silent) { - print "\nOPTIONAL NOTE: If you want to "; - print "be able to use the\n 'difference between two patches' "; - print "feature of Bugzilla (requires\n the PatchReader Perl module "; - print "as well), you should install\n patchutils from "; - print "http://cyberelk.net/tim/patchutils/\n\n"; - } + my $interdiff_executable; + if ($^O !~ /MSWin32/i) { + $interdiff_executable = `which interdiff`; + if ($interdiff_executable =~ /no interdiff/ || $interdiff_executable eq '') { + if (!$silent) { + print "\nOPTIONAL NOTE: If you want to "; + print "be able to use the\n 'difference between two patches' "; + print "feature of Bugzilla (requires\n the PatchReader Perl module "; + print "as well), you should install\n patchutils from "; + print "http://cyberelk.net/tim/patchutils/\n\n"; + } - # If which didn't find it, set to blank - $interdiff_executable = ""; + # If which didn't find it, set to blank + $interdiff_executable = ""; + } else { + chomp $interdiff_executable; + } } else { - chomp $interdiff_executable; + $interdiff_executable = ""; } LocalVar('interdiffbin', <<"END"); @@ -522,12 +538,17 @@ END if (!LocalVarExists('diffpath')) { - my $diff_binaries = `which diff`; - if ($diff_binaries =~ /no diff/ || $diff_binaries eq '') { - # If which didn't find it, set to blank - $diff_binaries = ""; + my $diff_binaries; + if ($^O !~ /MSWin32/i) { + $diff_binaries = `which diff`; + if ($diff_binaries =~ /no diff/ || $diff_binaries eq '') { + # If which didn't find it, set to blank + $diff_binaries = ""; + } else { + $diff_binaries =~ s:/diff\n$::; + } } else { - $diff_binaries =~ s:/diff\n$::; + $diff_binaries = ""; } LocalVar('diffpath', <<"END"); @@ -556,8 +577,14 @@ LocalVar('create_htaccess', <<'END'); $create_htaccess = 1; END - -LocalVar('webservergroup', ' +my $webservergroup_default; +if ($^O !~ /MSWin32/i) { + $webservergroup_default = 'nobody'; +} else { + $webservergroup_default = ''; +} + +LocalVar('webservergroup', <<"END"); # # This is the group your web server runs on. # If you have a windows box, ignore this setting. @@ -569,8 +596,8 @@ LocalVar('webservergroup', ' # and you cannot set this up any other way. YOU HAVE BEEN WARNED. # If you set this to anything besides "", you will need to run checksetup.pl # as root, or as a user who is a member of the specified group. -$webservergroup = "nobody"; -'); +\$webservergroup = "$webservergroup_default"; +END @@ -745,6 +772,20 @@ see below are caused by this. EOF } + + if ($^O =~ /MSWin32/i) { + print <<EOF; + +Warning: You have set webservergroup in your localconfig. +Please understand that this does not bring you any security when +running under Windows. +Verify that the file permissions in your Bugzilla directory are +suitable for your system. +Avoid unnecessary write access. + +EOF + } + } else { # Theres no webservergroup, this is very very very very bad. # However, if we're being run on windows, then this option doesn't @@ -1249,59 +1290,61 @@ sub fixPerms { } } -if ($my_webservergroup) { - # Funny! getgrname returns the GID if fed with NAME ... - my $webservergid = getgrnam($my_webservergroup) +if ($^O !~ /MSWin32/i) { + if ($my_webservergroup) { + # Funny! getgrname returns the GID if fed with NAME ... + my $webservergid = getgrnam($my_webservergroup) or die("no such group: $my_webservergroup"); - # chown needs to be called with a valid uid, not 0. $< returns the - # caller's uid. Maybe there should be a $bugzillauid, and call with that - # userid. - fixPerms('.htaccess', $<, $webservergid, 027); # glob('*') doesn't catch dotfiles - fixPerms("$datadir/.htaccess", $<, $webservergid, 027); - fixPerms("$datadir/duplicates", $<, $webservergid, 027, 1); - fixPerms("$datadir/mining", $<, $webservergid, 027, 1); - fixPerms("$datadir/template", $<, $webservergid, 007, 1); # webserver will write to these - fixPerms($webdotdir, $<, $webservergid, 007, 1); - fixPerms("$webdotdir/.htaccess", $<, $webservergid, 027); - fixPerms("$datadir/params", $<, $webservergid, 017); - fixPerms('*', $<, $webservergid, 027); - fixPerms('Bugzilla', $<, $webservergid, 027, 1); - fixPerms($templatedir, $<, $webservergid, 027, 1); - fixPerms('css', $<, $webservergid, 027, 1); - fixPerms('js', $<, $webservergid, 027, 1); - chmod 0644, 'globals.pl'; - chmod 0644, 'RelationSet.pm'; - - # Don't use fixPerms here, because it won't change perms on the directory - # unless its using recursion - chown $<, $webservergid, $datadir; - chmod 0771, $datadir; - chown $<, $webservergid, 'graphs'; - chmod 0770, 'graphs'; -} else { - # get current gid from $( list - my $gid = (split " ", $()[0]; - fixPerms('.htaccess', $<, $gid, 022); # glob('*') doesn't catch dotfiles - fixPerms("$datadir/.htaccess", $<, $gid, 022); - fixPerms("$datadir/duplicates", $<, $gid, 022, 1); - fixPerms("$datadir/mining", $<, $gid, 022, 1); - fixPerms("$datadir/template", $<, $gid, 000, 1); # webserver will write to these - fixPerms($webdotdir, $<, $gid, 000, 1); - chmod 01777, $webdotdir; - fixPerms("$webdotdir/.htaccess", $<, $gid, 022); - fixPerms("$datadir/params", $<, $gid, 011); - fixPerms('*', $<, $gid, 022); - fixPerms('Bugzilla', $<, $gid, 022, 1); - fixPerms($templatedir, $<, $gid, 022, 1); - fixPerms('css', $<, $gid, 022, 1); - fixPerms('js', $<, $gid, 022, 1); - - # Don't use fixPerms here, because it won't change perms on the directory - # unless its using recursion - chown $<, $gid, $datadir; - chmod 0777, $datadir; - chown $<, $gid, 'graphs'; - chmod 01777, 'graphs'; + # chown needs to be called with a valid uid, not 0. $< returns the + # caller's uid. Maybe there should be a $bugzillauid, and call with that + # userid. + fixPerms('.htaccess', $<, $webservergid, 027); # glob('*') doesn't catch dotfiles + fixPerms("$datadir/.htaccess", $<, $webservergid, 027); + fixPerms("$datadir/duplicates", $<, $webservergid, 027, 1); + fixPerms("$datadir/mining", $<, $webservergid, 027, 1); + fixPerms("$datadir/template", $<, $webservergid, 007, 1); # webserver will write to these + fixPerms($webdotdir, $<, $webservergid, 007, 1); + fixPerms("$webdotdir/.htaccess", $<, $webservergid, 027); + fixPerms("$datadir/params", $<, $webservergid, 017); + fixPerms('*', $<, $webservergid, 027); + fixPerms('Bugzilla', $<, $webservergid, 027, 1); + fixPerms($templatedir, $<, $webservergid, 027, 1); + fixPerms('css', $<, $webservergid, 027, 1); + fixPerms('js', $<, $webservergid, 027, 1); + chmod 0644, 'globals.pl'; + chmod 0644, 'RelationSet.pm'; + + # Don't use fixPerms here, because it won't change perms on the directory + # unless its using recursion + chown $<, $webservergid, $datadir; + chmod 0771, $datadir; + chown $<, $webservergid, 'graphs'; + chmod 0770, 'graphs'; + } else { + # get current gid from $( list + my $gid = (split " ", $()[0]; + fixPerms('.htaccess', $<, $gid, 022); # glob('*') doesn't catch dotfiles + fixPerms("$datadir/.htaccess", $<, $gid, 022); + fixPerms("$datadir/duplicates", $<, $gid, 022, 1); + fixPerms("$datadir/mining", $<, $gid, 022, 1); + fixPerms("$datadir/template", $<, $gid, 000, 1); # webserver will write to these + fixPerms($webdotdir, $<, $gid, 000, 1); + chmod 01777, $webdotdir; + fixPerms("$webdotdir/.htaccess", $<, $gid, 022); + fixPerms("$datadir/params", $<, $gid, 011); + fixPerms('*', $<, $gid, 022); + fixPerms('Bugzilla', $<, $gid, 022, 1); + fixPerms($templatedir, $<, $gid, 022, 1); + fixPerms('css', $<, $gid, 022, 1); + fixPerms('js', $<, $gid, 022, 1); + + # Don't use fixPerms here, because it won't change perms on the directory + # unless its using recursion + chown $<, $gid, $datadir; + chmod 0777, $datadir; + chown $<, $gid, 'graphs'; + chmod 01777, 'graphs'; + } } ########################################################################### @@ -3877,7 +3920,9 @@ if (!GroupDoesExist("canconfirm")) { sub bailout { # this is just in case we get interrupted while getting passwd - system("stty","echo"); # re-enable input echoing + if ($^O !~ /MSWin32/i) { + system("stty","echo"); # re-enable input echoing + } exit 1; } @@ -4028,7 +4073,9 @@ if ($sth->rows == 0) { $SIG{QUIT} = \&bailout; $SIG{TERM} = \&bailout; - system("stty","-echo"); # disable input echoing + if ($^O !~ /MSWin32/i) { + system("stty","-echo"); # disable input echoing + } while( $pass1 ne $pass2 ) { while( $pass1 eq "" || $pass1 !~ /^[[:print:]]{3,16}$/ ) { @@ -4060,7 +4107,10 @@ if ($sth->rows == 0) { # Crypt the administrator's password my $cryptedpassword = Crypt($pass1); - system("stty","echo"); # re-enable input echoing + if ($^O !~ /MSWin32/i) { + system("stty","echo"); # re-enable input echoing + } + $SIG{HUP} = 'DEFAULT'; # and remove our interrupt hooks $SIG{INT} = 'DEFAULT'; $SIG{QUIT} = 'DEFAULT'; |