From 4f0cd49202d8f9538d20fc51ea70e0f8b7727052 Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Wed, 21 Nov 2012 14:30:45 -0500 Subject: Reorganized TPS templates and scripts. The templates, JS, and CGI scripts for TPS have been reorganized into the TPS core package. Ticket #407 --- base/tps/apache/cgi-bin/sow/ajax-list.cgi | 79 ++++++++ base/tps/apache/cgi-bin/sow/cfg.pl | 168 +++++++++++++++++ base/tps/apache/cgi-bin/sow/enroll.cgi | 246 +++++++++++++++++++++++++ base/tps/apache/cgi-bin/sow/enroll.html | 260 +++++++++++++++++++++++++++ base/tps/apache/cgi-bin/sow/enroll_temp.cgi | 246 +++++++++++++++++++++++++ base/tps/apache/cgi-bin/sow/enroll_temp.html | 231 ++++++++++++++++++++++++ base/tps/apache/cgi-bin/sow/format.cgi | 207 +++++++++++++++++++++ base/tps/apache/cgi-bin/sow/format.html | 236 ++++++++++++++++++++++++ base/tps/apache/cgi-bin/sow/formatso.cgi | 207 +++++++++++++++++++++ base/tps/apache/cgi-bin/sow/formatso.html | 186 +++++++++++++++++++ base/tps/apache/cgi-bin/sow/index.cgi | 42 +++++ base/tps/apache/cgi-bin/sow/is_agent.cgi | 69 +++++++ base/tps/apache/cgi-bin/sow/is_user.cgi | 71 ++++++++ base/tps/apache/cgi-bin/sow/main.cgi | 70 ++++++++ base/tps/apache/cgi-bin/sow/main.html | 67 +++++++ base/tps/apache/cgi-bin/sow/noaccess.cgi | 56 ++++++ base/tps/apache/cgi-bin/sow/noaccess.html | 63 +++++++ base/tps/apache/cgi-bin/sow/read.cgi | 128 +++++++++++++ base/tps/apache/cgi-bin/sow/read.html | 78 ++++++++ base/tps/apache/cgi-bin/sow/read_temp.cgi | 125 +++++++++++++ base/tps/apache/cgi-bin/sow/read_temp.html | 78 ++++++++ base/tps/apache/cgi-bin/sow/search.cgi | 70 ++++++++ base/tps/apache/cgi-bin/sow/search.html | 71 ++++++++ base/tps/apache/cgi-bin/sow/search_temp.cgi | 70 ++++++++ base/tps/apache/cgi-bin/sow/search_temp.html | 71 ++++++++ base/tps/apache/cgi-bin/sow/seturl.cgi | 207 +++++++++++++++++++++ base/tps/apache/cgi-bin/sow/seturl.html | 174 ++++++++++++++++++ base/tps/apache/cgi-bin/sow/welcome.cgi | 57 ++++++ base/tps/apache/cgi-bin/sow/welcome.html | 63 +++++++ 29 files changed, 3696 insertions(+) create mode 100755 base/tps/apache/cgi-bin/sow/ajax-list.cgi create mode 100755 base/tps/apache/cgi-bin/sow/cfg.pl create mode 100755 base/tps/apache/cgi-bin/sow/enroll.cgi create mode 100755 base/tps/apache/cgi-bin/sow/enroll.html create mode 100755 base/tps/apache/cgi-bin/sow/enroll_temp.cgi create mode 100755 base/tps/apache/cgi-bin/sow/enroll_temp.html create mode 100755 base/tps/apache/cgi-bin/sow/format.cgi create mode 100755 base/tps/apache/cgi-bin/sow/format.html create mode 100755 base/tps/apache/cgi-bin/sow/formatso.cgi create mode 100755 base/tps/apache/cgi-bin/sow/formatso.html create mode 100755 base/tps/apache/cgi-bin/sow/index.cgi create mode 100755 base/tps/apache/cgi-bin/sow/is_agent.cgi create mode 100755 base/tps/apache/cgi-bin/sow/is_user.cgi create mode 100755 base/tps/apache/cgi-bin/sow/main.cgi create mode 100755 base/tps/apache/cgi-bin/sow/main.html create mode 100755 base/tps/apache/cgi-bin/sow/noaccess.cgi create mode 100755 base/tps/apache/cgi-bin/sow/noaccess.html create mode 100755 base/tps/apache/cgi-bin/sow/read.cgi create mode 100755 base/tps/apache/cgi-bin/sow/read.html create mode 100755 base/tps/apache/cgi-bin/sow/read_temp.cgi create mode 100755 base/tps/apache/cgi-bin/sow/read_temp.html create mode 100755 base/tps/apache/cgi-bin/sow/search.cgi create mode 100755 base/tps/apache/cgi-bin/sow/search.html create mode 100755 base/tps/apache/cgi-bin/sow/search_temp.cgi create mode 100755 base/tps/apache/cgi-bin/sow/search_temp.html create mode 100755 base/tps/apache/cgi-bin/sow/seturl.cgi create mode 100755 base/tps/apache/cgi-bin/sow/seturl.html create mode 100755 base/tps/apache/cgi-bin/sow/welcome.cgi create mode 100755 base/tps/apache/cgi-bin/sow/welcome.html (limited to 'base/tps/apache/cgi-bin/sow') diff --git a/base/tps/apache/cgi-bin/sow/ajax-list.cgi b/base/tps/apache/cgi-bin/sow/ajax-list.cgi new file mode 100755 index 000000000..0f4ac094f --- /dev/null +++ b/base/tps/apache/cgi-bin/sow/ajax-list.cgi @@ -0,0 +1,79 @@ +#! /usr/bin/perl -w +# +# --- BEGIN COPYRIGHT BLOCK --- +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# +# Copyright (C) 2007 Red Hat, Inc. +# All rights reserved. +# --- END COPYRIGHT BLOCK --- +# + +use CGI; +use Mozilla::LDAP::Conn; +use PKI::TPS::Common; + +[REQUIRE_CFG_PL] + +sub main() +{ + + my $q = new CGI; + + my $host = get_ldap_host(); + my $port = get_ldap_port(); + my $secureconn = get_ldap_secure(); + my $basedn = get_base_dn(); + my $certdir = get_ldap_certdir(); + + my $letters = $q->param('letters'); + if ($letters eq "") { + # HACK: ajax.js posts parameters into POST URL + $letters = $ENV{'QUERY_STRING'}; + $letters =~ s/.*letters=//g; + $letters =~ s/\+/ /g; + } + + my $result = ""; + + print "Content-Type: text/html\n\n"; + + my $conn = PKI::TPS::Common::make_connection( + {host => $host, port => $port, cert => $certdir}, + $secureconn); + + return if (!$conn); + + my $entry = $conn->search ( { base =>$basedn, + scope => "sub", + filter => "cn=$letters*", + attrsonly => 0, + attrs => qw(cn uid), + sortattrs => qw(cn)} + ); + + while ($entry) { + my $cn = ($entry->getValues("cn"))[0] || ""; + my $uid = ($entry->getValues("uid"))[0] || ""; + $result .= $uid . "###" . $cn . "|"; + $entry $conn->nextEntry(); + } + + $conn->close(); + + print $result; +} + +&main(); diff --git a/base/tps/apache/cgi-bin/sow/cfg.pl b/base/tps/apache/cgi-bin/sow/cfg.pl new file mode 100755 index 000000000..64e612aaa --- /dev/null +++ b/base/tps/apache/cgi-bin/sow/cfg.pl @@ -0,0 +1,168 @@ +#! /usr/bin/perl +# +# --- BEGIN COPYRIGHT BLOCK --- +# 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; version 2 of the License. +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright (C) 2007 Red Hat, Inc. +# All rights reserved. +# --- END COPYRIGHT BLOCK --- +# + +# +# Establish platform-dependent variables: +# +my $ldapsearch="/usr/bin/ldapsearch"; + +# +# Feel free to modify the following parameters: +# +my $ldapHost = "localhost"; +my $ldapPort = "389"; +my $basedn = "ou=People,dc=sfbay,dc=redhat,dc=com"; +my $port = "7888"; +my $secure_port = "7889"; +my $host = "localhost"; + +my $cfg = "/var/lib/pki-tps/conf/CS.cfg"; + +sub get_ldapsearch() +{ + return $ldapsearch; +} + +sub get_ldap_host() +{ + my $ldapport = `grep auth.instance.0.hostport $cfg | cut -c26-`; + chomp($ldapport); + my ($ldapHost, $p) = split(/:/, $ldapport); + return $ldapHost; +} + +sub get_ldap_port() +{ + my $ldapport = `grep auth.instance.0.hostport $cfg | cut -c26-`; + chomp($ldapport); + my ($p, $ldapPort) = split(/:/, $ldapport); + return $ldapPort; +} + +sub get_base_dn() +{ + my $basedn = `grep auth.instance.0.baseDN $cfg | cut -c24-`; + chomp($basedn); + return $basedn; +} + +sub get_port() +{ + my $port = `grep service.unsecurePort $cfg | cut -c22-`; + chomp($port); + return $port; +} + +sub get_secure_port() +{ + my $secure_port = `grep service.securePort $cfg | cut -c20-`; + chomp($secure_port); + return $secure_port; +} + +sub get_host() +{ + my $host = `grep service.machineName $cfg | cut -c21-`; + chomp($host); + return $host; +} + +sub is_agent() +{ + my ($dn) = @_; + + my $uid = $dn; + # need to map a subject dn into user DN + $uid =~ /uid=([^,]*)/; # retrieve the uid + $uid = $1; + + my $x_hostport = `grep -e "^tokendb.hostport" $cfg | cut -c18-`; + chomp($x_hostport); + my ($x_host, $x_port) = split(/:/, $x_hostport); + my $x_basedn = `grep -e "^tokendb.userBaseDN" $cfg | cut -c20-`; + chomp($x_basedn); + my $x_binddn = `grep -e "^tokendb.bindDN" $cfg | cut -c16-`; + chomp($x_binddn); + my $x_bindpwdpath = `grep -e "^tokendb.bindPassPath" $cfg | cut -c22-`; + chomp($x_bindpwdpath); + my $x_bindpwd = `grep -e "^tokendbBindPass" $x_bindpwdpath | cut -c17-`; + chomp($x_bindpwd); + + my $cmd = $ldapsearch . " " . + "-x" . + "-D \"" . $x_binddn . "\" " . + "-w \"" . $x_bindpwd . "\" " . + "-b \"" . "cn=TUS Officers,ou=Groups,".$x_basedn . "\" " . + "-h \"" . $x_host . "\" " . + "-p \"" . $x_port ."\" " . + "-LLL \"(uid=" . $uid . "*)\" | wc -l"; + + my $matched = `$cmd`; + + chomp($matched); + + if ($matched eq "0" || $matched eq "") { + return 0; + } else { + return 1; + } +} + +sub is_user() +{ + my ($dn) = @_; + + my $uid = $dn; + # need to map a subject dn into user DN + $uid =~ /uid=([^,]*)/; # retrieve the uid + $uid = $1; + + my $x_host = get_ldap_host(); + $x_port = get_ldap_port(); + my $x_basedn = get_base_dn(); + chomp($x_basedn); + my $x_binddn = `grep -e "^tokendb.bindDN" $cfg | cut -c16-`; + chomp($x_binddn); + my $x_bindpwdpath = `grep -e "^tokendb.bindPassPath" $cfg | cut -c22-`; + chomp($x_bindpwdpath); + my $x_bindpwd = `grep -e "^tokendbBindPass" $x_bindpwdpath | cut -c17-`; + chomp($x_bindpwd); + + my $cmd = $ldapsearch . " " . + "-x" . + "-D \"" . $x_binddn . "\" " . + "-w \"" . $x_bindpwd . "\" " . + "-b \"" . "ou=people,".$x_basedn . "\" " . + "-h \"" . $x_host . "\" " . + "-p \"" . $x_port ."\" " . + "-LLL \"(uid=" . $uid . "*)\" | wc -l"; + + + my $matched = `$cmd`; + + chomp($matched); + + if ($matched eq "0" || $matched eq "") { + return 0; + } else { + return 1; + } +} diff --git a/base/tps/apache/cgi-bin/sow/enroll.cgi b/base/tps/apache/cgi-bin/sow/enroll.cgi new file mode 100755 index 000000000..8a6431e52 --- /dev/null +++ b/base/tps/apache/cgi-bin/sow/enroll.cgi @@ -0,0 +1,246 @@ +#! /usr/bin/perl -w +# +# --- BEGIN COPYRIGHT BLOCK --- +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# +# Copyright (C) 2007 Red Hat, Inc. +# All rights reserved. +# --- END COPYRIGHT BLOCK --- +# +######################################################################## +# +# Script: esc.cgi +# Author: Kin Blas () +# Date: 12/19/2003 +# +# CGI.pm Docs: +# +# http://stein.cshl.org/WWW/software/CGI/ +# +######################################################################## + +[REQUIRE_CFG_PL] + +use CGI; +use Mozilla::LDAP::Conn; +use PKI::TPS::Common; + +$gQuery = new CGI; + +sub authorize +{ + my $client_dn = $ENV{'SSL_CLIENT_S_DN'}; + $client_dn =~ tr/A-Z/a-z/; # all lower cases + $client_dn =~ s/\s+//g; # remove all spacing + + if (&is_agent($client_dn)) { + return 1; + } + return 0; +} + +sub DoPage +{ + if (!&authorize()) { + print $gQuery->redirect("/cgi-bin/sow/noaccess.cgi"); + return; + } + + $gQueryAction = "default"; + $gQueryOverrideAction = "default"; + + @gCookieNames = ("ascScreenName", + "ascSubscriptionType", + "ascBindings"); + + $gQueryAction = $gQuery->param("action") if + (defined $gQuery->param("action")); + + $gQueryOverrideAction = $gQuery->param("override_action") + if (defined $gQuery->param("override_action")); + + if ($gQueryOverrideAction ne "default") + { + $gQueryAction = $gQueryOverrideAction; + } + +######################################################################## +# +# If no action was provided, we default to showing our +# admin page! +# +# http://www.foo.com/esc.cgi +# +######################################################################## + + if ($gQueryAction eq "default") + { + GenerateEnrollmentPage(); + exit 0; + } +} + +sub ExitError +{ + my($str) = @_; + print $gQuery->header(), $gQuery->start_html(), $str, $gQuery->end_html(); + exit 0; +} + +sub GetScreenName +{ + my $sn = ""; + + if (defined $gQuery->param("screenname")) + { + $sn = $gQuery->param("screenname"); + } else { + $sn = "default"; + } + + return $sn; +} + +sub GetKeyType +{ + my $keyType = 0; + + if (defined $gQuery->param("keytype")) + { + $keyType = $gQuery->param("keytype"); + } + + return $keyType; +} + +sub GetKeyID +{ + my $keyID = ""; + + if (defined $gQuery->param("keyid")) + { + $keyID = $gQuery->param("keyid"); + } + + return $keyID; +} + +sub GetKeyLabelArg +{ + my $keyLabel = ""; + + if (defined $gQuery->param("keylabel")) + { + $keyLabel = $gQuery->param("keylabel"); + } + + return $keyLabel; +} + +sub HaveScreenName +{ + return 1 if (GetScreenName() ne ""); + return 0; +} + +sub IsSubscriber +{ + my $subType = $gUserObj{'SUBSCRIPTION'}; + return 1 if ($subType eq "HouseKey" || $subType eq "NetKey"); + + return 0; +} + +sub GetNextAction +{ + my($nextActn) = "default"; + + if (defined $gQuery->param('nextaction')) + { + $nextActn = $gQuery->param('nextaction'); + } + elsif (defined $gQuery->param('action')) + { + $nextActn = $gQuery->param('action'); + } + + return $nextActn; +} + +sub GenerateEnrollmentPage +{ + my ($l); + my $ldap_host = get_ldap_host(); + my $ldap_port = get_ldap_port(); + my $secureconn = get_ldap_secure(); + my $basedn = get_base_dn(); + my $port = get_port(); + my $host = get_host(); + my $secure_port = get_secure_port(); + my $certdir = get_ldap_certdir(); + + ExitError("Failed to load enrollment page!") if (!open(ENROLL_FILE, "< enroll.html")); + + print $gQuery->header(); + + my $uid = $gQuery->param("uid"); + + my $conn = PKI::TPS::Common::make_connection( + {host => $ldap_host, port => $ldap_port, cert => $certdir}, + $secureconn); + + ExitError("Failed to connect to the database. $msg") if (!$conn); + + my $entry = $conn->search ( $basedn, + "sub", + "uid=$uid", + 0 + ); + + if (!$entry) { + $conn->close(); + ExitError("User $uid not found"); + } + + my $givenName = ($entry->getValues("givenName"))[0] || "-"; + my $cn = ($entry->getValues("cn"))[0] || "-"; + my $sn = ($entry->getValues("sn"))[0] ||"-"; + $uid = ($entry->getValues("uid"))[0] || "-"; + my $mail = ($entry->getValues("mail"))[0] || "-"; + my $phone = ($entry->getValues("telephoneNumber"))[0] || "-"; + my $departmentNumber = ($entry->getValues("departmentNumber"))[0] || ""; + my $employeeNumber = ($entry->getValues("employeeNumber"))[0] || ""; + + while ($l = ) + { + $l =~ s/\$mail/$mail/g; + $l =~ s/\$uid/$uid/g; + $l =~ s/\$givenName/$givenName/g; + $l =~ s/\$sn/$sn/g; + $l =~ s/\$cn/$cn/g; + $l =~ s/\$phone/$phone/g; + $l =~ s/\$departmentNumber/$departmentNumber/g; + $l =~ s/\$employeeNumber/$employeeNumber/g; + $l =~ s/\$host/$host/g; + $l =~ s/\$port/$port/g; + $l =~ s/\$secure_port/$secure_port/g; + print $l; + } + + close(ENROLL_FILE); +} + +&DoPage(); diff --git a/base/tps/apache/cgi-bin/sow/enroll.html b/base/tps/apache/cgi-bin/sow/enroll.html new file mode 100755 index 000000000..81ec73443 --- /dev/null +++ b/base/tps/apache/cgi-bin/sow/enroll.html @@ -0,0 +1,260 @@ + + + + + + +Enrollment + + + + + + + + + +