# SQL-Ledger, Accounting Software Installer
# Copyright (c) 2002, Dieter Simader
#
-# Email: dsimader@sql-ledger.org
# Web: http://www.sql-ledger.org
#
#######################################################################
$tar = `tar --version 2>&1`; # tar archiver
$latex = `latex -version`;
-@source = ( "http://unc.dl.sourceforge.net/sourceforge/sql-ledger",
- "http://www.sql-ledger.org/source",
- "http://abacus.sql-ledger.org/source" );
+@source = ( "http://www.sql-ledger.org/source",
+ "http://www.sql-ledger.com/source",
+ "http://abacus.sql-ledger.org/source",
+ "http://pluto.sql-ledger.org/source" );
$userspath = "users"; # default for new installation
$lwp = !($@);
unless ($lwp || $lynx || $filename) {
- die "You must have either lynx or LWP installed
-or specify a filename.
-perl $0 filename\n";
+ die "You must have either lynx or LWP installed or specify a filename.
+perl $0 <filename>\n";
}
if ($filename) {
}
+# is this windows? only used for downloading the right code
+$windows = ($^O =~ /MS/) ? '/windows' : '';
+
+
$webowner = $<;
$webgroup = $(;
chomp $httpd;
$webowner = `grep "^User " $httpd`;
$webgroup = `grep "^Group " $httpd`;
- $serverroot = `grep "^ServerRoot " $httpd`;
chomp $webowner;
chomp $webgroup;
- chomp $serverroot;
($null, $webowner) = split / /, $webowner;
($null, $webgroup) = split / /, $webgroup;
- ($null, $serverroot) = split / /, $serverroot;
- $serverroot =~ s/"//g;
-
}
system("tput clear");
}
if ($version && $latest_version) {
- if (!$filename && $version ne $latest_version) {
+ if (!$filename && $version le $latest_version) {
if (substr($version, 0, rindex($version, ".")) eq substr($latest_version, 0, rindex($latest_version, "."))) {
$install .= "\n(u)pgrade to $latest_version\n";
}
print qq|
- SQL-Ledger Accounting Software Installation
+ SQL-Ledger Accounting Installation
exit unless $a;
$a = lc $a;
- if ($newinstall && ($a =~ /(i|r|f)/)) {
+if ($a !~ /d/) {
- print qq|\nEnter httpd owner [$webowner] : |;
- $web = <STDIN>;
- chomp $web;
- $webowner = $web if $web;
+ print qq|\nEnter httpd owner [$webowner] : |;
+ $web = <STDIN>;
+ chomp $web;
+ $webowner = $web if $web;
- print qq|\nEnter httpd group [$webgroup] : |;
- $web = <STDIN>;
- chomp $web;
- $webgroup = $web if $web;
-
- }
+ print qq|\nEnter httpd group [$webgroup] : |;
+ $web = <STDIN>;
+ chomp $web;
+ $webgroup = $web if $web;
+
+}
if ($a eq 'd') {
&download;
}
-if ($a eq 'i') {
+if ($a =~ /(i|u)/) {
&install;
}
if ($a eq 'r') {
$latest_version = $version;
&install;
}
-if ($a eq 'u') {
- &upgrade;
-}
-
if ($a eq 'f') {
&install;
}
print "\nTrying $host .... ";
if ($lwp) {
- $err = LWP::Simple::getstore("$source/$latest_version", "$latest_version");
+ $err = LWP::Simple::getstore("$source$windows/$latest_version", "$latest_version");
$err -= 200;
} else {
- $ok = `lynx -dump -head $source/$latest_version`;
+ $ok = `lynx -dump -head $source$windows/$latest_version`;
$err = !($ok =~ s/HTTP.*?200 OK//);
if (!$err) {
- $err = system("lynx -dump $source/$latest_version > $latest_version");
+ $err = system("lynx -dump $source$windows/$latest_version > $latest_version");
}
}
&decompress;
- if ($upgrade) {
- print qq|
-
-Don't forget to upgrade the datasets!
-
-Load the admin panel in your web browser
-|;
- }
-
if ($newinstall) {
- # if this is not root, check if user is part of $webgroup
- if ($>) {
- if ($permset = ($) =~ getgrnam $webgroup)) {
- `chown -R :$webgroup *`;
- }
- } else {
- `chown -R $webowner:$webgroup *`;
- }
-
- chmod 0771, 'users', 'templates';
-
open(FH, "sql-ledger.conf.default");
@f = <FH>;
close(FH);
Copy $filename to $httpddir and add
|;
- # strip serverroot off httpddir
- $httpddir =~ s/$serverroot\///;
-
print qq|
+# SQL-Ledger
Include $httpddir/$filename
to $httpd
if (!$permset) {
print qq|
-WARNING: permissions for templates and users directory
+WARNING: permissions for templates, users, css and spool directory
could not be set. Login as root and set permissions
-# chown $webowner:$webgroup users templates
-# chmod 771 users templates
+# chown -hR :$webgroup users templates css spool
+# chmod 771 users templates css spool
|;
}
} else {
if (!(`grep "^# SQL-Ledger" $httpd`)) {
- # append Include directive
- $httpddir =~ s/$serverroot\///;
open(FH, ">>$httpd");
if (!$>) {
# send SIGHUP to httpd
- $pid = `cat /var/run/httpd.pid`;
- chomp $pid;
- system("kill -s HUP $pid") if $pid;
+ if ($f = `find /var -type f -name 'httpd.pid'`) {
+ $pid = `cat $f`;
+ chomp $pid;
+ if ($pid) {
+ system("kill -s HUP $pid");
+ }
+ }
}
}
-
+
+ # if this is not root, check if user is part of $webgroup
+ if ($>) {
+ if ($permset = ($) =~ getgrnam $webgroup)) {
+ `chown -hR :$webgroup users templates css spool`;
+ chmod 0771, 'users', 'templates', 'css', 'spool';
+ }
+ } else {
+ # root
+ `chown -hR 0:0 *`;
+ `chown -hR $webowner:$webgroup users templates css spool`;
+ chmod 0771, 'users', 'templates', 'css', 'spool';
+ }
+
unlink "sql-ledger.conf.default";
&cleanup;
print "cleaning up ... ";
`rm -rf sql-ledger`;
print "done\n";
+
+ # replace shebang if this is windows
+ &shebang if $windows;
+
}
}
}
if (-d "$userspath") {
open(FH, ">$userspath/nologin");
close(FH);
- $upgrade = 1;
}
}
sub remove_lockfile { unlink "$userspath/nologin" if (-f "$userspath/nologin") };
-sub upgrade {
+sub shebang {
- $latest_version = &get_patch;
+ opendir DIR, ".";
+ @perlfiles = grep /\.pl/, readdir DIR;
+ closedir DIR;
- &decompress;
-
- &cleanup;
-
- # if this is not root, check if user is part of $webgroup
- if ($>) {
- if ($permset = ($) =~ getgrnam $webgroup)) {
- `chown -R :$webgroup *`;
- }
- } else {
- `chown -R $webowner:$webgroup *`;
- }
-
- chmod 0771, 'users', 'templates';
-
-
- print qq|
-
-Don't forget to upgrade your datasets and read
-the upgrade file in the doc directory.
-
-|;
-
-}
+ foreach $file (@perlfiles) {
+ open FH, "+<$file";
+
+ @file = <FH>;
+ seek(FH, 0, 0);
+ truncate(FH, 0);
+ $line = shift @file;
-sub get_patch {
+ print FH "#!c:\\perl\\bin\\perl\n";
+ print FH @file;
- $err = 0;
-
- if ($version) {
- # download the patch
- $patchfile = "patch-${latest_version}.tar.gz";
-
- print "Status\n";
- print "Downloading $patchfile .... ";
-
- foreach $source (@source) {
- $host = $source;
- $host =~ s/(\w\/).*/$1/g;
- chop $host;
- print "\nTrying $host .... ";
-
- if ($lwp) {
- $err = LWP::Simple::getstore("$source/$patchfile", "$patchfile");
- $err -= 200;
- } else {
- $ok = `lynx -dump -head $source/$patchfile`;
- $err = !($ok =~ /HTTP.*?200 OK/);
-
- if (!$err) {
- $err = system("lynx -dump $source/$patchfile > $patchfile");
- }
- }
+ close(FH);
- last unless $err;
-
- }
-
- } else {
- $err = -1;
- }
-
- if ($err) {
- print "Cannot get $patchfile\n";
- exit;
- } else {
- print "ok\n";
}
-
- $patchfile;
-
}