Package: rasengan
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/rasenganOverview--------``rasengan``, is a command-line tool for automated testing of multiplekind of integrations tests for domains, with a simple and flexible YAMLdefinition syntax. The yaml file can contain multiple domains and wecould check it in a diferent ways:- Check the DNS resolution- Checkredirects, 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 gradeThe exit of the execution is an error if any of the checks fails. Youcan 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 rasenganYou can use the publish docker image without need to install the python environment:Where you have to share the directory where rasengan.yml is like a volume::docker run -v $PWD:/rasengan rasenganrasengan.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 inthe 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 httpscertificate for the domain.-  **http**:-  *status\_code*: 200, 301, 302, 404, etc. Status code in the httprequest.-  *protocol*: http or https, do the request over different httpprotocol. Default https.-  *redirect*: expected redirect URL when you configure status codein 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 storedone from keys: mobile, desktop, google\_desktop, google\_mobile.-  *auth\_user*: username in http auth.-  *auth\_password*: password in http auth .Usage-----::$ rasengan --helpUsage: rasengan [OPTIONS]Check all the domains in the fileOptions:-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.6domains:www.apsl.net:ssl:grade: Fdays_to_expire: 10dns:domain_type: CNAMEexpected:- apsl.net.http:main:status_code: 301protocol: httpredirect: https://www.apsl.net/main_https:status_code: 200text: Expertos en desarrollos webmobile:status_code: 200user_agent: mobiletext: Expertos en desarrollos webapsl.net:dns:domain_type: Aexpected:- 148.251.84.231http:main_redirect:protocol: httpstatus_code: 301redirect: https://www.apsl.net/https_redirect:protocol: httpsstatus_code: 301redirect: https://www.apsl.net/Usage example-------------::$ rasengan -c rasengan.yml2017-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: 3012017-12-26 03:38:01,722 INFO     apsl.net - [desktop] - Status Code for http://apsl.net/ - OK -> result: 3012017-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:592017-12-26 03:38:01,936 INFO     www.apsl.net - [desktop] - Status Code for https://www.apsl.net/ - OK -> result: 2002017-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 web2017-12-26 03:38:01,958 INFO     apsl.net - [desktop] - Status Code for https://apsl.net/ - OK -> result: 3012017-12-26 03:38:01,960 INFO     www.apsl.net - [mobile] - Status Code for https://www.apsl.net/ - OK -> result: 2002017-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 web2017-12-26 03:38:03,353 INFO     www.apsl.net - SSL Qualys grade - OK -> result: F(rasengan) $ echo $?0(rasengan) $ rasengan -c rasengan.yml --mrpeChecks OK: 11 --Future work-----------::- Integrate tavern to check APIs- Check http response time- Manage and show exceptions ocurred in Future threadsAcknowledgements----------------``rasengan`` makes use of several open-source projects:-  `click <http://click.pocoo.org/5/>`__, for manage the command-lineoptions.-  `requests <http://docs.python-requests.org/en/master/>`__, for HTTPrequests.-  `pyyaml <https://github.com/yaml/pyyaml>`__, for the manage the datasyntax.-  `colorlog <https://github.com/borntyping/python-colorlog>`__, forformatting terminal outputs.-  `dnspython <http://www.dnspython.org/>`__, for manage the DNSqueries.-  `pyOpenSSL <https://pypi.python.org/pypi/pyOpenSSL>`__, for managethe ssl expiration checks.-  `SSL Qualys API <https://www.ssllabs.com/projects/ssllabs-apis/>`__,for check the grade of security in SSL.