- Notifications
You must be signed in to change notification settings - Fork2
API Client
mauricelambert edited this pageFeb 16, 2023 ·7 revisions
I developed a WebScripts client in Python with a CLI (command-line tool). I recommend using it for advanced usages.
- Get scripts, arguments and informations
- Execute scripts on WebScripts Server (simple script output +real time scriptoutput)
- Download file from WebScripts Server
- Upload file on WebScripts Server
- Send requests or reports to WebScripts Administrator
- Test the WebScripts Server
Examples are available in theREADME.md and thedocumentation (Python examples and CLI).
- WebScriptsClient on github
- WebScriptsClient on pypi
- WebScriptsClient documentation
- WebScriptsClient python executable
- WebScriptsClient Windows executable
curl -u'Admin:Admin' -H"Content-Type: application/json" -H"Origin: http://127.0.0.1:8000" -d'{"arguments":{"length":{"value":"10","input":false},"CRITICAL":{"value":true,"input":false}}}' http://127.0.0.1:8000/api/scripts/log_viewer.py
Response:
{"stdout":"<critical logs>","stderr":"","code":0,"Content-Type":"text/plain","error":"No errors"}
fromurllib.requestimporturlopen,Requestfrompprintimportpprintfromjsonimportloadsresponse=urlopen(Request("http://127.0.0.1:8000/api/scripts/view_users.py",method="POST",headers={"Api-Key":"AdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdmin","Content-Type":"application/json","Origin":"http://127.0.0.1:8000", } ))pprint(loads(response.read()))response=urlopen(Request("http://127.0.0.1:8000/api/scripts/view_users.py",method="POST",headers={"Authorization":"Basic QWRtaW46QWRtaW4=",# from base64 import b64encode; f"Basic {b64encode(b'Admin:Admin').decode()}""Content-Type":"application/json","Origin":"http://127.0.0.1:8000", },data=b'{"arguments":{"--ids":{"value":[2],"input":false}}}', ))pprint(loads(response.read()))
{'Content-Type':'text/html','code':0,'error':'No errors','stderr':'','stdout':'<table>\r\n''<tr><td>ID</td><td>name</td><td>IPs</td><td>groups</td><td>apikey</td></tr>\r\n''<tr><td>0</td><td>Not ''Authenticated</td><td>*</td><td>0</td><td></td></tr>\r\n''<tr><td>1</td><td>Unknow</td><td>*</td><td>0,1</td><td></td></tr>\r\n''<tr><td>2</td><td>Admin</td><td>192.168.*,172.16.*,10.*,127.0.*</td><td>50,1000</td><td>AdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdmin</td></tr>\r\n''</table>\r\n'}{'Content-Type':'text/html','code':0,'error':'No errors','stderr':'','stdout':'<table>\r\n''<tr><td>2</td><td>Admin</td><td>192.168.*,172.16.*,10.*,127.0.*</td><td>50,1000</td><td>AdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdmin</td></tr>\r\n''</table>\r\n'}
For more details and other examples, see thesharing documentation (wiki).
curl -u'Admin:Admin' http://127.0.0.1:8000/share/Download/filename/LICENSE.txt# for uncompressed filecurl -u'Admin:Admin' http://127.0.0.1:8000/share/Download/filename/file.text --output -| gzip -d> file.txt# for compressed file
curl -u'Admin:Admin' -H"Origin: http://127.0.0.1:8000" -d'data' http://127.0.0.1:8000/share/upload/file.txtcurl -H"Origin: http://127.0.0.1:8000" -H'No-Compression: yes' -H'Api-Key: AdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdmin' --data"@file.tar.gz""http://127.0.0.1:8000/share/upload/file.tar.gz">&1## Deployed WebScripts (with HTTPS and self signed certificate)curl --insecure -H"Origin: http://127.0.0.1:8000" -H'Is-Base64: yes' -H'No-Compression: yes' -H'Api-Key: AdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdminAdmin' --data"$(cat file.txt| base64)""https://webscripts.local/share/upload/file.txt"
[System.Text.Encoding]::ASCII.GetString((Invoke-WebRequest-Headers@{Authorization="Basic QWRtaW46QWRtaW4=";Origin="http://127.0.0.1:8000" }-Uri"http://127.0.0.1:8000/share/Download/filename/file.txt").Content)|Out-File-FilePath .\file.txt
Invoke-WebRequest-Headers@{Authorization="Basic QWRtaW46QWRtaW4=";Origin="http://127.0.0.1:8000" }-Method'Post'-Body'data'-Uri http://127.0.0.1:8000/share/upload/file.txtInvoke-WebRequest-Headers@{Authorization="Basic QWRtaW46QWRtaW4=";Origin="http://127.0.0.1:8000" }-Method'Post'-Body$(Get-Content file.txt)-Uri http://127.0.0.1:8000/share/upload/file.txt