{"id":13439574,"url":"https://github.com/troglobit/inadyn","last_synced_at":"2025-04-12T20:38:42.674Z","repository":{"id":1112734,"uuid":"981970","full_name":"troglobit/inadyn","owner":"troglobit","description":"In-a-Dyn is a dynamic DNS client with multiple SSL/TLS library support","archived":false,"fork":false,"pushed_at":"2024-12-11T10:54:32.000Z","size":2315,"stargazers_count":1056,"open_issues_count":46,"forks_count":146,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-04-05T19:07:16.404Z","etag":null,"topics":["c","ddns","ddns-client","dynamic-dns","dynamic-dns-client","dyndns","inadyn"],"latest_commit_sha":null,"homepage":"https://troglobit.com/projects/inadyn/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/troglobit.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["troglobit"]}},"created_at":"2010-10-12T19:09:01.000Z","updated_at":"2025-04-05T18:58:06.000Z","dependencies_parsed_at":"2024-04-08T20:07:07.213Z","dependency_job_id":"9d551d19-9e6f-4bf2-adeb-b01b6f395492","html_url":"https://github.com/troglobit/inadyn","commit_stats":{"total_commits":1202,"total_committers":77,"mean_commits":15.61038961038961,"dds":0.3261231281198004,"last_synced_commit":"d809e2b4f80027d4b9fcf528e06dab844a90b6da"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/troglobit%2Finadyn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/troglobit%2Finadyn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/troglobit%2Finadyn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/troglobit%2Finadyn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/troglobit","download_url":"https://codeload.github.com/troglobit/inadyn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248631668,"owners_count":21136554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","ddns","ddns-client","dynamic-dns","dynamic-dns-client","dyndns","inadyn"],"created_at":"2024-07-31T03:01:15.248Z","updated_at":"2025-04-12T20:38:42.648Z","avatar_url":"https://github.com/troglobit.png","language":"C","readme":"Internet Automated Dynamic DNS Client\n=====================================\n[![License Badge][]][License] [![GitHub Status][]][GitHub] [![Coverity Status][]][Coverity Scan]\n\nThe latest release is always available from GitHub at  \n\u003e https://github.com/troglobit/inadyn/releases\n\n\nTable of Contents\n-----------------\n\n  * [Introduction](#introduction)\n  * [Supported Providers](#supported-providers)\n  * [Configuration](#configuration)\n  * [Custom DDNS Providers](#custom-ddns-providers)\n  * [Troubleshooting](#troubleshooting)\n  * [Build \u0026 Install](#build--install)\n  * [Building from GIT](#building-from-git)\n  * [Origin \u0026 References](#origin--references)\n\n\nIntroduction\n------------\n\n\u003e **Tip:** the HTML UNIX manual is at https://man.troglobit.com, e.g.,\n\u003e [inadyn.conf(5)](https://man.troglobit.com/man5/inadyn.conf.5.html)\n\nInadyn, or In-a-Dyn, is a small and simple Dynamic DNS, [DDNS][], client\nwith HTTPS support.  Commonly available in many GNU/Linux distributions,\nused in off the shelf routers and Internet gateways to automate the task\nof keeping your Internet name in sync with your public¹ IP address.  It\ncan also be used in installations with redundant (backup) connections to\nthe Internet.\n\nMost people are unaware they share a pool of Internet addresses with\nother users of the same Internet Service Provider (ISP).  Protocols like\nDHCP, PPPoE, or PPPoA are used to give you an address and a way to\nconnect to the Internet, but usually not a way for others to connect to\nyou.  If you want to run an Internet server on such a connection you\nrisk losing your IP address every time you reconnect, or as in the case\nof DHCP even when the lease is renegotiated.\n\nBy using a DDNS client like `inadyn` you can register an Internet name\nwith a DDNS provider, like [FreeDNS](http://freedns.afraid.org).  The\nDDNS client updates your DNS record periodically and/or on demand when\nyour IP address changes.  Inadyn can maintain multiple host records with\nthe same IP address, use a combination of a script, the address from an\nInternet-facing interface, or default to using the IP address change\ndetector of the DDNS provider.\n\n__  \n¹ Public IP address is the default, private addresses can also be used.\n\n\nSupported Providers\n-------------------\n\nSome of these services are free of charge for non-commercial use, some\ntake a small fee, but also provide more domains to choose from.\n\nThe following tier-one providers have dedicated \"plugins\", even though\nmany share the original DynDNS plugin.  Below is a list of known DDNS\nproviders, ordered by the plugin that support them:\n\n  * \u003chttps://freedns.afraid.org\u003e\n  * \u003chttps://www.nsupdate.info\u003e\n  * \u003chttps://duckdns.org\u003e\n  * \u003chttps://freemyip.com\u003e\n  * \u003chttps://www.dyndns.org\u003e, \u003chttps://dyn.com\u003e\n    * \u003chttps://dns.he.net\u003e\n    * \u003chttps://www.dnsomatic.com\u003e\n    * \u003chttps://domains.google\u003e\n    * \u003chttps://www.dynu.com\u003e\n    * \u003chttps://www.loopia.com\u003e\n    * \u003chttps://www.noip.com\u003e\n    * \u003chttps://www.pubyun.com\u003e, formerly \u003chttp://www.3322.org\u003e\n    * \u003chttps://www.selfhost.de\u003e\n    * \u003chttps://spdyn.de\u003e\n  * \u003chttps://www.easydns.com\u003e\n  * \u003chttps://www.tunnelbroker.net\u003e\n  * \u003chttps://www.sitelutions.com\u003e\n  * \u003chttps://www.dnsexit.com\u003e, parent of \u003chttps://www.zoneedit.com\u003e\n  * \u003chttps://www.changeip.com\u003e\n    * \u003chttps://www.ovh.com\u003e\n    * \u003chttps://www.strato.com\u003e\n  * \u003chttps://www.dhis.org\u003e\n  * \u003chttps://giradns.com\u003e, \u003chttps://gira.de\u003e\n  * \u003chttps://www.duiadns.net\u003e\n  * \u003chttps://ddnss.de\u003e\n  * \u003chttps://dynv6.com\u003e\n  * \u003chttps://www.cloudxns.net\u003e\n  * \u003chttps://www.dnspod.cn\u003e\n  * \u003chttps://connect.yandex.ru\u003e\n  * \u003chttps://www.cloudflare.com\u003e\n  * \u003chttps://www.goip.de\u003e\n  * \u003chttps://www.dnshome.de\u003e\n  * \u003chttps://ipv64.net\u003e\n  * \u003chttps://domene.shop\u003e\n\nFor the complete list, see `inadyn -L`, for machine friendly JSON\noutput, use `inadyn -L -j`.\n\nDDNS providers not supported natively can be enabled using the custom,\nor generic, DDNS plugin. See below for configuration examples.\n\nIn-A-Dyn defaults to HTTPS, but not all providers may support this, so\ntry disabling SSL for the update (`ssl = false`) or the checkip phase\n(`checkip-ssl = false`) in the `provider` section, in case you run into\nproblems.\n\n*HTTPS is enabled by default* since it protects your credentials from\nbeing snooped and reduces the risk of someone hijacking your account.\n\n\nConfiguration\n-------------\n\nIn-A-Dyn supports updating several DDNS servers, several accounts even on\ndifferent DDNS providers.  The following `/etc/inadyn.conf` example show\nhow this can be done.  To verify your configuration, without starting the\ndaemon, use:\n\n    inadyn --check-config\n\nThis looks for the default `.conf` file, to check any file, use:\n\n    inadyn --check-config -f /path/to/file.conf\n\n### Example\n\n    # In-A-Dyn v2.0 configuration file format\n    period          = 300\n    user-agent      = Mozilla/5.0\n\n    # The FreeDNS username must be in lower case\n    # The password (max 16 chars) is case sensitive\n    provider freedns {\n        username    = lower-case-username\n        password    = case-sensitive-pwd\n        hostname    = some.example.com\n    }\n\n    # We override checkip server with the In-a-dyn built-in 'default',\n    # http://ifconfig.me/ip, for details on this, see below.\n    provider freemyip {\n        password       = YOUR_TOKEN\n        hostname       = YOUR_DOMAIN.freemyip.com\n        checkip-server = default\n    }\n\n    provider dyn {\n        ssl         = false\n        username    = charlie\n        password    = snoopy\n        hostname    = { peanuts, woodstock }\n        user-agent  = Mozilla/4.0\n    }\n\n    provider duckdns.org {\n        username         = YOUR_TOKEN\n        password         = noPasswordForDuckdns\n        hostname         = YOUR_DOMAIN.duckdns.org\n    }\n\n    # With multiple usernames at the same provider, index with :#\n    provider no-ip.com:1 {\n        username    = ian\n        password    = secret\n        hostname    = flemming.no-ip.com\n        user-agent  = inadyn/2.2\n    }\n\n    # With multiple usernames at the same provider, index with :#\n    provider no-ip.com:2 {\n        username       = james\n        password       = bond\n        hostname       = spectre.no-ip.com\n        checkip-ssl    = false\n        checkip-server = ifconfig.me\n        checkip-path   = /ip\n    }\n\n    # With multiple usernames at the same provider, index with :#\n    provider no-ip.com:3 {\n        username        = spaceman\n        password        = bowie\n        hostname        = spaceman.no-ip.com\n        checkip-command = \"/sbin/ifconfig eth0 | grep 'inet6 addr'\"\n    }\n\n    # Google Domains - notice use of '@' to update root entry\n    provider domains.google.com:1 {\n        hostname = @.mydomain.com\n        username = your_username\n        password = your_password\n    }\n\n    # Wildcard subdomains - notice the quotes (required!)\n    provider domains.google.com:2 {\n        hostname = \"*.mydomain.com\"\n        username = your_username\n        password = your_password\n    }\n\n    # Note: hostname == update-key from Advanced tab in the Web UI\n    provider tunnelbroker.net {\n        username    = futurekid\n        password    = dreoadsad/+dsad21321    # update-key-in-advanced-tab\n        hostname    = 1234534245321           # tunnel-id\n    }\n\n    # dynv6.com update using a custom checkip-command, which works\n    # if you have access to an Internet-connected interface.  Make\n    # sure to verify the command works on your system first\n    allow-ipv6 = true                # required option for IPv6 atm.\n    provider dynv6.com {\n        username = your_token\n        password = not_used\n        hostname = { host1.dynv6.net, host2.dynv6.net }\n        checkip-command = \"/sbin/ip -6 addr | grep inet6 | awk -F '[ \\t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80\"\n    }\n\n    provider cloudxns.net {\n        username = your_api_key\n        password = your_secret_key\n        hostname = yourhost.example.com\n    }\n\n    provider dnspod.cn {\n         username = your_api_id\n         password = your_api_token\n         hostname = yourhost.example.com\n    }\n\n    # Create a unique custom API token with the following permissions:\n    # -\u003e Zone.Zone - Read, Zone.DNS - Edit.\n    provider cloudflare.com {\n        username = zone.name\n        password = api_token_important_read_comment\n        hostname = hostname.zone.name\n        ttl = 1 # optional, value of 1 is 'automatic'.\n        proxied = false # optional.\n    }\n\n    provider goip.de {\n        username = user.name\n        password = user.password\n        hostname = hostname.zone.name\n    }\n\nNotice how the config has three different users of the No-IP provider --\nthis is achieved by appending a `:ID` to the provider name.\n\nWe also define a custom cache directory, default is to use `/var/cache`.\nIn our case `/mnt` is a system specific persistent store for caching\nyour IP address as reported to each provider.  Inadyn use this to ensure\nyou are not locked out of your account for excessive updates, which may\nhappen if your device Internet gateway running inadyn gets stuck in a\nreboot loop, or similar.\n\nHowever, for the caching mechanism to be 100% foolproof the system clock\nmust be set correctly -- if you have issues with the system clock not\nbeing set properly at boot, e.g. pending receipt of an NTP message, use\nthe command line option `--startup-delay=SEC`.  To tell `inadyn` it is\nOK to proceed before the `SEC` timeout, use `SIGUSR2`.\n\nThe last system defined is the IPv6 \u003chttps://tunnelbroker.net\u003e service\nprovided by Hurricane Electric.  Here `hostname` is set to the tunnel ID\nand password **must** be the *Update key* found in the *Advanced*\nconfiguration tab.\n\n\u003e **Note:** the `checkip-command` for dynv6, above, is just one way to\n\u003e do it.  Here's another variant, from their own script: `ip -6\n\u003e addr list scope global $device | grep -v \" fd\" | sed -n 's/.*inet6\n\u003e \\([0-9a-f:]\\+\\).*/\\1/p' | head -n 1`\n\nSometimes the default `checkip-server` for a DDNS provider can be slow\nto respond, even time out.  In-a-Dyn support overriding the provider's\ndefault with a custom one, or a custom command.  The easiest way to\nchange it is to set `checkip-server = default` in you provider config,\ntriggering In-a-Dyn to use the default `http://ifconfig.me/ip`, which\nalso is the default for any custom DDNS configuration.  See the man\npages, or the below section, for more information.\n\nSome providers require using a specific browser to send updates, this\ncan be worked around using the `user-agent = STRING` setting, as shown\nabove.  It is available both on a global and on a per-provider level.\n\n**NOTE:** In a multi-user server setup, make sure to chmod your `.conf`\n  to 600 (read-write only by you/root) to protect against other users\n  reading your DDNS server credentials.\n\n\nCustom DDNS Providers\n---------------------\n\nIn addition to the default DDNS providers supported by Inadyn, custom\nDDNS providers can be defined in the config file.  Use `custom {}` in\ninstead of the `provider {}` section used in examples above.\n\nIn-A-Dyn use HTTP basic authentication (base64 encoded) to communicate\nusername and password to the server.  If you do not have a username\nand/or password, you can leave these fields out.  Basic authentication,\nwill still be used in communication with the server, but with empty\nusername and password.\n\nA custom DDNS provider can be setup like this:\n\n    custom example {\n        username       = myuser\n        password       = mypass\n        checkip-server = checkip.example.com\n        checkip-path   = /\n        ddns-server    = update.example.com\n        ddns-path      = \"/update?hostname=\"\n        hostname       = myhostname.example.net\n    }\n\nThe following variables can be substituted into the configuration:\n\n     %u - username\n     %p - password, if HTTP basic auth is not used\n     %h - hostname\n     %i - IP address\n    \nFor \u003chttps://www.namecheap.com\u003e it can look as follows.  Notice how the\nhostname syntax differs from above:\n\n    custom namecheap {\n        username    = YOURDOMAIN.TLD\n        password    = mypass\n        ddns-server = dynamicdns.park-your-domain.com\n        ddns-path   = \"/update?domain=%u\u0026password=%p\u0026host=%h\u0026ip=%i\"\n        hostname    = { \"@\", \"www\", \"test\" }\n        ddns-response = \"\u003cErrCount\u003e0\u003c/ErrCount\u003e\"\n    }\n\nHere three hostnames are updated, one HTTP GET update request for every\nlisted hostname.  Some providers, like FreeDNS, support setting up CNAME\nrecords (aliases) to reduce the amount of records you need to update.\nFreeDNS even default to linking multiple records to the same update,\nwhich may be very confusing if you want each DNS record to be updated\nfrom a unique IP address -- make sure to *check your settings at the\nDDNS provider*!\n\nThe generic plugin can also be used with providers that require the\nclient's new IP address in the update request.  Here is an example of\nhow this can be done if we *pretend* that \u003chttp://dyn.com\u003e is not\nsupported by inadyn.  The `ddns-path` differs between providers and is\nsomething you must figure out.  The support pages sometimes list this\nunder an API section, or similar.\n\n    # This emulates dyndns.org\n    custom dyn {\n        username    = DYNUSERNAME\n        password    = DYNPASSWORD\n        ddns-server = members.dyndns.org\n        ddns-path   = \"/nic/update?hostname=%h.dyndns.org\u0026myip=%i\"\n        hostname    = { YOURHOST, alias }\n    }\n\nHere a fully custom `ddns-path` with format specifiers are used, see the\n`inadyn.conf(5)` man page for details on this.\n\nAnother example:\n\n    # Custom configuration for dnsmadeeasy\n    custom dyn {\n        username    = DNSMADEEASYUSERNAME\n        password    = DNSMADEEASYPASSWORDFORTHISHOST\n        ddns-server = cp.dnsmadeeasy.com\n        ddns-path   = \"/servlet/updateip?username=%u\u0026password=%p\u0026id=DNSMADEEASYHOSTID\u0026ip=%i\"\n        hostname    = HOST\n    }\n\nWhen using the generic plugin you should first inspect the response from\nthe DDNS provider.  By default Inadyn looks for a `200 HTTP` response OK\ncode and the strings `\"good\"`, `\"OK\"`, `\"true\"`, `\"success\"`, or `\"updated\"` in the\nHTTP response body.  If the DDNS provider returns something else you can\nadd a list of possible `ddns-response = { Arrr, kilroy }`, or just a\nsingle `ddns-response = Cool` -- if your provider does give any response\nthen use `ddns-response = \"\"`.\n\nIf your DDNS provider does not provide you with a `checkip-server`, you\ncan use other services, like http://ifconfig.me/ip, which is the default\nif you do not specify one for your custom provider config:\n\n    checkip-server = ifconfig.me\n    checkip-path   = /ip\n    checkip-ssl    = false\n\nor even use a script or command:\n\n    checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'\n\nThese two settings can also be used in standard `provider{}` sections.\n\n**Note:** `hostname` is required, even if everything is encoded in the\n`ddns-path`!  The given hostname is appended to the `ddns-path` used for\nupdates, unless you use the `append-myip` setting, in which case your IP\naddress will be appended instead.  When using `append-myip` you probably\nneed to encode your DNS hostname in the `ddns-path` instead, as is done\nin the last example above.\n\n\nTroubleshooting\n---------------\n\nA common problem is getting started, which is understandable since In-a-Dyn\nhas a lot of confusing options.\n\n### Initial Connection\n\nHaving saved your `/etc/inadyn.conf`, first try starting it in the\nforeground with full debug logs:\n\n    inadyn -l debug --foreground --force\n\nAny misconfiguration or bad server responses should be a lot easier to\nspot.  Remember to censor your logs from any passwords and domain info\nif you file a bug report or ask a question in the forum/irc!\n\n### Not Updating\n\nTry clearing the cache:\n\n 1. `sudo systemctl stop inadyn.service`\n 2. `sudo rm -rf /var/cache/inadyn/*`\n 3. `sudo systemctl restart inadyn.service`\n\n\nBuild \u0026 Install\n---------------\n\n### Debian/Ubuntu/Mint\n\nFor a long time, the project maintained its own `.deb` packaging and\nbasic apt infrastructure.  However, the increasing level of features in\nIn-a-Dyn, and thus amount of dependencies, as well as the demands for\nsupporting more architectures and different distributions, the pre-built\n`.deb` support has been discontinued as of v2.9.1.\n\nThe Debian project now has an active maintainer for inadyn, which is the\nupstream for Ubuntu and others.  Please report issues and requests to\nyour respective distribution:\n\n  * https://packages.debian.org/sid/inadyn\n  * https://packages.ubuntu.com/jammy/inadyn\n\n\u003e **Note:** the project's packaging files have been moved to a separate\n\u003e [debian][] branch in the GIT repository.  It is not actively updated\n\u003e or supported for releases.  To use it, check out the branch and edit\n\u003e `debian/changelog`) to build new `.deb` files for your system.\n\n\n### Docker\n\nAutomatically built images available here:\n\n* https://hub.docker.com/r/troglobit/inadyn\n\nA Dockerfile is provided to simplify building and running `inadyn`.\n\n    docker build -t inadyn:latest .\n    docker run --rm -v \"$PWD/inadyn.conf:/etc/inadyn.conf\" inadyn:latest\n\n#### Periodic Update with Cron\n\nIf you don't want to run In-a-dyn as a background daemon, you can set up\na cronjob:\n\n  * Create your `inadyn.conf` file\n  * Create folder for cache\n  * Add the following line inside crontab `crontab -e`\n\n```bash\n* * * * * docker run --rm -v \"path/to/inadyn.conf:/etc/inadyn.conf\" -v \"path/to/cache:/var/cache/inadyn\" troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn \u003e /dev/null 2\u003e\u00261\n```\n\n### Homebrew (macOS)\n\nTo run the latest stable version on macOS, type:\n\n    brew install inadyn\n\nTo run the latest version from the master branch, install the git tap instead:\n\n    brew install --HEAD troglobit/inadyn/inadyn\n\nEither of these will install all dependencies.\n\n### MacPorts (macOS)\n\nYou can also install In-A-Dyn on macOS using [MacPorts](https://www.macports.org):\n\n    sudo port install inadyn\n\nYou can find more information at In-A-Dyn's [ports page](https://ports.macports.org/port/inadyn/).\n\n### Building from Source\n\nFirst download the latest official In-A-Dyn release from GitHub:\n\n* https://github.com/troglobit/inadyn/releases\n\nIn-A-Dyn requires a few libraries to build.  The build system searches\nfor them, in their required versions, using the `pkg-config` tool:\n\n* [libConfuse][] (3.0+)\n* [LibreSSL][], [OpenSSL][], or [GnuTLS][] (which require libnettle)\n\nThey are available from most UNIX distributions as pre-built packages.\nMake sure to install the `-dev` or `-devel` package of the distribution\npackages when building Inadyn.  On Debian/Ubuntu (derivatives):\n\n    $ sudo apt install gnutls-dev libconfuse-dev\n\nTo build you also need a C compiler, the `pkg-config` tool, and make:\n\n    $ sudo apt install build-essential pkg-config\n\nWhen building with HTTPS (SSL/TLS) support, make sure to also install\nthe `ca-certificates` package on your system, otherwise Inadyn will not\nbe able to validate the DDNS provider's HTTPS certificates.\n\n### Configure \u0026 Build\n\nThe GNU Configure \u0026 Build system use `/usr/local` as the default install\nprefix.  In many cases this is useful, but this means the configuration\nfiles and cache files will also use that same prefix.  Most users have\ncome to expect those files in `/etc/` and `/var/run/` and configure has\na few useful options that are recommended to use:\n\n    $ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var\n    $ make -j5\n    $ sudo make install-strip\n\nYou may want to remove the `--prefix=/usr` option.\n\n\n### SSL/TLS Support\n\nBy default inadyn tries to build with GnuTLS for HTTPS support.  GnuTLS\nis the recommended SSL library to use on UNIX distributions which do not\nprovide OpenSSL/LibreSSL as a system library.  However, when OpenSSL or\nLibreSSL is available as a system library, for example in many embedded\nsystems:\n\n    ./configure --enable-openssl\n\nTo completely disable inadyn HTTPS support (not recommended!):\n\n    ./configure --disable-ssl\n\nFor more details on the OpenSSL and GNU GPL license issue, see:\n\n  * \u003chttps://lists.debian.org/debian-legal/2004/05/msg00595.html\u003e\n  * \u003chttps://people.gnome.org/~markmc/openssl-and-the-gpl\u003e\n\n\n### Static Build\n\nSome people want to build statically, to do this with `autoconf` add the\nfollowing `LDFLAGS=` *after* the configure script.  You may also need to\nadd `LIBS=...`, which will depend on your particular system:\n\n    ./configure LDFLAGS=\"-static\" ...\n\n\n### RedHat, Fedora, CentOS\n\nOn some systems the default configure installation path, `/usr/local`,\nis disabled and not searched by tools like `ldconfig` and `pkg-config`.\nSo if configure fails to find the libConfuse libraries, or the `.pc`\nfiles, create the file `/etc/ld.so.conf.d/local.conf` with this content:\n\n    /usr/local/lib\n\nupdate the linker cache:\n\n    sudo ldconfig -v |egrep libconfuse\n\nand run the Inadyn configure script like this:\n\n    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure\n\n### Integration with systemd\n\nFor systemd integration you need to install `pkg-config`, which helps\nthe Inadyn build system figure out the systemd paths.  When installed\nsimply call `systemctl` to enable and start `inadyn`:\n\n    $ sudo systemctl enable inadyn.service\n    $ sudo systemctl start  inadyn.service\n\nCheck that it started properly by inspecting the system log, or:\n\n    $ sudo systemctl status inadyn.service\n\nTo stop the service:\n\n    $ sudo systemctl stop   inadyn.service\n\n\n### Embedded applications\n\nWhen built into a router, some features aren't usually used and can be disabled\nto save space. The configure option `--enable-reduced` will build such a\nreduced-functionality binary. Currently, this disables verbose log messages and\nerror strings and eliminates config file checking \u0026 some backward compatibility.\n\n\nBuilding from GIT\n-----------------\n\nIf you want to contribute, or simply just try out the latest but\nunreleased features, then you need to know a few things about the\n[GNU build system][buildsystem]:\n\n- `configure.ac` and a per-directory `Makefile.am` are key files\n- `configure` and `Makefile.in` are generated from `autogen.sh`,\n  they are not stored in GIT but automatically generated for the\n  release tarballs\n- `Makefile` is generated by `configure` script\n\nTo build from GIT; clone the repository and run the `autogen.sh` script.\nThis requires the GNU tools `automake`, `autoconf` and `libtool` to be\ninstalled on your system.  Released tarballs do not require these tools.\n\n    $ sudo apt install git automake autoconf\n\nThen you can clone the repository and create the `configure` script,\nwhich is not part of the GIT repo:\n\n    git clone https://github.com/troglobit/inadyn.git\n    cd inadyn/\n    ./autogen.sh\n    ./configure \u0026\u0026 make\n\nBuilding from GIT requires, at least, the previously mentioned library\ndependencies.  GIT sources are a moving target and are not recommended\nfor production systems, unless you know what you are doing!\n\n\nOrigin \u0026 References\n-------------------\n\nThis is the continuation of Narcis Ilisei's [original][] INADYN.  Now\nmaintained by [Joachim Wiberg][].  Please file bug reports, or send\npull requests for bug fixes and proposed extensions at [GitHub][].\n\n\u003e A personal *Thank you!* goes out to Robert Högberg, who sponsored a\n\u003e little D-Link DIR-645 router so I could get back on the interwebs :-)\n\n[original]:         http://www.inatech.eu/inadyn/\n[DDNS]:             https://en.wikipedia.org/wiki/Dynamic_DNS\n[tunnelbroker]:     https://tunnelbroker.net/\n[Joachim Wiberg]:   https://troglobit.com\n[libConfuse]:       https://github.com/martinh/libconfuse\n[LibreSSL]:         https://www.libressl.org/\n[OpenSSL]:          https://www.openssl.org/\n[GnuTLS]:           https://www.gnutls.org/\n[GitHub]:           https://github.com/troglobit/inadyn\n[buildsystem]:      https://airs.com/ian/configure/\n[License]:          https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html\n[License Badge]:    https://img.shields.io/badge/License-GPL%20v2-blue.svg\n[debian]:           https://github.com/troglobit/inadyn/tree/debian/debian\n[GitHub]:           https://github.com/troglobit/inadyn/actions/workflows/build.yml/\n[GitHub Status]:    https://github.com/troglobit/inadyn/actions/workflows/build.yml/badge.svg\n[Coverity Scan]:    https://scan.coverity.com/projects/2981\n[Coverity Status]:  https://scan.coverity.com/projects/2981/badge.svg\n","funding_links":["https://github.com/sponsors/troglobit"],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftroglobit%2Finadyn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftroglobit%2Finadyn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftroglobit%2Finadyn/lists"}