https://github.com/apsl/rasengan
Rasengan is a command-line tool for automated testing of multiple kind of integrations tests for domains, with a simple and flexible YAML definition syntax.
https://github.com/apsl/rasengan
Last synced: about 1 year ago
JSON representation
Rasengan is a command-line tool for automated testing of multiple kind of integrations tests for domains, with a simple and flexible YAML definition syntax.
- Host: GitHub
- URL: https://github.com/apsl/rasengan
- Owner: APSL
- Created: 2017-12-26T02:46:07.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-11T15:26:50.000Z (about 8 years ago)
- Last Synced: 2024-11-04T00:51:36.392Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 57.6 KB
- Stars: 13
- Watchers: 7
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
README
Rasengan
=========
.. image:: https://img.shields.io/pypi/v/rasengan.svg
:target: https://pypi.python.org/pypi/rasengan/
.. image:: https://travis-ci.org/APSL/rasengan.svg?branch=master
:target: https://travis-ci.org/APSL/rasengan
.. image:: https://img.shields.io/docker/pulls/apsl/rasengan.svg?branch=master
:target: https://hub.docker.com/r/apsl/rasengan/
.. image:: https://img.shields.io/docker/stars/apsl/rasengan.svg?branch=master
:target: https://hub.docker.com/r/apsl/rasengan/
Overview
--------
``rasengan``, is a command-line tool for automated testing of multiple
kind of integrations tests for domains, with a simple and flexible YAML
definition syntax. The yaml file can contain multiple domains and we
could check it in a diferent ways:
- Check the DNS resolution
- Check redirects, status code and expected URL in the redirect
- Check http requests and the content text
- Check http using different user-agents
- Check SSL expiration date
- Check SSL Qualys grade
The exit of the execution is an error if any of the checks fails. You
can use a mrpe parameter to get MRPE simple and resume output.
Install & configure
-------------------
``rasengan`` is developed and tested with a python 3 version. We require
>3.4 to install it.
To install ``rasengan`` we can use the PyPI package:
::
pip install rasengan
You can use the publish docker image without need to install the python environment.
You have to share the directory where rasengan.yml is like a volume:
::
docker run -v $PWD:/rasengan apsl/rasengan:0.2.6
We don't provide a 'latest' tag so you have to use always a version tag for the docker image.
rasengan.yml
------------
At this file you can specify the different for a domain:
+------------+-----------------------------------------------------------------------+
| Field | Description |
+============+=======================================================================+
| ``dns`` | Check the DNS resolution, expect domain\_type and result |
+------------+-----------------------------------------------------------------------+
| ``ssl`` | Check the SSL status of the domain qualys test and expire date |
+------------+-----------------------------------------------------------------------+
| ``http`` | Request the domain from http, expect status\_code, redirect or text |
+------------+-----------------------------------------------------------------------+
Options in plugins
------------------
- **dns**:
- *domain\_type*: CNAME, A or another type of expected resolution in
the domain.
- *expected*: list of IPs or domains expected in the result.
- **ssl**:
- *grade*: Qualys test expected grade.
- *days\_to\_expire*: expiration days limit warning in the https
certificate for the domain.
- **http**:
- *status\_code*: 200, 301, 302, 404, etc. Status code in the http
request.
- *protocol*: http or https, do the request over different http
protocol. Default https.
- *redirect*: expected redirect URL when you configure status code
in 301 or 302.
- *path*: The url path to check in the domain. Default is '/'.
- *text*: check text in the result page when you expect 200 code.
- *user\_agent*: use a custom user\_agent for the request or stored
one from keys: mobile, desktop, google\_desktop, google\_mobile.
- *auth\_user*: username in http auth.
- *auth\_password*: password in http auth .
Usage
-----
::
$ rasengan --help
Usage: rasengan [OPTIONS]
Check all the domains in the file
Options:
-c, --config TEXT Name of file to check. Default rasengan.yml
-d, --domains TEXT Check only this list of domain (comma separated)
-l, --loglevel TEXT Log level. Default INFO
-w, --workers INTEGER Number of threads to make the requests. Default 20.
--mrpe / --no-mrpe MRPE output (disable logging options). Default False, and if True disable loglevel.
--help Show this message and exit.
Basic Example
-------------
::
version: 0.2.6
domains:
www.apsl.net:
ssl:
grade: F
days_to_expire: 10
dns:
domain_type: CNAME
expected:
- apsl.net.
http:
main:
status_code: 301
protocol: http
redirect: https://www.apsl.net/
main_https:
status_code: 200
text: Expertos en desarrollos web
mobile:
status_code: 200
user_agent: mobile
text: Expertos en desarrollos web
apsl.net:
dns:
domain_type: A
expected:
- 148.251.84.231
http:
main_redirect:
protocol: http
status_code: 301
redirect: https://www.apsl.net/
https_redirect:
protocol: https
status_code: 301
redirect: https://www.apsl.net/
Usage example
-------------
::
$ rasengan -c rasengan.yml
2017-12-26 03:38:01,250 INFO www.apsl.net - DNS Check - OK -> result: ['apsl.net.']
2017-12-26 03:38:01,309 INFO apsl.net - DNS Check - OK -> result: ['148.251.84.231']
2017-12-26 03:38:01,722 INFO www.apsl.net - [desktop] - Status Code for http://www.apsl.net/ - OK -> result: 301
2017-12-26 03:38:01,722 INFO apsl.net - [desktop] - Status Code for http://apsl.net/ - OK -> result: 301
2017-12-26 03:38:01,723 INFO www.apsl.net - [desktop] - Redirect Location for http://www.apsl.net/ - OK -> result: https://www.apsl.net/
2017-12-26 03:38:01,723 INFO apsl.net - [desktop] - Redirect Location for http://apsl.net/ - OK -> result: https://www.apsl.net/
2017-12-26 03:38:01,820 INFO www.apsl.net - SSL Expires at 2018-01-17 23:59:59
2017-12-26 03:38:01,936 INFO www.apsl.net - [desktop] - Status Code for https://www.apsl.net/ - OK -> result: 200
2017-12-26 03:38:01,938 INFO www.apsl.net - [desktop] - Page content for https://www.apsl.net/ - OK -> Exists the phrase: Expertos en desarrollos web
2017-12-26 03:38:01,958 INFO apsl.net - [desktop] - Status Code for https://apsl.net/ - OK -> result: 301
2017-12-26 03:38:01,960 INFO www.apsl.net - [mobile] - Status Code for https://www.apsl.net/ - OK -> result: 200
2017-12-26 03:38:01,960 INFO apsl.net - [desktop] - Redirect Location for https://apsl.net/ - OK -> result: https://www.apsl.net/
2017-12-26 03:38:01,962 INFO www.apsl.net - [mobile] - Page content for https://www.apsl.net/ - OK -> Exists the phrase: Expertos en desarrollos web
2017-12-26 03:38:03,353 INFO www.apsl.net - SSL Qualys grade - OK -> result: F
(rasengan) $ echo $?
0
(rasengan) $ rasengan -c rasengan.yml --mrpe
Checks OK: 11 --
Future work
-----------
::
- Integrate tavern to check APIs
- Check http response time
- Manage and show exceptions ocurred in Future threads
Acknowledgements
----------------
``rasengan`` makes use of several open-source projects:
- `click `__, for manage the command-line
options.
- `requests `__, for HTTP
requests.
- `pyyaml `__, for the manage the data
syntax.
- `colorlog `__, for
formatting terminal outputs.
- `dnspython `__, for manage the DNS
queries.
- `pyOpenSSL `__, for manage
the ssl expiration checks.
- `SSL Qualys API `__,
for check the grade of security in SSL.