#!/bin/bash # # License type: BSD 3-Clause License # License copy: https://github.com/Telecominfraproject/wlan-cloud-tools/blob/master/LICENSE # # Created by Stephane Bourque on 2022-08-04. # Arilia Wireless Inc. # if [[ "$(which jq)" == "" ]] then echo "You need the package jq installed to use this script." exit 1 fi if [[ "$(which curl)" == "" ]] then echo "You need the package curl installed to use this script." exit 1 fi if [[ "${OWSEC}" == "" ]] then echo "You must set the variable OWSEC in order to use this script. Something like" echo "OWSEC=security.isp.com:16001" exit 1 fi if [[ "${FLAGS}" == "" ]] then FLAGS="-s" fi target_microservice=ow_helloworld token="" result_file=result.json #username="script.runner@arilia.com" #password="RunningScript100#" browser_list=(firefox sensible-browser xdg-open w3m links links2 lynx youtube-dl) browser="" login() { payload="{ \"userId\" : \"$username\" , \"password\" : \"$password\" }" token=$(curl ${FLAGS} -X POST -H "Content-Type: application/json" -d "$payload" "https://${OWSEC}/api/v1/oauth2" | jq -r '.access_token') if [[ "${token}" == "" ]] then echo "Could not login. Please verify the host and username/password." exit 13 fi echo "${token}" > token.json setservicevar } findbrowser() { if [[ "${browser}" != "" ]] then echo elif [[ "$(uname)" == "Darwin" ]] then browser=open else BROWSER_LIST=(firefox sensible-browser xdg-open w3m links links2 lynx youtube-dl) for br_name in "${browser_list[@]}" do if [[ $(which ${br_name}) != "" ]] then browser=${br_name} break fi done fi } setservicevar() { curl ${FLAGS} -X GET "https://${OWSEC}/api/v1/systemEndpoints" \ -H "accept: application/json" \ -H "Authorization: Bearer ${token}" > ${result_file} # jq < ${result_file} for index in {0..10} do endpointlocation=".endpoints[${index}].uri" endpointlocationtype=".endpoints[${index}].type" rawurl="$(cat ${result_file} | jq -r ${endpointlocation})" svctype="$(cat ${result_file} | jq -r ${endpointlocationtype})" proto="$(echo $rawurl | grep :// | sed -e's,^\(.*://\).*,\1,g')" url="$(echo ${rawurl/$proto/})" user="$(echo $url | grep @ | cut -d@ -f1)" hostport="$(echo ${url/$user@/} | cut -d/ -f1)" host="$(echo $hostport | sed -e 's,:.*,,g')" port="$(echo $hostport | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')" path="$(echo $url | grep / | cut -d/ -f2-)" if [[ ${url} != "null" ]] then if [[ ${svctype} == "${target_microservice}" ]] then # echo "url: $url" # echo " proto: $proto" # echo " user: $user" # echo " host: $host" # echo " port: $port" # echo " path: $path" OWMS="${url}" break fi fi done # echo "Using ${OWMS}..." } logout() { curl ${FLAGS} -X DELETE -H "Content-Type: application/json" \ -H "Authorization: Bearer ${token}" \ "https://${OWSEC}/api/v1/oauth2/${token}" rm -rf token.json } hello() { curl ${FLAGS} -X GET --url "https://${OWMS}/api/v1/hello" \ -H "accept: application/json" \ -H "Authorization: Bearer ${token}" > ${result_file} jq < ${result_file} } systeminfo() { curl ${FLAGS} -X GET "https://${OWMS}/api/v1/system?command=info" \ -H "accept: application/json" \ -H "Authorization: Bearer ${token}" > ${result_file} jq < ${result_file} } reloadsubsystem() { payload="{ \"command\" : \"reload\", \"subsystems\" : [ \"$1\" ] }" curl ${FLAGS} -X POST "https://${OWMS}/api/v1/system" \ -H "accept: application/json" \ -H "Authorization: Bearer ${token}" \ -d "$payload" } help() { echo echo "hello Get the device JSON document." echo "setloglevel Set the logging system level for individual subsystems." echo " sys:ufileuploader/websocket/storage/restapi/commandmanager/auth/deviceregistry/all" echo " level:none/fatal/critical/error/warning/notice/information/debug/trace" echo "getloglevels Get the log levels of all the subsystems" echo "getloglevelnames Get the list of log level names possible" echo "getsubsystemnames Get the subsystems that can be used when setting log levels." echo echo } shopt -s nocasematch case "$1" in "findbrowser") findbrowser; echo "Browser: ${browser}" ;; "setloglevel") login; setloglevel "$2" "$3" ; logout ;; "getloglevels") login; getloglevels; logout ;; "getloglevelnames") login; getloglevelnames; logout ;; "getsubsystemnames") login; getsubsystemnames; logout ;; "reloadsubsystem") login; reloadsubsystem; logout ;; "systeminfo") login; systeminfo ; logout;; "hello") login; hello ; logout;; *) help ;; esac