kasserver


Namekasserver JSON
Version 0.4.0 PyPI version JSON
download
home_pagehttps://github.com/fetzerch/kasserver
SummaryManage domains hosted on All-Inkl.com through the KAS server API
upload_time2023-07-09 09:42:06
maintainer
docs_urlNone
authorChristian Fetzer
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements click pbr zeep
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Build Status](https://github.com/fetzerch/kasserver/actions/workflows/check.yml/badge.svg)](https://github.com/fetzerch/kasserver/actions/workflows/check.yml)
[![Coverage Status](https://coveralls.io/repos/github/fetzerch/kasserver/badge.svg)](https://coveralls.io/github/fetzerch/kasserver)
[![PyPI Version](https://img.shields.io/pypi/v/kasserver.svg)](https://pypi.org/project/kasserver)

# kasserver - Manage domains hosted on All-Inkl.com through the KAS server API

This project consists of the Python library *kasserver* and a few command line
utilities to manage domains of the German webhoster [All-Inkl.com] through
their [KAS server API].

At the moment the main focus is managing DNS record as this allows to automate
the creation of [Let's Encrypt] (wildcard) certificates with the
[ACME DNS-01 challenge].

## Installation

*kasserver* (and its dependencies) can be installed from PyPI with:
`pip3 install kasserver`

## Authentication

Both library and command line utilities require access to the KAS credentials.
Username and password are read from the `KASSERVER_USER` and
`KASSERVER_PASSWORD` environment variables or from the `~/.netrc` file:

```console
machine kasapi.kasserver.com
login USERNAME
password PASSWORD
```

The file must be accessible only by your user account: `chmod 600 ~/.netrc`.

## Scripts

### `kasserver-dns`

A generic program to manage DNS records.

DNS records can be listed with:

```console
$ kasserver-dns list example.com
ID C Zone        Name Type  Data               Aux
 1 Y example.com      A     X.X.X.X            0
 0 N example.com      NS    ns5.kasserver.com. 0
 0 N example.com      NS    ns6.kasserver.com. 0
 0 N example.com www  CNAME example.com        0
```

A new DNS record is added with:

```console
kasserver-dns add test.example.com CNAME example.com
```

An existing DNS record is removed with:

```console
kasserver-dns remove test.example.com CNAME
```

### `kasserver-dns-*`

The following programs are designed to be used together with ACME clients to
automate DNS record creation/removal as it is required by a Let's Encryt
[ACME DNS-01 challenge] for automatic certificate renewal.

#### `kasserver-dns-certbot`

This program is designed to be used with [Certbot]:

```console
certbot certonly -d foo.exmaple.com --preferred-challenges dns \
                 --manual --manual-auth-hook kasserver-dns-certbot \
                          --manual-cleanup-hook kasserver-dns-certbot \
                 -m invalid@example.com
```

#### `kasserver-dns-lego`

This program is designed to be used with [lego]:

```console
EXEC_PATH=kasserver-dns-lego lego --dns exec \
    --domains foo.example.com --email invalid@example.com run
```

## License

This projected is licensed under the terms of the MIT license.

[acme dns-01 challenge]: https://www.eff.org/de/deeplinks/2018/02/technical-deep-dive-securing-automation-acme-dns-challenge-validation
[all-inkl.com]: https://all-inkl.com/
[certbot]: https://certbot.eff.org
[kas server api]: https://kasapi.kasserver.com/
[lego]: https://github.com/xenolf/lego
[let's encrypt]: https://letsencrypt.org/


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fetzerch/kasserver",
    "name": "kasserver",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Christian Fetzer",
    "author_email": "fetzer.ch@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/f5/db/97fcb8761f4872b59e70aefd7e973c40b60412d3dd7f04dc84530eb7ec4c/kasserver-0.4.0.tar.gz",
    "platform": null,
    "description": "[![Build Status](https://github.com/fetzerch/kasserver/actions/workflows/check.yml/badge.svg)](https://github.com/fetzerch/kasserver/actions/workflows/check.yml)\n[![Coverage Status](https://coveralls.io/repos/github/fetzerch/kasserver/badge.svg)](https://coveralls.io/github/fetzerch/kasserver)\n[![PyPI Version](https://img.shields.io/pypi/v/kasserver.svg)](https://pypi.org/project/kasserver)\n\n# kasserver - Manage domains hosted on All-Inkl.com through the KAS server API\n\nThis project consists of the Python library *kasserver* and a few command line\nutilities to manage domains of the German webhoster [All-Inkl.com] through\ntheir [KAS server API].\n\nAt the moment the main focus is managing DNS record as this allows to automate\nthe creation of [Let's Encrypt] (wildcard) certificates with the\n[ACME DNS-01 challenge].\n\n## Installation\n\n*kasserver* (and its dependencies) can be installed from PyPI with:\n`pip3 install kasserver`\n\n## Authentication\n\nBoth library and command line utilities require access to the KAS credentials.\nUsername and password are read from the `KASSERVER_USER` and\n`KASSERVER_PASSWORD` environment variables or from the `~/.netrc` file:\n\n```console\nmachine kasapi.kasserver.com\nlogin USERNAME\npassword PASSWORD\n```\n\nThe file must be accessible only by your user account: `chmod 600 ~/.netrc`.\n\n## Scripts\n\n### `kasserver-dns`\n\nA generic program to manage DNS records.\n\nDNS records can be listed with:\n\n```console\n$ kasserver-dns list example.com\nID C Zone        Name Type  Data               Aux\n 1 Y example.com      A     X.X.X.X            0\n 0 N example.com      NS    ns5.kasserver.com. 0\n 0 N example.com      NS    ns6.kasserver.com. 0\n 0 N example.com www  CNAME example.com        0\n```\n\nA new DNS record is added with:\n\n```console\nkasserver-dns add test.example.com CNAME example.com\n```\n\nAn existing DNS record is removed with:\n\n```console\nkasserver-dns remove test.example.com CNAME\n```\n\n### `kasserver-dns-*`\n\nThe following programs are designed to be used together with ACME clients to\nautomate DNS record creation/removal as it is required by a Let's Encryt\n[ACME DNS-01 challenge] for automatic certificate renewal.\n\n#### `kasserver-dns-certbot`\n\nThis program is designed to be used with [Certbot]:\n\n```console\ncertbot certonly -d foo.exmaple.com --preferred-challenges dns \\\n                 --manual --manual-auth-hook kasserver-dns-certbot \\\n                          --manual-cleanup-hook kasserver-dns-certbot \\\n                 -m invalid@example.com\n```\n\n#### `kasserver-dns-lego`\n\nThis program is designed to be used with [lego]:\n\n```console\nEXEC_PATH=kasserver-dns-lego lego --dns exec \\\n    --domains foo.example.com --email invalid@example.com run\n```\n\n## License\n\nThis projected is licensed under the terms of the MIT license.\n\n[acme dns-01 challenge]: https://www.eff.org/de/deeplinks/2018/02/technical-deep-dive-securing-automation-acme-dns-challenge-validation\n[all-inkl.com]: https://all-inkl.com/\n[certbot]: https://certbot.eff.org\n[kas server api]: https://kasapi.kasserver.com/\n[lego]: https://github.com/xenolf/lego\n[let's encrypt]: https://letsencrypt.org/\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Manage domains hosted on All-Inkl.com through the KAS server API",
    "version": "0.4.0",
    "project_urls": {
        "Homepage": "https://github.com/fetzerch/kasserver"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5477799167c43ae424461b101da1edd1438e6e48ea1d8723427267e65a1f6dfe",
                "md5": "03572bc9cc2643c1c6fc7b2e52d4c213",
                "sha256": "3f8b48fd3d820d0bde2f5249bc0a37a31065d89a29f19e9d85ff9911cd3a7d5c"
            },
            "downloads": -1,
            "filename": "kasserver-0.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "03572bc9cc2643c1c6fc7b2e52d4c213",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 11825,
            "upload_time": "2023-07-09T09:42:03",
            "upload_time_iso_8601": "2023-07-09T09:42:03.925296Z",
            "url": "https://files.pythonhosted.org/packages/54/77/799167c43ae424461b101da1edd1438e6e48ea1d8723427267e65a1f6dfe/kasserver-0.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f5db97fcb8761f4872b59e70aefd7e973c40b60412d3dd7f04dc84530eb7ec4c",
                "md5": "3db44fde0c4464f13951eff90e7ddb08",
                "sha256": "63b293b5a9c3bd628ba76e158189b8025f93f773a7736f0b6f4a22e114e7a38d"
            },
            "downloads": -1,
            "filename": "kasserver-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3db44fde0c4464f13951eff90e7ddb08",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 12471,
            "upload_time": "2023-07-09T09:42:06",
            "upload_time_iso_8601": "2023-07-09T09:42:06.058066Z",
            "url": "https://files.pythonhosted.org/packages/f5/db/97fcb8761f4872b59e70aefd7e973c40b60412d3dd7f04dc84530eb7ec4c/kasserver-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-09 09:42:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fetzerch",
    "github_project": "kasserver",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "pbr",
            "specs": []
        },
        {
            "name": "zeep",
            "specs": []
        }
    ],
    "tox": true,
    "lcname": "kasserver"
}
        
Elapsed time: 0.11398s