Change custom request & response commands by two kapow subcommands

This commit is contained in:
Roberto Abdelkader Martínez Pérez
2019-09-05 07:55:55 +02:00
parent ec20e02534
commit 6c65064e12
10 changed files with 65 additions and 97 deletions
+33
View File
@@ -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()
-19
View File
@@ -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"
-46
View File
@@ -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()
+1 -1
View File
@@ -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)'
+1 -1
View File
@@ -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'
+11 -11
View File
@@ -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
+6 -6
View File
@@ -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'
+1 -1
View File
@@ -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'
+5 -5
View File
@@ -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}
+7 -7
View File
@@ -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
<html>
<body>
<a href='javascript: Array.from(document.querySelectorAll("a")).filter(x => x.href.indexOf("magnet") != -1 ).map(x => x.href = "http://localhost:8080/save/magnet?link="+encodeURI(x.href))'>Add me to your bookmarks!</a>
@@ -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"'