Giter Site home page Giter Site logo

go-avahi-cname's People

Contributors

grishy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

go-avahi-cname's Issues

Failed to publish CNAMEs: too many objects

I'm getting the following error after some time (around 3 days):

Jan 27 17:59:22 ha go-avahi-cname[670]: 2024/01/27 17:59:22 Publishing every 300s and CNAME TTL 600s
Jan 31 07:19:22 ha go-avahi-cname[670]: Error:
Jan 31 07:19:22 ha go-avahi-cname[670]:  > failed to publish CNAMEs: failed to create entry group: Too many objects

The avahi daemon reports the same thing:

Jan 31 07:19:22 ha avahi-daemon[642]: Too many objects for client ':1.7', client request failed.

The service is being run on Ubuntu 22.04 using systemd. Though I guess it isn't really that important. I'm using the following command:

/usr/bin/go-avahi-cname cname grafana.local.

Check CNAME list

Ideas:

  • Eliminate duplicates from the CNAME list.
  • Remove self-referential CNAME records.

Support subdomain

Theoretically, it is feasible to dynamically alter the interaction with the CNAME based on the response to the request.

When a device within a network attempts to connect to, for instance, test.lab.local, and test.lab.local is not present in the cache, a request is sent. Consequently, two potential approaches are possible: either listening on the multicast IP or subscribing to avahi dbus messages (assuming they are available).

Implementing this approach would result in reduced network traffic by minimizing the number of packages transmitted within the network, and it would also introduce additional logic to handle response behavior. An automatic redirection of all *.lab.local requests to lab.local through CNAME during runtime would be achievable through this mechanism.

So many questions! How do i run this?

Hi,

Thank you for this project! It looks like what i need.
I essentially just need a network alias because some devices in my network know it by name X, some by name Y. Don't ask ;)

From the elaborate detailed description i "think" that this project does what i want it to do. But it's completely unclear to me how.

You have 2 ways to install. Binary and docker.

Binary
The binary version is partly clear to me. You register/publish new cnames.
What isn't clear here is:

  1. Do i need to keep a service running to keep publishing a name?
  2. Do i need a systemd service file to run this in the background? And if so, what should i put in there?
  3. Where does it store those published names?
  4. How do i remove them if need be?

Docker
The docker version is even more vague to me.

  1. Nothing explains how i'd add a cname though the docker version. How?
  2. Where does docker store these?
  3. And how do i remove them?
  4. How do i even run the docker image (i know how to build/run a docker compose, this one is a little rhetorical where you should probably provide the steps to build/run it too)

I'm looking forward to hearing some clarity about this. It's probably the fix for me :)
But as it is now, it's waaaaaay too vague for me to even try it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.