diff --git a/package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin b/package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin index a1426962..652b06a2 100644 --- a/package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin +++ b/package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin @@ -13,65 +13,59 @@ get_sab_api() { grep "^api_key" "$SAB_CONFIG" 2>/dev/null | cut -d'=' -f2 | tr -d ' ' } -case "$1" in - list) - echo '{"status":{},"queue":{},"history":{},"search":{"query":"string"},"add_nzb":{"url":"string","category":"string"},"pause":{},"resume":{},"remove":{"nzo_id":"string"},"config":{}}' - ;; - call) - case "$2" in - status) - json_init +do_status() { + json_init - # SABnzbd status - local sab_running="false" - local sab_speed="0" - local sab_queue="0" - local sab_disk="0" + # SABnzbd status + sab_running=0 + sab_speed="0" + sab_queue="0" + sab_disk="0" - if lxc-info -n sabnzbd 2>/dev/null | grep -q "RUNNING"; then - sab_running="true" - local api_key=$(get_sab_api) - if [ -n "$api_key" ]; then - local sab_data=$(curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&output=json&apikey=$api_key" 2>/dev/null) - if [ -n "$sab_data" ]; then - sab_speed=$(echo "$sab_data" | jsonfilter -e '@.queue.speed' 2>/dev/null || echo "0") - sab_queue=$(echo "$sab_data" | jsonfilter -e '@.queue.noofslots' 2>/dev/null || echo "0") - sab_disk=$(echo "$sab_data" | jsonfilter -e '@.queue.diskspace1' 2>/dev/null || echo "0") - fi - fi - fi + if /usr/bin/lxc-info -n sabnzbd 2>/dev/null | grep -q "RUNNING"; then + sab_running=1 + api_key=$(get_sab_api) + if [ -n "$api_key" ]; then + sab_data=$(/usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&output=json&apikey=$api_key" 2>/dev/null) + if [ -n "$sab_data" ]; then + sab_speed=$(echo "$sab_data" | jsonfilter -e '@.queue.speed' 2>/dev/null || echo "0") + sab_queue=$(echo "$sab_data" | jsonfilter -e '@.queue.noofslots' 2>/dev/null || echo "0") + sab_disk=$(echo "$sab_data" | jsonfilter -e '@.queue.diskspace1' 2>/dev/null || echo "0") + fi + fi + fi - # NZBHydra status - local hydra_running="false" - if lxc-info -n nzbhydra 2>/dev/null | grep -q "RUNNING"; then - hydra_running="true" - fi + # NZBHydra status + hydra_running=0 + if /usr/bin/lxc-info -n nzbhydra 2>/dev/null | grep -q "RUNNING"; then + hydra_running=1 + fi - json_add_object "sabnzbd" - json_add_boolean "running" "$sab_running" - json_add_string "speed" "$sab_speed" - json_add_int "queue_size" "$sab_queue" - json_add_string "disk_free" "$sab_disk" - json_add_string "url" "http://$SAB_IP:$SAB_PORT/" - json_close_object + json_add_object "sabnzbd" + json_add_boolean "running" "$sab_running" + json_add_string "speed" "$sab_speed" + json_add_int "queue_size" "$sab_queue" + json_add_string "disk_free" "$sab_disk" + json_add_string "url" "http://$SAB_IP:$SAB_PORT/" + json_close_object - json_add_object "nzbhydra" - json_add_boolean "running" "$hydra_running" - json_add_string "url" "http://$HYDRA_IP:$HYDRA_PORT/" - json_close_object + json_add_object "nzbhydra" + json_add_boolean "running" "$hydra_running" + json_add_string "url" "http://$HYDRA_IP:$HYDRA_PORT/" + json_close_object - json_dump - ;; + json_dump +} - queue) - json_init - json_add_array "items" +do_queue() { + json_init + json_add_array "items" - local api_key=$(get_sab_api) - if [ -n "$api_key" ]; then - local queue_data=$(curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&output=json&apikey=$api_key" 2>/dev/null) - if [ -n "$queue_data" ]; then - echo "$queue_data" | python3 -c " + api_key=$(get_sab_api) + if [ -n "$api_key" ]; then + queue_data=$(/usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&output=json&apikey=$api_key" 2>/dev/null) + if [ -n "$queue_data" ]; then + echo "$queue_data" | python3 -c " import sys, json try: data = json.load(sys.stdin) @@ -87,40 +81,37 @@ try: except: pass " 2>/dev/null | while read item; do - echo "$item" | { - read line - json_add_object "" - local nzo_id=$(echo "$line" | jsonfilter -e '@.nzo_id') - local filename=$(echo "$line" | jsonfilter -e '@.filename') - local size=$(echo "$line" | jsonfilter -e '@.size') - local percentage=$(echo "$line" | jsonfilter -e '@.percentage') - local status=$(echo "$line" | jsonfilter -e '@.status') - local timeleft=$(echo "$line" | jsonfilter -e '@.timeleft') - json_add_string "nzo_id" "$nzo_id" - json_add_string "filename" "$filename" - json_add_string "size" "$size" - json_add_string "percentage" "$percentage" - json_add_string "status" "$status" - json_add_string "timeleft" "$timeleft" - json_close_object - } - done - fi - fi + json_add_object "" + nzo_id=$(echo "$item" | jsonfilter -e '@.nzo_id') + filename=$(echo "$item" | jsonfilter -e '@.filename') + size=$(echo "$item" | jsonfilter -e '@.size') + percentage=$(echo "$item" | jsonfilter -e '@.percentage') + status=$(echo "$item" | jsonfilter -e '@.status') + timeleft=$(echo "$item" | jsonfilter -e '@.timeleft') + json_add_string "nzo_id" "$nzo_id" + json_add_string "filename" "$filename" + json_add_string "size" "$size" + json_add_string "percentage" "$percentage" + json_add_string "status" "$status" + json_add_string "timeleft" "$timeleft" + json_close_object + done + fi + fi - json_close_array - json_dump - ;; + json_close_array + json_dump +} - history) - json_init - json_add_array "items" +do_history() { + json_init + json_add_array "items" - local api_key=$(get_sab_api) - if [ -n "$api_key" ]; then - local hist_data=$(curl -s "http://$SAB_IP:$SAB_PORT/api?mode=history&limit=20&output=json&apikey=$api_key" 2>/dev/null) - if [ -n "$hist_data" ]; then - echo "$hist_data" | python3 -c " + api_key=$(get_sab_api) + if [ -n "$api_key" ]; then + hist_data=$(/usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=history&limit=20&output=json&apikey=$api_key" 2>/dev/null) + if [ -n "$hist_data" ]; then + echo "$hist_data" | python3 -c " import sys, json try: data = json.load(sys.stdin) @@ -135,41 +126,38 @@ try: except: pass " 2>/dev/null | while read item; do - echo "$item" | { - read line - json_add_object "" - local nzo_id=$(echo "$line" | jsonfilter -e '@.nzo_id') - local name=$(echo "$line" | jsonfilter -e '@.name') - local size=$(echo "$line" | jsonfilter -e '@.size') - local status=$(echo "$line" | jsonfilter -e '@.status') - json_add_string "nzo_id" "$nzo_id" - json_add_string "name" "$name" - json_add_string "size" "$size" - json_add_string "status" "$status" - json_close_object - } - done - fi - fi + json_add_object "" + nzo_id=$(echo "$item" | jsonfilter -e '@.nzo_id') + name=$(echo "$item" | jsonfilter -e '@.name') + size=$(echo "$item" | jsonfilter -e '@.size') + status=$(echo "$item" | jsonfilter -e '@.status') + json_add_string "nzo_id" "$nzo_id" + json_add_string "name" "$name" + json_add_string "size" "$size" + json_add_string "status" "$status" + json_close_object + done + fi + fi - json_close_array - json_dump - ;; + json_close_array + json_dump +} - search) - read -r input - json_load "$input" - json_get_var query query +do_search() { + read -r input + json_load "$input" + json_get_var query query - json_init - json_add_array "results" + json_init + json_add_array "results" - if [ -n "$query" ]; then - local search_url="http://$HYDRA_IP:$HYDRA_PORT/api?t=search&q=$(echo "$query" | sed 's/ /%20/g')" - local result=$(curl -s "$search_url" 2>/dev/null) + if [ -n "$query" ]; then + search_url="http://$HYDRA_IP:$HYDRA_PORT/api?t=search&q=$(echo "$query" | sed 's/ /%20/g')" + result=$(/usr/bin/curl -s "$search_url" 2>/dev/null) - if [ -n "$result" ]; then - echo "$result" | python3 -c " + if [ -n "$result" ]; then + echo "$result" | python3 -c " import sys, xml.etree.ElementTree as ET, json xml = sys.stdin.read() try: @@ -182,106 +170,116 @@ try: except: pass " 2>/dev/null | while read item; do - echo "$item" | { - read line - json_add_object "" - local title=$(echo "$line" | jsonfilter -e '@.title') - local link=$(echo "$line" | jsonfilter -e '@.link') - local size=$(echo "$line" | jsonfilter -e '@.size') - json_add_string "title" "$title" - json_add_string "link" "$link" - json_add_int "size" "$size" - json_close_object - } - done - fi - fi + json_add_object "" + title=$(echo "$item" | jsonfilter -e '@.title') + link=$(echo "$item" | jsonfilter -e '@.link') + size=$(echo "$item" | jsonfilter -e '@.size') + json_add_string "title" "$title" + json_add_string "link" "$link" + json_add_int "size" "$size" + json_close_object + done + fi + fi - json_close_array - json_dump - ;; + json_close_array + json_dump +} - add_nzb) - read -r input - json_load "$input" - json_get_var url url - json_get_var category category +do_add_nzb() { + read -r input + json_load "$input" + json_get_var url url + json_get_var category category - json_init + json_init - if [ -z "$url" ]; then - json_add_boolean "success" 0 - json_add_string "error" "URL required" - else - local api_key=$(get_sab_api) - local add_url="http://$SAB_IP:$SAB_PORT/api?mode=addurl&name=$(echo "$url" | sed 's/&/%26/g')&apikey=$api_key" - [ -n "$category" ] && add_url="$add_url&cat=$category" + if [ -z "$url" ]; then + json_add_boolean "success" 0 + json_add_string "error" "URL required" + else + api_key=$(get_sab_api) + add_url="http://$SAB_IP:$SAB_PORT/api?mode=addurl&name=$(echo "$url" | sed 's/&/%26/g')&apikey=$api_key" + [ -n "$category" ] && add_url="$add_url&cat=$category" - local result=$(curl -s "$add_url" 2>/dev/null) - if echo "$result" | grep -q "ok"; then - json_add_boolean "success" 1 - json_add_string "message" "NZB added to queue" - else - json_add_boolean "success" 0 - json_add_string "error" "Failed to add NZB" - fi - fi + result=$(/usr/bin/curl -s "$add_url" 2>/dev/null) + if echo "$result" | grep -q "ok"; then + json_add_boolean "success" 1 + json_add_string "message" "NZB added to queue" + else + json_add_boolean "success" 0 + json_add_string "error" "Failed to add NZB" + fi + fi - json_dump - ;; + json_dump +} - pause) - local api_key=$(get_sab_api) - curl -s "http://$SAB_IP:$SAB_PORT/api?mode=pause&apikey=$api_key" >/dev/null 2>&1 - json_init - json_add_boolean "success" 1 - json_dump - ;; +do_pause() { + api_key=$(get_sab_api) + /usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=pause&apikey=$api_key" >/dev/null 2>&1 + json_init + json_add_boolean "success" 1 + json_dump +} - resume) - local api_key=$(get_sab_api) - curl -s "http://$SAB_IP:$SAB_PORT/api?mode=resume&apikey=$api_key" >/dev/null 2>&1 - json_init - json_add_boolean "success" 1 - json_dump - ;; +do_resume() { + api_key=$(get_sab_api) + /usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=resume&apikey=$api_key" >/dev/null 2>&1 + json_init + json_add_boolean "success" 1 + json_dump +} - remove) - read -r input - json_load "$input" - json_get_var nzo_id nzo_id +do_remove() { + read -r input + json_load "$input" + json_get_var nzo_id nzo_id - local api_key=$(get_sab_api) - curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&name=delete&value=$nzo_id&apikey=$api_key" >/dev/null 2>&1 + api_key=$(get_sab_api) + /usr/bin/curl -s "http://$SAB_IP:$SAB_PORT/api?mode=queue&name=delete&value=$nzo_id&apikey=$api_key" >/dev/null 2>&1 - json_init - json_add_boolean "success" 1 - json_dump - ;; + json_init + json_add_boolean "success" 1 + json_dump +} - config) - json_init +do_config() { + json_init - # NNTP servers - json_add_array "servers" - for section in $(uci show sabnzbd 2>/dev/null | grep "=nntp$" | sed 's/sabnzbd\.\(.*\)=nntp/\1/'); do - json_add_object "" - json_add_string "id" "$section" - json_add_string "name" "$(uci -q get sabnzbd.$section.name)" - json_add_string "host" "$(uci -q get sabnzbd.$section.host)" - json_add_string "port" "$(uci -q get sabnzbd.$section.port)" - json_add_boolean "ssl" "$(uci -q get sabnzbd.$section.ssl)" - json_add_string "connections" "$(uci -q get sabnzbd.$section.connections)" - json_close_object - done - json_close_array + # NNTP servers + json_add_array "servers" + for section in $(uci show sabnzbd 2>/dev/null | grep "=nntp$" | sed 's/sabnzbd\.\(.*\)=nntp/\1/'); do + json_add_object "" + json_add_string "id" "$section" + json_add_string "name" "$(uci -q get sabnzbd.$section.name)" + json_add_string "host" "$(uci -q get sabnzbd.$section.host)" + json_add_string "port" "$(uci -q get sabnzbd.$section.port)" + json_add_boolean "ssl" "$(uci -q get sabnzbd.$section.ssl)" + json_add_string "connections" "$(uci -q get sabnzbd.$section.connections)" + json_close_object + done + json_close_array - json_dump - ;; + json_dump +} - *) - echo '{"error":"Unknown method"}' - ;; +case "$1" in + list) + echo '{"status":{},"queue":{},"history":{},"search":{"query":"string"},"add_nzb":{"url":"string","category":"string"},"pause":{},"resume":{},"remove":{"nzo_id":"string"},"config":{}}' + ;; + call) + case "$2" in + status) do_status ;; + queue) do_queue ;; + history) do_history ;; + search) do_search ;; + add_nzb) do_add_nzb ;; + pause) do_pause ;; + resume) do_resume ;; + remove) do_remove ;; + config) do_config ;; + *) echo '{"error":"Unknown method"}' ;; esac ;; esac