more portable [ = ] test

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2019-04-12 19:39:21 +02:00
parent fe9443fe4d
commit 121a113703

View File

@ -10,7 +10,7 @@
# This file is public domain in the USA and all free countries. # This file is public domain in the USA and all free countries.
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
# #
#### $$VERSION$$ v0.6-dev3-1-gae157c4 #### $$VERSION$$ v0.6-dev3-1-gfe9443f
# #
# Exit Codes: # Exit Codes:
# - 0 sucess (hopefully) # - 0 sucess (hopefully)
@ -45,7 +45,7 @@ fi
TOKEN="./token" TOKEN="./token"
if [ ! -f "${TOKEN}" ]; then if [ ! -f "${TOKEN}" ]; then
if [ "${CLEAR}" == "" ]; then if [ "${CLEAR}" = "" ]; then
echo "Running headless, run ${SCRIPT} init first!" echo "Running headless, run ${SCRIPT} init first!"
exit 2 exit 2
else else
@ -65,9 +65,9 @@ fi
BOTADMIN="./botadmin" BOTADMIN="./botadmin"
if [ ! -f "${BOTADMIN}" ]; then if [ ! -f "${BOTADMIN}" ]; then
if [ "${CLEAR}" == "" ]; then if [ "${CLEAR}" = "" ]; then
echo "Running headless, set botadmin to AUTO MODE!" echo "Running headless, set botadmin to AUTO MODE!"
echo "?" > "${BOTADMIN}" echo '?' > "${BOTADMIN}"
else else
${CLEAR} ${CLEAR}
echo -e "${RED}BOTADMIN MISSING.${NC}" echo -e "${RED}BOTADMIN MISSING.${NC}"
@ -256,27 +256,27 @@ leave_chat() {
} }
user_is_creator() { user_is_creator() {
if [ "${1:--}" == "${2:-+}" ] || [ "$(get_chat_member_status "$1" "$2")" == "creator" ]; then return 0; fi if [ "${1:--}" = "${2:-+}" ] || [ "$(get_chat_member_status "$1" "$2")" = "creator" ]; then return 0; fi
return 1 return 1
} }
user_is_admin() { user_is_admin() {
local me; me="$(get_chat_member_status "$1" "$2")" local me; me="$(get_chat_member_status "$1" "$2")"
if [ "${me}" == "creator" ] || [ "${me}" == "administrator" ]; then return 0; fi if [ "${me}" = "creator" ] || [ "${me}" = "administrator" ]; then return 0; fi
return 1 return 1
} }
user_is_botadmin() { user_is_botadmin() {
local admin; admin="$(head -n 1 "${BOTADMIN}")" local admin; admin="$(head -n 1 "${BOTADMIN}")"
[ "${admin}" == "${1}" ] && return 0 [ "${admin}" = "${1}" ] && return 0
[[ "${admin}" == "@*" ]] && [[ "${admin}" == "${2}" ]] && return 0 [[ "${admin}" = "@*" ]] && [[ "${admin}" = "${2}" ]] && return 0
if [ "${admin}" == "?" ]; then echo "${1:-?}" >"${BOTADMIN}"; return 0; fi if [ "${admin}" = "?" ]; then echo "${1:-?}" >"${BOTADMIN}"; return 0; fi
return 1 return 1
} }
user_is_allowed() { user_is_allowed() {
local acl="$1" local acl="$1"
[ "$1" == "" ] && return 1 [ "$1" = "" ] && return 1
grep -F -xq "${acl}:*:*" <"${BOTACL}" && return 0 grep -F -xq "${acl}:*:*" <"${BOTACL}" && return 0
[ "$2" != "" ] && acl="${acl}:$2" [ "$2" != "" ] && acl="${acl}:$2"
grep -F -xq "${acl}:*" <"${BOTACL}" && return 0 grep -F -xq "${acl}:*" <"${BOTACL}" && return 0
@ -426,24 +426,24 @@ send_file() {
# typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_audio or upload_audio for audio files, upload_document for general files, find_location for location # typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_audio or upload_audio for audio files, upload_document for general files, find_location for location
send_action() { send_action() {
[ "$2" == "" ] && return [ "$2" = "" ] && return
res="$(curl -s "$ACTION_URL" -F "chat_id=$1" -F "action=$2")" res="$(curl -s "$ACTION_URL" -F "chat_id=$1" -F "action=$2")"
} }
send_location() { send_location() {
[ "$3" == "" ] && return [ "$3" = "" ] && return
res="$(curl -s "$LOCATION_URL" -F "chat_id=$1" -F "latitude=$2" -F "longitude=$3")" res="$(curl -s "$LOCATION_URL" -F "chat_id=$1" -F "latitude=$2" -F "longitude=$3")"
} }
send_venue() { send_venue() {
[ "$5" == "" ] && return [ "$5" = "" ] && return
[ "$6" != "" ] add="-F \"foursquare_id=$6\"" [ "$6" != "" ] add="-F \"foursquare_id=$6\""
res="$(curl -s "$VENUE_URL" -F "chat_id=$1" -F "latitude=$2" -F "longitude=$3" -F "title=$4" -F "address=$5")" res="$(curl -s "$VENUE_URL" -F "chat_id=$1" -F "latitude=$2" -F "longitude=$3" -F "title=$4" -F "address=$5")"
} }
forward() { forward() {
[ "$3" == "" ] && return [ "$3" = "" ] && return
res="$(curl -s "$FORWARD_URL" -F "chat_id=$1" -F "from_chat_id=$2" -F "message_id=$3")" res="$(curl -s "$FORWARD_URL" -F "chat_id=$1" -F "from_chat_id=$2" -F "message_id=$3")"
} }
@ -487,7 +487,7 @@ inproc() {
process_updates() { process_updates() {
MAX_PROCESS_NUMBER=$(echo "$UPDATE" | sed '/\["result",[0-9]*\]/!d' | tail -1 | sed 's/\["result",//g;s/\].*//g') MAX_PROCESS_NUMBER=$(echo "$UPDATE" | sed '/\["result",[0-9]*\]/!d' | tail -1 | sed 's/\["result",//g;s/\].*//g')
for ((PROCESS_NUMBER=0; PROCESS_NUMBER<=MAX_PROCESS_NUMBER; PROCESS_NUMBER++)); do for ((PROCESS_NUMBER=0; PROCESS_NUMBER<=MAX_PROCESS_NUMBER; PROCESS_NUMBER++)); do
if [ "$1" == "test" ]; then if [ "$1" = "test" ]; then
process_client "$1" process_client "$1"
else else
process_client "$1" & process_client "$1" &
@ -575,7 +575,7 @@ process_client() {
} }
# source the script with source as param to use functions in other scripts # source the script with source as param to use functions in other scripts
while [ "$1" == "startbot" ]; do { while [ "$1" = "startbot" ]; do {
UPDATE="$(curl -s "$UPD_URL$OFFSET" | ./JSON.sh/JSON.sh)" UPDATE="$(curl -s "$UPD_URL$OFFSET" | ./JSON.sh/JSON.sh)"
@ -584,7 +584,7 @@ while [ "$1" == "startbot" ]; do {
OFFSET=$((OFFSET+1)) OFFSET=$((OFFSET+1))
if [ "$OFFSET" != "1" ]; then if [ "$OFFSET" != "1" ]; then
if [ "$2" == "test" ]; then if [ "$2" = "test" ]; then
process_updates "$2" process_updates "$2"
else else
process_updates "$2" & process_updates "$2" &
@ -646,7 +646,7 @@ case "$1" in
${CLEAR} ${CLEAR}
echo -e "${GREEN}Restart background processes ...${NC}" echo -e "${GREEN}Restart background processes ...${NC}"
for FILE in "${TMPDIR:-.}/"*-back.cmd; do for FILE in "${TMPDIR:-.}/"*-back.cmd; do
if [ "${FILE}" == "${TMPDIR:-.}/*-back.cmd" ]; then if [ "${FILE}" = "${TMPDIR:-.}/*-back.cmd" ]; then
echo -e "${RED}No background processes to start.${NC}"; break echo -e "${RED}No background processes to start.${NC}"; break
else else
RESTART="$(< "${FILE}")" RESTART="$(< "${FILE}")"
@ -673,14 +673,14 @@ case "$1" in
${CLEAR} ${CLEAR}
echo -e "${GREEN}Stopping background processes ...${NC}" echo -e "${GREEN}Stopping background processes ...${NC}"
for FILE in "${TMPDIR:-.}/"*-back.cmd; do for FILE in "${TMPDIR:-.}/"*-back.cmd; do
if [ "${FILE}" == "${TMPDIR:-.}/*-back.cmd" ]; then if [ "${FILE}" = "${TMPDIR:-.}/*-back.cmd" ]; then
echo -e "${RED}No background processes.${NC}"; break echo -e "${RED}No background processes.${NC}"; break
else else
REMOVE="$(< "${FILE}")" REMOVE="$(< "${FILE}")"
JOB="${REMOVE#*:}" JOB="${REMOVE#*:}"
fifo="back-${JOB%:*}-${ME}_${REMOVE%%:*}" fifo="back-${JOB%:*}-${ME}_${REMOVE%%:*}"
echo "killbackground ${fifo}" echo "killbackground ${fifo}"
[ "$1" == "killback" ] && rm -f "${FILE}" # remove job [ "$1" = "killback" ] && rm -f "${FILE}" # remove job
( tmux kill-session -t "${fifo}"; tmux kill-session -t "sendprocess_${fifo}"; rm -f -r "${TMPDIR:-.}/${fifo}") 2>/dev/null ( tmux kill-session -t "${fifo}"; tmux kill-session -t "sendprocess_${fifo}"; rm -f -r "${TMPDIR:-.}/${fifo}") 2>/dev/null
fi fi
done done