1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  | 
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is governed by the GPL 3.0
package main
import (
	"fmt"
	"io"
	"net/http"
	"time"
	"go.wit.com/lib/protobuf/httppb"
	"go.wit.com/log"
)
/*
	if strings.HasPrefix(route, "/repos/") {
		pb := gitpb.NewRepos()
		if err := pb.Unmarshal(reqPB.ClientData); err == nil {
			reqPB.Log("Repos Unmarshal() len=%d", pb.Len())
		} else {
			reqPB.Logf("Repos Unmarshal() err=%v", err)
		}
		result := gitpb.NewRepos()
		switch route {
		case "/repos/check":
			result = addRequest(pb, reqPB)
			reqPB.Logf("repos check result.Len()=%d pb.Len()=%d\n", result.Len(), pb.Len())
		case "/repos/pull":
			result = pullRequest(pb, reqPB)
		case "/repos/add":
			result = addRequest(pb, reqPB)
		default:
			reqPB.Logf("repos check result.Len()=%d pb.Len()=%d\n", result.Len(), pb.Len())
			log.Info("repos", route, "unknown")
		}
		if err := result.SendReply(w, reqPB); err != nil {
			reqPB.Logf("Oh well, Send to client failed. err=%v", err)
		}
		// todo: logReq(reqPB)
		logReqPB(reqPB)
		return
	}
*/
func okHandler(w http.ResponseWriter, r *http.Request) {
	reqPB, err := httppb.ReqToPB(r)
	reqPB.Logf("START: Got %d bytes from the client", len(reqPB.ClientData))
	if err != nil {
		reqPB.Logf("httppb err %v", err)
	}
	route := reqPB.Route
	if route == "/" {
		return
	}
	if route == "/machine" {
		handleMachine(w, reqPB)
		return
	}
	if route == "/uptime" {
		doUptime(w)
		return
	}
	log.Warn("BAD URL =", route)
}
func doUptime(w io.Writer) {
	if me.zood == nil {
		fmt.Fprintf(w, "BAD zood == nil\n")
		return
	}
	var count int
	var bad int
	for m := range me.machines.IterAll() {
		count += 1
		if m.FindVersion("zood") != me.zood.version {
			if m.SinceLastUpdate() > 10*time.Minute {
				// skip machines that have not been updated in the last 10 minutes
				log.Info("ignoring old machine", m.Hostname)
				continue
			}
			bad += 1
		}
	}
	if bad == 0 {
		fmt.Fprintf(w, "GOOD machine count=(%d) all machines are version %s\n", count, me.zood.version)
	} else {
		fmt.Fprintf(w, "BAD machine count=(%d) upgrade=(%d) to %s\n", count, bad, me.zood.version)
	}
}
  |