28 } 29) 30 31func abortonerr(err error) { 32 if err != nil { 33 panic(err) 34 } 35} 36 37// returns: [nstype]:[4026531835] 38func getns(nstype string) uint64 { 39 str, err := os.Readlink(fmt.Sprintf("/proc/self/ns/%s", nstype)) 40 if err != nil { 41 return 0 42 } 43 44 str = str[len(nstype)+2:] 45 str = str[:len(str)-1] 46 val, err := strconv.ParseUint(str, 10, 64) 47 abortonerr(err) 48 return val 49} 50 51func handler(w http.ResponseWriter, r *http.Request) { 52 pid := os.Getpid() 53 out := &Output{ 54 PID: pid, 55 UID: os.Getuid(), 56 GID: os.Getgid(), 57 NS: NS{ 58 PID: getns("pid"), 59 USER: getns("user"), 60 MNT: getns("mnt"), 61 IPC: getns("ipc"), 62 UTS: getns("uts"), 63 NET: getns("net"), 64 CGROUP: getns("cgroup"), 65 }, 66 }
| 29 } 30) 31 32func abortonerr(err error) { 33 if err != nil { 34 panic(err) 35 } 36} 37 38// returns: [nstype]:[4026531835] 39func getns(nstype string) uint64 { 40 str, err := os.Readlink(fmt.Sprintf("/proc/self/ns/%s", nstype)) 41 if err != nil { 42 return 0 43 } 44 45 str = str[len(nstype)+2:] 46 str = str[:len(str)-1] 47 val, err := strconv.ParseUint(str, 10, 64) 48 abortonerr(err) 49 return val 50} 51 52func handler(w http.ResponseWriter, r *http.Request) { 53 pid := os.Getpid() 54 out := &Output{ 55 PID: pid, 56 UID: os.Getuid(), 57 GID: os.Getgid(), 58 NS: NS{ 59 PID: getns("pid"), 60 USER: getns("user"), 61 MNT: getns("mnt"), 62 IPC: getns("ipc"), 63 UTS: getns("uts"), 64 NET: getns("net"), 65 CGROUP: getns("cgroup"), 66 }, 67 }
|
67 data, err := json.Marshal(out) 68 if err != nil { 69 w.WriteHeader(http.StatusInternalServerError) 70 return 71 } 72 73 w.Header().Add("Content-Type", "application/json") 74 75 w.Write(data) 76} 77 78func main() { 79 http.HandleFunc("/", handler) 80 unit.ListenAndServe(":7080", nil) 81}
| 80 data, err := json.Marshal(out) 81 if err != nil { 82 w.WriteHeader(http.StatusInternalServerError) 83 return 84 } 85 86 w.Header().Add("Content-Type", "application/json") 87 88 w.Write(data) 89} 90 91func main() { 92 http.HandleFunc("/", handler) 93 unit.ListenAndServe(":7080", nil) 94}
|