[](https://github.com/fetzerch/kasserver/actions/workflows/check.yml)
[](https://coveralls.io/github/fetzerch/kasserver)
[](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": "[](https://github.com/fetzerch/kasserver/actions/workflows/check.yml)\n[](https://coveralls.io/github/fetzerch/kasserver)\n[](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"
}