func cmdConfig(args []string) error { if len(args) == 0 { lines := strings.Split(jetpack.Config().String(), "\n") sort.Strings(lines) fmt.Println(strings.Join(lines[1:], "\n")) // first "line" is empty due to trailing newline } else { for _, propName := range args { if val, ok := jetpack.Config().Get(propName); ok { fmt.Println(val) } else { return errors.Errorf("No such property: %v", propName) } } } return nil }
func main() { flag.Parse() Info.Pid = os.Getpid() Info.Uid = -1 Info.Gid = -1 Info.Version = jetpack.Version() if host, err := jetpack.NewHost(); err != nil { log.Fatalln("Error initializing host:", err) } else { Host = host } if hostip, _, err := Host.HostIP(); err != nil { panic(err) } else { Info.IP = hostip.String() } Info.Port = jetpack.Config().MustGetInt("mds.port") if s, err := hex.DecodeString(jetpack.Config().MustGet("mds.signing-key")); err != nil { panic(err) } else { SigningKey = s } switch lfPath, _ := jetpack.Config().Get("mds.logfile"); lfPath { case "-", "": log.SetOutput(os.Stderr) case "none", "/dev/null": log.SetOutput(ioutil.Discard) default: if lf, err := os.OpenFile(lfPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0640); err != nil { log.Fatalf("Cannot open log file %#v: %v", lfPath, err) } else { log.SetOutput(lf) defer lf.Close() } } if pfPath, ok := jetpack.Config().Get("mds.pidfile"); ok { if err := ioutil.WriteFile(pfPath, []byte(fmt.Sprintln(os.Getpid())), 0644); err != nil { log.Fatalf("Cannot write pidfile %#v: %v", pfPath, err) } } addr := fmt.Sprintf("%v:%d", Info.IP, Info.Port) listener, err := net.Listen("tcp", addr) if err != nil { log.Fatalf("Cannot listen on %v: %v", addr, err) } if !jetpack.Config().GetBool("mds.keep-uid", false) { uid, gid := jetpack.MDSUidGid() if err := unix.Setgroups(nil); err != nil { log.Fatal("Cannot clear groups:", err) } if err := unix.Setresgid(gid, gid, gid); err != nil { log.Fatal("Cannot drop gid:", err) } if err := unix.Setresuid(uid, uid, uid); err != nil { log.Fatal("Cannot drop uid:", err) } } Info.Uid = os.Getuid() Info.Gid = os.Getgid() log.Println("Listening on:", addr) log.Fatal(http.Serve(listener, http.HandlerFunc(ServeMetadata))) }