Added built-in mDNS server.
This commit is contained in:
parent
b674a7daa2
commit
35358a6f84
57
main.go
57
main.go
@ -1,7 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/micro/mdns"
|
||||||
|
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
@ -10,20 +13,62 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var (
|
var (
|
||||||
addr = flag.String("addr", ":8000", "`host:port` to listen on")
|
host = flag.String("host", "0.0.0.0", "`host` to listen on")
|
||||||
|
port = flag.Int("port", 8000, "`port` to listen on")
|
||||||
directory = flag.String("directory", "/var/cache/go-aptproxy", "`directory` used for storing packages")
|
directory = flag.String("directory", "/var/cache/go-aptproxy", "`directory` used for storing packages")
|
||||||
)
|
)
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
s, err := NewServer(*addr, *directory)
|
|
||||||
|
// Create the HTTP server and initialize the cache
|
||||||
|
addr := fmt.Sprintf("%s:%d", *host, *port)
|
||||||
|
httpServer, err := NewServer(addr, *directory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
s.Start()
|
log.Println("Starting HTTP server...")
|
||||||
defer s.Stop()
|
if err = httpServer.Start(); err != nil {
|
||||||
log.Println("APT proxy started")
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
httpServer.Stop()
|
||||||
|
log.Println("Stopping HTTP server...")
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Respond to mDNS queries
|
||||||
|
h, err := os.Hostname()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
service, err := mdns.NewMDNSService(
|
||||||
|
h,
|
||||||
|
"_apt_proxy._tcp",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
*port,
|
||||||
|
nil,
|
||||||
|
[]string{"go-aptproxy - Smarter APT Proxy"},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
log.Println("Starting mDNS server...")
|
||||||
|
mDNSServer, err := mdns.NewServer(&mdns.Config{Zone: service})
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
mDNSServer.Shutdown()
|
||||||
|
log.Println("Stopping mDNS server...")
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Wait for a signal
|
||||||
c := make(chan os.Signal)
|
c := make(chan os.Signal)
|
||||||
signal.Notify(c, syscall.SIGINT)
|
signal.Notify(c, syscall.SIGINT)
|
||||||
<-c
|
<-c
|
||||||
log.Println("APT proxy shut down by signal")
|
log.Println("Caught SIGINT")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user