diff options
author | christopherm <christopherm@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-01 01:16:38 +0000 |
---|---|---|
committer | christopherm <christopherm@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-01 01:16:38 +0000 |
commit | ac5b087ea2d9ba7428d367aaeb288534158fee9a (patch) | |
tree | 2dbe0bdea0b653a215ba9ddfdf627cb57855050d /menu.pl |
Initial Import
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/ledger-smb@1 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'menu.pl')
-rwxr-xr-x | menu.pl | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/menu.pl b/menu.pl new file mode 100755 index 00000000..7561741a --- /dev/null +++ b/menu.pl @@ -0,0 +1,180 @@ +#!/usr/bin/perl +# +###################################################################### +# LedgerSMB Accounting and ERP +# Copyright (C) 2001 +# +# Author: Dieter Simader +# Email: dsimader@sql-ledger.org +# Web: http://sourceforge.net/projects/ledger-smb/ +# +# Contributors: +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +####################################################################### +# +# this script is the frontend called from bin/$terminal/$script +# all the accounting modules are linked to this script which in +# turn execute the same script in bin/$terminal/ +# +####################################################################### + +# setup defaults, DO NOT CHANGE +$userspath = "users"; +$spool = "spool"; +$templates = "templates"; +$memberfile = "users/members"; +$sendmail = "| /usr/sbin/sendmail -t"; +$latex = 0; +%printer = (); +########## end ########################################### + + +$| = 1; + +use LedgerSMB::Form; +use LedgerSMB::Session; + +eval { require "ledger-smb.conf"; }; + +$form = new Form; + + +# name of this script +$0 =~ tr/\\/\//; +$pos = rindex $0, '/'; +$script = substr($0, $pos + 1); + +# we use $script for the language module +$form->{script} = $script; +# strip .pl for translation files +$script =~ s/\.pl//; + +# pull in DBI +use DBI qw(:sql_types); + +# check for user config file, could be missing or ??? +eval { require("$userspath/$form->{login}.conf"); }; +if ($@) { + $locale = new Locale "$language", "$script"; + + $form->{callback} = ""; + $msg1 = $locale->text('You are logged out!'); + $msg2 = $locale->text('Login'); + $form->redirect("$msg1 <p><a href=login.pl target=_top>$msg2</a>"); +} + +# locale messages +$locale = new Locale "$myconfig{countrycode}", "$script"; +$form->{charset} = $locale->{charset}; + +# send warnings to browser +$SIG{__WARN__} = sub { $form->info($_[0]) }; + +# send errors to browser +$SIG{__DIE__} = sub { $form->error($_[0]) }; + +$myconfig{dbpasswd} = unpack 'u', $myconfig{dbpasswd}; +map { $form->{$_} = $myconfig{$_} } qw(stylesheet timeout) unless ($form->{type} eq 'preferences'); + +$form->{path} =~ s/\.\.\///g; +if ($form->{path} !~ /^bin\//) { + $form->error($locale->text('Invalid path!')."\n"); +} + +# did sysadmin lock us out +if (-f "$userspath/nologin") { + $form->error($locale->text('System currently down for maintenance!')); +} + +# pull in the main code +require "$form->{path}/$form->{script}"; + +# customized scripts +if (-f "$form->{path}/custom_$form->{script}") { + eval { require "$form->{path}/custom_$form->{script}"; }; +} + +# customized scripts for login +if (-f "$form->{path}/$form->{login}_$form->{script}") { + eval { require "$form->{path}/$form->{login}_$form->{script}"; }; +} + + +if ($form->{action}) { + # window title bar, user info + $form->{titlebar} = "LedgerSMB ".$locale->text('Version'). " $form->{version} - $myconfig{name} - $myconfig{dbname}"; + + &check_password; + + if (substr($form->{action}, 0, 1) =~ /( |\.)/) { + &{ $form->{nextsub} }; + } else { + &{ $locale->findsub($form->{action}) }; + } + +} else { + $form->error($locale->text('action= not defined!')); +} + +1; +# end + + +sub check_password { + + if ($myconfig{password}) { + + require "$form->{path}/pw.pl"; + + if ($form->{password}) { + if ((crypt $form->{password}, substr($form->{login}, 0, 2)) ne $myconfig{password}) { + if ($ENV{HTTP_USER_AGENT}) { + &getpassword; + } else { + $form->error($locale->text('Access Denied!')); + } + exit; + } else { + Session::session_create($form, %myconfig); + } + + } else { + if ($ENV{HTTP_USER_AGENT}) { + $ENV{HTTP_COOKIE} =~ s/;\s*/;/g; + @cookies = split /;/, $ENV{HTTP_COOKIE}; + foreach (@cookies) { + ($name,$value) = split /=/, $_, 2; + $cookie{$name} = $value; + } + + if ($form->{action} ne 'display') { + if ((! $cookie{"LedgerSMB-$form->{login}"}) || $cookie{"LedgerSMB-$form->{login}"} ne $form->{sessionid}) { + &getpassword(1); + exit; + } + } + #check for valid session + if(!Session::session_check($cookie{"LedgerSMB"}, $form, %myconfig)){ + &getpassword(1); + exit; + } + } else { + exit; + } + } + } +} + + |