diff --git a/README.md b/README.md index 259d5bb..ebf10b4 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,10 @@ With [Homebrew](https://brew.sh) you can install the same dependencies: brew install jq qrencode imagemagick poppler node coreutils ``` -These scripts rely on the GNU implementation of `mktemp` (`gmktemp`) found in -`coreutils`. If you prefer not to install `coreutils`, edit the scripts to use -`mktemp` without the `--suffix` option. +The obfuscation scripts attempt to use `mktemp --suffix` when creating +temporary files. If that option is unavailable – for example on macOS without +GNU `coreutils` – the scripts automatically fall back to a portable `mktemp` +command that yields the same result. The obfuscation scripts also rely on a pair of Node modules. Install them globally: diff --git a/src/obfuscate_index.sh b/src/obfuscate_index.sh index ea6ba25..d6244bb 100755 --- a/src/obfuscate_index.sh +++ b/src/obfuscate_index.sh @@ -15,11 +15,20 @@ for cmd in javascript-obfuscator html-minifier-terser node; do require_cmd "$cmd" done +# Detect whether mktemp supports the --suffix option. If not, fall back to a +# portable template-based approach (e.g., on macOS). +if tmp=$(mktemp --suffix=.test 2>/dev/null); then + rm -f "$tmp" + mktemp_with_suffix() { mktemp --suffix="$1"; } +else + mktemp_with_suffix() { mktemp "${TMPDIR:-/tmp}/tmp.XXXXXX$1"; } +fi + # Input and output file names input_file="index-master.html" output_file="index.html" -temp_js_file=$(mktemp --suffix=.js) # Temporary .js file for extracting JavaScript -temp_js_obfuscated_file=$(mktemp --suffix=.js) # Temporary file for obfuscated JavaScript +temp_js_file=$(mktemp_with_suffix .js) # Temporary .js file for extracting JavaScript +temp_js_obfuscated_file=$(mktemp_with_suffix .js) # Temporary file for obfuscated JavaScript temp_html_file=$(mktemp) # Temporary file for processing HTML without JS # Check if the input file exists diff --git a/src/obfuscate_nostr.sh b/src/obfuscate_nostr.sh index 271ea60..16b3ef6 100755 --- a/src/obfuscate_nostr.sh +++ b/src/obfuscate_nostr.sh @@ -15,11 +15,20 @@ for cmd in javascript-obfuscator html-minifier-terser node; do require_cmd "$cmd" done +# Detect whether mktemp supports the --suffix option. If not, fall back to a +# portable template-based approach (e.g., on macOS). +if tmp=$(mktemp --suffix=.test 2>/dev/null); then + rm -f "$tmp" + mktemp_with_suffix() { mktemp --suffix="$1"; } +else + mktemp_with_suffix() { mktemp "${TMPDIR:-/tmp}/tmp.XXXXXX$1"; } +fi + # Input and output file names input_file="nostr-master.html" output_file="nostr.html" -temp_js_file=$(mktemp --suffix=.js) # Temporary .js file for extracting JavaScript -temp_js_obfuscated_file=$(mktemp --suffix=.js) # Temporary file for obfuscated JavaScript +temp_js_file=$(mktemp_with_suffix .js) # Temporary .js file for extracting JavaScript +temp_js_obfuscated_file=$(mktemp_with_suffix .js) # Temporary file for obfuscated JavaScript temp_html_file=$(mktemp) # Temporary file for processing HTML without JS # Check if the input file exists