deploy
This commit is contained in:
103
deploy-amipro.sh
Executable file
103
deploy-amipro.sh
Executable file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
SFTP_USER="${SFTP_USER:-witmatec}"
|
||||||
|
SFTP_HOST="${SFTP_HOST:-74.220.219.141}"
|
||||||
|
REMOTE_DIR="${REMOTE_DIR:-/home1/witmatec/public_html/amipro}"
|
||||||
|
LIVE_BASE_URL="${LIVE_BASE_URL:-https://amipro.me}"
|
||||||
|
|
||||||
|
batch_file="$(mktemp)"
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$batch_file"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
emit_site_file_commands() {
|
||||||
|
while IFS= read -r -d '' file_path; do
|
||||||
|
local relative_path
|
||||||
|
relative_path="${file_path#"$ROOT_DIR"/}"
|
||||||
|
printf 'put "%s" "%s"\n' "$relative_path" "$relative_path" >> "$batch_file"
|
||||||
|
done < <(
|
||||||
|
find "$ROOT_DIR" -maxdepth 1 -type f \( -name '*.html' -o -name '*.txt' -o -name '*.xml' \) -print0 | sort -z
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
emit_directory_commands() {
|
||||||
|
local local_dir="$1"
|
||||||
|
|
||||||
|
if [[ ! -d "$ROOT_DIR/$local_dir" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf -- '-mkdir "%s"\n' "$local_dir" >> "$batch_file"
|
||||||
|
|
||||||
|
while IFS= read -r -d '' dir_path; do
|
||||||
|
local relative_dir
|
||||||
|
relative_dir="${dir_path#"$ROOT_DIR"/}"
|
||||||
|
[[ "$relative_dir" == "$local_dir" ]] && continue
|
||||||
|
printf -- '-mkdir "%s"\n' "$relative_dir" >> "$batch_file"
|
||||||
|
done < <(
|
||||||
|
find "$ROOT_DIR/$local_dir" -type d -print0 | sort -z
|
||||||
|
)
|
||||||
|
|
||||||
|
while IFS= read -r -d '' file_path; do
|
||||||
|
local relative_path
|
||||||
|
relative_path="${file_path#"$ROOT_DIR"/}"
|
||||||
|
printf 'put "%s" "%s"\n' "$relative_path" "$relative_path" >> "$batch_file"
|
||||||
|
done < <(
|
||||||
|
find "$ROOT_DIR/$local_dir" -type f ! -name '.DS_Store' -print0 | sort -z
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
emit_verify_urls() {
|
||||||
|
cat <<'EOF'
|
||||||
|
/
|
||||||
|
/fido2_top.html
|
||||||
|
/contextwizard_top.html
|
||||||
|
/integration_api.html
|
||||||
|
/passkey.html
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_live_page() {
|
||||||
|
local relative_path="$1"
|
||||||
|
local local_file url local_hash remote_hash
|
||||||
|
|
||||||
|
if [[ "$relative_path" == "/" ]]; then
|
||||||
|
local_file="$ROOT_DIR/index.html"
|
||||||
|
url="$LIVE_BASE_URL/"
|
||||||
|
else
|
||||||
|
local_file="$ROOT_DIR/${relative_path#/}"
|
||||||
|
url="$LIVE_BASE_URL$relative_path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local_hash="$(shasum -a 256 "$local_file" | awk '{print $1}')"
|
||||||
|
remote_hash="$(curl -LfsS "$url" | shasum -a 256 | awk '{print $1}')"
|
||||||
|
|
||||||
|
if [[ "$local_hash" != "$remote_hash" ]]; then
|
||||||
|
printf 'Verification failed for %s\n' "$url" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf 'Verified %s\n' "$url"
|
||||||
|
}
|
||||||
|
|
||||||
|
printf 'cd "%s"\n' "$REMOTE_DIR" > "$batch_file"
|
||||||
|
emit_site_file_commands
|
||||||
|
emit_directory_commands contextwizard-files
|
||||||
|
emit_directory_commands files
|
||||||
|
|
||||||
|
echo "Deploying to $SFTP_USER@$SFTP_HOST:$REMOTE_DIR"
|
||||||
|
sftp -b "$batch_file" "$SFTP_USER@$SFTP_HOST"
|
||||||
|
|
||||||
|
if command -v curl >/dev/null 2>&1 && command -v shasum >/dev/null 2>&1; then
|
||||||
|
while IFS= read -r verify_path; do
|
||||||
|
verify_live_page "$verify_path"
|
||||||
|
done < <(emit_verify_urls)
|
||||||
|
else
|
||||||
|
echo "Skipped live verification because curl or shasum is unavailable."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Deployment complete."
|
||||||
@@ -465,7 +465,7 @@
|
|||||||
<span id="stat_label_1">FIDO certified</span>
|
<span id="stat_label_1">FIDO certified</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
<strong>30 minutes</strong>
|
<strong>15 minutes</strong>
|
||||||
<span id="stat_label_2">Fast onboarding</span>
|
<span id="stat_label_2">Fast onboarding</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-card">
|
<div class="stat-card">
|
||||||
|
|||||||
Reference in New Issue
Block a user