diff --git a/poc/bin/kapow b/poc/bin/kapow index f9073e7..73ffc3b 100755 --- a/poc/bin/kapow +++ b/poc/bin/kapow @@ -595,5 +595,38 @@ def route_list(route_id, url): print(json.dumps(response.json(), indent=2)) +@kapow.command("set") +@click.option("--url", envvar='KAPOW_URL') +@click.option("--handler-id", envvar='KAPOW_HANDLER_ID') +@click.argument("path", nargs=1) +@click.argument("value", required=False) +def kapow_set(url, handler_id, path, value): + if value is None: + data = sys.stdin.buffer + else: + data = value.encode('utf-8') + + try: + response = requests.put(f"{url}/handlers/{handler_id}{path}", + data=data) + except requests.exceptions.ConnectionError: + return False + else: + response.raise_for_status() + + +@kapow.command("get") +@click.option("--url", envvar='KAPOW_URL') +@click.option("--handler-id", envvar='KAPOW_HANDLER_ID') +@click.argument("path", nargs=1) +def kapow_get(url, handler_id, path): + try: + response = requests.get(f"{url}/handlers/{handler_id}{path}") + response.raise_for_status() + except requests.exceptions.ConnectionError: + return False + else: + print(response.text) + if __name__ == '__main__': kapow() diff --git a/poc/bin/request b/poc/bin/request deleted file mode 100755 index 0ebf854..0000000 --- a/poc/bin/request +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# -# Copyright 2019 Banco Bilbao Vizcaya Argentaria, S.A. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -curl -sf "${KAPOW_URL}/handlers/${KAPOW_HANDLER_ID}/request$1" diff --git a/poc/bin/response b/poc/bin/response deleted file mode 100755 index 75dc091..0000000 --- a/poc/bin/response +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python - -# -# Copyright 2019 Banco Bilbao Vizcaya Argentaria, S.A. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import sys - -import click -import requests - - -@click.command() -@click.option("--url", envvar='KAPOW_URL') -@click.option("--handler-id", envvar='KAPOW_HANDLER_ID') -@click.argument("path", nargs=1) -@click.argument("value", required=False) -def response(url, handler_id, path, value): - if value is None: - data = sys.stdin.buffer - else: - data = value.encode('utf-8') - - try: - response = requests.put(f"{url}/handlers/{handler_id}/response{path}", - data=data) - except requests.exceptions.ConnectionError: - return False - else: - response.raise_for_status() - - -if __name__ == '__main__': - response() diff --git a/poc/examples/eval.pow b/poc/examples/eval.pow index 209be5d..acc18bd 100755 --- a/poc/examples/eval.pow +++ b/poc/examples/eval.pow @@ -16,4 +16,4 @@ # limitations under the License. # -kapow route add -X POST '/eval' -c '$($(request /body) | response /stream)' +kapow route add -X POST '/eval' -c '$($(kapow get /request/body) | kapow set /response/stream)' diff --git a/poc/examples/nmap/nmap.pow b/poc/examples/nmap/nmap.pow index e68eb4c..37ec075 100755 --- a/poc/examples/nmap/nmap.pow +++ b/poc/examples/nmap/nmap.pow @@ -16,4 +16,4 @@ # limitations under the License. # -kapow route add -X GET '/list/{ip}' -c 'nmap -sL $(request /matches/ip) | response /body' +kapow route add -X GET '/list/{ip}' -c 'nmap -sL $(kapow get /request/matches/ip) | kapow set /response/body' diff --git a/poc/examples/operator.pow b/poc/examples/operator.pow index 6be8194..27bca22 100755 --- a/poc/examples/operator.pow +++ b/poc/examples/operator.pow @@ -16,26 +16,26 @@ # limitations under the License. # -kapow route add /list/files -c 'ls -la $(request /params/path) | response /body' +kapow route add /list/files -c 'ls -la $(kapow get /request/params/path) | kapow set /response/body' -kapow route add /list/processes -c 'ps -aux | response /body' +kapow route add /list/processes -c 'ps -aux | kapow set /response/body' -kapow route add /show/cpuinfo -c 'response /body < /proc/cpuinfo' +kapow route add /show/cpuinfo -c 'kapow set /response/body < /proc/cpuinfo' -kapow route add /show/memory -c 'free -m | response /body' +kapow route add /show/memory -c 'free -m | kapow set /response/body' -kapow route add /show/disk -c 'df -h | response /body' +kapow route add /show/disk -c 'df -h | kapow set /response/body' -kapow route add /show/connections -c 'ss -pluton | response /body' +kapow route add /show/connections -c 'ss -pluton | kapow set /response/body' -kapow route add /show/mounts -c 'mount | response /body' +kapow route add /show/mounts -c 'mount | kapow set /response/body' kapow route add /tail/dmesg - <<-'EOF' - response /headers/Content-Type text/plain - dmesg -w | response /stream + kapow set /response/headers/Content-Type text/plain + dmesg -w | kapow set /response/stream EOF kapow route add /tail/journal - <<-'EOF' - response /headers/Content-Type text/plain - journalctl -f | response /stream + kapow set /response/headers/Content-Type text/plain + journalctl -f | kapow set /response/stream EOF diff --git a/poc/examples/pandoc/pandoc.pow b/poc/examples/pandoc/pandoc.pow index 22af342..fb245c5 100755 --- a/poc/examples/pandoc/pandoc.pow +++ b/poc/examples/pandoc/pandoc.pow @@ -17,10 +17,10 @@ # kapow route add -X POST --entrypoint '/bin/zsh -c' '/convert/{from}/{to}' - <<-'EOF' - pandoc --from=$(request /matches/from) \ - --to=$(request /matches/to) \ - --output=>(response /body) \ - =(request /body) + pandoc --from=$(kapow get /request/matches/from) \ + --to=$(kapow get /request/matches/to) \ + --output=>(kapow set /response/body) \ + =(kapow get /request/body) EOF -kapow route add -X GET '/formats/input' -c 'pandoc --list-input-formats | response /body' -kapow route add -X GET '/formats/output' -c 'pandoc --list-output-formats | grep -v pdf | response /body' +kapow route add -X GET '/formats/input' -c 'pandoc --list-input-formats | kapow set /response/body' +kapow route add -X GET '/formats/output' -c 'pandoc --list-output-formats | grep -v pdf | kapow set /response/body' diff --git a/poc/examples/pdfeditor/pdfeditor.pow b/poc/examples/pdfeditor/pdfeditor.pow index 00db1da..06eb815 100755 --- a/poc/examples/pdfeditor/pdfeditor.pow +++ b/poc/examples/pdfeditor/pdfeditor.pow @@ -17,4 +17,4 @@ # kapow route add -X POST --entrypoint ./topdf '/editor/pdf' -kapow route add / -c 'response /headers/Content-Type text/html && response /body < pdfeditor.html' +kapow route add / -c 'kapow set /response/headers/Content-Type text/html && kapow set /response/body < pdfeditor.html' diff --git a/poc/examples/pdfeditor/topdf b/poc/examples/pdfeditor/topdf index d05b2dc..8e2dddc 100755 --- a/poc/examples/pdfeditor/topdf +++ b/poc/examples/pdfeditor/topdf @@ -17,12 +17,12 @@ # tmpfile=$(mktemp --suffix=.pdf) -pandoc --from=$(request /form/from) --to=pdf --output=${tmpfile} -t latex =(request /form/content) +pandoc --from=$(kapow get /request/form/from) --to=pdf --output=${tmpfile} -t latex =(kapow get /request/form/content) if [ $? -eq 0 ]; then - response /headers/Content-Type application/pdf - response /body < ${tmpfile} - response /status 200 + kapow set /response/headers/Content-Type application/pdf + kapow set /response/body < ${tmpfile} + kapow set /response/status 200 else - response /status 500 + kapow set /response/status 500 fi rm -f ${tmpfile} diff --git a/poc/examples/torrent.pow b/poc/examples/torrent.pow index c58ff45..ee31e7d 100755 --- a/poc/examples/torrent.pow +++ b/poc/examples/torrent.pow @@ -17,8 +17,8 @@ # kapow route add / - <<-'EOF' - response /headers/Content-Type text/html - response /body <<-HTML + kapow set /response/headers/Content-Type text/html + kapow set /response/body <<-HTML Add me to your bookmarks! @@ -28,16 +28,16 @@ kapow route add / - <<-'EOF' EOF kapow route add /save/magnet -e '/bin/bash -c' - <<-'EOF' - link=$(request /params/link) - [ -z $link ] && response /status 400 && exit 0 + link=$(kapow get /request/params/link) + [ -z $link ] && kapow set /response/status 400 && exit 0 watch_folder=/tmp cd $watch_folder [[ "$link" =~ xt=urn:btih:([^&/]+) ]] || exit; echo "d10:magnet-uri${#link}:${link}e" > "meta-${BASH_REMATCH[1]}.torrent" - response /status 302 - response /headers/Location /torrent/list + kapow set /response/status 302 + kapow set /response/headers/Location /torrent/list EOF -kapow route add /torrent/list -c 'response /body "Not Implemented Yet"' +kapow route add /torrent/list -c 'kapow set /response/body "Not Implemented Yet"'