package main import ( "fmt" "github.com/julienschmidt/httprouter" ) func init() { router.GET("/api/ips", apiHandler(showIPs)) router.GET("/api/students/:sid/ips", apiHandler(studentHandler(func(student Student, body []byte) (interface{}, error) { return getStudentIPs(student), nil }))) } func (s Student) IPSuffix() int64 { return s.Id * 5 + 10 } func showIPs(_ httprouter.Params, body []byte) (interface{}, error) { r := make(map[string]map[string]string) students, err := getStudents() if err != nil { return nil, err } for _, std := range students { sid := fmt.Sprintf("%d", std.Id) r[sid] = getStudentIPs(std) if std.MAC == nil { continue } r[sid]["mac"] = *std.MAC } return r, nil } func getStudentIPs(student Student) (r map[string]string) { r = make(map[string]string) r["vlan0"] = fmt.Sprintf("172.23.0.%d", student.IPSuffix()) r["vlan7"] = fmt.Sprintf("172.23.142.%d", student.IPSuffix()) r["wg"] = studentIP(student.Id).String() r["adn"] = student.myAssociatedDomain() r["ddn"] = student.MyDelegatedDomain() return }