diff --git a/executor.sh b/executor.sh index a2995cf..12cbe41 100755 --- a/executor.sh +++ b/executor.sh @@ -26,43 +26,43 @@ mkdir -p -m 700 access_granted generator_session=$(zcat -f $system_dict | shuf -n 2 | tr -d "\n'") randpadding=$(head -c 8 /dev/urandom | base64) printf "$randpadding\t$generator_session\n" -cat - | - while read -r cmd mesg; do - if [ "$cmd" = "reg" ]; then - key=$(echo "$mesg" | cut -d' ' -f 2) - session=$(echo "$mesg" | cut -d' ' -f 1) - if [ "$session" = "$generator_session" ] && [ "$key" = "$pass_for_bbs" ]; then - touch access_granted/"$remote_ip" - echo hi $remote_ip - else - die - break - fi - fi - if [ ! -f access_granted/"$remote_ip" ]; then # Drop unregistred handshake + +while read -r cmd mesg; do + if [ "$cmd" = "reg" ]; then + key=$(echo "$mesg" | cut -d' ' -f 2) + session=$(echo "$mesg" | cut -d' ' -f 1) + if [ "$session" = "$generator_session" ] && [ "$key" = "$pass_for_bbs" ]; then + touch access_granted/"$remote_ip" + echo hi $remote_ip + else die break fi - # --- - case $cmd in - "post") toot "$mesg" | jq '.id, .errors' ;; - "reply") - reply_id=$(echo "$mesg" | cut -d' ' -f 1) - status=$(echo "$mesg" | cut -d' ' -f 2-) - reply=$reply_id toot "$status" | jq '.id, .errors' - reply='' - ;; - "home") timeline_home "$mesg" ;; - "reg") printf 'bbs > '; continue ;; - "x") - case $mesg in - "http"*) w3m -dump -T text/html -cols 34 -o 'display_link_number=1' "$mesg" ;; - *) echo 'only http(s)' ;; - esac - ;; - *) die; break ;; - esac - printf 'bbs > ' - done + fi + if [ ! -f access_granted/"$remote_ip" ]; then # Drop unregistred handshake + die + break + fi + # --- + case $cmd in + "post") toot "$mesg" | jq '.id, .errors' ;; + "reply") + reply_id=$(echo "$mesg" | cut -d' ' -f 1) + status=$(echo "$mesg" | cut -d' ' -f 2-) + reply=$reply_id toot "$status" | jq '.id, .errors' + reply='' + ;; + "home") timeline_home "$mesg" ;; + "reg") printf 'bbs > '; continue ;; + "x") + case $mesg in + "http"*) w3m -dump -T text/html -cols 34 -o 'display_link_number=1' "$mesg" ;; + *) echo 'only http(s)' ;; + esac + ;; + *) die; break ;; + esac + printf 'bbs > ' +done rm access_granted/"$remote_ip" echo 'session was close'