Skip to main content

Parse and edit your FreeBSD jail.conf file

Project description

Parse and edit your FreeBSD jail.conf file with python.

Installation

To install jailconf, simply:

pip3 install jailconf

jailconf requires Python 3.

Examples

import jailconf

Load the configuration from a path

conf = jailconf.load('/etc/jail.conf')

Load the configuration from a string

conf = jailconf.loads(open('/etc/jail.conf').read())

Create an empty configuration

conf = jailconf.JailConf()

The configuration is represented as a dictionnary (actually a subclass of OrderedDict).

Let’s modify some settings.

The quoted strings in the configuration should be passed with the quotes. For example, to obtain the setting:

path = "/var/jail/$name";

you write:

conf['path'] = '"/var/jail/$name"'

The string should be exactly what you want to appear on the right side of the parameter name in the configuration file. If you want the value of a parameter to be a quoted string, you pass a string containing a quoted string. This allows you to specify what kind of quotes you want to see in the output configuration file (single quotes, double quotes, or no quote at all).

conf['exec.start'] = '"/bin/sh /etc/rc"'
conf['exec.stop'] = '"/bin/sh /etc/rc.shutdown"'

Boolean parameters. To obtain:

exec.clean;
mount.devfs;

you write:

conf['exec.clean'] = True
conf['mount.devfs'] = True

Add a jail:

conf['myjail'] = jailconf.JailBlock([
    ('host.hostname', '"example.com"'),
    ('ip4.addr', ['10.1.1.1', '10.1.1.2', '10.1.1.3'])
])

Modify a jail

conf['myjail']['ip4.addr'] = '192.168.1.2' # this will be rendered as the line: ip4.addr = 192.168.1.2

# To set multiple ips, use a list:

conf['myjail']['ip4.addr'] = ['192.168.1.2', '192.168.1.3']

Delete a jail

del conf['uselessjail']

Iterate over jails

for name, jail_block in conf.jails():
    jail_block['host.hostname'] = '"%s"' % name

Output the configuration as a string

>>> print(conf.dumps())
path = "/var/jail/$name";
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
myjail {
        host.hostname = "myjail";
        ip4.addr = 192.168.1.2, 192.168.1.3;
}

Write the configuration to a file

conf.write('/etc/jail.conf')

GitHub repo: https://github.com/leforestier/jailconf

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jailconf-0.2.2.tar.gz (7.0 kB view details)

Uploaded Source

File details

Details for the file jailconf-0.2.2.tar.gz.

File metadata

  • Download URL: jailconf-0.2.2.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.8

File hashes

Hashes for jailconf-0.2.2.tar.gz
Algorithm Hash digest
SHA256 17cb2f14a1247356ea8981e9776113cf9141e4c71cf9f769411822b9cc296d88
MD5 f301e7791e1fe343c640b0641d9be18f
BLAKE2b-256 5b180227c051b497550e9c7d00cddfa2f7e27c1b00b236b4931c3dbd04b219a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page