Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/BBVA/kapow
Kapow! If you can script it, you can HTTP it.
https://github.com/BBVA/kapow
api http microframework microservice posix shell
Last synced: 4 days ago
JSON representation
Kapow! If you can script it, you can HTTP it.
- Host: GitHub
- URL: https://github.com/BBVA/kapow
- Owner: BBVA
- License: apache-2.0
- Created: 2019-04-24T09:37:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-30T18:38:48.000Z (3 months ago)
- Last Synced: 2024-08-02T15:03:55.223Z (3 months ago)
- Topics: api, http, microframework, microservice, posix, shell
- Language: Go
- Homepage: https://kapow.readthedocs.io
- Size: 7.95 MB
- Stars: 599
- Watchers: 13
- Forks: 27
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.rst
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
- awesome-starz - BBVA/kapow - Kapow! If you can script it, you can HTTP it. (Go)
README
If you can script it, you can HTTP it.
---
## What's *Kapow!*
Say we have a nice cozy **shell command** that solves our problem. *Kapow!* lets
us easily **turn that into an HTTP API**.### Let's see this with an example
We want to expose **log entries** for files not found on our **Apache Web
Server**, as an HTTP API. With *Kapow!* we just need to write this
*executable* script:``` console
[apache-host]$ cat search-apache-errors
#!/usr/bin/env sh
kapow route add /apache-errors - <<-'EOF'
cat /var/log/apache2/access.log | grep 'File does not exist' | kapow set /response/body
EOF
[apache-host]$ chmod +x search-apache-errors
```and then, run it using *Kapow!*
```bash
[apache-host]$ kapow server search-apache-errors
```finally, we can read from the just-defined endpoint:
```bash
[another-host]$ curl http://apache-host:8080/apache-errors
[Fri Feb 01 22:07:57.154391 2019] [core:info] [pid 7:tid 140284200093440] [client 172.17.0.1:50756] AH00128: File does not exist: /usr/var/www/mysite/favicon.ico
[Fri Feb 01 22:07:57.808291 2019] [core:info] [pid 8:tid 140284216878848] [client 172.17.0.1:50758] AH00128: File does not exist: /usr/var/www/mysite/favicon.ico
[Fri Feb 01 22:07:57.878149 2019] [core:info] [pid 8:tid 140284208486144] [client 172.17.0.1:50758] AH00128: File does not exist: /usr/var/www/mysite/favicon.ico
...
```### Why *Kapow!* shines in these cases
- We can share information **without having to grant SSH access** to anybody.
- We can share information easily **over HTTP**.
- We can effectively **limit** what gets executed.## Documentation
You can find the complete documentation and examples [here](https://kapow.readthedocs.io).
## Security
Please consider the following
[Security Concerns](https://kapow.readthedocs.io/en/stable/the_project/security.html#security-concerns)
**before** using *Kapow!*If you are not 100% sure about what you are doing we recommend not using *Kapow!*
## Authors
*Kapow!* is being developed by [BBVA-Labs Security team members](https://github.com/BBVA/kapow/blob/master/AUTHORS.rst).
*Kapow!* is Open Source Software and available under the [Apache 2
license](https://raw.githubusercontent.com/BBVA/kapow/master/LICENSE).## Contributions
Contributions are of course welcome. See
[CONTRIBUTING](https://raw.githubusercontent.com/BBVA/kapow/master/CONTRIBUTING.rst)
or skim existing tickets to see where you could help out.---
* [Did you spot the UUoC?](https://github.com/BBVA/kapow/issues/118) Congrats! We are hoping [to win](http://porkmail.org/era/unix/award.html) this year :)