diff options
Diffstat (limited to 'sql-ledger/sql-ledger/setup.pl')
-rwxr-xr-x | sql-ledger/sql-ledger/setup.pl | 529 |
1 files changed, 0 insertions, 529 deletions
diff --git a/sql-ledger/sql-ledger/setup.pl b/sql-ledger/sql-ledger/setup.pl deleted file mode 100755 index f65cbeb99..000000000 --- a/sql-ledger/sql-ledger/setup.pl +++ /dev/null @@ -1,529 +0,0 @@ -#!/usr/bin/perl -# -###################################################################### -# SQL-Ledger, Accounting Software Installer -# Copyright (c) 2002, Dieter Simader -# -# Web: http://www.sql-ledger.org -# -####################################################################### - -$| = 1; - -if ($ENV{HTTP_USER_AGENT}) { - print " -This does not work yet! -use $0 from the command line"; - exit; -} - -$lynx = `lynx -version`; # if LWP is not installed use lynx -$gzip = `gzip -V 2>&1`; # gz decompression utility -$tar = `tar --version 2>&1`; # tar archiver -$latex = `latex -version`; - -@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 - -eval { require "sql-ledger.conf"; }; - -$filename = shift; - -# is LWP installed -eval { require LWP::Simple; }; -$lwp = !($@); - -unless ($lwp || $lynx || $filename) { - die "You must have either lynx or LWP installed or specify a filename. -perl $0 <filename>\n"; -} - -if ($filename) { - # extract version - die "Not a SQL-Ledger archive\n" if ($filename !~ /^sql-ledger/); - - $version = $filename; - $version =~ s/sql-ledger-(\d+\.\d+\.\d+).*$/$1/; - - $newinstall = 1; -} - -if (!$filename && -f "VERSION") { - # get installed version from VERSION file - open(FH, "VERSION"); - @a = <FH>; - close(FH); - $version = $a[0]; - chomp $version; - - $newinstall = !$version; -} else { - $newinstall = 1; -} - - -# is this windows? only used for downloading the right code -$windows = ($^O =~ /MS/) ? '/windows' : ''; - - -$webowner = $<; -$webgroup = $(; - -if ($httpd = `find /etc /usr/local/etc -type f -name 'httpd.conf'`) { - chomp $httpd; - $webowner = `grep "^User " $httpd`; - $webgroup = `grep "^Group " $httpd`; - - chomp $webowner; - chomp $webgroup; - - ($null, $webowner) = split / /, $webowner; - ($null, $webgroup) = split / /, $webgroup; - -} - -system("tput clear"); - -if ($filename) { - $install = "\ninstall $version from (f)ile\n"; -} - -# check for latest version -&get_latest_version; - -if (!$newinstall) { - - $install .= "\n(r)einstall $version\n"; - -} - -if ($version && $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"; - } - } -} - - -$install .= "\n(i)nstall $latest_version (from Internet)\n" if $latest_version; - -$install .= "\n(d)ownload $latest_version (no installation)" unless $filename; - - print qq| - - - SQL-Ledger Accounting Installation - - - -$install - - -Enter: |; - -$a = <STDIN>; -chomp $a; - -exit unless $a; -$a = lc $a; - -if ($a !~ /d/) { - - 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; - -} - -if ($a eq 'd') { - &download; -} -if ($a =~ /(i|u)/) { - &install; -} -if ($a eq 'r') { - $latest_version = $version; - &install; -} -if ($a eq 'f') { - &install; -} - -exit; -# end main - - -sub download { - - &get_source_code; - -} - - -sub get_latest_version { - - print "Checking for latest version number .... "; - - if ($filename) { - print "skipping, filename supplied\n"; - return; - } - - if ($lwp) { - foreach $source (@source) { - $host = $source; - $host =~ s/(\w\/).*/$1/g; - chop $host; - print "\nTrying $host ... "; - - $latest_version = LWP::Simple::get("$source/latest_version"); - - if ($latest_version) { - last; - } else { - print "not found"; - } - } - } else { - if (!$lynx) { - print "\nYou must have either lynx or LWP installed"; - exit 1; - } - - foreach $source (@source) { - $host = $source; - $host =~ s/(\w\/).*/$1/g; - chop $host; - print "\nTrying $host ... "; - $ok = `lynx -dump -head $source/latest_version`; - if ($ok = ($ok =~ s/HTTP.*?200 OK//g)) { - $latest_version = `lynx -dump $source/latest_version`; - chomp $latest_version; - last; - } else { - print "not found"; - } - } - die unless $ok; - } - - chomp $latest_version; - if ($latest_version) { - print "ok\n"; - 1; - } - -} - - -sub get_source_code { - - $err = 0; - - if ($latest_version) { - # download it - $latest_version = "sql-ledger-${latest_version}.tar.gz"; - - print "\nStatus\n"; - print "Downloading $latest_version .... "; - - foreach $source (@source) { - $host = $source; - $host =~ s/(\w\/).*/$1/g; - chop $host; - print "\nTrying $host .... "; - - if ($lwp) { - $err = LWP::Simple::getstore("$source$windows/$latest_version", "$latest_version"); - $err -= 200; - } else { - $ok = `lynx -dump -head $source$windows/$latest_version`; - $err = !($ok =~ s/HTTP.*?200 OK//); - - if (!$err) { - $err = system("lynx -dump $source$windows/$latest_version > $latest_version"); - } - } - - last unless $err; - - } - - } else { - $err = -1; - } - - if ($err) { - die "Cannot get $latest_version"; - } else { - print "ok\n"; - } - - $latest_version; - -} - - -sub install { - - if ($filename) { - $latest_version = $filename; - } else { - $latest_version = &get_source_code; - } - - &decompress; - - if ($newinstall) { - open(FH, "sql-ledger.conf.default"); - @f = <FH>; - close(FH); - unless ($latex) { - grep { s/^\$latex.*/\$latex = 0;/ } @f; - } - open(FH, ">sql-ledger.conf"); - print FH @f; - close(FH); - - $alias = $absolutealias = $ENV{'PWD'}; - $alias =~ s/.*\///g; - - $httpddir = `dirname $httpd`; - chomp $httpddir; - $filename = "sql-ledger-httpd.conf"; - - # do we have write permission? - if (!open(FH, ">>$httpddir/$filename")) { - open(FH, ">$filename"); - $norw = 1; - } - - $directives = qq| -Alias /$alias/ $absolutealias/ -<Directory $absolutealias> - AllowOverride All - AddHandler cgi-script .pl - Options ExecCGI Includes FollowSymlinks - Order Allow,Deny - Allow from All -</Directory> - -<Directory $absolutealias/users> - Order Deny,Allow - Deny from All -</Directory> - -|; - - print FH $directives; - close(FH); - - print qq| -This is a new installation. - -|; - - if ($norw) { - print qq| -Webserver directives were written to $filename - -Copy $filename to $httpddir and add -|; - - print qq| -# SQL-Ledger -Include $httpddir/$filename - -to $httpd - -Don't forget to restart your webserver! -|; - - if (!$permset) { - print qq| -WARNING: permissions for templates, users, css and spool directory -could not be set. Login as root and set permissions - -# chown -hR :$webgroup users templates css spool -# chmod 771 users templates css spool - -|; - } - - } else { - - if (!(`grep "^# SQL-Ledger" $httpd`)) { - - open(FH, ">>$httpd"); - - print FH qq| - -# SQL-Ledger -Include $httpddir/$filename -|; - close(FH); - - print qq| -Webserver directives were written to - - $httpddir/$filename -|; - } - } - - if (!$>) { - # send SIGHUP to httpd - 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; - - while ($a !~ /(Y|N)/) { - print qq|\nDisplay README (Y/n) : |; - $a = <STDIN>; - chomp $a; - $a = ($a) ? uc $a : 'Y'; - - if ($a eq 'Y') { - @args = ("more", "doc/README"); - system(@args); - } - } - -} - - -sub decompress { - - die "Error: gzip not installed\n" unless ($gzip); - die "Error: tar not installed\n" unless ($tar); - - &create_lockfile; - - # ungzip and extract source code - print "Decompressing $latest_version ... "; - - if (system("gzip -df $latest_version")) { - print "Error: Could not decompress $latest_version\n"; - &remove_lockfile; - exit; - } else { - print "done\n"; - } - - # strip gz from latest_version - $latest_version =~ s/\.gz//; - - # now untar it - print "Unpacking $latest_version ... "; - if (system("tar -xf $latest_version")) { - print "Error: Could not unpack $latest_version\n"; - &remove_lockfile; - exit; - } else { - # now we have a copy in sql-ledger - if (system("tar -cf $latest_version -C sql-ledger .")) { - print "Error: Could not create archive for $latest_version\n"; - &remove_lockfile; - exit; - } else { - if (system("tar -xf $latest_version")) { - print "Error: Could not unpack $latest_version\n"; - &remove_lockfile; - exit; - } else { - print "done\n"; - print "cleaning up ... "; - `rm -rf sql-ledger`; - print "done\n"; - - # replace shebang if this is windows - &shebang if $windows; - - } - } - } -} - - -sub create_lockfile { - - if (-d "$userspath") { - open(FH, ">$userspath/nologin"); - close(FH); - } - -} - - -sub cleanup { - - unlink "$latest_version"; - unlink "$userspath/members.default" if (-f "$userspath/members.default"); - - &remove_lockfile; - -} - - -sub remove_lockfile { unlink "$userspath/nologin" if (-f "$userspath/nologin") }; - - -sub shebang { - - opendir DIR, "."; - @perlfiles = grep /\.pl/, readdir DIR; - closedir DIR; - - foreach $file (@perlfiles) { - open FH, "+<$file"; - - @file = <FH>; - - seek(FH, 0, 0); - truncate(FH, 0); - - $line = shift @file; - - print FH "#!c:\\perl\\bin\\perl\n"; - print FH @file; - - close(FH); - - } -} - - |