MCPcopy Create free account
hub / github.com/dan-v/lambda-nat-proxy / runProxy

Function runProxy

cmd/lambda-nat-proxy/cmd_run.go:52–242  ·  view source on GitHub ↗
(cmd *cobra.Command)

Source from the content-addressed store, hash-verified

50}
51
52func runProxy(cmd *cobra.Command) error {
53 // Load configuration
54 configPath, _ := cmd.Flags().GetString("config")
55 cfg, err := config.LoadCLIConfig(configPath)
56 if err != nil {
57 return fmt.Errorf("failed to load configuration: %w", err)
58 }
59
60 // Apply command line flag overrides
61 if port, _ := cmd.Flags().GetInt("port"); cmd.Flags().Changed("port") {
62 cfg.Proxy.Port = port
63 }
64 if mode, _ := cmd.Flags().GetString("mode"); cmd.Flags().Changed("mode") {
65 cfg.Deployment.Mode = config.PerformanceMode(mode)
66 }
67
68 // Validate configuration
69 if errors := config.ValidateCLIConfig(cfg); len(errors) > 0 {
70 fmt.Fprintf(os.Stderr, "Configuration validation errors:\n")
71 for _, err := range errors {
72 fmt.Fprintf(os.Stderr, " - %s\n", err.Error())
73 }
74 return fmt.Errorf("configuration validation failed")
75 }
76
77 // Auto-detect S3 bucket from CloudFormation stack
78 bucketName, err := autoDetectS3Bucket(cfg)
79 if err != nil {
80 return fmt.Errorf("unable to find S3 bucket. Please deploy infrastructure first:\n\n lambda-nat-proxy deploy\n\nError details: %v", err)
81 }
82
83 // Convert to legacy config format
84 legacyConfig := cfg.ToLegacyConfig(bucketName)
85
86 // Set up debug logging if requested
87 if debug, _ := cmd.Flags().GetBool("debug"); debug {
88 log.SetFlags(log.LstdFlags | log.Lshortfile)
89 log.Printf("Debug mode enabled")
90 log.Printf("Using configuration: AWS region=%s, S3 bucket=%s, SOCKS5 port=%d, mode=%s",
91 cfg.AWS.Region, bucketName, cfg.Proxy.Port, cfg.Deployment.Mode)
92 }
93
94 log.Printf("Using S3 bucket: %s", legacyConfig.S3BucketName)
95 log.Printf("Using AWS region: %s", legacyConfig.AWSRegion)
96
97 // Create AWS session
98 sess, err := session.NewSession(&aws.Config{
99 Region: aws.String(legacyConfig.AWSRegion),
100 })
101 if err != nil {
102 return fmt.Errorf("failed to create AWS session: %w", err)
103 }
104
105 // Initialize components
106 stunClient := stun.New()
107 s3Coord := s3.New(awss3.New(sess), legacyConfig.S3BucketName)
108 natTraversal := nat.New()
109 socks5Proxy := socks5.New()

Callers 1

cmd_run.goFile · 0.85

Calls 15

ShutdownMethod · 0.95
LoadCLIConfigFunction · 0.92
PerformanceModeTypeAlias · 0.92
ValidateCLIConfigFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewLauncherFunction · 0.92
NewFunction · 0.92
StartMetricsServerFunction · 0.92

Tested by

no test coverage detected