| 1 | set -e |
| 2 | ROOT="$(cd "$(dirname "$0")/.." && pwd)" |
| 3 | mkdir -p "$ROOT/.native/logs" "$ROOT/.native/pids" |
| 4 | |
| 5 | probe() { |
| 6 | local port="$1" |
| 7 | curl -s -o /dev/null -w "%{http_code}" -X POST "http://localhost:$port/verify" \ |
| 8 | -H 'Content-Type: application/json' -d '{"token":"","key":"","algs":[]}' \ |
| 9 | --max-time 2 |
| 10 | } |
| 11 | |
| 12 | start() { |
| 13 | local name="$1" port="$2" cmd="$3" cwd="$4" |
| 14 | local pidf="$ROOT/.native/pids/$name.pid" |
| 15 | local logf="$ROOT/.native/logs/$name.log" |
| 16 | |
| 17 | if [[ -f "$pidf" ]] && kill -0 "$(cat "$pidf")" 2>/dev/null; then |
| 18 | echo " ? $name already running (pid $(cat "$pidf"))" |
| 19 | return |
| 20 | fi |
| 21 | |
| 22 | ( cd "$cwd" && nohup bash -c "$cmd" >"$logf" 2>&1 & echo $! > "$pidf" ) |
| 23 | |
| 24 | for _ in 1 2 3 4 5; do |
| 25 | sleep 0.4 |
| 26 | if [[ "$(probe "$port")" == "200" ]]; then |
| 27 | echo " ok $name :$port pid=$(cat "$pidf")" |
| 28 | return |
| 29 | fi |
| 30 | done |
| 31 | echo " XX $name :$port - see $logf" |
| 32 | } |
| 33 | |
| 34 | start nodejwt 7001 "node server.js" "$ROOT/.native/nodejwt" |
| 35 | start pyjwt 7002 "python3 server.py" "$ROOT/targets/pyjwt" |
| 36 | start pyjose 7003 "python3 server.py" "$ROOT/targets/python-jose" |
| 37 | start panva 7004 "node server.js" "$ROOT/.native/panva" |