Loading start.sh +120 −53 Original line number Diff line number Diff line Loading @@ -1073,13 +1073,13 @@ else # Create a proper Go module structure - this is critical for the build echo "==> Creating proper Go module structure" # Initialize an explicit Go module echo "module mock-server" > go.mod # Initialize an explicit Go module with specified go version echo "module main" > go.mod echo "go 1.19" >> go.mod # Write main.go as a single file with correct quoted heredoc # Write main.go as a single file without heredoc echo "==> Writing main.go file for mock API server" cat > main.go <<'ENDOFPROGRAM' cat > main.go << 'ENDOFFILE' package main import ( Loading Loading @@ -1140,6 +1140,72 @@ func main() { fmt.Fprintf(w, `{"status":"ok","version":"mock-1.0.0","time":"%s"}`, time.Now().Format(time.RFC3339)) }) // Handle OTT (One-Time Token) requests http.HandleFunc("/users/ott", func(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { body, err := io.ReadAll(r.Body) if err != nil { http.Error(w, "Error reading request body", http.StatusBadRequest) return } logger.Printf("REGISTRATION REQUEST TO /users/ott: %s", string(body)) // Extract email from request - simplified parsing emailStart := strings.Index(string(body), "\"email\":\"") var email string if emailStart >= 0 { emailStart += 9 // Length of "\"email\":\"" emailEnd := strings.Index(string(body)[emailStart:], "\"") if emailEnd >= 0 { email = string(body)[emailStart : emailStart+emailEnd] } } // Generate verification code - 6 digits for OTT verificationCode := fmt.Sprintf("%06d", 100000 + rand.Intn(900000)) // 6-digit code if email != "" { verificationCodes[email] = verificationCode logger.Printf("===================================================") logger.Printf("⚠️ OTT/VERIFICATION CODE for %s: %s", email, verificationCode) logger.Printf("===================================================") // Also log to console for immediate visibility fmt.Printf("===================================================\n") fmt.Printf("⚠️ OTT/VERIFICATION CODE for %s: %s\n", email, verificationCode) fmt.Printf("===================================================\n") } // Return a success response with properly formatted data w.Header().Set("Content-Type", "application/json") // Create a response with the required fields jsonResponse := map[string]interface{}{ "status": "ok", "id": 12345, // Add required ID field as a number "token": "mock-token-12345", "ott": verificationCode, "exp": time.Now().Add(time.Hour).Unix(), "email": email, "createdAt": time.Now().Format(time.RFC3339), "updatedAt": time.Now().Format(time.RFC3339), "key": map[string]interface{}{ "pubKey": "mockPubKey123456", "encPubKey": "mockEncPubKey123456", "kty": "mockKty", "kid": "mockKid", "alg": "mockAlg", "verifyKey": "mockVerifyKey123456", }, } json.NewEncoder(w).Encode(jsonResponse) } else { // Just handle other methods with a generic response w.Header().Set("Content-Type", "application/json") fmt.Fprintf(w, `{"status":"mock","endpoint":"%s","method":"%s"}`, r.URL.Path, r.Method) } }) // Generic handler for all other requests http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { logger.Printf("Received request for %s via %s", r.URL.Path, r.Method) Loading Loading @@ -1172,13 +1238,15 @@ func main() { logger.Fatalf("Server failed: %v", err) } } ENDOFPROGRAM ENDOFFILE # Show the created files for debugging echo "==> Listing created files:" ls -la echo "==> Contents of go.mod:" cat go.mod echo "==> First 10 lines of main.go:" head -10 main.go # Completely unset Go module environment variables echo "==> Unsetting module flags before building mock server" Loading @@ -1187,7 +1255,7 @@ ENDOFPROGRAM unset GOPATH unset GOMODCACHE # Build the mock server using the direct build command # Build the mock server using Go directly echo "==> Building mock API server on port 8080" # Show Go version Loading @@ -1196,47 +1264,20 @@ ENDOFPROGRAM # Set SERVER_PID to 0 initially - CRITICAL for avoiding unbound variable later SERVER_PID=0 # Try building with explicit output file if go build -o mock_server .; then echo "==> Successfully compiled mock API server" # Create log directory if it doesn't exist # Use go run instead of build to simplify the process echo "==> Running Go mock API server directly" mkdir -p /app/data/logs touch /app/data/logs/api_requests.log chmod 666 /app/data/logs/api_requests.log # Start the server and log both to file and to console chmod +x ./mock_server nohup ./mock_server > /app/data/logs/mock_server.log 2>&1 & # Run directly with go run in the background nohup go run main.go > /app/data/logs/mock_server.log 2>&1 & SERVER_PID=$! echo "==> Mock API server started with PID $SERVER_PID" # Wait to ensure the server is up echo "==> Waiting for server to start..." sleep 5 # Increased sleep time for better reliability # Check if the server is actually running if ps -p $SERVER_PID > /dev/null; then echo "==> Mock API server is running with PID $SERVER_PID" # Check if the port is actually listening if netstat -tulpn 2>/dev/null | grep ":8080" > /dev/null; then echo "==> Mock API server is listening on port 8080" else echo "==> WARNING: Mock API server doesn't appear to be listening on port 8080" echo "==> Checking server logs:" tail -n 30 /app/data/logs/mock_server.log fi else echo "==> ERROR: Mock API server failed to start" echo "==> Server log:" cat /app/data/logs/mock_server.log # Reset SERVER_PID if process died SERVER_PID=0 fi else echo "==> ERROR: Failed to build mock API server" go version # Server PID is already set to 0 above fi fi echo "==> Server started with PID ${SERVER_PID:-0}" Loading Loading @@ -1616,15 +1657,41 @@ window.process.env.REACT_APP_ENTE_ENDPOINT = '${API_ENDPOINT}'; // Make sure all URLs are properly formatted for URL constructor if (!window.ENTE_CONFIG.API_URL.startsWith('http')) { console.log('Adding https:// prefix to API_URL'); // Ensure the API URL has a proper protocol prefix for URL constructor if (window.ENTE_CONFIG.API_URL.startsWith('/')) { window.ENTE_CONFIG.API_URL = window.location.origin + window.ENTE_CONFIG.API_URL; } else { window.ENTE_CONFIG.API_URL = window.location.origin + '/' + window.ENTE_CONFIG.API_URL; } // Fix environment variables too if (window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT.startsWith('/')) { window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT; } else { window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT; } // Same for other variables if (window.process.env.REACT_APP_ENTE_ENDPOINT.startsWith('/')) { window.process.env.REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.REACT_APP_ENTE_ENDPOINT; } else { window.process.env.REACT_APP_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.REACT_APP_ENTE_ENDPOINT; } if (window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT && !window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT.startsWith('http')) { if (window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT.startsWith('/')) { window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT; } else { window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT; } } } // Extra logging to debug URL construction console.log('Ente runtime config loaded from runtime-config.js'); console.log('API_URL:', window.ENTE_CONFIG.API_URL); console.log('PUBLIC_ALBUMS_URL:', window.ENTE_CONFIG.PUBLIC_ALBUMS_URL); console.log('API_URL (final):', window.ENTE_CONFIG.API_URL); console.log('PUBLIC_ALBUMS_URL (final):', window.ENTE_CONFIG.PUBLIC_ALBUMS_URL); console.log('NEXT_PUBLIC_ENTE_ENDPOINT (final):', window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT); EOF # Update the variables in the runtime config Loading Loading
start.sh +120 −53 Original line number Diff line number Diff line Loading @@ -1073,13 +1073,13 @@ else # Create a proper Go module structure - this is critical for the build echo "==> Creating proper Go module structure" # Initialize an explicit Go module echo "module mock-server" > go.mod # Initialize an explicit Go module with specified go version echo "module main" > go.mod echo "go 1.19" >> go.mod # Write main.go as a single file with correct quoted heredoc # Write main.go as a single file without heredoc echo "==> Writing main.go file for mock API server" cat > main.go <<'ENDOFPROGRAM' cat > main.go << 'ENDOFFILE' package main import ( Loading Loading @@ -1140,6 +1140,72 @@ func main() { fmt.Fprintf(w, `{"status":"ok","version":"mock-1.0.0","time":"%s"}`, time.Now().Format(time.RFC3339)) }) // Handle OTT (One-Time Token) requests http.HandleFunc("/users/ott", func(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { body, err := io.ReadAll(r.Body) if err != nil { http.Error(w, "Error reading request body", http.StatusBadRequest) return } logger.Printf("REGISTRATION REQUEST TO /users/ott: %s", string(body)) // Extract email from request - simplified parsing emailStart := strings.Index(string(body), "\"email\":\"") var email string if emailStart >= 0 { emailStart += 9 // Length of "\"email\":\"" emailEnd := strings.Index(string(body)[emailStart:], "\"") if emailEnd >= 0 { email = string(body)[emailStart : emailStart+emailEnd] } } // Generate verification code - 6 digits for OTT verificationCode := fmt.Sprintf("%06d", 100000 + rand.Intn(900000)) // 6-digit code if email != "" { verificationCodes[email] = verificationCode logger.Printf("===================================================") logger.Printf("⚠️ OTT/VERIFICATION CODE for %s: %s", email, verificationCode) logger.Printf("===================================================") // Also log to console for immediate visibility fmt.Printf("===================================================\n") fmt.Printf("⚠️ OTT/VERIFICATION CODE for %s: %s\n", email, verificationCode) fmt.Printf("===================================================\n") } // Return a success response with properly formatted data w.Header().Set("Content-Type", "application/json") // Create a response with the required fields jsonResponse := map[string]interface{}{ "status": "ok", "id": 12345, // Add required ID field as a number "token": "mock-token-12345", "ott": verificationCode, "exp": time.Now().Add(time.Hour).Unix(), "email": email, "createdAt": time.Now().Format(time.RFC3339), "updatedAt": time.Now().Format(time.RFC3339), "key": map[string]interface{}{ "pubKey": "mockPubKey123456", "encPubKey": "mockEncPubKey123456", "kty": "mockKty", "kid": "mockKid", "alg": "mockAlg", "verifyKey": "mockVerifyKey123456", }, } json.NewEncoder(w).Encode(jsonResponse) } else { // Just handle other methods with a generic response w.Header().Set("Content-Type", "application/json") fmt.Fprintf(w, `{"status":"mock","endpoint":"%s","method":"%s"}`, r.URL.Path, r.Method) } }) // Generic handler for all other requests http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { logger.Printf("Received request for %s via %s", r.URL.Path, r.Method) Loading Loading @@ -1172,13 +1238,15 @@ func main() { logger.Fatalf("Server failed: %v", err) } } ENDOFPROGRAM ENDOFFILE # Show the created files for debugging echo "==> Listing created files:" ls -la echo "==> Contents of go.mod:" cat go.mod echo "==> First 10 lines of main.go:" head -10 main.go # Completely unset Go module environment variables echo "==> Unsetting module flags before building mock server" Loading @@ -1187,7 +1255,7 @@ ENDOFPROGRAM unset GOPATH unset GOMODCACHE # Build the mock server using the direct build command # Build the mock server using Go directly echo "==> Building mock API server on port 8080" # Show Go version Loading @@ -1196,47 +1264,20 @@ ENDOFPROGRAM # Set SERVER_PID to 0 initially - CRITICAL for avoiding unbound variable later SERVER_PID=0 # Try building with explicit output file if go build -o mock_server .; then echo "==> Successfully compiled mock API server" # Create log directory if it doesn't exist # Use go run instead of build to simplify the process echo "==> Running Go mock API server directly" mkdir -p /app/data/logs touch /app/data/logs/api_requests.log chmod 666 /app/data/logs/api_requests.log # Start the server and log both to file and to console chmod +x ./mock_server nohup ./mock_server > /app/data/logs/mock_server.log 2>&1 & # Run directly with go run in the background nohup go run main.go > /app/data/logs/mock_server.log 2>&1 & SERVER_PID=$! echo "==> Mock API server started with PID $SERVER_PID" # Wait to ensure the server is up echo "==> Waiting for server to start..." sleep 5 # Increased sleep time for better reliability # Check if the server is actually running if ps -p $SERVER_PID > /dev/null; then echo "==> Mock API server is running with PID $SERVER_PID" # Check if the port is actually listening if netstat -tulpn 2>/dev/null | grep ":8080" > /dev/null; then echo "==> Mock API server is listening on port 8080" else echo "==> WARNING: Mock API server doesn't appear to be listening on port 8080" echo "==> Checking server logs:" tail -n 30 /app/data/logs/mock_server.log fi else echo "==> ERROR: Mock API server failed to start" echo "==> Server log:" cat /app/data/logs/mock_server.log # Reset SERVER_PID if process died SERVER_PID=0 fi else echo "==> ERROR: Failed to build mock API server" go version # Server PID is already set to 0 above fi fi echo "==> Server started with PID ${SERVER_PID:-0}" Loading Loading @@ -1616,15 +1657,41 @@ window.process.env.REACT_APP_ENTE_ENDPOINT = '${API_ENDPOINT}'; // Make sure all URLs are properly formatted for URL constructor if (!window.ENTE_CONFIG.API_URL.startsWith('http')) { console.log('Adding https:// prefix to API_URL'); // Ensure the API URL has a proper protocol prefix for URL constructor if (window.ENTE_CONFIG.API_URL.startsWith('/')) { window.ENTE_CONFIG.API_URL = window.location.origin + window.ENTE_CONFIG.API_URL; } else { window.ENTE_CONFIG.API_URL = window.location.origin + '/' + window.ENTE_CONFIG.API_URL; } // Fix environment variables too if (window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT.startsWith('/')) { window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT; } else { window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT; } // Same for other variables if (window.process.env.REACT_APP_ENTE_ENDPOINT.startsWith('/')) { window.process.env.REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.REACT_APP_ENTE_ENDPOINT; } else { window.process.env.REACT_APP_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.REACT_APP_ENTE_ENDPOINT; } if (window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT && !window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT.startsWith('http')) { if (window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT.startsWith('/')) { window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT; } else { window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT = window.location.origin + '/' + window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT; } } } // Extra logging to debug URL construction console.log('Ente runtime config loaded from runtime-config.js'); console.log('API_URL:', window.ENTE_CONFIG.API_URL); console.log('PUBLIC_ALBUMS_URL:', window.ENTE_CONFIG.PUBLIC_ALBUMS_URL); console.log('API_URL (final):', window.ENTE_CONFIG.API_URL); console.log('PUBLIC_ALBUMS_URL (final):', window.ENTE_CONFIG.PUBLIC_ALBUMS_URL); console.log('NEXT_PUBLIC_ENTE_ENDPOINT (final):', window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT); EOF # Update the variables in the runtime config Loading