linode-dyndns


Namelinode-dyndns JSON
Version 1.3.0 PyPI version JSON
download
home_page
SummaryA Python tool for dynamically updating Linode Domain Records
upload_time2023-03-17 03:06:08
maintainer
docs_urlNone
author
requires_python>=3.9
licenseMIT
keywords automation linode dyndns dns
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Linode DynDNS

[![Docker Hub](https://img.shields.io/badge/Docker%20Hub-iarekylew00t%2Flinode--dyndns-blue)](https://hub.docker.com/r/iarekylew00t/linode-dyndns)
[![PyPI](https://img.shields.io/pypi/v/linode-dyndns)](https://pypi.org/project/linode-dyndns/)
[![GitHub build status](https://img.shields.io/github/actions/workflow/status/IAreKyleW00t/linode-dyndns/main.yml?style=flat)](https://github.com/IAreKyleW00t/linode-dyndns/actions/workflows/main.yml)
[![License](https://img.shields.io/github/license/IAreKyleW00t/linode-dyndns)](https://github.com/IAreKyleW00t/linode-dyndns/blob/main/LICENSE)

A Python tool for dynamically updating Linode Domain Records with your current IP address. Inspired by [nvllsvm/linode-dynamic-dns](https://github.com/nvllsvm/linode-dynamic-dns) but now utilizes the official [linode_api4](https://github.com/linode/linode_api4-python) package for Python.

## Installation

```sh
pip install linode-dyndns
```

### Docker

```sh
# Docker Hub
docker pull iarekylew00t/linode-dyndns:latest

# GHCR
docker pull ghcr.io/iarekylew00t/linode-dyndns:latest
```

#### Tags

The following tags are available for the `iarekylew00t/linode-dyndns` image.

- `latest`
- `<version>` (eg: `1.2.2`, including: `1.2`, `1`, etc.)

## Usage

Full usage and defaults can be found using the `--help` flag. Each option has a matching env variable associated with it which can be set instead of setting flags on the cli tool itself, see the [Environment variables](#Environment-variables) section.

Multiple hosts can be specified by passing multiple `--host` flags, or if using the `HOST` env variable then separate each host by space.

When running the tool in a loop (`--interval` flag), if for some reason the tool cannot get your IP during a run, it will skip it and retry during the next interval.

```sh
linode_dyndns \
  --domain exmaple.com \
  --host mylab \
  --token abc...789 \
  --interval 60
```

or, running it via Docker (which also supports passing flags)

```sh
docker run --rm -it --name linode_dyndns \
    -e DOMAIN=exmaple.com \
    -e HOST=mylab \
    -e TOKEN=abc...789 \
    -e INTERVAL=15 \
    iarekylew00t/linode-dyndns
```

### Environment variables

| Name       | Flag         |
| ---------- | ------------ |
| `DOMAIN`   | `--domain`   |
| `HOST`     | `--host`     |
| `TOKEN`    | `--token`    |
| `INTERVAL` | `--interval` |
| `IPV6`     | `--ipv6`     |
| `IPV4_URL` | `--ipv4-url` |
| `IPV6_URL` | `--ipv6-url` |

## Local development

The `requirements.txt` file is mainly for dependencies required for a developer, including stuff like the [black](https://github.com/psf/black) formatter.

Setup your local environmnet (ensure you are using Python 3.9 or newer)

```sh
git clone https://github.com/IAreKyleW00t/linode-dyndns.git
cd linode-dyndns
python3 -m venv .venv
source .venv/bin/activate
```

Install all the dependencies

```sh
pip install -r requirements.txt
```

## Building

You can build the package yourself via the [build](https://pypi.org/project/build/) module (included in `requirements.txt`)

```sh
python -m build --sdist --wheel --outdir dist/ .
```

or build the Docker image instead

```sh
docker build -t linode-dyndns .
```

## Container signatures

All container images will be automatically signed via [Cosign](https://docs.sigstore.dev/cosign/overview/) using [keyless signatures](https://docs.sigstore.dev/cosign/keyless/). You can use the following command to verify the integrity of these images yourself.

```sh
cosign verify \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp https://github.com/IAreKyleW00t/linode-dyndns/.github/workflows/ \
  iarekylew00t/linode-dyndns:latest
```

## Contributing

Feel free to contribute and make things better by opening an [Issue](https://github.com/IAreKyleW00t/linode-dyndns/issues) or [Pull Request](https://github.com/IAreKyleW00t/linode-dyndns/pulls).

### Code Styling

This tool is painted [black](https://github.com/psf/black) and has a corresponding [workflow](https://github.com/IAreKyleW00t/linode-dyndns/actions/workflows/black.yml) to enforce it. If you plan to contribute anything, please ensure you run `black` against your files first (included in `requirements.txt`).

```sh
black .
```

## License

See [LICENSE](https://github.com/IAreKyleW00t/linode-dyndns/blob/main/LICENSE).

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "linode-dyndns",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "automation,linode,dyndns,dns",
    "author": "",
    "author_email": "Kyle Colantonio <k@yle.sh>",
    "download_url": "https://files.pythonhosted.org/packages/30/54/69d31f3c1fa405b619ef59ee49f6ab7b16b444dc7a00945f8c7564308cf2/linode_dyndns-1.3.0.tar.gz",
    "platform": null,
    "description": "# Linode DynDNS\n\n[![Docker Hub](https://img.shields.io/badge/Docker%20Hub-iarekylew00t%2Flinode--dyndns-blue)](https://hub.docker.com/r/iarekylew00t/linode-dyndns)\n[![PyPI](https://img.shields.io/pypi/v/linode-dyndns)](https://pypi.org/project/linode-dyndns/)\n[![GitHub build status](https://img.shields.io/github/actions/workflow/status/IAreKyleW00t/linode-dyndns/main.yml?style=flat)](https://github.com/IAreKyleW00t/linode-dyndns/actions/workflows/main.yml)\n[![License](https://img.shields.io/github/license/IAreKyleW00t/linode-dyndns)](https://github.com/IAreKyleW00t/linode-dyndns/blob/main/LICENSE)\n\nA Python tool for dynamically updating Linode Domain Records with your current IP address. Inspired by [nvllsvm/linode-dynamic-dns](https://github.com/nvllsvm/linode-dynamic-dns) but now utilizes the official [linode_api4](https://github.com/linode/linode_api4-python) package for Python.\n\n## Installation\n\n```sh\npip install linode-dyndns\n```\n\n### Docker\n\n```sh\n# Docker Hub\ndocker pull iarekylew00t/linode-dyndns:latest\n\n# GHCR\ndocker pull ghcr.io/iarekylew00t/linode-dyndns:latest\n```\n\n#### Tags\n\nThe following tags are available for the `iarekylew00t/linode-dyndns` image.\n\n- `latest`\n- `<version>` (eg: `1.2.2`, including: `1.2`, `1`, etc.)\n\n## Usage\n\nFull usage and defaults can be found using the `--help` flag. Each option has a matching env variable associated with it which can be set instead of setting flags on the cli tool itself, see the [Environment variables](#Environment-variables) section.\n\nMultiple hosts can be specified by passing multiple `--host` flags, or if using the `HOST` env variable then separate each host by space.\n\nWhen running the tool in a loop (`--interval` flag), if for some reason the tool cannot get your IP during a run, it will skip it and retry during the next interval.\n\n```sh\nlinode_dyndns \\\n  --domain exmaple.com \\\n  --host mylab \\\n  --token abc...789 \\\n  --interval 60\n```\n\nor, running it via Docker (which also supports passing flags)\n\n```sh\ndocker run --rm -it --name linode_dyndns \\\n    -e DOMAIN=exmaple.com \\\n    -e HOST=mylab \\\n    -e TOKEN=abc...789 \\\n    -e INTERVAL=15 \\\n    iarekylew00t/linode-dyndns\n```\n\n### Environment variables\n\n| Name       | Flag         |\n| ---------- | ------------ |\n| `DOMAIN`   | `--domain`   |\n| `HOST`     | `--host`     |\n| `TOKEN`    | `--token`    |\n| `INTERVAL` | `--interval` |\n| `IPV6`     | `--ipv6`     |\n| `IPV4_URL` | `--ipv4-url` |\n| `IPV6_URL` | `--ipv6-url` |\n\n## Local development\n\nThe `requirements.txt` file is mainly for dependencies required for a developer, including stuff like the [black](https://github.com/psf/black) formatter.\n\nSetup your local environmnet (ensure you are using Python 3.9 or newer)\n\n```sh\ngit clone https://github.com/IAreKyleW00t/linode-dyndns.git\ncd linode-dyndns\npython3 -m venv .venv\nsource .venv/bin/activate\n```\n\nInstall all the dependencies\n\n```sh\npip install -r requirements.txt\n```\n\n## Building\n\nYou can build the package yourself via the [build](https://pypi.org/project/build/) module (included in `requirements.txt`)\n\n```sh\npython -m build --sdist --wheel --outdir dist/ .\n```\n\nor build the Docker image instead\n\n```sh\ndocker build -t linode-dyndns .\n```\n\n## Container signatures\n\nAll container images will be automatically signed via [Cosign](https://docs.sigstore.dev/cosign/overview/) using [keyless signatures](https://docs.sigstore.dev/cosign/keyless/). You can use the following command to verify the integrity of these images yourself.\n\n```sh\ncosign verify \\\n  --certificate-oidc-issuer https://token.actions.githubusercontent.com \\\n  --certificate-identity-regexp https://github.com/IAreKyleW00t/linode-dyndns/.github/workflows/ \\\n  iarekylew00t/linode-dyndns:latest\n```\n\n## Contributing\n\nFeel free to contribute and make things better by opening an [Issue](https://github.com/IAreKyleW00t/linode-dyndns/issues) or [Pull Request](https://github.com/IAreKyleW00t/linode-dyndns/pulls).\n\n### Code Styling\n\nThis tool is painted [black](https://github.com/psf/black) and has a corresponding [workflow](https://github.com/IAreKyleW00t/linode-dyndns/actions/workflows/black.yml) to enforce it. If you plan to contribute anything, please ensure you run `black` against your files first (included in `requirements.txt`).\n\n```sh\nblack .\n```\n\n## License\n\nSee [LICENSE](https://github.com/IAreKyleW00t/linode-dyndns/blob/main/LICENSE).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Python tool for dynamically updating Linode Domain Records",
    "version": "1.3.0",
    "split_keywords": [
        "automation",
        "linode",
        "dyndns",
        "dns"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e26fb7e868edd001fccdb13703f67b78c3e140fb65f646370d6a2797723c46b9",
                "md5": "32747a7e6325dbae9e0ba018a8aa0411",
                "sha256": "622d04163b4a2ef032728a8b975eb4791a588a55e784ce469d37676dec8faef0"
            },
            "downloads": -1,
            "filename": "linode_dyndns-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "32747a7e6325dbae9e0ba018a8aa0411",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 6486,
            "upload_time": "2023-03-17T03:06:05",
            "upload_time_iso_8601": "2023-03-17T03:06:05.692509Z",
            "url": "https://files.pythonhosted.org/packages/e2/6f/b7e868edd001fccdb13703f67b78c3e140fb65f646370d6a2797723c46b9/linode_dyndns-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "305469d31f3c1fa405b619ef59ee49f6ab7b16b444dc7a00945f8c7564308cf2",
                "md5": "e86740a2fa1f3c9e680bc76b3248629a",
                "sha256": "82d7a7c16a37865d48ed72fe3d3a1ea7d7add275b299e2e49f0325d611166fef"
            },
            "downloads": -1,
            "filename": "linode_dyndns-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e86740a2fa1f3c9e680bc76b3248629a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 5733,
            "upload_time": "2023-03-17T03:06:08",
            "upload_time_iso_8601": "2023-03-17T03:06:08.999199Z",
            "url": "https://files.pythonhosted.org/packages/30/54/69d31f3c1fa405b619ef59ee49f6ab7b16b444dc7a00945f8c7564308cf2/linode_dyndns-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-17 03:06:08",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "linode-dyndns"
}
        
Elapsed time: 0.04306s