Skip to content

Commit

Permalink
project: Convert README.rst to README.md
Browse files Browse the repository at this point in the history
PyPI meanwhile properly supports displaying Markdown files.
  • Loading branch information
fetzerch committed Aug 3, 2022
1 parent 8e4081b commit e7102ff
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 119 deletions.
97 changes: 97 additions & 0 deletions README.md
@@ -0,0 +1,97 @@
[![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
117 changes: 0 additions & 117 deletions README.rst

This file was deleted.

6 changes: 4 additions & 2 deletions setup.cfg
Expand Up @@ -21,10 +21,12 @@

[metadata]
name = kasserver
summary = Manage domains hosted on All-Inkl.com through the KAS server API
description-file = README.md
description-content-type = text/markdown
url = https://github.com/fetzerch/kasserver
author = Christian Fetzer
author-email = fetzer.ch@gmail.com
description-file = README.rst
url = https://github.com/fetzerch/kasserver
license = MIT
classifier =
Development Status :: 4 - Beta
Expand Down

0 comments on commit e7102ff

Please sign in to comment.