Chad 2fa8b555e7
Add Static Resource Hosting (#8)
* Add ability to host files from web API rather than using the static site files.hyperling.com.

* Add details.

* Prevent further files from being committed in the static resource folder.

* Beginnings of a photo share from the website to replace PhotoPrism.

* Fix log message for files route.

* Allow customization of ports via shell script.

* Update README goals and fix URLs.

* FInalize the PHOTOS page, complete with video controls!

* Moe enhancements, such as displaying README's and adding [VIDEO] tag.

* Clean file a little.

* Remove TODO.
2024-01-24 11:02:23 +00:00

69 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# 2022-09-14 Hyperling
# Ensure dependencies are met and start the webserver.
## Setup ##
DIR=`dirname $0`
PROG=`basename $0`
## Functions ##
function usage {
cat <<- EOF
$PROG calls the main Node.js program after ensuring the project can run.
(PORTS)
-p : Pass the port numbers that the API/website should listen at.
Example: $PROG -p 80 -p 443 -p 8080
(HELP)
-h : Show this usage output and exit successfully.
EOF
exit $1
}
## Parameters ##
while getopts ':p:h' opt; do
case "$opt" in
p) (( OPTARG < 1024 )) && [[ $LOGNAME != "root" ]] && {
echo "WARNING: Port $OPTARG is privileged. Will need to be root."
exit 1
}
ports="$ports $OPTARG" ;;
h) usage 0 ;;
*) echo "ERROR: Option $OPTARG not recognized." >&2
usage 1 ;;
esac
done
## Build Environment ##
# Ensure we are executing from this file's directory.
cd $DIR
# Check if any dependencies need installed.
if [[ ! `which php` || ! `which node`|| ! `which npm` ]]; then
sudo apt install -y php-fpm nodejs npm
fi
# Fix any file permissions
# Directories and allowed page types are executable, others are not.
find ./pages/ | while read file; do
if [[ $file == *".php" || $file == *".sh" || -d $file ]]; then
mode=755
else
mode=644
fi
chmod -c $mode $file
done
npm install
## Main ##
./main.js $ports
## Finish ##
exit $?