More development. More types. Fixed attribute groups in requests. Started on client. Saving data to file. More types. Printing from chromeos works a little bit. More types. Spelling corrections. WIP: Fix keyword handling Move request to a separate file and add test. Co-authored-by: Henrik Sölver <henrik.solver@gmail.com> Reviewed-on: #6 Co-Authored-By: henrik <henrik.solver@gmail.com> Co-Committed-By: henrik <henrik.solver@gmail.com>
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
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()
|
|
}
|