#!/usr/bin/perl use strict; use CGI; use MD5; my $EZproxyStartingPointURL = ""; sub EZproxyURLInit { my ($EZproxyServerURL, $secret, $user, $groups) = @_; my ($packet, $EZproxyTicket); if ($secret eq "") { die "EZproxyURLInit secret missing"; } $packet = '$u' . time(); if ($groups ne "") { $packet .= '$g' . $groups; } $packet .= '$e'; $EZproxyTicket = CGI::escape(MD5->hexhash($secret . $user . $packet) . $packet); $EZproxyStartingPointURL = $EZproxyServerURL . "/login?user=" . CGI::escape($user) . "&ticket=" . $EZproxyTicket; } sub EZproxyURL { my ($url) = @_; if ($EZproxyStartingPointURL eq "") { die "EZproxyURLInit must be called before EZproxyURL"; } return $EZproxyStartingPointURL . "&qurl=" . CGI::escape($url); } EZproxyURLInit("http://ezproxy.yourlib.org", "shhh", "someuser"); print "Content-Type: text/html\n\n"; print "Some Database
\n", "Other Database
\n";