icecast improvements
[distro-setup] / ffp
diff --git a/ffp b/ffp
index 3ada2fce4a9af1c02249e3e52ab6c628c1febabc..f956b0694f016a07a13b1cb55ef09e5cf4a8cf95 100755 (executable)
--- a/ffp
+++ b/ffp
@@ -1,25 +1,87 @@
 #!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to change
+# to a recommended GPL license.
 
-volume=0
+# Copyright 2024 Ian Kelling
 
-# 3 mountpoints: fsf-sysops (default, public), fsf (all staff), fsf-tech (tech team)
-# # note: duplicated in ffp
-mount_suffix=-sysops
-while [[ $1 ]]; do
+# 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.
+
+
+
+usage() {
+  cat <<EOF
+Usage: ${0##*/} [-d] [sysops|tech|staff]
+3 mountpoints: fsf-sysops (default, public), fsf (all staff), fsf-tech (tech team)
+
+-d    debug. start unmuted.
+
+note: args duplicated in ffp
+
+
+
+-h|--help  Print help and exit.
+
+Note: Uses util-linux getopt option parsing: spaces between args and
+options, short options can be combined, options before args.
+EOF
+  exit $1
+}
+
+##### begin command line parsing ########
+
+# ensure we can handle args with spaces or empty.
+ret=0; getopt -T || ret=$?
+[[ $ret == 4 ]] || { echo "Install util-linux for enhanced getopt" >&2; exit 1; }
+
+volume=0
+temp=$(getopt -l help hdw "$@") || usage 1
+eval set -- "$temp"
+while true; do
   case $1 in
-    sysops|tech)
-      mount_suffix=-$1
-      ;;
-    staff)
-      mount_suffix=
-      ;;
-    -d)
-      volume=100
-      ;;
+    -d) volume=100 ;;
+    -h|--help) usage ;;
+    --) shift; break ;;
+    *) echo "$0: unexpected args: $*" >&2 ; usage 1 ;;
   esac
   shift
 done
 
+mount_suffix=-sysops
+case $1 in
+  sysops|tech)
+    mount_suffix=-$1
+    ;;
+  staff)
+    mount_suffix=
+    ;;
+esac
+
+##### end command line parsing ########
+
+
+
+host=https://live.iankelling.org:443
+live_host=$(dig +timeout=1 +short @iankelling.org live.iankelling.org)
+vps_host=$(dig +timeout=1 +short iankelling.org)
+if [[ $live_host != "$vps_host" ]] &&  ip n show 10.2.0.1 | grep . &>/dev/null && \
+     [[ $(dig +timeout=1 +short @10.2.0.1 -x 10.2.0.2 2>&1 ||:) == kd.b8.nz. ]]; then
+  host=http://127.0.0.1:8000
+fi
+
 opts=(
   -v error
   -hide_banner
@@ -29,7 +91,7 @@ opts=(
   -fast
   -fflags nobuffer
   -flags low_delay
-  -i http://localhost:8000/fsf$mount_suffix.webm
+  -i $host/fsf$mount_suffix.webm
   -autoexit
   )
 ffplay "${opts[@]}"