lglass is a Python software package designed for Internet Registries like the DN42. You can generate zone files for DNS and rDNS IPv4/v6, and handle the registry. It is available on GitHub as free software: $ git clone git://github.com/fritz0705/lglass.git ## Links - [Fritz Gihub repo](https://github.com/fritz0705/lglass) - [lglass Manual](http://lglass.flonet.dn42/) ## Running your own Whois daemon lglass provides an event-based whois daemon with internal caching, which was written in Python. It is very simple to run an instance: $ ./bin/lglass-whoisd without the configfile: $ ./bin/lglass-regtool whoisd -H $HOST -p $PORT . usage: lglass-whoisd [-h] [-4] [-6] [--host HOST] [--port PORT] [--cidr] [--no-cidr] [--inverse] [--no-inverse] optional arguments: -h, --help show this help message and exit -4 Listen on IPv4 -6 Listen on IPv6 --host HOST, -H HOST Listen on host --port PORT, -p PORT Listen on port --cidr, -c Perform CIDR matching on queries --no-cidr Do not perform CIDR matching on queries --inverse, -i Perform inverse matching on queries --no-inverse Do not perform inverse matching on queries ## Generate zone files lglass also provides a script to generate zone files from the registry. It's named zonegen.py and requires a registry dump from Monotone. To generate DNS zones: $ ./bin/lglass-zonegen -d $PATH_TO_DATA_DIR -n ns1... -n ns2... -e foo.bar.com dns -z dn42 To generate IPv4 rDNS zones: $ ./bin/lglass-zonegen -d $PATH_TO_DATA_DIR -n ns1... -n ns2... -e foo.bar.com rdns4 -N 172.22.0.0/16 To generate IPv6 rDNS zones: $ ./bin/lglass-zonegen -d $PATH_TO_DATA_DIR -n ns1... -n ns2... -e foo.bar.com rdns6 -N fd00::/8 ## Reformat RPSL files You can also reformat RPSL files using lglass by using the lglass.rpsl module: $ ./bin/lglass-rpsl < $DATA/inetnum/172.22.0.53_32 lglass.rpsl also supports in-place operation: $ ./bin/lglass-rpsl -i $DATA/inetnum/172.22.0.53_32 This opens the file, reads the content into memory, seeks to position 0, writes the formatted object and truncates the file. Simple web interface lglass also comes with a simple web interface written in Python3 using Bottle and Jinja2. It also provides a binary to run it using wsgiref: $ ./bin/lglass-web Furthermore you can use any WSGI server like Gunicorn by using lglass.web.application:app as WSGI callback. You can provide a path to the configuration file in the environment variable `LGLASS_WEB_CFG`. ## Configuration The configuration file format is JSON and allows configuration of the database chain, the listen parameters, the custom messages and the process management. | Option | Meaning | |----------|:-------------| | listen.host |IP address for listening socket (Default: ::)| |listen.port|TCP port for listening socket (Default: 4343)| |listen.protocol|Protocol for listening socket (4 or 6, by default 6)| |database|Array of database URLs to initialize database chain| |database.types|Array of object types in database (Default: undefined)
Default chain:
[
"whois+lglass.database.file+file:.",
"whois+lglass.database.cidr+cidr:",
"whois+lglass.database.schema+schema:",
"whois+lglass.database.cache+cached:"
]| |messages.preamble|String preamble for whois responses| |messages.help|String help message for help requests| |process.user|User to change after initialization| |process.group|Group to change after initialization| |process.pidfile|Path to PID file| ## RPSL - Routing Policy Specification Language [RFC2622](https://tools.ietf.org/html/rfc2622) - Routing Policy Specification Language next generation (RPSLng) [RFC4012](https://tools.ietf.org/html/rfc4012) - -