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  }