84 lines
2.4 KiB
Plaintext
84 lines
2.4 KiB
Plaintext
|
#!/usr/bin/perl -wT
|
||
|
#
|
||
|
# TWiki Enterprise Collaboration Platform, http://TWiki.org/
|
||
|
#
|
||
|
# Copyright (C) 1999-2007 Peter Thoeny, peter@thoeny.org
|
||
|
# and TWiki 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. For
|
||
|
# more details read LICENSE in the root of this distribution.
|
||
|
#
|
||
|
# 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.
|
||
|
#
|
||
|
# As per the GPL, removal of this notice is prohibited.
|
||
|
|
||
|
#
|
||
|
# This script is used to implement the TDWG SSO.
|
||
|
# It is called by Typo3 and OJS when the user logs in to either system.
|
||
|
# It sets up a TWiki session and user authentication
|
||
|
#
|
||
|
# Note: This script must only be accessible by the servers on the local network
|
||
|
#
|
||
|
|
||
|
use CGI;
|
||
|
use CGI::Session;
|
||
|
|
||
|
BEGIN {
|
||
|
# Set default current working directory (needed for mod_perl)
|
||
|
if( $ENV{"SCRIPT_FILENAME"} && $ENV{"SCRIPT_FILENAME"} =~ /^(.+)\/[^\/]+$/ ) {
|
||
|
chdir $1;
|
||
|
}
|
||
|
# Set library paths in @INC, at compile time
|
||
|
unshift @INC, '.';
|
||
|
require 'setlib.cfg';
|
||
|
}
|
||
|
|
||
|
use TWiki::UI;
|
||
|
TWiki::UI::run( \&main );
|
||
|
|
||
|
|
||
|
sub main {
|
||
|
my $twikiSession = shift;
|
||
|
|
||
|
# only local servers can call this script
|
||
|
if (($ENV{'REMOTE_ADDR'} ne '192.38.28.102') &&
|
||
|
($ENV{'REMOTE_ADDR'} ne '192.38.28.103') &&
|
||
|
($ENV{'REMOTE_ADDR'} ne '192.38.28.104') &&
|
||
|
($ENV{'REMOTE_ADDR'} ne '192.38.28.106') ) {
|
||
|
|
||
|
print "Content-type: text/plain\n\n";
|
||
|
print "Access denied!";
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
my $query = $twikiSession->{cgiQuery};
|
||
|
|
||
|
my $cmd = $query->param("command") || '';
|
||
|
my $username = $query->param("username") || '';
|
||
|
|
||
|
$session = $twikiSession->{loginManager}->{_cgisession};
|
||
|
|
||
|
print "Content-type: text/plain\n\n";
|
||
|
print "TDWG Single Sign On";
|
||
|
|
||
|
if ($cmd eq 'login') {
|
||
|
$session->param( 'AUTHUSER', $username );
|
||
|
$session->param( 'VALIDATION', 1 );
|
||
|
}
|
||
|
|
||
|
elsif ($cmd eq 'logout') {
|
||
|
$session->clear( [ 'AUTHUSER', 'VALIDATION' ] );
|
||
|
}
|
||
|
|
||
|
print "\n\nStatus:";
|
||
|
print "\nSessionId : ".$session->id();
|
||
|
print "\nCommand : ".$cmd;
|
||
|
print "\nAUTHUSER : ".$session->param( 'AUTHUSER' );
|
||
|
print "\nVALIDATION : ".$session->param( 'VALIDATION' );
|
||
|
}
|