diff options
| -rw-r--r-- | pkg/rpctype/rpctype.go | 2 | ||||
| -rw-r--r-- | syz-hub/http.go | 4 | ||||
| -rw-r--r-- | syz-hub/hub.go | 6 | ||||
| -rw-r--r-- | syz-hub/state/state.go | 4 | ||||
| -rw-r--r-- | syz-hub/state/state_test.go | 2 | ||||
| -rw-r--r-- | syz-manager/hub.go | 2 |
6 files changed, 15 insertions, 5 deletions
diff --git a/pkg/rpctype/rpctype.go b/pkg/rpctype/rpctype.go index e314424ea..4f941f51c 100644 --- a/pkg/rpctype/rpctype.go +++ b/pkg/rpctype/rpctype.go @@ -12,6 +12,8 @@ type HubConnectArgs struct { Key string // Manager name, must start with Client. Manager string + // Manager HTTP URL. + HTTP string // See pkg/mgrconfig.Config.HubDomain. Domain string // Manager has started with an empty corpus and requests whole hub corpus. diff --git a/syz-hub/http.go b/syz-hub/http.go index ffb7a1be5..06f777f34 100644 --- a/syz-hub/http.go +++ b/syz-hub/http.go @@ -48,6 +48,7 @@ func (hub *Hub) httpSummary(w http.ResponseWriter, r *http.Request) { total.RecvRepros += mgr.RecvRepros data.Managers = append(data.Managers, UIManager{ Name: name, + HTTP: mgr.HTTP, Domain: mgr.Domain, Corpus: len(mgr.Corpus.Records), Added: mgr.Added, @@ -79,6 +80,7 @@ type UISummaryData struct { type UIManager struct { Name string + HTTP string Domain string Corpus int Added int @@ -104,6 +106,7 @@ var summaryTemplate = compileTemplate(` <caption>Managers:</caption> <tr> <th>Name</th> + <th>URL</th> <th>Domain</th> <th>Corpus</th> <th>Added</th> @@ -116,6 +119,7 @@ var summaryTemplate = compileTemplate(` {{range $m := $.Managers}} <tr> <td>{{$m.Name}}</td> + <td><a href="{{$m.HTTP}}">{{$m.HTTP}}</a></td> <td>{{$m.Domain}}</td> <td>{{$m.Corpus}}</td> <td>{{$m.Added}}</td> diff --git a/syz-hub/hub.go b/syz-hub/hub.go index 22090c6e5..4b7b61354 100644 --- a/syz-hub/hub.go +++ b/syz-hub/hub.go @@ -78,9 +78,9 @@ func (hub *Hub) Connect(a *rpctype.HubConnectArgs, r *int) error { hub.mu.Lock() defer hub.mu.Unlock() - log.Logf(0, "connect from %v: domain=%v fresh=%v calls=%v corpus=%v", - name, a.Domain, a.Fresh, len(a.Calls), len(a.Corpus)) - if err := hub.st.Connect(name, a.Domain, a.Fresh, a.Calls, a.Corpus); err != nil { + log.Logf(0, "connect from %v (%v): domain=%v fresh=%v calls=%v corpus=%v", + name, a.HTTP, a.Domain, a.Fresh, len(a.Calls), len(a.Corpus)) + if err := hub.st.Connect(name, a.HTTP, a.Domain, a.Fresh, a.Calls, a.Corpus); err != nil { log.Logf(0, "connect error: %v", err) return err } diff --git a/syz-hub/state/state.go b/syz-hub/state/state.go index 0bed36a91..bbba0cc0e 100644 --- a/syz-hub/state/state.go +++ b/syz-hub/state/state.go @@ -36,6 +36,7 @@ type State struct { type Manager struct { name string dir string + HTTP string Domain string corpusSeq uint64 reproSeq uint64 @@ -208,7 +209,7 @@ func (st *State) PurgeOldManagers() error { return nil } -func (st *State) Connect(name, domain string, fresh bool, calls []string, corpus [][]byte) error { +func (st *State) Connect(name, http, domain string, fresh bool, calls []string, corpus [][]byte) error { mgr := st.Managers[name] if mgr == nil { var err error @@ -217,6 +218,7 @@ func (st *State) Connect(name, domain string, fresh bool, calls []string, corpus return err } } + mgr.HTTP = http mgr.Connected = time.Now() mgr.Domain = domain writeFile(mgr.domainFile, []byte(mgr.Domain)) diff --git a/syz-hub/state/state_test.go b/syz-hub/state/state_test.go index 335f02ea0..7a7f5d6df 100644 --- a/syz-hub/state/state_test.go +++ b/syz-hub/state/state_test.go @@ -38,7 +38,7 @@ func (ts *TestState) Reload() { func (ts *TestState) Connect(name, domain string, fresh bool, calls []string, corpus [][]byte) { ts.t.Helper() - if err := ts.state.Connect(name, domain, fresh, calls, corpus); err != nil { + if err := ts.state.Connect(name, "", domain, fresh, calls, corpus); err != nil { ts.t.Fatalf("Connect failed: %v", err) } } diff --git a/syz-manager/hub.go b/syz-manager/hub.go index 2c10a80f4..e10835f9e 100644 --- a/syz-manager/hub.go +++ b/syz-manager/hub.go @@ -155,10 +155,12 @@ func (hc *HubConnector) connect(corpus []*corpus.Item) (*rpctype.RPCClient, erro if err != nil { return nil, err } + http := publicWebAddr(hc.cfg.HTTP) a := &rpctype.HubConnectArgs{ Client: hc.cfg.HubClient, Key: key, Manager: hc.cfg.Name, + HTTP: http, Domain: hc.domain, Fresh: hc.fresh, } |
