## OpenCA Command
## (c) 1998-2003 by Massimiliano Pala and OpenCA Group
## (c) Copyright 2004 The OpenCA Project
##
##   File Name: getStaticPage
##       Brief: get a static page
## Description: get a static page to support session management
##  Parameters: name

use strict;

sub cmdGetStaticPage {

    our ($query, $config, $tools, $xml_cache);

    ##     bp
    ##     init
    ##     initCA
    ##     initUser
    ##     initRA
    ##     selectCSRtype
    ##     thanks

    my ($item_list, $pageName, $name, $exp, $raw_body, $mode) = 
			(undef, "", "", "", undef, "STATIC" );

    if ( $query->param('name') eq "" ) {
	$pageName = "homePage";
    } else {
	$pageName = $query->param('name');
    }

    if ($pageName =~ /workflow/)
    {
        $name = gettext ("Statemachine based workflow management");
        $exp  = gettext ("This is the management interface for OpenCA's batch processing system. Please use and configure it carefully because it works fullautomatically.");

        $item_list->[1]->[0] = gettext ("Operations and Management");
        $item_list->[1]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpDoStep">'.
                               gettext ("Do one step for all workflows").'</a>';
        $item_list->[1]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpListUser">'.
                               gettext ("List Users").'</a>';

        $item_list->[2]->[0] = gettext ("Import data into batch system");
        $item_list->[2]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportNewUser">'.
                               gettext ("Import new users").'</a>';
        $item_list->[2]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportNewProcess">'.
                               gettext ("Import new processes for the users").'</a>';
        $item_list->[2]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportProcessData">'.
                               gettext ("Import data for the processes of the users").'</a>';

        $item_list->[2]->[4] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportProcessDataCompact">'.
                               gettext ("Quickimport - see manual !").'</a>';

        $item_list->[3]->[0] = gettext ("Enrollment");
        $item_list->[3]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpExportPIN">'.
                               gettext ("Export PINs").'</a>';
        my $filename = $xml_cache->get_xpath(
                           FILENAME => getRequired ('StateMachineConfiguration'),
                           XPATH    => [ "statemachine/functions/enrollment/pkcs12/dir" ],
                           COUNTER  => [ 0 ]);
        $item_list->[3]->[2] = i18nGettext ("Enrolled PKCS#12 files are already in __DIR__.",
                                            "__DIR__", $filename);

        #$item_list->[1]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportUpdateUser">'.
        #                       gettext ("Import an update for the users").'</a>';
        #$item_list->[1]->[4] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpImportACL">'.
        #                       gettext ("Import permissions").'</a>';

        #$item_list->[2]->[0] = gettext ("New key-lifecycle");
        #$item_list->[2]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpCreatePIN">'.
        #                       gettext ("Create PINs").'</a>';
        #$item_list->[2]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpCreateKey">'.
        #                       gettext ("Create new key pairs").'</a>';
        #$item_list->[2]->[4] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpBackupKey">'.
        #                       gettext ("Backup key pairs").'</a>';
        #$item_list->[2]->[5] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpCreateCSR">'.
        #                       gettext ("Create Requests").'</a>';
        #$item_list->[2]->[6] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpApprovePendingCSR">'.
        #                       gettext ("Approve Requests").'</a>';
        #$item_list->[2]->[7] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpExportPKCS12">'.
        #                       gettext ("Export PKCS#12-files").'</a>';
        #$item_list->[2]->[7] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpDeletePIN">'.
        #                       gettext ("Delete not hashed PINs").'</a>';
        #$item_list->[2]->[7] = '<div class="warning">'.
        #                       gettext ("(don't do this if you have not already exported all PINs to the users)").
        #                       '</div>';

        #$item_list->[3]->[0] = gettext ("Renew key-lifecycle");
        #$item_list->[3]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=bpRenewCSR">'.
        #                       gettext ("Renew requests").'</a>';
        #$item_list->[3]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=bpApproveRenewedCSR">'.
        #                       gettext ("Approve renewed users").'</a>';

    } elsif ($pageName =~ /dataexchange/) {
        $name = gettext ("Dataexchange");
        $exp  = gettext ("Please choose what do you want to export from or import into the CA.");

        $item_list->[0]->[0] = gettext ("Enroll data to a lower level of the hierarchy");
        $item_list->[0]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeEnrollAll">'.
                               gettext ("All").'</a>';
        $item_list->[0]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeEnrollCert">'.
                               gettext ("Certificates").'</a>';
        $item_list->[0]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeEnrollCRL">'.
                               gettext ("CRLs").'</a>';
        $item_list->[0]->[4] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeEnrollConfig">'.
                               gettext ("Configuration").'</a>';
        $item_list->[0]->[5] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeEnrollBP">'.
                               gettext ("Batchprocessors").'</a>';

        $item_list->[1]->[0] = gettext ("Receive data from a lower level of the hierarchy");
        $item_list->[1]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeReceiveAll">'.
                               gettext ("All").'</a>';
        $item_list->[1]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeReceiveCSR">'.
                               gettext ("Requests").'</a>';
        $item_list->[1]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeReceiveCRR">'.
                               gettext ("CRRs").'</a>';

        $item_list->[2]->[0] = gettext ("Download data from a higher level of the hierarchy");
        $item_list->[2]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadAll">'.
                               gettext ("All").'</a>';
        $item_list->[2]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadCert">'.
                               gettext ("Certificates").'</a>';
        $item_list->[2]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadCRL">'.
                               gettext ("CRLs").'</a>';
        $item_list->[2]->[4] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadConfig">'.
                               gettext ("Configuration").'</a>';
        $item_list->[2]->[5] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadBP">'.
                               gettext ("Batchprocessors").'</a>';

        $item_list->[3]->[0] = gettext ("Upload data to a higher level of the hierarchy");
        $item_list->[3]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeUploadAll">'.
                               gettext ("All").'</a>';
        $item_list->[3]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeUploadCSR">'.
                               gettext ("Requests").'</a>';
        $item_list->[3]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=nodeUploadCRR">'.
                               gettext ("CRRs").'</a>';

    } elsif ($pageName =~ /safety/)
    {
        $name = gettext ("Backup and Recovery");

        $item_list->[0]->[0] = gettext ("BACKUP");
        $item_list->[0]->[1] = gettext ("Please take in mind that you must care about the private key of the CA by yourself.");
        $item_list->[0]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=exportDB">'.
                               gettext ("Database").'</a>';

        $item_list->[1]->[0] = gettext ("RECOVERY");
        $item_list->[1]->[1] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=genDB">'.
                               gettext ("Initialize Database").'</a>';
        $item_list->[1]->[2] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=importDB">'.
                               gettext ("Restore Database").'</a>';
        $item_list->[1]->[3] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=rebuildOpenSSLindexDB">'.
                               gettext ("Rebuild OpenSSL's database and next serialnumber").'</a>';

    } elsif ($pageName =~ /initCA/) {
        $name = gettext ("Init Certification Authority");
        $exp  = gettext ("This page is intended to be used when you run OpenCA for the first time or you have to import CA certificate apporved by your Root CA.\nPlease use one of the following links. WATCH OUT, you can delete the CA secret key that will be impossible to recover, so be careful and know what you are going to do.\nPlease note that the dB initialization is required only once just after CA installation.");

        $item_list->[0]->[0] = gettext ("DB Setup");
        # $item_list->[0]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=genDB;mode=DRYRUN">'.
        #                        gettext ("Show SQL statements for database initialization").
        #                        '</a></center>';
        $item_list->[0]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=genDB">'.
                               gettext ("Initialize Database").
                               '</a></center>';
        $item_list->[0]->[2] = '<center> ' .
				'<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=genDB;mode=FORCE" onClick="return ' .
				'window.confirm('. "'" .  '   WARNING:\n\n   Do you really want to destroy the database ?' .
				"'" . ');">'.  gettext ("Re-Init Database (destroys current DB)").  '</a></center>';
        $item_list->[0]->[3] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=upgradeDB">'.
                               gettext ("Upgrade Database (from 0.9.2+)").
                               '</a></center>';
	$item_list->[0]->[4] = "&nbsp;";

        $item_list->[1]->[0] = gettext ("Key pair Setup");
        $item_list->[1]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=genSKey">'.
                               gettext ("Generate new CA secret key").'</a></center>';

	$item_list->[1]->[2] = "&nbsp;";

        $item_list->[2]->[0] = gettext ("Request Setup");
        $item_list->[2]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=genCAReq">'.
                               gettext ("Generate new CA Certificate Request (use generated secret key)").'</a></center>';
	$item_list->[2]->[2] = "&nbsp;";

        $item_list->[3]->[0] = gettext ("Certificate Setup");
        # $item_list->[3]->[1] = gettext ("Selfsigned CA-Certificate");
        $item_list->[3]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getParams;GET_PARAMS_CMD=genCACert">'.
                               gettext ("Self Signed CA Certificate (from altready generated request)").'</a></center>';
        #item_list->[3]->[3] = gettext ("Signed by another CA");
        $item_list->[3]->[2] = "&nbsp;";
        $item_list->[3]->[3] = '<center><a href="'.
                               '?cmd=getParams;GET_PARAMS_CMD=exportCAReqCert;dataType=REQUEST">'.
                               gettext ("Export CA Certificate Request").'</a></center>';
        $item_list->[3]->[4] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=importCACert">'.
                               gettext ("Import CA certificate ( approved by Root CA )").'</a></center>';
	$item_list->[3]->[6] = "&nbsp;";

        $item_list->[4]->[0] = gettext ("Final Setup");
        $item_list->[4]->[1] = '<center><a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=rebuildChain">'.
                               gettext ("Rebuild CA Chain").'</a></center>';
	$item_list->[4]->[2] = "&nbsp;";

    } elsif ($pageName =~ /initUser/) {
        $name = gettext ("Init First User");
        $exp  = gettext ("This page is intended to be used when you run OpenCA for the first time.\nPlease use the following links to create the first user of the PKI. This user should be an administrator.");

        $item_list->[0]->[0] = gettext ("Init first user workflow");
        $item_list->[1]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").
		'?cmd=setupInitialCert&dest=advanced_csr">'.
                gettext ("Create a new request").  '</a>';

        # $item_list->[2]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=setupInitialCert&dest=editCSR">'.
        #                        gettext ("Edit the request").
        #                        '</a>';
        
        $item_list->[2]->[0] = '<a href="'.
		$query->param("HTTP_CGI_SCRIPT") .
		'?cmd=setupInitialCert&dest=viewCSR">'.
                gettext ("Issue the certificate") .  '</a>';

        $item_list->[3]->[0] = '<a href="' .
		$query->param("HTTP_CGI_SCRIPT") .
		'?cmd=setupInitialCert&dest=viewCert">'.
                gettext ("Handle the certificate") . '</a>';

    } elsif ($pageName =~ /initRA/) {
        $name = gettext ("Init Online Server");
        $exp  = gettext ("This page is intended to be used when you run OpenCA for the first time.\nPlease use the following links to create the first server certificate of the PKI. This user should be a web server.");

        $item_list->[0]->[0] = gettext ("Init first user workflow");
        $item_list->[1]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=setupInitialCert&dest=advanced_csr">'.
                               gettext ("Create a new request").
                               '</a>';

#        $item_list->[2]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=setupInitialCert&dest=editCSR">'.
#                               gettext ("Edit the request").
#                               '</a>';
        $item_list->[2]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=setupInitialCert&dest=viewCSR">'.
                               gettext ("Issue the certificate").
                               '</a>';
        $item_list->[3]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=setupInitialCert&dest=viewCert">'.
                               gettext ("Handle the certificate").
                               '</a>';

    } elsif ($pageName =~ /initNode/) {
        $name = gettext ("Init New Node");
        $exp  = gettext ("This page is intended to be used when you run an OpenCA node for the first time.\nPlease use one of the following links. \nPlease note that the database initialization is required only once just after the installation.");

        $item_list->[0]->[0] = gettext ("Database Test");
        $item_list->[0]->[1] = '<center><a href="'.
	      $query->param("HTTP_CGI_SCRIPT").'?cmd=genDB;mode=DRYRUN">'.
              gettext ("Show SQL statements for database initialization").
              '</a></center><br /><br />';
        $item_list->[1]->[0] = gettext ("Database Configuration");
        $item_list->[1]->[1] = '<center><a href="' .
		$query->param("HTTP_CGI_SCRIPT").'?cmd=genDB">'.  
		gettext ("Initialize Database").'</a></center>';
        $item_list->[1]->[2] = '<center> ' .
		'<a href="'.$query->param("HTTP_CGI_SCRIPT").
		'?cmd=genDB;mode=FORCE" onClick="return ' .
		'window.confirm('. "'" .  '   WARNING:\n\n   Do you really '.
		'want to destroy the database ?' .  "'" . ');">'.  
		gettext ("Re-Init Database (destroys current DB)"). 
		'</a></center>';
        $item_list->[1]->[3] = '<center><a href="'.
		$query->param("HTTP_CGI_SCRIPT").'?cmd=upgradeDB">'.
                gettext ("Upgrade Database (from 0.9.2+)"). '</a></center>';
	$item_list->[1]->[4] = "&nbsp;";

        $item_list->[2]->[0] = gettext ("PKI Setup");
        $item_list->[2]->[1] = '<center><a href="'.
		$query->param("HTTP_CGI_SCRIPT").
		'?cmd=getParams;GET_PARAMS_CMD=nodeDownloadConfig">'.
                gettext ("Import Configuration").'</a></center>';
	$item_list->[2]->[2] = "&nbsp;";

    } elsif ($pageName =~ /init/) {
        $name = gettext ("OpenCA Init");
        $exp  = gettext ("This page is used to initialize your PKI. Please complete carefully every phase until you continue with the next phase. All phases are required if you start initializing a new CA. If you want to recover from a crash please use the functions on the page Input and Output.");

        $item_list->[0]->[0] = gettext ("Phase I");
        $item_list->[1]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getStaticPage&name=initCA">'.
                               gettext ("Initialize the Certification Authority").
                               '</a>';

        $item_list->[2]->[0] = gettext ("Phase II");
        $item_list->[3]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getStaticPage&name=initUser">'.
                               gettext ("Create the initial administrator").
                               '</a>';

        $item_list->[4]->[0] = gettext ("Phase III");
        $item_list->[5]->[0] = '<a href="'.$query->param("HTTP_CGI_SCRIPT").'?cmd=getStaticPage&name=initRA">'.
                               gettext ("Create the initial RA certificate").
                               '</a>';

    } elsif ($pageName =~ /selectCSRtype/) {

	my $pos = 0;
	my $pos = 0;
	my $authReqEnable = undef;
	my $browserReqEnable = undef;
	my $p10ReqEnable = undef;

	$name = gettext ( "Request a Certificate" );
	$exp  = gettext ( "To request a certificate use one of this links. " .
			  "You will be asked to fill in a form and to confirm ".
			  "inserted data. After having completed the request ".
			  "you will have to go to the chosen RA for request " .
			  "approval.");

	my @supportedRequests = getRequiredList ( "SupportedRequests" );

	foreach my $reqFormName ( @supportedRequests ) {

		my ( $reqTitle, $reqDescription, $reqCommand );

		$reqTitle = getRequired ( $reqFormName . "Title" );
		$reqDescription = getRequired ($reqFormName . "Description");
		$reqCommand = getRequired ($reqFormName . "Command");

		$item_list->[$pos]->[0]=
			'<a href="'.$query->param("HTTP_CGI_SCRIPT").
			'?cmd=' . $reqCommand . '">'. 
			gettext ("$reqTitle").
			'</a>';

		$item_list->[$pos++]->[1] = "<center>" . 
			gettext ("$reqDescription") . "</center>";
	}

	if( $authReqEnable =~ /YES/i ) {
		$item_list->[$pos]->[1] = "<center>" . 
			gettext ("[Request form with automatic browser detection]") . "</center>";
		$item_list->[$pos++]->[0]=
			'<a href="'.$query->param("HTTP_CGI_SCRIPT").
			'?cmd=authenticated_csr">'. 
			gettext ("Authenticated Browser Certificate Request").
			'</a>';
	}

	if( $browserReqEnable =~ /YES/i ) {
		$item_list->[$pos]->[1] = "<center>" . 
			gettext ("[Request form with automatic browser detection]") . "</center>";
		$item_list->[$pos++]->[0]='<a href="'.$query->param("HTTP_CGI_SCRIPT").
				'?cmd=advanced_csr">'. 
				gettext ("Browser Certificate Request").
				'</a>';
	}

	if( $p10ReqEnable =~ /YES/i ) {
        	$item_list->[$pos]->[1] = "<center>" . 
			gettext ("[PKCS#10 PEM formatted Request]") . "</center>";
        	$item_list->[$pos++]->[0]='<a href="'.$query->param("HTTP_CGI_SCRIPT").
        			'?cmd=pkcs10_req">'.
        			gettext ("Server Request").
        			'</a>';
	}

    } elsif ($pageName =~ /thanks/) {
        $name = gettext ("Thanks");
        $exp  = gettext ("Thanks goes to all the developers and contributors who have actively supported the OpenCA project. We also like to thank the people who tests and documents the software.");

    } elsif ($pageName =~ /search_cert/) {
        my ($hidden_list, $info_list, $cmd_panel) = (undef, undef, undef);

        $name = gettext ("Search Certificates");
        $exp  = gettext ("Please enter the parameters for the search.");

        $hidden_list->{"cmd"}      = "search";
        $hidden_list->{"dataType"} = "CERTIFICATE";
        $hidden_list->{"pcounter"} = "5";
        $hidden_list->{"name_1"}   = "CN";
        $hidden_list->{"name_2"}   = "emailAddress";
        $hidden_list->{"name_3"}   = "DN";
        $hidden_list->{"name_4"}   = "ROLE";
	$hidden_list->{"name_5"}   = "KEY";

        $cmd_panel->[0] = '<input type=submit value="'.gettext ("OK").'">';
        $cmd_panel->[1] = '<input type=reset value="'.gettext ("Reset").'">';

        $info_list->{BODY}->[0]->[0] = gettext ("Name");
        $info_list->{BODY}->[0]->[1] = '<input type=text name="value_1">';
        $info_list->{BODY}->[1]->[0] = gettext ("Emailaddress");
        $info_list->{BODY}->[1]->[1] = '<input type=text name="value_2">';
        $info_list->{BODY}->[2]->[0] = gettext ("Distinguished Name");
        $info_list->{BODY}->[2]->[1] = '<input type=text name="value_3">';
        $info_list->{BODY}->[3]->[0] = gettext ("Role");
        $info_list->{BODY}->[3]->[1] = '<input type=text name="value_4">';
	$info_list->{BODY}->[4]->[0] = gettext ("Request Serial #");
        $info_list->{BODY}->[4]->[1] = '<input type=text name="value_5">';


        return libSendReply (
                              "NAME"        => $name,
                              "EXPLANATION" => $exp,
                              "HIDDEN_LIST" => $hidden_list,
                              "CMD_PANEL"   => $cmd_panel,
                              "INFO_LIST"   => $info_list
                             );
    } elsif ($pageName =~ /search_csr/) {
        my ($hidden_list, $info_list, $cmd_panel) = (undef, undef, undef);

        $name = gettext ("Search Requests");
        $exp  = gettext ("Please enter the parameters for the search.");

        $hidden_list->{"cmd"}      = "search";
        $hidden_list->{"dataType"} = "REQUEST";
        $hidden_list->{"pcounter"} = "4";
        $hidden_list->{"name_1"}   = "CN";
        $hidden_list->{"name_2"}   = "emailAddress";
        $hidden_list->{"name_3"}   = "DN";
        $hidden_list->{"name_4"}   = "ROLE";
        $hidden_list->{"name_5"}   = "REQUEST_SERIAL";

        $cmd_panel->[0] = '<input type=submit value="'.gettext ("OK").'">';
        $cmd_panel->[1] = '<input type=reset value="'.gettext ("Reset").'">';

        $info_list->{BODY}->[0]->[0] = gettext ("Name");
        $info_list->{BODY}->[0]->[1] = '<input type=text name="value_1">';
        $info_list->{BODY}->[1]->[0] = gettext ("Emailaddress");
        $info_list->{BODY}->[1]->[1] = '<input type=text name="value_2">';
        $info_list->{BODY}->[2]->[0] = gettext ("Distinguished Name");
        $info_list->{BODY}->[2]->[1] = '<input type=text name="value_3">';
        $info_list->{BODY}->[3]->[0] = gettext ("Role");
        $info_list->{BODY}->[3]->[1] = '<input type=text name="value_4">';
        $info_list->{BODY}->[4]->[0] = gettext ("Request Serial #");
        $info_list->{BODY}->[4]->[1] = '<input type=text name="value_5">';

        return libSendReply (
                              "NAME"        => $name,
                              "EXPLANATION" => $exp,
                              "HIDDEN_LIST" => $hidden_list,
                              "CMD_PANEL"   => $cmd_panel,
                              "INFO_LIST"   => $info_list
                             );
    } elsif ($pageName =~ /search_log/) {
        my ($hidden_list, $info_list, $cmd_panel) = (undef, undef, undef);

        $name = gettext ("Search Logging Messages");
        $exp  = gettext ("Please enter the parameters for the search.");

        $hidden_list->{"cmd"}      = "search";
        $hidden_list->{"dataType"} = "LOG";
        $hidden_list->{"pcounter"} = "2";
        $hidden_list->{"name_1"}   = "CLASS";
        $hidden_list->{"name_2"}   = "LEVEL";

        $cmd_panel->[0] = '<input type=submit value="'.gettext ("OK").'">';
        $cmd_panel->[1] = '<input type=reset value="'.gettext ("Reset").'">';

        $info_list->{BODY}->[0]->[0] = gettext ("Class of messages");
        $info_list->{BODY}->[0]->[1] = '<input type=text name="value_1">';
        $info_list->{BODY}->[1]->[0] = gettext ("Level of messages");
        $info_list->{BODY}->[1]->[1] = '<input type=text name="value_2">';

        return libSendReply (
                              "NAME"        => $name,
                              "EXPLANATION" => $exp,
                              "HIDDEN_LIST" => $hidden_list,
                              "CMD_PANEL"   => $cmd_panel,
                              "INFO_LIST"   => $info_list
                             );
    } elsif ($pageName =~ /download_crl/) {
        $name = gettext ("Download and Install CRLs");
        $exp  = gettext ("This page contains the current CRL (Certificate Revocation List). Please download it as frequently as you can to keep your browser's CRL as up to date as possible. To import it into your browser, just click on the appropriate Link. Other format versions are also available to encourage usage of CRLs on any software you are currently using.");

        $item_list->[0]->[1] = "<center>" .
			gettext ("[Browser Importable CRL - DER]") .
			"</center>";
        $item_list->[0]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.crl">'.
                               gettext ("OpenCA's CRL").
                               '</a>';

        $item_list->[1]->[1] = "<center>" . gettext ("[PEM format]") .
			"</center>";
        $item_list->[1]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.pem">'.
                               gettext ("OpenCA's CRL").
                               '</a>';

        $item_list->[2]->[1] = "<center>" . gettext ("[Informational (human readable)]").
			"</center>";
        $item_list->[2]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.txt">'.
                               gettext ("CRL in text format").
                               '</a>';
    } elsif ($pageName =~ /download_cacert/) {
        $name = gettext ("Download and Install CA Certificates");
        $exp  = gettext ("This page contains the CA-Certificates in various formats. Please import one if you want to communicate with the users of our PKI. To import it into your browser, just click on the appropriate link.");

        $item_list->[0]->[1] = "<center>" .
		gettext ("[Mozilla, Netscape and Microsoft Internet Explorer importable format]") . "</center>";
        $item_list->[0]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/cacert/cacert.crt">'.
                               gettext ("CA certificate in format CRT").
                               '</a>';

        $item_list->[1]->[1] = "<center>" .
			gettext ("[Server importable format]") .
			"</center>";

        $item_list->[1]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/cacert/cacert.pem">'.
                               gettext ("CA certificate in format PEM").
                               '</a>';

        $item_list->[2]->[1] = "<center>" .
		gettext ("[Another Microsoft Internet Explorer importable format]") . "</center>";

        $item_list->[2]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/cacert/cacert.der">'.
                               gettext ("CA certificate in format DER").
                               '</a>';

        $item_list->[3]->[1] = "<center>" . 
		gettext ("[Another Microsoft Internet Explorer importable format]") . "</center>";
        $item_list->[3]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/cacert/cacert.cer">'.
                               gettext ("CA certificate in format CER").
                               '</a>';

        $item_list->[4]->[1] = "<center>" .
			gettext ("[Informational (human readable)]") .
			"</center>";

        $item_list->[4]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/cacert/cacert.txt">'.
                               gettext ("CA certificate in text format").
                               '</a>';
    } elsif ($pageName =~ /download_crl/) {
        $name = gettext ("Download and Install CRLs");
        $exp  = gettext ("This page contains the current CRL (Certificate Revocation List). Please download it as frequently as you can to keep your browser's CRL as up to date as possible. To import it into your browser, just click on the appropriate Link. Other format versions are also available to encourage usage of CRLs on any software you are currently using.");

        $item_list->[0]->[1] = gettext ("[Browser Importable CRL - DER]");
        $item_list->[0]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.crl">'.
                               gettext ("OpenCA's CRL").
                               '</a>';

        $item_list->[1]->[1] = gettext ("[PEM format]");
        $item_list->[1]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.pem">'.
                               gettext ("OpenCA's CRL").
                               '</a>';

        $item_list->[2]->[1] = gettext ("[Informational (human readable)]");
        $item_list->[2]->[0] = '<a href="'.getRequired('HtdocsUrlPrefix').'/crl/cacrl.txt">'.
                               gettext ("CRL in text format").
                               '</a>';
    } elsif ($pageName =~ /homePage/) {
        $name = gettext ("Home Page");
	my $pos = 0;

	$mode = "RAW";
	$self = $query->param("HTTP_CGI_SCRIPT");
	my $images = getRequired('HtdocsUrlPrefix') ."/images";
	my $display_panel = getRequired('HOME_PAGE_DISPLAY_EASY_PANEL');
	my $display_notices = getRequired ('HOME_PAGE_DISPLAY_NOTICES_PANEL');
	my $display_title = getRequired ('HOME_PAGE_DISPLAY_TITLE');
	my $org	= getRequired ('ORGANIZATION');

	my $bodyFile = undef;

	my $descrVal = "";
	my $titleStyle = "";

	my $body = undef;

	if( $config->getParam('HOME_PAGE_BODY_INCLUDE') ) {
		$bodyFile = $config->getParam(
				'HOME_PAGE_BODY_INCLUDE')->{VALUES}->[0];
	}

	my $title = qq{
			<p class="title" \@TITLE_STYLE\@ >
				<span style="font-size: 0.8em;">
					Welcome to
				</span><br />
				\@ORGANIZATION\@ PKI
			</p> };

	my $notice_panel = qq {
    		<div class="home_content" \@TITLE_STYLE\@ >
			<p class="title"><span style="font-size: 1.1em;">} .
				gettext("Recent Notices") . qq{</span>
			</p>
			<br />
			<ul class="notices">
				<li>No new notices available.</li>
			</ul>
    		</div>};

	my $control_panel = qq{
	<center>
	<div class="inner_control_panel">
		<div class="easy">
			<img src="$images/step_1.png" class="number" />
			<a href="} .  getRequired('HtdocsUrlPrefix') .
			qq{/cacert/cacert.crt"> } .
			gettext ("Get CA Certificate") .
			qq{</a>
		</div>
		<div class="easy">
			<img src="$images/step_2.png" class="number" />
			<a href="$self?cmd=getStaticPage;name=selectCSRtype">}.
			gettext("Request a Certificate") . qq{
			</a>
		</div><br /><br /><br />
		<div class="easy">
			<img src="$images/step_3.png" class="number" />
			<a href="$self?cmd=getParams;GET_PARAMS_CMD=getcert">}.
			gettext("Install My Certificate") . qq{
			</a>
		</div>
		<br /><br />
	</div>
	</center>
	};

	if ( $bodyFile ) {
		my $lang = $session->getParam('PREFERENCES_LANGUAGE');

		$raw_body = $tools->getFile ( "${bodyFile}.${lang}" );
		if ( $raw_body eq "" ) {
			$raw_body = $tools->getFile ( "$bodyFile" );
		}

		if ( $raw_body eq "" ) {
			configError ("Can not load the HOME_PAGE_BODY, " .
				"please check the config value! ($bodyFile)");
		}
	}
	# if( $descrFile ) {
	# 	$descrVal = $tools->getFile ( $descrFile );
	# 	if ( $descrVal eq "" ) {
	# 		configError ("Configuration Error, please check the ".
	# 			"value of HOME_PAGE_DESCRIPTION!" );
	# 	}
	# }

	my $descrVal = qq{
Welcome to \@ORGANIZATION\@ 
<a href="http://en.wikipedia.org/wiki/Certificate_authority">
Certification Authority<a>. 
We provide services for generating and managing your 
<a href="http://en.wikipedia.org/wiki/Digital_Certificate">
Digital Certificates</a>.
Your certificates are digital identities that are equivalent to your normal ID
(e.g., your driving license, passport or school/employer ID card), but in a
digital format that can be used on computers and on the Internet.
Digital certificates can be issued to people and/or computer servers and are
commonly used for many purposes:
<ul>
<li><b>Secure Email</b> - for digital signing and encryption of email</li>
<li><b>Document Signing</b> - including PDF and Office documents</li>
<li><b>Secure Networ Access</b> - to provide a much higher level of security
than username/password (eg., for Wireless access)</li>
<li><b>Server Authentication (https)</b> - to protect the communication with
a Web server (eg., for online banking or eCommerce)</li>
</ul>

	};

	if( $raw_body eq "" ) {
		$raw_body = qq{

		    <div class="home_content">
			$title
			<p>
			\@DESCRIPTION\@
			</p>

			\@CONTROL_PANEL\@

		    </div> 

		    \@NOTICES_PANEL\@
		};
	}

	if ( $display_title !~ /Y|1/i ) {
		$titleStyle = qq{ style="display: none;" };
	}

	$raw_body =~ s/\@DESCRIPTION\@/$descrVal/gi;

	if ( $display_panel =~ /Y|1/i ) {
		$raw_body =~ s/\@CONTROL_PANEL\@/$control_panel/ig;
	} else {
		$raw_body =~ s/\@CONTROL_PANEL\@//ig;
	}

	if ( $display_notices =~ /Y|1/i ) {
		$raw_body =~ s/\@NOTICES_PANEL\@/$notice_panel/gi;
	} else {
		$raw_body =~ s/\@NOTICES_PANEL\@//gi;
	}

	$raw_body =~ s/\@TITLE_STYLE\@/$titleStyle/gi;
	$raw_body =~ s/\@ORGANIZATION\@/$org/gi;

    } elsif ($pageName =~ /index/) {
        print
'<html>'."\n".
'  <head>'."\n".
'    <title>OpenCA</title>'."\n".
# '    <link rel="stylesheet" href="'.getRequired('HtdocsUrlPrefix').'/default.css" type="text/css" />'."\n".
'    <meta http-equiv="refresh" content="0; URL=' .  $query->param("HTTP_CGI_SCRIPT") . 
				'?cmd=getStaticPage&name=homePage">' .
'  </head>'."\n".
'  <body>' ."\n" .
'  <center>' .
'    <a href="' . $query->param("HTTP_CGI_SCRIPT") . '?cmd=getStaticPage&name=homePage">'.
'       Accessing OpenCA Interface</a>'. "\n".
'  </center>' . "\n" .
'  </body>' . "\n" .
'  </html>' . "\n";

        return 1;
    } else {
        configError ("There is no static page which can be build for this question ($pageName).");
    };

	# my $send_list->{BODY} = $item_list;

	return libSendReply (
                         "NAME"         => gettext ($name),
			 "EXPLANATION"  => "$exp",
                         "ITEM_LIST"    => $item_list,
			 "MODE"		=> $mode,
			 "BODY"		=> $raw_body,
                         # "CMD_PANEL" => cmd_panel,
                         # "CMD_LIST"  => $cmd_list,
                         # "HIDDEN_LIST" => $hidden_list,
                         # "TIMESTAMP" => 1
                        );

    # return libSendStatic (
    #                       "NAME"        => $name,
    #                       "EXPLANATION" => $exp,
    #                       "ITEM_LIST"   => $item_list
    #                      );
}

1;
