func main() {
	defer func() {
		if r := recover(); r != nil {
			log.Fatalf("Service ERROR: %s", getStringFromRecovery(r))
		}
	}()

	a := &app{}

	args := []string{}
	if len(*service.ServiceFlag) > 0 {
		args = flag.Args()

		if *serviceName == "" {
			panic("The service name is required")
		}

		if *service.ServiceFlag == "install" {
			if len(args) == 0 {
				panic("The list of arguments cannot be empty")
			}
		}
	}

	combinedArgs := []string{
		"-name",
		*serviceName,
	}
	combinedArgs = append(combinedArgs, args...)

	service.NewServiceRunnerBuilder(*serviceName, a).
		WithAdditionalArguments(combinedArgs...).
		WithOnStopHandler(a).
		WithServiceUserName_AsCurrentUser().
		Run()
}
示例#2
0
func main() {
	fmt.Println("Version " + TempVersion)
	flag.Parse()

	if len(*genpemFlag) > 0 {
		err := shared.GenerateKeyPairPemFile(*genpemFlag)
		if err != nil {
			log.Fatalf("Unable to generate key pair pem file, error: %s", err.Error())
		}
		return
	}

	if len(*genpubFromPemFlag) > 0 {
		err := shared.PrintPemFilePublicKeyAsHex(*genpubFromPemFlag)
		if err != nil {
			log.Fatalf("Unable to generate public key from pem file, error: %s", err.Error())
		}
		return
	}

	var additionalArgs []string = []string{}

	if len(*service.ServiceFlag) == 0 ||
		(*service.ServiceFlag != "uninstall" && *service.ServiceFlag != "stop" && *service.ServiceFlag != "start") {

		if len(*serverPemFlag) == 0 {
			flag.Usage()
			log.Fatalln("The server pem flag is required.")
		}
		if len(*allowedPublicKeysFileFlag) == 0 {
			flag.Usage()
			log.Fatalln("No allowed public keys file specified, no keys will be allowed.")
		}

		additionalArgs = []string{
			"-address",
			*addressFlag,
			"-server_pem",
			*serverPemFlag,
			"-allowed_public_keys_file",
			*allowedPublicKeysFileFlag,
		}
	}

	a := &app{
		debugMode:    true,
		accessLogger: true,
	}

	builder := service.NewServiceRunnerBuilder("GoPsExec", a).WithOnStopHandler(a).WithAdditionalArguments(additionalArgs...)

	if len(*serviceUsernameFlag) > 0 {
		if *serviceUsernameFlag == CURRENT_USER_VAL {
			builder = builder.WithServiceUserName_AsCurrentUser()
		} else {
			builder = builder.WithServiceUserName(*serviceUsernameFlag)
		}
	}

	if len(*servicePasswordFlag) > 0 {
		builder = builder.WithServicePassword(*servicePasswordFlag)
	}

	builder.Run()
}
func main() {
	a := &app{}
	service.NewServiceRunnerBuilder("Script Watcher", a).WithOnStopHandler(a).WithServiceUserName_AsCurrentUser().Run()
}