#!/bin/bash # # This is a nsh script compatible wrapper written uin bash + curl # Status: Prototype # # It is supposed to be fully compatible inside script. # # Not working: long option format ex: --clientid exec_curl() { local server=$1 local method=$2 shift 2 # -k disable SSL validation h2-master cert seems invalid # curl: (60) SSL certificate problem: unable to get local issuer certificate # was a bad certif on h2-master, changed by Rene. local curlcmd="curl -k -s -H 'Expect:' -F \"apikey=$H2_APIKEY\"" local a v curl_arg local i=1 local argc=$# while [[ $i -le $argc ]] do # this is index syntax for $@[i] a=${@:i:1} # remove dash -a => a a=${a#-} v=${@:i+1:1} if [[ -n $v ]] ; then curl_arg="-F '$a=$v'" elif [[ -z $v && $a == 'h' ]] ; then # help force bool true # https://gitlab.infomaniak.ch/production/h2-daemon-core/blob/master/nsh/cmdline.c#L62 curl_arg="-F '$a=1'" else curl_arg="-F '$a'" fi if [[ $v == '-' ]]; then # file curl_arg="-F '$a=@-; filename=$a'" stdin=1 fi curlcmd+=" $curl_arg" i=$((i + 2)) done #local url="https://$server.infomaniak.ch:888/$method" if [ -z $NSH_PORT ]; then NSH_PORT=888 fi if [ -z $NSH_HTTP ]; then NSH_PROTO=https else NSH_PROTO=http fi local url="$NSH_PROTO://$server:$NSH_PORT/$method" curlcmd+=" $url" if [[ -d ~/tmp/ ]]; then # debug logging echo "$(date "+%y%m%d_%H%M%S") $curlcmd" >> ~/tmp/nsh.log fi eval "$curlcmd" } exec_curl "$@"