github.com/aitjcize/Overlord@v0.0.0-20240314041920-104a804cf5e8/cmd/ghost/main.go (about) 1 // Copyright 2015 The Chromium OS Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package main 6 7 import ( 8 "flag" 9 "fmt" 10 "log" 11 "os" 12 13 "github.com/aitjcize/Overlord/overlord" 14 ) 15 16 var mid = flag.String("mid", "", "machine ID to set") 17 var randMid = flag.Bool("rand-mid", false, "use random machine ID") 18 var noLanDisc = flag.Bool("no-lan-disc", false, "disable LAN discovery") 19 var noRPCServer = flag.Bool("no-rpc-server", false, "disable RPC server") 20 var propFile = flag.String("prop-file", "", 21 "file containing the JSON representation of client properties") 22 var tlsCertFile = flag.String("tls-cert-file", "", 23 "file containing the server TLS certificate in PEM format") 24 var tlsNoVerify = flag.Bool("tls-no-verify", false, 25 "do not verify certificate if TLS is enabled") 26 var tlsModeFlag = flag.String("tls", "detect", 27 "specify 'y' or 'n' to force enable/disable TLS") 28 var download = flag.String("download", "", "file to download") 29 var reset = flag.Bool("reset", false, "reset ghost and reload all configs") 30 var status = flag.Bool("status", false, "show status of the client") 31 32 func usage() { 33 fmt.Fprintf(os.Stderr, "Usage: ghost OVERLORD_ADDR\n") 34 flag.PrintDefaults() 35 os.Exit(2) 36 } 37 38 func main() { 39 flag.Usage = usage 40 flag.Parse() 41 args := flag.Args() 42 43 var finalMid string 44 45 if *randMid && *mid != "" { 46 log.Fatalf("Conflict options. Both mid and rand-mid flag are assgined.") 47 } 48 49 if *randMid { 50 finalMid = overlord.RandomMID 51 } else { 52 finalMid = *mid 53 } 54 55 tlsMode := overlord.TLSDetect 56 if *tlsModeFlag == "detect" { 57 tlsMode = overlord.TLSDetect 58 } else if *tlsModeFlag == "y" { 59 tlsMode = overlord.TLSForceEnable 60 } else if *tlsModeFlag == "n" { 61 tlsMode = overlord.TLSForceDisable 62 } 63 64 overlord.StartGhost(args, finalMid, *noLanDisc, *noRPCServer, *tlsCertFile, 65 !*tlsNoVerify, *propFile, *download, *reset, *status, tlsMode) 66 }