#!/usr/bin/perl # # update_client{.pl} - Client Configuration Script # # Functionality: set all variables for smartpass.ini # write smartpass.ini and zip client package for download # # copyright (c) AEP Networks 1999-2006 # # Update history: # skm 4/10/2002 removed pcat, vcat, fixed a few bugs # # Determine the OS Type # $ds is the Directory Separator type. if ((lc($^O) eq "mswin32")) { $OSType = "win32"; $ds = "\\"; $clearCmd = "cls"; } else { $OSType = "unix"; $ds = "/"; $clearCmd = "clear"; } ### ### import platform-specific modules ### 'use' directives are evaluated at compile-time, so ### they cannot be set at run-time after determining the OS ### # Uncomment these for Windows use Win32::TieRegistry ( Delimiter=>"/"); use Win32::File; ###### end platform-specific section ###### use File::Copy; # import the definitions of all branding strings used by this script use lib; use Branding; # global branding variables, based on long names from Branding module # set defaults &set_defaults; $glob_erflag = 0; $glob_erfile = 0; $errfile = "clienterror.txt"; ### ### debug flag ### $mydebug = 0; ### ### open error file ### unless (open(ERRFILE, ">$errfile")) { proc_error("y", 1, $!, "Cannot open error file $errfile"); } print (ERRFILE ($temp=localtime)); print (ERRFILE "\n\n"); $glob_erfile = 1; ### Check to make sure program is run by root & you have zip installed (unix only) if ($OSType eq "unix") { print $>; print "\n"; if ($> != 0) { &proc_error("y", -1, "You must be root to run this program"); } } ### ### Modification tags ### $smartpass_modification = " "; $saved = " "; ### ### Help Messages ### $main_help = "$clntProdName Client Configuration Utility provides customization of client software package. During the installation of $srvrProdName, administrators have the ability to create customized Microsoft Windows based $clntProdName VPN client downloadable package for various $clntProdName options to reflect a company's security and special configuration. The $srvrProdName administrator should configure $clntProdName prior to deploying the software to his or her end users. Configurable options include the available authentication methods and card readers, On-Line Registration (OLR) launching options, IPSec configurations and installation splash screen branding etc. These options are described in their respective help screens."; $olr_help = "OLR Page -------- Specifies the On-Line Registration URL -- either the standard single port OLR Web Page (http://your.vpn_server.domain:*/OLR) or your manually created OLR Web Page used to perform OLR."; $exec_line_help = "Post Install Execute Program ---------------------------- Specifies which program to execute following installation and setup of the $clntProdName software. The named program will be invoked at the end of install process. Example: vspstart -h http://www.YourCompanyName.com:443/OLR or vspstart -h http://www.YourCompanyName.com:*/OLR will cause the On-Line Registration process to be invoked. Example: card_format /d will cause the smart card formatting utility to be invoked. The following flags can be used with the card_format program /c - format card in CHIPDRIVE external reader /m - format card in PC/SC reader /d - format card in current reader if it is a PC/SC, or CHIPDRIVE Example: card_format /d vspstart -h http://www.YourCompanyName.com:443/OLR will cause the smart card formatting utility to be invoked, and on completion of that utility, it will cause On-Line Registration to be invoked. These utilities will be run after installation of the software."; $exec_prompt_help = "Execute Prompt -------------- Specifies the text to be displayed in the message prompt that follows installation. Typically, this is used in conjunction with \"Post Install Execute Progam\" option. There are two ways this message is used, depending on installation process. If the computer needs to restart, the message prompt will be: \"Would you like to automatically run ... following the next restart of this computer?\" If the restart is not necessary the message prompt will be: \"Would you like to run ... now?\" For Example: $clntProdName On-Line Registration If no prompt is specified then the program will be invoked without first prompting the user."; $wins_help = "$companyName recommends that, when using IPSec transport functionality a $clntProdName end user configure his or her WINS Server after installing the $clntProdName software, but before rebooting the computer. Since $clntProdName will be deployed to different kinds of users in a variety of situations, the $srvrProdName administrator is responsible for giving precise instructions to his or her end users. However, two additional IPSec-related options in the smartpass.ini file can be used to automatically set an end user's WINS Server address during installation of $clntProdName. Simply set the options PrimaryWINSServer and SecondaryWINSServer to the appropriate IP addresses. These options will automatically overwrite the user's WINS Server address. Consequently they should be set only if you have a full understanding of your end user's environment, such as would be the case if you were deploying $clntProdName to company employees. Whereas, if you are deploying $clntProdName to a partner company for the purpose of allowing access to certain applications within your network, you would not want to set these options."; $acml_help = "AccessCodeMinimumLength configures minimum access code for FIPS token. Valid range is 4-16. AccessCodeContentRule configures Access Code content rule for FIPS token. Valid range is 0-4 as below: 0 No restrictions in use of alphabetic and/or numeric characters to make up Access Code 1 Access Code must be a mixture of alphabetic and numeric characters 2 Access Code must be a mixture of both uppercase and lowercase alphabetic and numeric characters 3 Access Code must be a mixture of alphabetic and numeric characters, with no repeating patterns 4 Access Code must be a mixture of both uppercase and lowercase alphabetic and numeric characters, with no repeating patterns AutoProxyEnable=value configures Automatic Proxy settings. If the value is enabled, then $clntProdName will automatically grab the proxy settings from the Web Browser."; $fipshelp = "The FIPS digital token is a software emulation of a hardware authentication token. It stores your private information in an encrypted file system either on a floppy disk or on your hard drive. During the installation the FIPS token will automatically be placed in the $clntProdName directory as the default authentication method and the user will be prompted to format his/her token. The FIPS token meets the FIPS 140-1 requirements."; $starcoshelp = "If you will be using G&D STARCOS physical smart cards\nselect this package."; $mcoshelp = "If you will be using the Gemplus MCOS physical smart cards, select this package. If you have selected FIPS token, mcos is also automatically selected."; $chipdrvhelp = "TOWITOKO Electronic's CHIPDRIVE external smart card reader is supported by $clntProdName for use with STARCOS and MCOS physical smart cards. This compact reader plugs directly into the computer's serial/USB port and does not need a battery. If the CARDFMT smart card formatting option and the Post Install Execute command have been configured, the user will be prompted during installation to format the physical smart card, or he may format it using the Control Panel applet."; $pcschelp = "PC/SC (Personal Computer/Smart Card) is a standard framework for Smart Card access on Windows platforms. This replaces the individual card reader types, e.g. CHIPDRIVE, as long as the card reader itself supports PC/SC. It must be specified in addition to an individual card reader type if both PC/SC and non-PC/SC devices are connected to $clntProdName."; $cardfmthelp = "The smart card formatting program is designed to make it easier for the end user to install a PC/SC or CHIPDRIVE extern reader. During installation of the $clntProdName software, the program will prompt the user for an Access Code. The smart card formatting program will also add a corresponding icon to your $clntProdName program folder."; $sgsdihelp = "The $srvrProdName system supports a two-factor authentication method using the RSA SecurID token and ACE Server authentication products developed by RSA Security. $srvrProdName supports all types of RSA SecurID authentication tokens, including the standard card/key fob, PINPAD card, and SoftID card. The token's microprocessor and host computer are synchronized by a unique number as well as by the time of day. When a user logs on to an RSA SecurID-enabled host, they are required to type in the Username and passcode which is a combination of their assigned pincode and constantly changing number displayed on the token."; $radiushelp = "RADIUS authentication offers secure, easily passable communication between the client, which uses the $clntProdName software and $srvrProdName, which runs the Radius module. A shared secret code must be configured into both the RADIUS Backend Server and the $srvrProdName/Radius Server. When a user logs on to a RADIUS-enabled host he shall be required to type in an administrator-provided User ID and Password."; $entrusthelp = "The Entrust authentication method allows $clntProdName users to use an Entrust soft token instead of other tokens for authentication. $clntProdName and the $srvrProdName/Entrust Server obtain their credentials from the Entrust Certificate Authority (CA) Server. Each side will validate the other party during the authentication process. WARNING: The entrust.cab archive must be created by the administrator with files supplied by Entrust and copied into the $clntProdName packages area prior to this configuration. If you have not completed this step, please do so, and run the update_client program in order to bundle these files into the $clntProdName FIPSTOKEN client download package."; $pkihelp = "The $srvrProdName/PKI authentication method allows $clntProdName users to use a PKI certificate in place of other tokens to be authenticated by $srvrProdName. $clntProdName/PKI will send a PKI certificate to the $srvrProdName/PKI Server for validation. The $srvrProdName/PKI Server will then validate the certificate. Once the verification is done, the $srvrProdName/$clntProdName activities are identical to those carried out with any other client token."; $shimhelp = "By intercepting some of the Microsoft Windows sockets calls, $clntProdName has the ability to eliminate the need for customers to proxy their client applications to localhost (127.0.0.1). In order to do this, software uses the Layered Service Provide (LSP) and the Name Space Provider (NSP) extension technology to intercept the Winsock2 calls. When an application attempts to connect to a $srvrProdName secured destination, the Shim redirects the request to $clntProdName."; $ipsechelp = "$srvrProdName and $clntProdName include driver-level IPSec transport functionality combined with $srvrProdName's advanced security policy management. IPSec is a method of encapsulating IP packets (not just TCP sessions) to encrypt and protect the data from modification enroute. $COMPANY_NAME_SHORT\'s implementation also includes support for RFC-standard IP packet payload compression (which compresses the packets before they are encrypted, thus increasing throughput), network address translation (NAT), and a packet filtering engine to implement policy on the traffic flowing in and out of clients and servers. Both IKE and Proprietary key-exchange methods are included. $clntProdName supports IPSec for Windows 9X/NT/2000 Workstation."; $cslhelp = "This option either turns on or off the ability for your end users to be able to change the configuration of their FIPSTOKEN. If yes is selected, then your end users can not change their options. If No is selected then your end users can change their options."; $sgldaphelp = "The $srvrProdName/LDAP authentication method allows $clntProdName users to use an LDAP server account in place of other tokens to be authenticated by $srvrProdName. Once the authentication is completed, all other $srvrProdName activities are identical to those performed with any other token. LDAP authentication can be carried out using one of two possible methods: Simple and SSL."; $windomainhelp = "The $srvrProdName\WINDOMAIN authentication method allows $clntProdName users to use a Windows Domain server account in place of other tokens to be authenticated by $srvrProdName. Once the authentication is completed, all other $srvrProdName activities are identical to those performed with any other token."; $sgvtdihelp = "This option ectivates support for Windows Drive Mapping and File Sharing using NetBIOS via the TDI kernel layer. Note that network browsing is not supported. All files must be mapped first before being transferred."; $fipsghelp = "This option either turns on or off the ability for your end users to be able to change the FIPSGuard setting. If yes is selected, then your end users' tokens will be destroyed after 3 invalid access code entries. If No is selected then your end users can retry their access code forever."; $bannerhelp = "A bit map (.bmp) file that is displayed to the end user when the Client starts up. It is displayed inside a dialog box with OK and CANCEL buttons. The .bmp file will normally contain some kind of warning about proceeding. The user will click CANCEL to stop the Client continuing into operation, or OK to proceed. The .bmp file MUST be present in ."; $heartbeat_help = "This option specifies whether the Client should run a periodic check that it can communicate with the Server. The value given is the interval between checks, in minutes, with a value of zero indicating that checking is disabled."; $zip_help = "A package file is a self-extracting executable Zip file for download to a client computer. Your current package file name is $zipDownloadName. Normally, you should not need to change the default chosen filename. Use option 1 to change package filename. This program automatically deletes the previous (last one) package file. But you may choose to disable this auto-delete feature via option 2"; $basefldr_help = "This option specifies the base folder to be used to store the user tokens on the SmartPass Client"; # External ### ### Main Program Body ### system($clearCmd); $~ = "PREAMBLE"; write; print "$main_help\n\nPress Return to continue"; (); print "Loading...\n"; &set_paths; &set_defaults; &extract_info; system($clearCmd); &main; ### ### Subroutines ### sub check_num { ### checks numeric values with leading/trailing spaces my ($inp, $min, $max) = @_; chomp($inp); my $t = ($inp !~ /^\s*\d+\s*$/); if ($t) {return 0} if ($inp < $min) {return 0} if ($inp > $max) {return 0} return 1; } sub check_ip { ### checks ip address of x.x.x.x format my ($inp) = @_; my @quads = split /\s+/, $inp; ## check for intervening spaces, not allowed if (@quads > 1) {return 0}; ## check that it is valid @quads = split /\./, $inp; my $ix = 0; if (@quads != 4) {return 0}; while ($ix <= 3) { if (&check_num($quads[$ix], 0, 255)) {} else {return 0}; $ix++; } return 1; } sub check_portlist { ### checks portlist e.g. 443, 3845, 4500 my ($inp, $max, $maxix) = @_; my @quads = split /,/, $inp; my $lim = @quads; if ($lim > 4) {return 0}; my $ix=0; while ($ix <= ($lim-1)) { if (&check_num($quads[$ix], 1, 65536)) {} else {return 0}; $ix++; } return 1; } sub set_defaults { ### sets defaults ### may get overridden thru config file or ### from menu settings $srvrProdName = $PRODUCT_NAME_SERVER_FULL; $clntProdName = $PRODUCT_NAME_CLIENT_FULL; $companyName = $COMPANY_NAME_SHORT; $cliProdVerStr = $clntProdName . " " . $PRODUCT_VERSION_CLIENT; $cliPortList = $PORT_LIST; $zipDownloadName = &make_dload_fname((defined($DEF_CLIENT_DWNLOAD_NAME)? $DEF_CLIENT_DWNLOAD_NAME : "SP-$PRODUCT_VERSION_CLIENT-Win32-yyyymmdd")) . '.exe'; $ziptempfile = 'sp-temp-client.zip'; $oldzipDownloadName = $zipDownloadName; $deloldfile ='y'; $fipstokn = "*"; $starcos = " "; $mcos = "*"; $chipdrv = " "; $pcsc = " "; $cardfmt = " "; $sgsdi = " "; $radius = " "; $entrust = " "; $ipsec = " "; $pki = " "; $shim = "*"; $sgentrus = " "; $sgldap = " "; $windomain = " "; $sgvtdi = " "; $primary_wins = ""; $secondary_wins = ""; $brandingName = $cliProdVerStr; $olr_page = ""; $exec_line = ""; $exec_prompt = ""; $dcri = ""; $portlist = $cliPortList; $acml = "4"; $accr = "0"; $csl = "NO"; $ape = "1"; $fipsg = "NO"; $banner = ""; $heartbeat = "0"; $base_folder = ""; } sub set_paths { # Set the paths to config files and required # directories if ($OSType eq "unix") { open (INSTDIR, "; close (INSTDIR); chomp($installdir); if (($mydebug) && ($installdir eq "")) { $installdir = "."; } $sgconf=(join("", $installdir, $ds, "sgconf.ini")); $sgcClientFile =(join("", $installdir, $ds, "SGC_Client.txt")); $dline=(join("", $installdir, $ds, "download")); $templatedir = (join("", $installdir, $ds, "templates")); $ziptest="zip -hq >> /dev/null"; } if ($OSType eq "win32") { $installdir = $Registry->{"HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/App Paths/SGATESRV.EXE/path"}; chomp($installdir); if (($mydebug) && ($installdir eq "")) { $installdir = "."; } $sgconf=(join("", $installdir, $ds, "data", $ds, "sgconf.ini")); $sgcClientFile =(join("", $installdir, $ds, "data", $ds, "SGC_Client.txt")); $dline=(join("", $installdir, $ds, "data", $ds, "download")); $templatedir = (join("", $installdir, $ds, "data")); $ziptest="zip -hq >> null1 "; } if ($installdir eq "") { proc_error("y", -1, "Could not establish install directory", "Likely, $srvrProdName is not installed"); } $packdir=(join("", $installdir, $ds, "packages")); $cline=(join("", $installdir, $ds, "client", $ds)); $entrustpackage =(join("", $packdir, $ds, "entrust.ini")); if (chdir (join("\"", $installdir, "\""))) { die "Cannot cd to $installdir: $!\n"; } $rc = 0; $rc = 0xffff & system ($ziptest); unlink($junkzip); unlink("null1"); if ($rc != 0) { proc_error("y", $rc, "Zip test failed, tried ($ziptest)", "Please install Zip software in user's path, software is available from http://www.info-zip.org/pub/infozip/Zip.html"); } if ($mydebug) { print "set path->"; print ",pckdir=", $packdir; print ",dline=", $dline; print ",cline=", $cline; print ",installdir=", $installdir; print ",entrustpackage=", $entrustpackage; } } sub make_dload_fname { # makes filename from input pattern my ($fnpattern) = @_; my $fname; my (@tm) = localtime; $fname = lc($fnpattern); $fname =~ s/-os-/-Win32-/g; $ymd = sprintf("%04d%02d%02d", ($tm[5]+1900), ($tm[4]+1), $tm[3]); $fname =~ s/yyyymmdd/$ymd/g; return ($fname); } sub extract_info { # Get current settings from SGC_Client.txt # and sgconf.ini # open (SGINIFILE, "$sgconf"); # @sginifile = ; # close (SGINIFILE); # chomp (@sginifile); # $confcount = 1; # ## code snippet below unused now... # while ($confcount <= @sginifile) { # @grepPort = grep /PortList/, @sginifile; # $confcount++; # } # ($sgname, $portlist) = split(/\=/, $grepPort[0]); open (CONFIGFILE, "$sgcClientFile"); @configfile = ; close (CONFIGFILE); chomp (@configfile); $count = 1; while ($count <= @configfile) { ($name, $value) = split(/\^/, $configfile[$count -1]); if ($name eq "olr_page") { $olr_page = $value; } elsif ($name eq "branding") { $brandingName = $value; } elsif ($name eq "exec_line") { $exec_line = $value; } elsif ($name eq "exec_prompt") { $exec_prompt= $value; } elsif ($name eq "primary_wins") { $primary_wins = $value; } elsif ($name eq "secondary_wins") { $secondary_wins = $value; } elsif ($name eq "portlist") { $portlist = $value; } elsif ($name eq "dcri") { $dcri = $value; } elsif ($name eq "accr") { $accr = $value; } elsif ($name eq "acml") { $acml = $value; } elsif ($name eq "csl") { $csl= $value; } elsif ($name eq "ape") { $ape= $value; } elsif ($name eq "fipsg") { $fipsg= $value; } elsif ($name eq "banner") { $banner= $value; } elsif ($name eq "heartbeat") { $heartbeat= $value; } elsif ($name eq "base_folder") { $base_folder= $value; } elsif ($name eq "deloldfile") { $deloldfile= $value; } elsif ($name eq "oldzipDownloadName") { $oldzipDownloadName= $value; } elsif ($name eq "smartpass_packages") { (@smartpass_pkgs) = split (/,/, $value); $sp_count = 1; while ($sp_count <= @smartpass_pkgs) { if ($smartpass_pkgs[$sp_count -1] =~ /FIPSTOKN/) { $fipstokn = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "STARCOS") { $starcos = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "MCOS") { $mcos = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "CHIPDRV") { $chipdrv = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "PCSC") { $pcsc = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "CARDFMT") { $cardfmt = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "SGSDI") { $sgsdi = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "RADIUS") { $radius = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "SGENTRUS") { $sgentrus= "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "ENTRUST") { $entrust= "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "PKI") { $pki= "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "IPSEC") { $ipsec= "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "IKE") { $ipsec= "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "SHIM") { $shim = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "SGLDAP") { $sgldap = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "WINDOMAIN") { $windomain = "*"; } elsif ($smartpass_pkgs[$sp_count -1] =~ "SGVTDI") { $sgvtdi = "*"; } $sp_count++; } } else { print "Unexpected information in $sgcClientFile line $count\n"; print "Will attempt to continue normally...\n"; sleep(2); } $count++; } } sub main { ### Main Client Config Menu my $option; while (($option ne "S") && ($option ne "Q")) { $~ = MAIN; write; print "Enter Option Number: "; chomp ($option=); $option = uc($option); if ($option eq "") { system($clearCmd); next; } if ($option eq "1") { system($clearCmd); &smartpass_packages; next; } if ($option eq "2") { system($clearCmd); &branding; next; } if ($option eq "3") { system($clearCmd); &olr_options; next; } if ($option eq "4") { system($clearCmd); &wins; next; } if ($option eq "5") { system($clearCmd); &dcri; next; } if ($option eq "6") { system($clearCmd); &portlist; next; } if ($option eq "7") { system($clearCmd); &acml; next; } if ($option eq "8") { system($clearCmd); &csl; next; } if ($option eq "9") { system($clearCmd); &fipsg; next; } if ($option eq "10") { system($clearCmd); &banner; next; } if ($option eq "11") { system($clearCmd); &heartbeat; next; } if ($option eq "12") { system($clearCmd); &base_folder; next; } if ($option eq "13") { system($clearCmd); &print_settings; next; } if ($option eq "14") { system($clearCmd); &chg_fname; next; } if ($option eq "?") { system($clearCmd); print "$main_help\n\n"; print "Press Enter to return to the main menu."; $waitforinput=; system($clearCmd); next; } if ($option eq "911") { system($clearCmd); &restore_defaults; next; } if ($option eq "Q") { system($clearCmd); print "Are you sure, you want to exit without saving? y/n:"; chop ($option=); $option = uc($option); if ($option eq 'Y') { print "Exiting Program....Changes not saved\n"; sleep(2); exit(0);} else { next; } } if ($option eq "S") { system($clearCmd); &write_output; return; } print "\"$option\" is not valid choice\n"; print "Press Enter to continue."; (); system($clearCmd); } ### while ... } sub smartpass_packages { ### Select SmartPass Packages to install system($clearCmd); my $option; while ($option ne "R") { $smartpass_modification = "*"; $~ = "SMARTPASS"; write; print "Enter the option number to change: "; chop($option=); $option = uc($option); if ($option eq "") { system($clearCmd); next; } if ($option eq "1") { if ($fipstokn eq "*") { $fipstokn = " "; } else { $fipstokn = "*"; $mcos = "*"; } system($clearCmd); } elsif ($option eq "2") { if ($starcos eq "*") { $starcos = " "; } else { $starcos = "*"; } system($clearCmd); } elsif ($option eq "3") { if ($mcos eq "*") { $mcos = " "; } else { $mcos = "*"; $fipstokn = "*"; } system($clearCmd); } elsif ($option eq "4") { if ($chipdrv eq "*") { $chipdrv = " "; } else { $chipdrv = "*"; } system($clearCmd); } elsif ($option eq "5") { if ($pcsc eq "*") { $pcsc = " "; } else { $pcsc = "*"; } system($clearCmd); } elsif ($option eq "6") { if ($cardfmt eq "*") { $cardfmt = " "; } else { $cardfmt = "*"; } system($clearCmd); } elsif ($option eq "7") { if ($sgsdi eq "*") { $sgsdi = " "; } else { $sgsdi = "*"; } system($clearCmd); } elsif ($option eq "8") { if ($radius eq "*") { $radius = " "; } else { $radius = "*"; } system($clearCmd); } elsif ($option eq "9") { if ($entrust eq "*") { $entrust= " "; $sgentrus= " "; } else { if (-e (join("", $packdir, $ds, "entrust.cab"))) { $entrust= "*"; $sgentrus= "*"; system($clearCmd); } else { system($clearCmd); print "\n" x 10; print "The file entrust.cab is required to use this option.\nTo enable using entrust, place the entrust.cab file\nin $packdir\n\nHit enter to return to Client Package Configuration menu\n"; $justwaiting = ; system($clearCmd); } } system($clearCmd); } elsif ($option eq "10") { if ($ipsec eq "*") { $ipsec = " "; } else { $ipsec = "*"; } system($clearCmd); } elsif ($option eq "11") { if ($pki eq "*") { $pki = " "; } else { $pki = "*"; } system($clearCmd); } elsif ($option eq "12") { if ($shim eq "*") { $shim = " "; } else { $shim = "*"; } system($clearCmd); } elsif ($option eq "13") { if ($sgldap eq "*") { $sgldap = " "; } else { $sgldap = "*"; } system($clearCmd); } elsif ($option eq "14") { if ($windomain eq "*") { $windomain = " "; } else { $windomain = "*"; } system($clearCmd); } elsif ($option eq "15") { if ($sgvtdi eq "*") { $sgvtdi = " "; } else { $sgvtdi = "*"; } system($clearCmd); } elsif ($option eq "R") { system($clearCmd); } elsif ($option eq "?") { system($clearCmd); &package_help; } else { print "\"$option\" is not a valid choice.\n"; print "Press to continue: "; $nothing=; system($clearCmd); } } } sub copy_pkgfiles { ### copy selected packages only for zip my $rc = 1; copy((join("", $cline, $ds, "*.cab")) , "$packdir"); copy(join("", $cline, $ds, "entrust.cab"), "$packdir"); copy(join("", $cline, $ds, "sgentrus.cab"), "$packdir"); copy(join("", $cline, $ds, "fipstokn.cab"), "$packdir"); # copy(join("", $cline, $ds, "vcat.cab"), "$packdir"); copy(join("", $cline, $ds, "pcat.cab"), "$packdir"); copy(join("", $cline, $ds, "starcos.cab"), "$packdir"); copy(join("", $cline, $ds, "mcos.cab"), "$packdir"); copy(join("", $cline, $ds, "pcat.cab"), "$packdir"); copy(join("", $cline, $ds, "chipdrv.cab"), "$packdir"); copy(join("", $cline, $ds, "chipdrv2.cab"), "$packdir"); copy(join("", $cline, $ds, "pcsc.cab"), "$packdir"); copy(join("", $cline, $ds, "cardfmt.cab"), "$packdir"); copy(join("", $cline, $ds, "sgsdi.cab"), "$packdir"); copy(join("", $cline, $ds, "radius.cab"), "$packdir"); copy(join("", $cline, $ds, "sgnetrus.cab"), "$packdir"); copy(join("", $cline, $ds, "pki.cab"), "$packdir"); copy(join("", $cline, $ds, "ipsec.cab"), "$packdir"); copy(join("", $cline, $ds, "ike.cab"), "$packdir"); copy(join("", $cline, $ds, "shim.cab"), "$packdir"); copy(join("", $cline, $ds, "sgldap.cab"), "$packdir"); copy(join("", $cline, $ds, "windomain.cab"), "$packdir"); copy(join("", $cline, $ds, "vtdi.cab"), "$packdir"); unlink(join("", $cline, $ds, "entrust.cab")); unlink(join("", $cline, $ds, "sgentrus.cab")); unlink(join("", $cline, $ds, "fipstokn.cab")); # unlink(join("", $cline, $ds, "vcat.cab")); unlink(join("", $cline, $ds, "pcat.cab")); unlink(join("", $cline, $ds, "starcos.cab")); unlink(join("", $cline, $ds, "mcos.cab")); unlink(join("", $cline, $ds, "pcat.cab")); unlink(join("", $cline, $ds, "chipdrv.cab")); unlink(join("", $cline, $ds, "chipdrv2.cab")); unlink(join("", $cline, $ds, "pcsc.cab")); unlink(join("", $cline, $ds, "cardfmt.cab")); unlink(join("", $cline, $ds, "sgsdi.cab")); unlink(join("", $cline, $ds, "radius.cab")); unlink(join("", $cline, $ds, "sgnetrus.cab")); unlink(join("", $cline, $ds, "pki.cab")); unlink(join("", $cline, $ds, "ipsec.cab")); unlink(join("", $cline, $ds, "ike.cab")); # unlink(join("", $cline, $ds, "shim.cab")); unlink(join("", $cline, $ds, "sgldap.cab")); unlink(join("", $cline, $ds, "windomain.cab")); unlink(join("", $cline, $ds, "vtdi.cab")); if ($fipstokn eq "*") { $rc &=copy((join("", $packdir, $ds, "fipstokn.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package fipstokn.cab file(s) copying errors, continuing.. "); } } if ($starcos eq "*") { $rc &=copy((join("", $packdir, $ds, "starcos.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package starcos.cab file(s) copying errors, continuing.. "); } } if ($mcos eq "*") { $rc &=copy((join("", $packdir, $ds, "mcos.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package mcos.cab file(s) copying errors, continuing.. "); } } if ($chipdrv eq "*") { $rc &=copy((join("", $packdir, $ds, "chipdrv.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package chipdrv.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "chipdrv2.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package chipdrv2.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "cardfmt.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package cardfmt.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "starcos.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package starcos.cab file(s) copying errors, continuing.. "); } } if ($pcsc eq "*") { $rc &=copy((join("", $packdir, $ds, "pcsc.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package pcsc.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "cardfmt.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package cardfmt.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "starcos.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package starcos.cab file(s) copying errors, continuing.. "); } } if ($cardfmt eq "*") { $rc &=copy((join("", $packdir, $ds, "cardfmt.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package cardfmt.cab file(s) copying errors, continuing.. "); } } if ($sgsdi eq "*") { $rc &=copy((join("", $packdir, $ds, "sgsdi.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package sgsdi.cab file(s) copying errors, continuing.. "); } } if ($radius eq "*") { $rc &=copy((join("", $packdir, $ds, "radius.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package radius.cab file(s) copying errors, continuing.. "); } } if ($sgentrus eq "*") { $rc &=copy((join("", $packdir, $ds, "sgentrus.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package sgentrus.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "entrust.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package entrust.cab file(s) copying errors, continuing.. "); } } if ($pki eq "*") { $rc &=copy((join("", $packdir, $ds, "pki.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package pki.cab file(s) copying errors, continuing.. "); } } if ($ipsec eq "*") { $rc &=copy((join("", $packdir, $ds, "ipsec.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package ipsec.cab file(s) copying errors, continuing.. "); } $rc &=copy((join("", $packdir, $ds, "ike.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package ike.cab file(s) copying errors, continuing.. "); } } if ($shim eq "*") { $rc &=copy((join("", $packdir, $ds, "shim.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package shim.cab file(s) copying errors, continuing.. "); } } if ($sgldap eq "*") { $rc &=copy((join("", $packdir, $ds, "sgldap.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package sgldap.cab file(s) copying errors, continuing.. "); } } if ($windomain eq "*") { $rc &=copy((join("", $packdir, $ds, "windomain.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package windomain.cab file(s) copying errors, continuing.. "); } } if ($sgvtdi eq "*") { $rc &=copy((join("", $packdir, $ds, "vtdi.cab")) , "$cline"); if ($rc == 0 ) { proc_error("n", 1, $!, "Package vtdi.cab file(s) copying errors, continuing.. "); } } if ($rc == 0) { proc_error("n", 1, $!, "Package file(s) copying errors, continuing.. "); } } sub package_help { ### Help menu for the smart pass packages my $option; while ($option ne "R") { $~ = "PACKAGE_HELP"; write; print "Which package would you like more help on: "; chop($option=); $option = uc($option); if ($option eq "1") { system($clearCmd); print "$fipshelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "2") { system($clearCmd); print "$starcoshelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "3") { system($clearCmd); print "$mcoshelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "4") { system($clearCmd); print "$chipdrvhelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "5") { system($clearCmd); print "$pcschelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "6") { system($clearCmd); print "$cardfmthelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "7") { system($clearCmd); print "$sgsdihelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "8") { system($clearCmd); print "$radiushelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "9") { system($clearCmd); print "$entrusthelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "10") { system($clearCmd); print "$ipsechelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "11") { system($clearCmd); print "$pkihelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "12") { system($clearCmd); print "$shimhelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "13") { system($clearCmd); print "$sgldaphelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "14") { system($clearCmd); print "$windomainhelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option eq "15") { system($clearCmd); print "$sgvtdihelp"; print "\n\n\nPress Enter to return to help menu."; $waitforinput=; system($clearCmd); } elsif ($option ne "R") { system($clearCmd); print "That is an invalid entry......\n"; system($clearCmd); } } system($clearCmd); } sub branding { # Application installation branding my $entry; while ($entry ne "R") { $~ = BRAND; write; print "Current Branding Name: $brandingName\n"; print "\nEnter new Branding Name:"; chop ($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry is not permitted!\n"; print "Please enter string value for Application Installation Branding\n"; print("\nPress Enter to continue."); $waitforinput = ; system($clearCmd); next; } elsif ($entry ne "R") { $brandingName = $entry; system($clearCmd); } elsif ($entry eq "R") { system($clearCmd); next; } } } sub olr_options { # Set OLR Launching Options my $entry; while ($entry ne "R") { $~ = OLR_OPTIONS; write; print "Enter Option to Configure: "; chop ($entry=); $entry = uc($entry); if ($entry eq "") { system($clearCmd); next; } if ($entry eq "1") { system($clearCmd); &olr_page; } elsif ($entry eq "2") { system($clearCmd); &exec_line; } elsif ($entry eq "3") { system($clearCmd); &exec_prompt; } elsif ($entry ne "R") { system($clearCmd); print "Invalid entry;\n"; print "Press Enter to continue.\n"; $waitingforinput=; } } system($clearCmd); } sub olr_page { # Set url for OLR page my $entry,$response; while ($entry ne "R") { $~ = OLR_PAGE; write; print "Current value is: $olr_page\n"; print "\nEnter new OLR Page URL:"; chop ($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $olr_page = $entry; } system($clearCmd); next; } if ($entry eq "?") { system($clearCmd); print "$olr_help"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); next; } if ($entry eq "R") { system($clearCmd); next; } else { $olr_page = $entry; system($clearCmd); } } } sub banner { # Set bit map file for banner my $entry,$response; while ($entry ne "R") { $~ = BANNER; write; print "Current value is: $banner\n"; print "\nEnter new bit map file:"; chop ($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $banner = $entry; } system($clearCmd); next; } if ($entry eq "?") { system($clearCmd); print "$bannerhelp"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); next; } if ($entry eq "R") { system($clearCmd); next; } else { $banner = $entry; system($clearCmd); } } } sub heartbeat { # Set server heartbeat option my $entry,$response; while ($entry ne "R") { $~ = HEARTBEAT; write; print "Current value is: $heartbeat\n"; print "Enter new value:"; chop ($entry=); $entry = uc($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $heartbeat = "0"; } system($clearCmd); } elsif ($entry eq "?") { system($clearCmd); print "$heartbeat_help"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); } else { if (&check_num($entry, 0, 60) == 0) { system($clearCmd); print "Invalid Value: $entry\n"; next; } else { $heartbeat = $entry; } system($clearCmd); } } } sub exec_line { # Set Execute line option my $entry,$response; while ($entry ne "R") { $~ = EXEC_LINE; write; print "Current value is: $exec_line\n"; print "\nEnter new Execute line: "; chop($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $exec_line = $entry; } system($clearCmd); next; } if ($entry eq "?") { system($clearCmd); print "$exec_line_help"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); next; } if ($entry eq "R") { system($clearCmd); next; } else { $exec_line = $entry; system($clearCmd); } } } sub exec_prompt { # Set Execute prompt option my $entry,$response; while ($entry ne "R") { $~ = EXEC_PROMPT; write; print "Current value is: $exec_prompt\n"; print "\nEnter new Execute Prompt: "; chop($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $exec_prompt = $entry; } system($clearCmd); next; } if ($entry eq "?") { system($clearCmd); print "$exec_prompt_help"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); next; } if ($entry eq "R") { system($clearCmd); next; } else { $exec_prompt = $entry; system($clearCmd); } } } sub wins { # Set Wins Server Addresses my $entry; while ($entry ne "R") { $~ = WINS; write; print "Enter choice:"; chop($entry=); $entry = uc($entry); if ($entry eq "?") { system($clearCmd); print $wins_help; print "\n\nPress Enter to continue."; $waitforinput = ; system($clearCmd); } elsif ($entry eq "1") { system($clearCmd); my $done = 0; while (!$done) { print "This entry configures the $clntProdName installation program to set the Primary WINS Server to the specified IP address. This entry is only valid when the IPSec package is installed. Example: 10.21.0.3 Default: none\n\n"; print "Current value: $primary_wins\n"; print "Enter the IP address of the Primary WINS Server:"; chomp ($value=); if ($value eq "") { print "Null value; this setting will be cleared.\n"; print "Do you wish to clear this value? (Y/[N]) "; chomp ($value=); $value = uc($value); if ($value eq "Y") { $primary_wins = ""; $done = 1; } system($clearCmd); next; } if (&check_ip($value) == 0) { system($clearCmd); print "Invalid Value $value\n\n"; next; } else { $primary_wins = $value; system ($clearCmd); $done = 1; } } } elsif ($entry eq "2") { system($clearCmd); my $done = 0; while (!$done) { print "This entry configures the $clntProdName installation program to set the Secondary WINS Server to the specified IP address. This entry is only valid when the IPSec package is installed. Example: 10.21.0.3 Deafult: none\n\n"; print "Current value: $secondary_wins\n"; print "Enter the IP address of the Secondary WINS Server:"; chomp ($value=); if ($value eq "") { print "Null value; this setting will be cleared.\n"; print "Do you wish to clear this value? (Y/[N]) "; chomp ($value=); $value = uc($value); if ($value eq "Y") { $secondary_wins = ""; $done = 1; } system($clearCmd); next; } if (&check_ip($value) == 0) { system($clearCmd); print "Invalid Value $value\n\n"; next; } else { $secondary_wins = $value; system ($clearCmd); $done = 1; } } system($clearCmd); } elsif ($entry ne "R") { print("\nInvalid Entry, press Enter to continue."); $waitforinput = ; system($clearCmd); } system($clearCmd); } } sub dcri { # Set Detect Card Removal Interval my $entry; while ($entry ne "R") { $~ = DCRI; write; print "Current value is: $dcri\n"; print "Enter Value: "; chop($entry=); $entry = uc($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = uc($response); if ($response eq "Y") { $dcri = $entry; } system($clearCmd); } elsif ($entry ne "R") { if (&check_num($entry, 10, 3600) == 0) { system($clearCmd); print "Invalid Value: $entry\n"; next; } else { $dcri = $entry; } } system($clearCmd); } } sub portlist { # Get port values for port list my $entry; while ($entry ne "R") { $~ = PORTLIST; write; print "\nCurrent value is: $portlist\n"; print "Enter new Portlist value: "; chop($entry=); $entry = uc($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = uc($response); if ($response eq "Y") { $portlist = $entry; } system($clearCmd); } elsif ($entry ne "R") { if (&check_portlist($entry, 65536, 10) == 0) { system($clearCmd); print "Invalid Entry $entry\n"; next; } else { $portlist = $entry; system($clearCmd); next; } } system($clearCmd); } } sub acml { # access code, content & auto proxy my $entry; while ($entry ne "R") { $~ = ACML; write; print "\nEnter Choice:"; chop($entry=); $entry = uc($entry); if ($entry eq "1") { my $done = 0; system($clearCmd); while (!$done) { print "\nThe valid range for this is between 4 and 16 characters.\n"; print "\nCurrent value is: $acml\n"; print "Enter Access Code Minimum Length: "; chomp($entry=); if ($entry eq "") { print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chomp ($entry=); $entry = uc($entry); if ($entry eq "Y") { $acml = ""; $done = 1; } next; } if (&check_num($entry, 4, 16) == 0) { system($clearCmd); print "Invalid entry $entry\n"; next; } else { $acml=$entry; $done = 1; } } system($clearCmd); next; } if ($entry eq "2") { system($clearCmd); my $done = 0; while (!$done) { print "\n\nAccess Code Content Rules\n"; print "The administrator can select one of the following five different\n"; print "content rules, numbered 0 to 4.\n"; print "0 No restrictions on content of Access Code.\n"; print "1 Access Code must have a mixture of alphabetic and numeric characters.\n"; print "2 Access Code must have a mixture of both uppercase and lowercase\nalphabetic and numeric characters.\n"; print "3 Access Code must have a mixture of alphabetic and numeric characters\nplus no repeating patterns.\n"; print "4 Access code must have a mixture of both uppercase and lowercase alphabetic and numeric characters, plus no repeating patterns For example: 123123123 will be considered a repeating pattern but, 12312312 will not.\n\n"; print "Current Value: $accr\n"; print "Enter the Access Code Content Rule:"; chomp ($entry=); if ($entry eq "") { print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chomp ($entry=); $entry = uc($entry); if ($entry eq "Y") { $accr = ""; $done = 1; } system($clearCmd); next; } if (&check_num($entry, 0, 4) == 0) { system($clearCmd); print "Invalid entry $entry\n"; next; } else { $accr=$entry; $done = 1; } } system($clearCmd); next; } if ($entry eq "3") { system($clearCmd); $ape= ($ape eq "1")? "0":"1"; next; } if ($entry eq "?") { system($clearCmd); print "$acml_help\n\n"; print "Press Enter to continue"; (); system($clearCmd); next; } system($clearCmd); } } sub csl { # Set the Client Setting Lockout my $response; while ($response ne "R") { $~ = CSL; write; print "Current value is: $csl\n"; print "Enter Y or N to set this value: "; chop ($response=); $response = uc($response); if ($response eq "Y") { $csl= "YES"; system($clearCmd); next; } if ($response eq "N") { $csl= "NO"; system($clearCmd); next; } if ($response eq "R") { system($clearCmd); next; } if ($response eq "?") { system($clearCmd); print $cslhelp; print "\n\nPress enter to return:"; $waitforinput=; system($clearCmd); next; } if ($entry eq "") { system($clearCmd); print "Invalid entry, please use Y or N\n"; print("\nPress Enter to continue."); $waitforinput = ; system($clearCmd); next; } } } sub fipsg { # Set the FIPSGuard value my $response; while ($response ne "R") { $~ = FIPSG; write; print "Current value is: $fipsg\n"; print "Enter Y or N to set this value: "; chop ($response=); $response = uc($response); if ($response eq "Y") { $fipsg= "YES"; system($clearCmd); next; } if ($response eq "N") { $fipsg= "NO"; system($clearCmd); next; } if ($response eq "R") { system($clearCmd); next; } if ($response eq "?") { system($clearCmd); print $fipsghelp; print "\n\nPress enter to return:"; $waitforinput=; system($clearCmd); next; } if ($entry eq "") { system($clearCmd); print "Invalid entry, please use Y or N\n"; print("\nPress Enter to continue."); $waitforinput = ; system($clearCmd); next; } } } sub base_folder { # Set FIPS Token Base Folder my $entry,$response; while ($entry ne "R") { $~ = BASE_FOLDER; write; print "Current value is: $base_folder\n"; print "\nEnter new FIPS Token Base Folder:"; chop ($entry=); $entry = ucfirst($entry); if ($entry eq "") { system($clearCmd); print "Null entry; this setting will be cleared.\n"; print "Do you wish to clear this entry? (Y/[N]) "; chop ($response=); $response = ucfirst($response); if ($response eq "Y") { $base_folder = $entry; } system($clearCmd); next; } if ($entry eq "?") { system($clearCmd); print "$basefldr_help"; print "\nHit return to continue\n"; $waitingforinput = ; system($clearCmd); next; } if ($entry eq "R") { system($clearCmd); next; } else { $base_folder = $entry; system($clearCmd); } } } sub restore_defaults { # Restore all values to default settings system($clearCmd); print "\nRestoring default values to all settings......\n"; &set_defaults; &print_vars; print "\nPress Return to continue."; (); system($clearCmd); return; } sub print_vars { my $ape_val; &write_packages; print "> $clntProdName Packages: @smartpass_pkgs\n"; print "> Branding Name: $brandingName\n"; $olr_page? (print "> OLR Page: $olr_page\n"):{}; $exec_line? (print "> Execute Line: $exec_line\n"):{}; $exec_prompt? (print "> Execute Prompt: $exec_prompt\n"):{}; $primary_wins? (print "> Primary WINS: $primary_wins\n"):{}; $secondary_wins? (print "> Secondary WINS: $secondary_wins\n"):{}; $dcri? (print "> Detect Card Removal Interval: $dcri\n"):{}; $portlist? (print "> Port List: $portlist\n"):{}; $acml? (print "> Access Code Minimum Length: $acml\n"):{}; print "> Access Code Content Rule: $accr\n"; $csl? (print "> Client Setting Lockout: $csl\n"):{}; $ape_val = ($ape eq "1")? "Enabled": "Disabled"; print "> Auto Proxy Setting: $ape_val\n"; $fipsg? (print "> FIPSGuard Setting: $fipsg\n"):{}; $banner? (print "> Startup Screen: $banner\n"):{}; $heartbeat? (print "> Server Heartbeat: $heartbeat\n"):{}; $base_folder? (print "> FIPS Token Base Folder: $base_folder\n"):{}; $deloldfile? (print "> Auto Delete old pkg: $deloldfile\n"):{}; print "> Package Filename: $zipDownloadName\n"; } sub print_settings { # Print current values of all smartpass.ini vars system($clearCmd); print "Current settings are:\n\n"; &print_vars; print "\n"; print "Press enter to return to the main menu\n"; (); system($clearCmd); } sub chg_fname { # changes default download filename my $entry; while ($entry ne "R") { $~ = ZIP_FILE; write; print "Enter choice:"; chop($entry=); $entry = uc($entry); if ($entry eq "?") { system($clearCmd); print $zip_help; print "\n\nPress Enter to continue."; $waitforinput = ; system($clearCmd); } elsif ($entry eq "1") { system($clearCmd); my $done = 0; while (!$done) { print "\nNote: Please ensure that a valid operating system dependent filename\n"; print "is entered, including file extensions. Example sp-win32-20020423.exe\n\n"; print "Current filename: $zipDownloadName\n"; print "Enter new filename:"; chomp ($value=); if ($value eq "") { print "Null entry; this setting will be set to default value\n"; print "Do you wish to set default value? (Y/[N]) "; chomp ($value=); $value = uc($value); if ($value eq "Y") { $zipDownloadName = &make_dload_fname((defined($DEF_CLIENT_DWNLOAD_NAME)? $DEF_CLIENT_DWNLOAD_NAME : "SP-Win32-yyyymmdd")) . '.exe'; $done = 1; } next; } $zipDownloadName=$value; system($clearCmd); $done = 1; } } elsif ($entry eq "2") { system($clearCmd); $deloldfile= ($deloldfile eq "y")? "n":"y"; system($clearCmd); } elsif ($entry ne "R") { print("\nInvalid Entry, press Enter to continue."); $waitforinput = ; system($clearCmd); } system($clearCmd); } } sub write_packages { # Write packages undef(@smartpass_pkgs); if ($fipstokn eq "*") { push (@smartpass_pkgs, "FIPSTOKN"); } if ($starcos eq "*") { push (@smartpass_pkgs, "STARCOS"); } if ($mcos eq "*") { push (@smartpass_pkgs, "MCOS"); } if ($chipdrv eq "*") { push (@smartpass_pkgs, "CHIPDRV"); } if ($pcsc eq "*") { push (@smartpass_pkgs, "PCSC"); } if ($cardfmt eq "*") { push (@smartpass_pkgs, "CARDFMT"); } if ($sgsdi eq "*") { push (@smartpass_pkgs, "SGSDI"); } if ($radius eq "*") { push (@smartpass_pkgs, "RADIUS"); } if ($entrust eq "*") { push (@smartpass_pkgs, "ENTRUST"); } if ($ipsec eq "*") { push (@smartpass_pkgs, "IKE"); } if ($pki eq "*") { push (@smartpass_pkgs, "PKI"); } if ($shim eq "*") { push (@smartpass_pkgs, "SHIM"); } if ($sgentrus eq "*") { push (@smartpass_pkgs, "SGENTRUS"); } if ($sgldap eq "*") { push (@smartpass_pkgs, "SGLDAP"); } if ($windomain eq "*") { push (@smartpass_pkgs, "WINDOMAIN"); } if ($sgvtdi eq "*") { push (@smartpass_pkgs, "SGVTDI"); } } sub write_output { # Write SGC_client.txt &write_packages; ©_pkgfiles; undef(@configfile); push(@configfile, "smartpass_packages\^"); push(@configfile, join (",", @smartpass_pkgs), "\n"); push(@configfile, "branding\^$brandingName\n"); push(@configfile, "olr_page\^$olr_page\n"); push(@configfile, "exec_line\^$exec_line\n"); push(@configfile, "exec_prompt\^$exec_prompt\n"); push(@configfile, "primary_wins\^$primary_wins\n"); push(@configfile, "secondary_wins\^$secondary_wins\n"); push(@configfile, "dcri\^$dcri\n"); push(@configfile, "portlist\^$portlist\n"); push(@configfile, "acml\^$acml\n"); push(@configfile, "accr\^$accr\n"); push(@configfile, "csl\^$csl\n"); push(@configfile, "ape\^$ape\n"); push(@configfile, "fipsg\^$fipsg\n"); if ($banner ne "") { unless (open(BANNERFILE, "<$installdir/$banner")) { proc_error("y", 1, $!, "could not open $installdir/$banner"); } close (BANNERFILE); } push(@configfile, "banner\^$banner\n"); push(@configfile, "heartbeat\^$heartbeat\n"); push(@configfile, "base_folder\^$base_folder\n"); push(@configfile, "deloldfile\^$deloldfile\n"); push(@configfile, "oldzipDownloadName\^$zipDownloadName\n"); unless (open(CONFIGFILE, ">$sgcClientFile")) { proc_error("y", 1, $!, "could not open $sgcClientFile"); } print CONFIGFILE @configfile; close (CONFIGFILE); &update_configuration; } sub proc_error { ### process error my ($fatal, $code, $msg1, $msg2) = @_; $fatal = uc($fatal); $glob_erflag += 1; if (defined($visited)) {} else { $visited = 'y'; $~ = ERROR_EXIT; write; } ## print errors if ($code != 0) { print "> Installdir = $installdir\n"; $glob_erfile? print ERRFILE "> Installdir = $installdir\n":{}; print "> ClientDir = $cline\n"; $glob_erfile? print ERRFILE "> ClientDir = $cline\n":{}; print "> TemplateDir = $templatedir\n"; $glob_erfile? print ERRFILE "> TemplateDir = $templatedir\n":{}; print "> ZipTempFile = $ziptempfile\n"; $glob_erfile? print ERRFILE "> ZipTempFile = $ziptempfile\n":{}; print "> PackageDir = $packdir\n"; $glob_erfile? print ERRFILE "> PackageDir = $packdir\n":{}; print "> Temp client config file = $sgcClientFile\n"; $glob_erfile? print ERRFILE "> Temp client config file = $sgcClientFile\n":{}; print "> DownloadDir = $dline\n"; $glob_erfile? print ERRFILE "> DownloadDir = $dline\n":{}; print "> Download file = $zipDownloadName\n"; $glob_erfile? print ERRFILE "> Error = ($code) $msg1\n":{}; print "> Error = ($code) $msg1\n"; print "$msg2\n"; $glob_erfile? print ERRFILE "$msg2\n":{}; print "\n\n"; print "Press Enter to continue"; (); } if ($fatal eq "Y") { $glob_erfile? close(ERRFILE):{}; print "Client Software Creation Terminated, see $errfile for details\n"; exit(1); } } sub proc_success { ### evrything kosher my ($path, $fname, $delflag) = @_; ($glob_erflag == 0)? system($clearCmd):{}; $~ = GOOD_EXIT; write; &print_vars; if (($oldzipDownloadName) && ($oldzipDownloadName ne $zipDownloadName)) { unlink (join("", $dline, $ds, $oldzipDownloadName)); print "> Old pkg file removed = $oldzipDownloadName\n"; } unlink (join("", $dline, $ds, $ziptempfile)); print "\n"; print "> Pkg file Path = $path\n"; print "> Package file = $fname\n\n"; print "Note: If you changed the default name of this file, you may also need to configure $srvrProdName\'s OLR configuration via Administration utility.\n"; print "\n\nPress Enter to continue"; (); #($glob_erflag == 0)? unlink($errfile):{}; exit(0); } sub update_configuration { # Write to SGC_Client, smartpass.ini and # create new client zip package my $rc = 0; ### ### Open template files into arrays ### unless (open(SETUP_INI_TEMPLATE, (join("", $templatedir, $ds, "smartpass.ini.template")))) { proc_error("y", 1, $!, "could not open smartpass.ini.template"); } @setup_ini = ; close(SETUP_INI_TEMPLATE); unless (open (CONFIGFILE, "<$sgcClientFile")) { proc_error("y", 1, $!, "could not open $sgcClientFile"); } ### ### Do the substitutions ### $line = ; my $lim = @setup_ini; if ($mydebug) { print "setup ini count = $lim\n"; } while ($line) { chomp($line); ($search, $replace) = split(/\^/, $line); $line = ; $inx = 0; ### expect substitution in 1st n lines of template while ($inx <= $lim) { if (substr($setup_ini[$inx], 0, 1) ne ";") { ## check for comment $setup_ini[$inx] =~ s/$search/$replace/g; $mydebug? print "$setup_ini[$inx]":{}; } $inx++; } } close(CONFIGFILE); ### Close SGC_Client.txt ### ### Begin writing smartpass.ini ### Create client package and place it in download area if ($mydebug) { print "update config->"; print "pckdir=", $packdir; print ",dline=", $dline; print ",cline=", $cline; print ",installdir=", $installdir; print ",entrustpackage=", $entrustpackage; print ",downloadname=", $zipDownloadName; print ",ziptempfile=", $ziptempfile; } print("\nCreating new client package...........\n"); $inifile = (join("", $installdir, $ds, "client", $ds, "smartpass.ini")); unless (open(SETUP_INI, ">$inifile")) { proc_error("y", 1, $!, "could not open $inifile"); }; print SETUP_INI @setup_ini; close(SETUP_INI); unlink(join("", $dline, $ds, $ziptempfile)); ## write basic stuff to error file before closing it $glob_erfile? print ERRFILE "> Installdir = $installdir\n":{}; $glob_erfile? print ERRFILE "> ClientDir = $cline\n":{}; $glob_erfile? print ERRFILE "> TemplateDir = $templatedir\n":{}; $glob_erfile? print ERRFILE "> ZipTempFile = $ziptempfile\n":{}; $glob_erfile? print ERRFILE "> PackageDir = $packdir\n":{}; $glob_erfile? print ERRFILE "> Temp client config file = $sgcClientFile\n":{}; $glob_erfile? print ERRFILE "> DownloadDir = $dline\n":{}; close(ERRFILE); $glob_erfile = 0; if ($OSType eq "unix") { mkdir $dline, 0644; $rc = 0; $cmd = "zip -j $dline/$ziptempfile $installdir/client/*.* >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('y', $?, $!, "While executing: $cmd")):{}; if ($banner ne "") { $cmd = "zip -j $dline/$ziptempfile $installdir/$banner >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('y', $?, $!, "While executing: $cmd")):{}; } # $cmd = "zip -d $dline/$ziptempfile \\*.txt \\*.ini >> $errfile 2>> $errfile"; # $rc |= (0xffff & system($cmd)); # ($rc != 0)? (&proc_error('y', $?, $!, "While executing: $cmd")):{}; $cmd = "zip -jrl $dline/$ziptempfile $installdir/client/*.txt $installdir/client/*.ini >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('y', $?, $!, "While executing: $cmd")):{}; $cmd = "(cat $installdir/../bin/SFXWiz32.exe $dline/$ziptempfile > $dline/$zipDownloadName) >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('n', $?, $!, "while executing: $cmd")):{}; $cmd = "zip -A $dline/$zipDownloadName >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('y', $?, $!, "while executing: $cmd")) : (&proc_success($dline, $zipDownloadName, $deloldfile)); } if ($OSType eq "win32") { $cmd = "zip -j \"$dline\\$ziptempfile\" \"$installdir\\client\\*.*\" 2>> $errfile"; $rc = 0; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('y', $?, $!, "while executing: $cmd")):{}; if ($banner ne "") { $cmd = "zip -j \"$dline\\$ziptempfile\" \"$installdir\\$banner\" >> $errfile 2>> $errfile"; $rc |= (0xffff & system($cmd)); ($rc != 0)? (&proc_error('n', $?, $!, "while executing: $cmd")):{}; } $cmd = "copy /b \"$installdir\\SFXWiz32.exe\" + \"$dline\\$ziptempfile\" \"$dline\\$zipDownloadName\" 2>> $errfile"; $rc |= (0xffff & (system($cmd))); ($rc != 0)? (&proc_error('n', $?, $!, "while executing: $cmd")):{}; $cmd = "zip -A \"$dline\\$zipDownloadName\" 2>> $errfile"; $rc |= (0xffff & (system($cmd))); ($rc != 0)? (&proc_error('y', $?, $!, "while executing: $cmd")): (&proc_success($dline, $zipDownloadName, $deloldfile)); } } ### ### Screen output formats ### format MAIN = +----------------------------------------------------------------------------+ | Client Configuration Main Menu | +----------------------------------------------------------------------------+ | [1] Client Package Configuration | | [2] Application Installation Branding | | [3] On-Line Registration Launching Options | | [4] Set WINS Server Addresses | | [5] Detecting Smart Card Removal | | [6] Port List Value | | [7] Access Code, Content Rules and Auto-proxy Setting | | [8] Client Lockout Settings | | [9] FIPSGuard Setting | | [10] Startup Screen | | [11] Server Heartbeat | | [12] FIPS Token Base Folder | | | | [13] Print current config to screen | | [14] Change & delete pkg filename (@<<<<<<<<<<<<<<<<<<<<<<<<<<<<) | $zipDownloadName | | | [?] Help | | [S] Save Changes, Generate New Client pkg file, and exit | | [Q] Quit, discarding all changes | | | | [911] Restore all settings to their default values | +----------------------------------------------------------------------------+ . format OLR_OPTIONS = +----------------------------------------------------------------------------+ | OLR Launching Options | +----------------------------------------------------------------------------+ | [1] Specify OLR Page (OLRPage=http://...) | | [2] Post Installation Execute Program (Execute=) | | [3] Set Execute Prompt (ExecutePrompt=) | | | | [R] Return to Main Menu | +----------------------------------------------------------------------------+ . format SMARTPASS = +----------------------------------------------------------------------------+ | Client Package Configuration * = selected | +----------------------------------------------------------------------------+ | [1] FIPSTOKN [@] FIPS 140-1 compliant authentication token | $fipstokn | [2] STARCOS [@] G&D STARCOS smart card | $starcos | [3] MCOS [@] MCOS smart card | $mcos | [4] CHIPDRV [@] Towitoko's CHIPDRIVE smart card reader | $chipdrv | [5] PCSC [@] Windows PC/SmartCard Reader | $pcsc | [6] CARDFMT [@] Format program (CHIPDRIVE, PC/SC) | $cardfmt | [7] SGSDI [@] RSA's SecurID authentication | $sgsdi | [8] RADIUS [@] Radius authentication | $radius | [9] ENTRUST [@] Entrust authentication | $entrust | [10] IPSEC [@] IPSEC Network level security; incl IKE | $ipsec | [11] PKI [@] PKI (Public Key Infrastructure) | $pki | [12] SHIM [@] WSOCK32.dll call interception Shim | $shim | [13] LDAP [@] LDAP authentication | $sgldap | [14] WINDOMAIN [@] Windows Domain authentication | $windomain | [15] SGVTDI [@] Windows Drive Mapping and File Sharing | $sgvtdi +----------------------------------------------------------------------------+ | [R] Return to Main Menu | | [?] Help | +----------------------------------------------------------------------------+ . format PACKAGE_HELP= +----------------------------------------------------------------------------+ | Client Package Help Menu | +----------------------------------------------------------------------------+ | [1] FIPSTOKN FIPS 140-1 compliant authentication token | | [2] STARCOS G&D STARCOS smart card | | [3] MCOS MCOS smart card | | [4] CHIPDRV Towitoko's CHIPDRIVE smart card reader | | [5] PCSC Windows PC/SmartCard Reader API | | [6] CARDFMT Format program (CHIPDRIVE, PC/SC) | | [7] SGSDI RSA's SecurID authentication | | [8] RADIUS Radius authentication | | [9] ENTRUST Entrust authentication | | [10] IPSEC IPSEC Network level security; incl IKE | | [11] PKI PKI (Public Key Infrastructure) authen. | | [12] SHIM WSOCK32.dll call interception shim | | [13] LDAP LDAP authentication | | [14] WINDOMAIN Windows Domain authentication | | [15] SGVTDI Windows Drive Mapping and File Sharing | +----------------------------------------------------------------------------+ | [R] Return to Main Menu | +----------------------------------------------------------------------------+ . format WINS= +----------------------------------------------------------------------------+ | Set WINS Server Addresses | +----------------------------------------------------------------------------+ | [1] PrimaryWINSServer=@<<<<<<<<<<<<<<<<<<< | $primary_wins | [2] SecondaryWINSServer=@<<<<<<<<<<<<<<<<<<< | $secondary_wins | | | [R] Return to Main Menu | | [?] Help | +----------------------------------------------------------------------------+ . format DCRI = +----------------------------------------------------------------------------+ | Detect Smart Card Removal Interval | +----------------------------------------------------------------------------+ | This option invokes the automatic detection of a change or removal | | of a user's smart card from the smart card reader. | | Periodically, the client verifies that the smart card is still inserted | | into the smart card reader and that the serial number of the smart card | | is the same as the smart card used to log on. This value is the | | number of seconds between polling intervals. The valid range is from 10 | | to 3600 seconds (do not use commas). | | When the client detects the removal or change of an inserted smart card, | | it stops all current connections (active or idle) and flushes all | | cached information. | | | | Default: None | | | | Example: 30 | +----------------------------------------------------------------------------+ | [R] Return to Main Menu | +----------------------------------------------------------------------------+ . format PORTLIST = +----------------------------------------------------------------------------+ | Port List Entry | +----------------------------------------------------------------------------+ | This entry configures which ports, and in which order, that client | | will try to use to navigate through a firewall to initiate a secure | | session to the @<<<<<<<<< Server. | $srvrProdName | | | Caution: Do NOT use port 443 or 80 if either a Web Server or a SSL Server | | is running on your @<<<<<<<<<< Server. | $srvrProdName | | | Valid Range: A comma-delimited list of integer values between | | 1 and 65536. If the list is empty, default list below is used. | | | | Default: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | $cliPortList +----------------------------------------------------------------------------+ | [R] Return to Main Menu | +----------------------------------------------------------------------------+ . format ACML= +----------------------------------------------------------------------------+ | Access Code, Content Rules, and Auto-Proxy settings | +----------------------------------------------------------------------------+ | Specify minimum access code length and access rule code for use. You may | | also enable automatic proxy setting. Use option 3 below to toggle | | Automatic Proxy Settings flag. Unless disabled, @<<<<<<<<<<<<<<<<<<< | $clntProdName | will automatically set its proxy setting from the web browser | +----------------------------------------------------------------------------+ | [1] MinimumAccessCodeLength=@<<<< | $acml | [2] AccessCodeContentRules=@<<< | $accr | [3] Automatic Proxy Settings from Web browser=@<<<<<<<<< | ($ape eq '1')? "Enabled" : "Disabled" | | | [R] Return to Main Menu | | [?] Help | +----------------------------------------------------------------------------+ . format CSL= +----------------------------------------------------------------------------+ | Client Setting Lockout Value (Yes or No) | +----------------------------------------------------------------------------+ | Purpose: This entry configures the client settings lockout. | | If set to yes (locked), the option dialog boxes will be | | grayed out; otherwise, the user can change any option. | | | | Default: NO | | Valid Range: Yes - No | +----------------------------------------------------------------------------+ | [R] Return to Main Menu | | [?] Help | +----------------------------------------------------------------------------+ . format BASE_FOLDER= +----------------------------------------------------------------------------+ | FIPS Token Base Folder | +----------------------------------------------------------------------------+ | Purpose: Specifies the Folder to be used to store the User's Tokens. | | Default: None | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format FIPSG= +----------------------------------------------------------------------------+ | FIPSGuard Setting Value (Yes or No) | +----------------------------------------------------------------------------+ | Purpose: This entry specifies whether @<<<<<<<< should restrict the | $clntProdName | number of attempts by the end user to enter the Access Code | | of the FIPS Token correctly. | | If set to Yes, @<<<<<<<< will track the number of consecutive | $clntProdName | failures and if it reaches 3, will destroy the token contents. | | If set to No, there is no limit on the number of retries. | | Default: NO | | Valid Range: Yes - No | +----------------------------------------------------------------------------+ | [R] Return to Main Menu | | [?] Help | +----------------------------------------------------------------------------+ . format BANNER= +----------------------------------------------------------------------------+ | Client Startup Screen | +----------------------------------------------------------------------------+ | Purpose: Specifies the name of a bit map (.bmp) file to be displayed | | when the Client starts up. | | This will be shown as part of a dialog box with OK and CANCEL | | buttons. The .bmp file must be present in: | | @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | $installdir | Default: None | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format HEARTBEAT= +----------------------------------------------------------------------------+ | Server Heartbeat Option | +----------------------------------------------------------------------------+ | Purpose: Specifies whether the Client should run a periodic check that | | it can communicate with the Server. The value is the interval | | in minutes between checks, where the valid range is 0-999. | | A value of zero disables checking. | | Default: 0 | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format BRAND= +----------------------------------------------------------------------------+ | Application Installation Branding | +----------------------------------------------------------------------------+ | This option changes the name displayed on the background splash screen | | that is displayed to the end user during the installation of the client | | software. The default is name of the client software with the version | | number. | +----------------------------------------------------------------------------+ | [R] Return to Main Menu | +----------------------------------------------------------------------------+ . format OLR_PAGE= +----------------------------------------------------------------------------+ | On-Line Registration URL | +----------------------------------------------------------------------------+ | Purpose: Specifies the URL used for client On-Line Registration. | | Default: None | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format EXEC_LINE= +----------------------------------------------------------------------------+ | Post-Install Execute Program | +----------------------------------------------------------------------------+ | Purpose: Specifies a program to execute following installation of the | | Client software. | | Default: None | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format EXEC_PROMPT= +----------------------------------------------------------------------------+ | Prompt for Execute Program | +----------------------------------------------------------------------------+ | Purpose: Specifies the text that will appear in a user prompt that asks | | whether the user wants to invoke the program named in 'Execute'. | | Default: None | +----------------------------------------------------------------------------+ | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format ZIP_FILE= +----------------------------------------------------------------------------+ | Change Client Package Filename | +----------------------------------------------------------------------------+ | Purpose: Change current .exe package file. Packaged zip files are named | | as @<<<<<<<<<<<<<<<<<<<<<<<<< (a self extracting zip file) for | ((defined($DEF_CLIENT_DWNLOAD_NAME)? $DEF_CLIENT_DWNLOAD_NAME : "SP-Win32-yyyymmdd") . '.exe') | automatic use in OLR screens. | | | | Also the old package file is automatically deleted unless disabled | | via option 2 below. | +----------------------------------------------------------------------------+ | [1] Package filename = @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | $zipDownloadName | [2] Auto-del of last pkg @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<= @<<<<<<<<< | $oldzipDownloadName, (($deloldfile eq 'y')? "Enabled" : "Disabled") | | | [R] Return to previous Menu | | [?] Help | +----------------------------------------------------------------------------+ . format PREAMBLE= +----------------------------------------------------------------------------+ | @<<<<<<<<<<<<<<<< Client Configuration Utility | $clntProdName +----------------------------------------------------------------------------+ . format ERROR_EXIT= +----------------------------------------------------------------------------+ | Errors in Processing at @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | ($xx=localtime) +----------------------------------------------------------------------------+ . format GOOD_EXIT= +----------------------------------------------------------------------------+ | Congratulations! Package file successfully generated @<<<<<<<<<<<<<<< | ($glob_erflag)? "with ($glob_erflag) error(s)":"" | Time = @<<<<<<<<<<<<<<<<<<<<<<<<<<< | ($xx=localtime) +----------------------------------------------------------------------------+ .