diff options
author | jasonjayr <jasonjayr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-02-15 22:37:06 +0000 |
---|---|---|
committer | jasonjayr <jasonjayr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-02-15 22:37:06 +0000 |
commit | 3dc59b2551784b3c244fe6131e53a7b152a5269c (patch) | |
tree | f5f8db2fa9b0522502521e1883cc6d19b9477129 | |
parent | 19baf1ea776a7a3ad4edc9e0c7c7cb6fca4fcc2d (diff) |
'Virtual URL' frontend, this will let us (eventually) encode the company name into the URI
so we can go to /ledger-smb/lsmb.pl/acme/login.pl, and only have to admin and login to acme's database.
Ideally index.html will point to the default company, and/or lsmb.pl/login.pl, but this initial commit will
just be this self-contained code.
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@809 4979c152-3d1c-0410-bac9-87ea11338e46
-rwxr-xr-x | lsmb.pl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lsmb.pl b/lsmb.pl new file mode 100755 index 00000000..cdc4737c --- /dev/null +++ b/lsmb.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl -w +use warnings; +use strict; + +LedgerSMB::Handler->cgi_handle(); + +package LedgerSMB::Handler; +use LedgerSMB::Log; +use warnings; +use strict; +use CGI::Carp qw(fatalsToBrowser); + +sub cgi_handle { + my $self = shift; + + my $script = $ENV{PATH_INFO}; + + $script =~ s/^\///; + # TODO: we can parse out other information, such as + # Company Identifier, and what not here. + + #return $self->debug(); + + if($script =~ /\.pl$/) { + # perl scripts should be directly executed. + warn "[LedgerSMB::Handler] running $script"; + exec("./$script") or croak $!; + } else { + # redirect them back to the original url + + # infer the base URI, this fails unless the script is named lsmb.pl + my ($base_uri) = $ENV{SCRIPT_NAME} =~ m#^(.*?)/lsmb.pl#; + print "Status: 301\nLocation: $base_uri/$script\n\n"; + } +} + +sub debug { + my $self = shift; + + use Data::Dumper; + print "Content-type: text/plain\n\n"; + print "\$0 is $0\n"; + print Dumper(\%ENV); + +} + +1; |