49 lines
958 B
Go
49 lines
958 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/MDrollette/go-i2p/reseed"
|
|
"github.com/codegangsta/cli"
|
|
)
|
|
|
|
func NewReseedCommand() cli.Command {
|
|
return cli.Command{
|
|
Name: "reseed",
|
|
Usage: "Start a reseed server",
|
|
Description: "Start a reseed server",
|
|
Action: reseedAction,
|
|
Flags: []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "addr",
|
|
Value: "127.0.0.1:8080",
|
|
Usage: "IP and port to listen on",
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func reseedAction(c *cli.Context) {
|
|
log.Println("Starting server on", c.String("addr"))
|
|
|
|
netdb := reseed.NewLocalNetDb(c.Args().Get(0))
|
|
reseeder := reseed.NewReseeder(netdb)
|
|
|
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
peer := reseeder.Peer(r)
|
|
seeds, err := reseeder.Seed(peer)
|
|
if nil != err {
|
|
fmt.Fprintf(w, "Problem: '%s'", err)
|
|
return
|
|
}
|
|
|
|
for _, s := range seeds {
|
|
fmt.Fprintf(w, "%s\n", s.Name)
|
|
}
|
|
})
|
|
|
|
http.ListenAndServe("127.0.0.1:9090", nil)
|
|
}
|