$!-----------------------------------------------------------------'f$verify(0) $! INSTALL.COM $! $! Copyright (C) 1996-2021 Mark G.Daniel. $! $! Licensed under the Apache License, Version 2.0 (the "License"); $! you may not use this file except in compliance with the License. $! You may obtain a copy of the License at $! $! http://www.apache.org/licenses/LICENSE-2.0 $! $! Unless required by applicable law or agreed to in writing, software $! distributed under the License is distributed on an "AS IS" BASIS, $! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. $! See the License for the specific language governing permissions and $! limitations under the License. $! $! Install the WASD Hypertext Services Package. $! $! @INSTALL INSTALL !overrides the 'already-installed' check and exit! $! $ INSTALL_VERSION = "v12.0.0" $! $! 18-DEC-2020 MGD VAX is not longer implemented $! 10-DEC-2014 MGD check required privilege $! 07-NOV-2009 MGD v10.0.0, logical naming schema $! 14-SEP-2007 MGD up-case procedure spec to avoid mixed-case issues $! 19-JUL-2007 MGD bugfix; parse of HT_ROOT with rooted logical (Tim Sneddon) $! 13-MAR-2006 MGD v9.1.4, shutdown.com $! 07-DEC-2002 MGD v8.1, major revision $! 07-JUN-2002 MGD v8.0, new version $! 03-NOV-2001 MGD v7.2.1, PERSONA_MACRO build $! 12-MAY-2001 MGD v7.2, adjust HTTP$SERVER account quotas upwards $! 01-SEP-2000 MGD v7.1, adjust disk quota upwards $! 20-MAY-2000 MGD v7.0, new version $! 30-NOV-1999 MGD v6.1, remove NETLIB support, $! compile+link or link-only $! bugfix; HT_ROOT derived from concealed device $! 18-MAY-1999 MGD v6.0 $! 14-NOV-1998 MGD v5.3, new server startup procedure $! 03-SEP-1998 MGD v5.2 $! 28-JUL-1998 MGD allow for enabled disk quotas $! 27-JUN-1998 MGD initial, v5.1 (and some would say long overdue!) $!----------------------------------------------------------------------------- $! $ if f$trnlnm("INSTALL$DBUG") .nes. "" then set verify $! $ ss$_abort = 44 $ ss$_bugcheck = 676 $ P1 = f$edit(P1,"upcase") $ P2 = f$edit(P2,"upcase") $ delete = "delete" $ copy = "copy" $ say = "write sys$command" $ vms_version = f$integer(f$extract(1,1,f$getsyi("version"))) * 10 +- f$integer(f$extract(3,1,f$getsyi("version"))) $ if vms_version .ge. 72 then set process /parse=traditional $ archName = f$edit(f$getsyi("ARCH_NAME"),"UPCASE") $ if archName .eqs. "ALPHA" then archName = "AXP" $ set control=Y $ on controly then exit ss$_abort $! $ if (f$trnlnm("WASD_ROOT","LNM$SYSTEM") .nes. "" .or. - f$trnlnm("HT_ROOT","LNM$SYSTEM") .nes. "") .and. - (P1 .nes. "INSTALL" .and. P2 .nes. "INSTALL") $ then $ type SYS$INPUT ***************************************** * "WASD_ROOT" LOGICAL NAME DETECTED. * * THIS DOES NOT LOOK LIKE AN INSTALL! * ***************************************** $ exit $ endif $! $ if f$trnlnm("WASD_ROOT","LNM$JOB") .eqs. "" $ then $! (subprocess to do the actual work, define local logicals) $ procCom = f$edit(f$environment("PROCEDURE"),"UPCASE") $ wasdRoot = f$parse(procCom,,,"DEVICE","NO_CONCEAL") + - f$parse(procCom,,,"DIRECTORY","NO_CONCEAL") - - "][" - ".000000" - "000000." - ".INSTALL]" + ".]" $ define /job /nolog /translation=concealed WASD_ROOT 'wasdRoot' $ wasdExe = "WASD_ROOT:[''archName']" $ define /job /nolog WASD_EXE 'wasdExe' $ define /job /nolog HT_EXE 'wasdExe' $! (spawn a subprocess to do the actual install ensures job logical deletion) $ set noon $ spawn /wait @'procCom' "''P1'" "''P2'" $ set on $ deassign /job WASD_ROOT $ deassign /job WASD_EXE $ deassign /job HT_EXE $ exit $ endif $! $ currentDefault = f$environment("DEFAULT") $! $! (remove once requirement for IA64-hosted X86 cross-compilers unnecessary) $ deassign /nolog /process XCC$WASD $! $ @wasd_root:[install]copyright.com $! $ say " ******************************************* $ say " * INSTALL WASD VMS Web Services ''INSTALL_VERSION' *" $ say " ******************************************* $ type sys$input All sections may be individually declined before making any modifications. In this sense the install may be undertaken step-by-step or sections repeated. The first section is COMPILING/LINKING, after which you will be able to quit. In a mixed architecture cluster (including both Alpha and VAX systems) the compile/link section must be performed on both! $ read sys$command response /prompt="Press RETURN to continue: " $ say "" $! $ if .not. f$privilege("SYSPRV") $ then $ type sys$input ***************************** * requires SYSPRV enabled * ***************************** $ exit ss$_abort $ endif $! $ if f$search("WASD_ROOT:[000000]*.*") .eqs. "" $ then $ type sys$input *********************************************************** * APPEARS TO BE A PROBLEM WITH THE "WASD_ROOT" LOGICAL! * *********************************************************** $ exit ss$_abort $ endif $! *********************** $! * BUILD EXECUTABLES * $! *********************** $! $ @WASD_ROOT:[INSTALL]BUILD.COM $! $ type sys$input ************************ * SERVER QUICK-CHECK * ************************ This executes the package demonstration procedure, allowing the basic package to be evaluated or checked. You may run this at any time to again check the package for basic functionality using @WASD_ROOT:[INSTALL]DEMO.COM $ response = "" $ read sys$command response /prompt="Execute the demonstration procedure? [NO]: " $ say "" $ if response $ then $ @WASD_ROOT:[INSTALL]DEMO.COM $ endif $! $ type sys$input **************************** * CONTINUE INSTALLATION? * **************************** $ response = "" $ read sys$command response /prompt="Continue the installation? [NO]: " $ say "" $ if .not. response then exit $! $ if f$search("WASD_ROOT:[WASDPC]CHECK.COM") .nes. "" $ then $ type sys$input ************************** * CHECK DOCUMENTATION? * ************************** $ response = "" $ read sys$command response /prompt="Check [WASDOC] content? [NO]: " $ say "" $ if response then @WASD_ROOT:[WASDOC]CHECK.COM $ endif $! $!(create accounts) $ @WASD_ROOT:[INSTALL]ACCOUNTS INSTALL $ if .not. $status then exit $status $! $!(ensure WASD_ROOT.DIR has required file protections) $ wasdRootDir = f$trnlnm("wasd_root",,"no_conceal") - ".]" + ".-]WASD_ROOT.DIR" $ set file /owner=SYSTEM /protection=(s:rwed,o:rwed,g:re,w:re) 'wasdRootDir' $! $!(secure the package tree) $ @WASD_ROOT:[INSTALL]SECURE INSTALL $ if .not. $status then exit $status $! $ type sys$input ************************* * HTTPD SUPPORT FILES * ************************* Copies files from WASD_ROOT:[EXAMPLE] STARTUP.COM to WASD_ROOT:[STARTUP] SHUTDOWN.COM to WASD_ROOT:[STARTUP] STARTUP_DECNET.COM to WASD_ROOT:[STARTUP] STARTUP_LOCAL.COM to WASD_ROOT:[STARTUP] STARTUP_SERVER.COM to WASD_ROOT:[STARTUP] WASD_FILE_DEV.COM to WASD_ROOT:[000000] WASD_CONFIG_AUTH.CONF to WASD_ROOT:[LOCAL] WASD_CONFIG_CONFIG.CONF to WASD_ROOT:[LOCAL] WASD_CONFIG_MAP.CONF to WASD_ROOT:[LOCAL] WASD_CONFIG_MSG.CONF to WASD_ROOT:[LOCAL] WASD_CONFIG_SERVICE.CONF to WASD_ROOT:[LOCAL] $ response = "" $ read sys$command response /prompt="Copy the files? [NO]: " $ say "" $ if response $ then $ copy = "copy/log" $ copy wasd_root:[example]startup.com wasd_root:[startup] $ copy wasd_root:[example]shutdown.com wasd_root:[startup] $ copy wasd_root:[example]startup_decnet.com wasd_root:[startup] $ copy wasd_root:[example]startup_local.com wasd_root:[startup] $ copy wasd_root:[example]startup_server.com wasd_root:[startup] $ copy wasd_root:[example]wasd_file_dev.com wasd_root:[000000] $ copy wasd_root:[example]wasd_config_auth.conf wasd_root:[local] $ copy wasd_root:[example]wasd_config_global.conf wasd_root:[local] $ copy wasd_root:[example]wasd_config_map.conf wasd_root:[local] $ copy wasd_root:[example]wasd_config_msg.conf wasd_root:[local] $ copy wasd_root:[example]wasd_config_service.conf wasd_root:[local] $ say "" $ endif $! $ type sys$input ***************************** * INSTALL PACKAGE SCRIPTS * ***************************** The procedure WASD_ROOT:[INSTALL]SCRIPTS.COM installs package scripts. It prompts for selected groups of scripts to be installed or removed. More information is available when using the procedure. Scripts available with this release of the package will not be available for use by the server until this procedure is performed. You can execute the procedure now or do it later manually. $ response = "" $ read sys$command response /prompt="Execute the procedure now? [NO]: " $ say "" $ if response $ then $ @WASD_ROOT:[INSTALL]SCRIPTS.COM $! 'f$verify(0) $ set default 'currentDefault' $ endif $! $ type sys$input ****************************** * INSTALL C O M P L E T E * ****************************** $!-----------------------------------------------------------------------------