#!/bin/bash # convert https://us02web.zoom.us/j/1111111?pwd=xxxxxxxx (the URI you # usually get) # # into zoommtg://zoom.us/join?confno=1111111&pwd=xxxxxxxx (the URI # that the zoom client actually wants) munge-zoom-uri() { local uri="$1" if [[ $uri =~ ^zoommtg://[^/]+/join ]]; then echo "$uri" return fi if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/j/([0-9]+)$ ]]; then echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}" return fi if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/j/([0-9]+)\?pwd=(.+)$ ]]; then echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}" return fi if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/w/([0-9]+)\?pwd=(.+)$ ]]; then echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}" return fi if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/my/([a-zA-Z0-9]+)\?pwd=(.+)$ ]]; then echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}" return fi >&2 echo "can't parse <$uri>, ignoring"; return } declare -a args if [[ -n "$1" ]]; then args+=("$(munge-zoom-uri "$1")") fi exec /opt/zoom/ZoomLauncher "${args[@]}"