Fix API server and URL handling for frontend connectivity
This commit is contained in:
parent
f4fd4fdf77
commit
d345b2f460
169
start.sh
169
start.sh
@ -1073,13 +1073,13 @@ else
|
|||||||
# Create a proper Go module structure - this is critical for the build
|
# Create a proper Go module structure - this is critical for the build
|
||||||
echo "==> Creating proper Go module structure"
|
echo "==> Creating proper Go module structure"
|
||||||
|
|
||||||
# Initialize an explicit Go module
|
# Initialize an explicit Go module with specified go version
|
||||||
echo "module mock-server" > go.mod
|
echo "module main" > go.mod
|
||||||
echo "go 1.19" >> 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"
|
echo "==> Writing main.go file for mock API server"
|
||||||
cat > main.go <<'ENDOFPROGRAM'
|
cat > main.go << 'ENDOFFILE'
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -1140,6 +1140,72 @@ func main() {
|
|||||||
fmt.Fprintf(w, `{"status":"ok","version":"mock-1.0.0","time":"%s"}`, time.Now().Format(time.RFC3339))
|
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
|
// Generic handler for all other requests
|
||||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
logger.Printf("Received request for %s via %s", r.URL.Path, r.Method)
|
logger.Printf("Received request for %s via %s", r.URL.Path, r.Method)
|
||||||
@ -1172,13 +1238,15 @@ func main() {
|
|||||||
logger.Fatalf("Server failed: %v", err)
|
logger.Fatalf("Server failed: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ENDOFPROGRAM
|
ENDOFFILE
|
||||||
|
|
||||||
# Show the created files for debugging
|
# Show the created files for debugging
|
||||||
echo "==> Listing created files:"
|
echo "==> Listing created files:"
|
||||||
ls -la
|
ls -la
|
||||||
echo "==> Contents of go.mod:"
|
echo "==> Contents of go.mod:"
|
||||||
cat go.mod
|
cat go.mod
|
||||||
|
echo "==> First 10 lines of main.go:"
|
||||||
|
head -10 main.go
|
||||||
|
|
||||||
# Completely unset Go module environment variables
|
# Completely unset Go module environment variables
|
||||||
echo "==> Unsetting module flags before building mock server"
|
echo "==> Unsetting module flags before building mock server"
|
||||||
@ -1187,7 +1255,7 @@ ENDOFPROGRAM
|
|||||||
unset GOPATH
|
unset GOPATH
|
||||||
unset GOMODCACHE
|
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"
|
echo "==> Building mock API server on port 8080"
|
||||||
|
|
||||||
# Show Go version
|
# Show Go version
|
||||||
@ -1196,47 +1264,20 @@ ENDOFPROGRAM
|
|||||||
# Set SERVER_PID to 0 initially - CRITICAL for avoiding unbound variable later
|
# Set SERVER_PID to 0 initially - CRITICAL for avoiding unbound variable later
|
||||||
SERVER_PID=0
|
SERVER_PID=0
|
||||||
|
|
||||||
# Try building with explicit output file
|
# Use go run instead of build to simplify the process
|
||||||
if go build -o mock_server .; then
|
echo "==> Running Go mock API server directly"
|
||||||
echo "==> Successfully compiled mock API server"
|
mkdir -p /app/data/logs
|
||||||
|
touch /app/data/logs/api_requests.log
|
||||||
|
chmod 666 /app/data/logs/api_requests.log
|
||||||
|
|
||||||
# Create log directory if it doesn't exist
|
# Run directly with go run in the background
|
||||||
mkdir -p /app/data/logs
|
nohup go run main.go > /app/data/logs/mock_server.log 2>&1 &
|
||||||
|
SERVER_PID=$!
|
||||||
|
echo "==> Mock API server started with PID $SERVER_PID"
|
||||||
|
|
||||||
# Start the server and log both to file and to console
|
# Wait to ensure the server is up
|
||||||
chmod +x ./mock_server
|
echo "==> Waiting for server to start..."
|
||||||
nohup ./mock_server > /app/data/logs/mock_server.log 2>&1 &
|
sleep 5 # Increased sleep time for better reliability
|
||||||
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
|
fi
|
||||||
|
|
||||||
echo "==> Server started with PID ${SERVER_PID:-0}"
|
echo "==> Server started with PID ${SERVER_PID:-0}"
|
||||||
@ -1616,15 +1657,41 @@ window.process.env.REACT_APP_ENTE_ENDPOINT = '${API_ENDPOINT}';
|
|||||||
// Make sure all URLs are properly formatted for URL constructor
|
// Make sure all URLs are properly formatted for URL constructor
|
||||||
if (!window.ENTE_CONFIG.API_URL.startsWith('http')) {
|
if (!window.ENTE_CONFIG.API_URL.startsWith('http')) {
|
||||||
console.log('Adding https:// prefix to API_URL');
|
console.log('Adding https:// prefix to API_URL');
|
||||||
window.ENTE_CONFIG.API_URL = window.location.origin + window.ENTE_CONFIG.API_URL;
|
// Ensure the API URL has a proper protocol prefix for URL constructor
|
||||||
window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT;
|
if (window.ENTE_CONFIG.API_URL.startsWith('/')) {
|
||||||
window.process.env.REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.REACT_APP_ENTE_ENDPOINT;
|
window.ENTE_CONFIG.API_URL = window.location.origin + window.ENTE_CONFIG.API_URL;
|
||||||
window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT = window.location.origin + window.process.env.NEXT_PUBLIC_REACT_APP_ENTE_ENDPOINT;
|
} 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('Ente runtime config loaded from runtime-config.js');
|
||||||
console.log('API_URL:', window.ENTE_CONFIG.API_URL);
|
console.log('API_URL (final):', window.ENTE_CONFIG.API_URL);
|
||||||
console.log('PUBLIC_ALBUMS_URL:', window.ENTE_CONFIG.PUBLIC_ALBUMS_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
|
EOF
|
||||||
|
|
||||||
# Update the variables in the runtime config
|
# Update the variables in the runtime config
|
||||||
|
Loading…
x
Reference in New Issue
Block a user