mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-17 20:26:57 +00:00
71 lines
2.7 KiB
Go
71 lines
2.7 KiB
Go
package upgrade
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Flags represents upgrade command flags
|
|
type Flags struct {
|
|
Force bool
|
|
RestartServices bool
|
|
SkipChecks bool
|
|
Nameserver *bool // Pointer so we can detect if explicitly set vs default
|
|
|
|
// Anyone flags
|
|
AnyoneClient bool
|
|
AnyoneRelay bool
|
|
AnyoneExit bool
|
|
AnyoneMigrate bool
|
|
AnyoneNickname string
|
|
AnyoneContact string
|
|
AnyoneWallet string
|
|
AnyoneORPort int
|
|
AnyoneFamily string
|
|
AnyoneBandwidth int // Percentage of VPS bandwidth for relay (default: 30, 0=unlimited)
|
|
AnyoneAccounting int // Monthly data cap for relay in GB (0=unlimited)
|
|
}
|
|
|
|
// ParseFlags parses upgrade command flags
|
|
func ParseFlags(args []string) (*Flags, error) {
|
|
fs := flag.NewFlagSet("upgrade", flag.ContinueOnError)
|
|
fs.SetOutput(os.Stderr)
|
|
|
|
flags := &Flags{}
|
|
|
|
fs.BoolVar(&flags.Force, "force", false, "Reconfigure all settings")
|
|
fs.BoolVar(&flags.RestartServices, "restart", false, "Automatically restart services after upgrade")
|
|
fs.BoolVar(&flags.SkipChecks, "skip-checks", false, "Skip minimum resource checks (RAM/CPU)")
|
|
|
|
// Nameserver flag - use pointer to detect if explicitly set
|
|
nameserver := fs.Bool("nameserver", false, "Make this node a nameserver (uses saved preference if not specified)")
|
|
|
|
// Anyone flags
|
|
fs.BoolVar(&flags.AnyoneClient, "anyone-client", false, "Install Anyone as client-only (SOCKS5 proxy on port 9050, no relay)")
|
|
fs.BoolVar(&flags.AnyoneRelay, "anyone-relay", false, "Run as Anyone relay operator (earn rewards)")
|
|
fs.BoolVar(&flags.AnyoneExit, "anyone-exit", false, "Run as exit relay (requires --anyone-relay, legal implications)")
|
|
fs.BoolVar(&flags.AnyoneMigrate, "anyone-migrate", false, "Migrate existing Anyone installation into Orama Network")
|
|
fs.StringVar(&flags.AnyoneNickname, "anyone-nickname", "", "Relay nickname (1-19 alphanumeric chars)")
|
|
fs.StringVar(&flags.AnyoneContact, "anyone-contact", "", "Contact info (email or @telegram)")
|
|
fs.StringVar(&flags.AnyoneWallet, "anyone-wallet", "", "Ethereum wallet address for rewards")
|
|
fs.IntVar(&flags.AnyoneORPort, "anyone-orport", 9001, "ORPort for relay (default 9001)")
|
|
fs.StringVar(&flags.AnyoneFamily, "anyone-family", "", "Comma-separated fingerprints of other relays you operate")
|
|
fs.IntVar(&flags.AnyoneBandwidth, "anyone-bandwidth", 30, "Limit relay to N% of VPS bandwidth (0=unlimited, runs speedtest)")
|
|
fs.IntVar(&flags.AnyoneAccounting, "anyone-accounting", 0, "Monthly data cap for relay in GB (0=unlimited)")
|
|
|
|
if err := fs.Parse(args); err != nil {
|
|
if err == flag.ErrHelp {
|
|
return nil, err
|
|
}
|
|
return nil, fmt.Errorf("failed to parse flags: %w", err)
|
|
}
|
|
|
|
// Set nameserver if explicitly provided
|
|
if *nameserver {
|
|
flags.Nameserver = nameserver
|
|
}
|
|
|
|
return flags, nil
|
|
}
|