package mdnsserver import ( "context" log "github.com/sirupsen/logrus" "github.com/godbus/dbus/v5" "github.com/holoplot/go-avahi" ) func Run(ctx context.Context) { conn, err := dbus.SystemBus() if err != nil { return } a, err := avahi.ServerNew(conn) if err != nil { log.Fatalf("Avahi new failed: %v", err) } eg, err := a.EntryGroupNew() if err != nil { log.Fatalf("EntryGroupNew() failed: %v", err) } //hostname, err := a.GetHostName() if err != nil { log.Fatalf("GetHostName() failed: %v", err) } fqdn, err := a.GetHostNameFqdn() if err != nil { log.Fatalf("GetHostNameFqdn() failed: %v", err) } var txt [][]byte txt = append(txt, []byte("note=burken")) txt = append(txt, []byte("product=coola-skrivaren")) txt = append(txt, []byte("Color=T")) txt = append(txt, []byte("rp=ipp/print")) txt = append(txt, []byte("ty=ChroBro 001")) err = eg.AddService(avahi.InterfaceUnspec, avahi.ProtoUnspec, 0, "ChroBro 1000", "_ipp._tcp", "local", fqdn, 1234, txt) if err != nil { log.Fatalf("AddService() failed: %v", err) } err = eg.Commit() if err != nil { log.Fatalf("Commit() failed: %v", err) } <-ctx.Done() eg.Reset() conn.Close() }