Provide discovery hint from the outside (ref #192)

This commit is contained in:
Jakob Borg 2014-05-12 21:50:54 -03:00
parent e8a9abaf40
commit dd1197236d
2 changed files with 18 additions and 0 deletions

View File

@ -56,6 +56,7 @@ func startGUI(cfg GUIConfiguration, m *Model) error {
router.Post("/rest/shutdown", restPostShutdown)
router.Post("/rest/error", restPostError)
router.Post("/rest/error/clear", restClearErrors)
router.Post("/rest/discovery/hint", restPostDiscoveryHint)
mr := martini.New()
if len(cfg.User) > 0 && len(cfg.Password) > 0 {
@ -233,6 +234,15 @@ func showGuiError(err string) {
guiErrorsMut.Unlock()
}
func restPostDiscoveryHint(r *http.Request) {
var qs = r.URL.Query()
var node = qs.Get("node")
var addr = qs.Get("addr")
if len(node) != 0 && len(addr) != 0 && discoverer != nil {
discoverer.Hint(node, []string{addr})
}
}
func basic(username string, passhash string) http.HandlerFunc {
return func(res http.ResponseWriter, req *http.Request) {
error := func() {

View File

@ -90,6 +90,14 @@ func (d *Discoverer) Lookup(node string) []string {
return nil
}
func (d *Discoverer) Hint(node string, addrs []string) {
resAddrs := resolveAddrs(addrs)
d.registerNode(nil, Node{
ID: node,
Addresses: resAddrs,
})
}
func (d *Discoverer) announcementPkt() []byte {
var addrs []Address
for _, astr := range d.listenAddrs {