Commit Graph
389 Commits
Author SHA1 Message Date
nutcas3 b6bcad067b refactor: Update rate limiter to use StateInformationMiddleware and QuantaClock
- Change create_rate_limiter return type from InMemoryState/DefaultClock to StateInformationMiddleware with QuantaClock
- Add StateInformationMiddleware import from governor::middleware
- Add Arc import from std::sync
- Remove explicit key_extractor field from GovernorLayer initialization
2026-04-26 00:44:00 +03:00
nutcas3 b4b0966937 refactor: Update charging-engine dependencies and fix rate limiter configuration
- Upgrade tower_governor from 0.4.2 to 0.8.0 and add governor 0.10.4 dependency
- Add thiserror 2.0.18 for error handling
- Update dev dependencies: tokio-test to 0.4.5, mockall to 0.14.0, serial_test to 3.4.0
- Add Copy trait to CircuitState enum
- Add Clone derive to CircuitBreaker struct
- Add error trait bounds to CircuitBreakerError generic type
- Update create_rate_limiter return type to use explicit generic parameters
- Fix Go
2026-04-26 00:42:19 +03:00
nutcas3 133523d83b ci: Add Docker build and push steps for carrier-connector, charging-engine, packet-gateway, and CLI components
- Add carrier-connector-meta and carrier-connector build/push steps with ghcr.io image tagging
- Add charging-engine-meta and charging-engine build/push steps with ghcr.io image tagging
- Add packet-gateway-meta and packet-gateway build/push steps with ghcr.io image tagging
- Add cli-meta and CLI build/push steps with ghcr.io image tagging
- Add carrier-image, charging-image, gateway-image,
2026-04-26 00:26:19 +03:00
nutcas3 261d55d831 ci: Add CI workflows for carrier-connector, charging-engine, packet-gateway, and CLI components
- Add carrier-connector-test job with Go 1.23 setup, linting, testing with race detector, and build step
- Add charging-engine-test job with Rust 1.94 setup, cargo caching, release mode testing, and build step
- Add packet-gateway-test job with Rust 1.94 setup, cargo caching, release mode testing, and build step
- Add cli-test job with Go 1.23 setup, linting, testing with race detector, and build step
2026-04-26 00:26:01 +03:00
nutcas3 b734ea7d3a refactor: Add environment variable support to API server configuration and fix build path
- Add getEnv and getEnvInt helper functions for reading environment variables with defaults
- Update all configuration fields to use environment variables (DB_HOST, REDIS_HOST, API_PORT, etc.)
- Change CI build command from ./cmd/server.go to ./cmd/ directory path
2026-04-26 00:15:45 +03:00
nutcas3 302b761916 docs: Add comprehensive CHANGELOG entries for v0.1.0 release features and improvements
- Add Payment System section with PaymentController, Stripe integration, and webhook processing
- Add Carrier Connector section with ES2+ protocol handlers, profile repository, and REST API server
- Add eBPF Packet Gateway section with batch sync, XDP program loading, and Redis synchronization
- Add Rate Limiting section with distributed Redis-based implementation and comprehensive middleware
- Add Authentication & Authorization section with JWT, RBAC, Casbin integration
2026-04-25 23:14:04 +03:00
nutcas3 e92a132b89 refactor: Expand Makefile with comprehensive build, test, deployment, and database management targets
- Add build-cli and build-packet-gateway targets for new components
- Add CLI dependencies to install-deps step
- Add test-rust-release target for release mode testing
- Enhance test-go with verbose output, race detector, and coverage reporting
- Add docker-push target for pushing images to registry
- Add k8s-deploy-helm, k8s-logs, and k8s-status targets for Kubernetes management
- Add PostgreSQL setup
2026-04-25 23:12:56 +03:00
nutcas3 c3f81402a0 docs: Expand CONTRIBUTING.md with comprehensive development guidelines and workflow details
- Add table of contents for easier navigation
- Add Prerequisites section with required tools and versions (Go 1.26+, Rust 1.94+, Node.js 22+, etc.)
- Add detailed Setup section with database setup and build instructions
- Add Project Structure section documenting repository layout
- Expand Development Workflow with linting, formatting, and testing steps
- Add detailed Code Style sections for Go, Rust, and Type
2026-04-25 23:12:40 +03:00
nutcas3 eb4297d679 Merge branch 'main' of https://github.com/nutcas3/telecom-platform into upgraded 2026-04-25 23:09:16 +03:00
NutcaseandGitHub f7ad2e795a Update CONTRIBUTING.md 2026-04-25 23:06:45 +03:00
nutcas3 3844426a8f docs: Expand README with comprehensive platform overview and architecture details
- Add detailed "What It Does" section explaining platform capabilities for enterprises and operators
- Add Architecture section documenting core network services, supporting services, and developer tools
- Add Key Features section covering sovereignty, security, performance, scalability, and operations
- Expand Technology Stack section with categorized components (languages, databases, infrastructure, monitoring)
2026-04-25 23:06:03 +03:00
nutcas3 0e382a81c9 refactor: Update API server CI test scope and fix rate limit test comment
- Change test command to run only internal/services/ tests with race detector enabled
- Update RateLimit_ErrorHandling test to use high limit instead of invalid value
- Update test comments to reflect new approach of using very high limit to simulate no rate limiting
2026-04-25 22:53:25 +03:00
nutcas3 4edee2c82f test: Fix rate limit header casing and adjust test expectations for Gin behavior
- Change X-RateLimit-* headers to X-Ratelimit-* in test assertions
- Skip IPv6 test case due to Gin's ClientIP() handling limitations
- Update EndpointKeyExtractor test to expect empty FullPath() without route registration
- Fix Reset test mock to use string slice parameter for Del method
2026-04-25 22:14:13 +03:00
nutcas3 7323dffb1e refactor: Remove race detector flag from API server CI test step
- Remove -race flag from go test command in Run tests step
2026-04-25 22:08:16 +03:00
nutcas3 a706081866 refactor: Update web-dashboard CI workflow to use Node.js 24
- Update Node.js version from 22 to 24 in Setup Node.js step
2026-04-25 07:03:28 +03:00
nutcas3 d74ac722c4 test: Add unit tests for service discovery and message queue with integration test skips
- Add discovery_test.go with Service and ServiceDiscovery struct tests
- Add integration test placeholders for service registration, discovery, deregistration, and health checks
- Add mq_test.go with Message serialization and profile event tests
- Add integration test placeholders for RabbitMQ connectivity, queue declaration, and publish/consume flow
- Add github.com/stretchr/testify v1.11.1 to carrier-connector dependencies
2026-04-25 06:59:03 +03:00
nutcas3 28552393bc refactor: Update web-dashboard CI workflow to use Node.js 22 and disable frozen lockfile
- Update Node.js version from 20 to 22 in Setup Node.js step
- Change pnpm install flag from --frozen-lockfile to --no-frozen-lockfile in Install dependencies step
2026-04-25 06:58:24 +03:00
nutcas3 50e807f2da feat: Add Vault integration annotations to Kubernetes secrets and remove hardcoded credentials
- Add vault.hashicorp.com/agent-inject annotations to all Secret resources for Vault integration
- Add vault.hashicorp.com/agent-inject-secret-* annotations with KV paths for database, redis, jwt, encryption, and payment secrets
- Remove all base64-encoded hardcoded credentials from telecom-secrets, postgres-secret, grafana-secret, and influxdb-secret
- Replace secret values with empty strings and comments
2026-04-25 06:55:22 +03:00
nutcas3 f6ec659fe9 refactor: Fix race condition in chaos service and update Redis rate limiter test mocks
- Add copy method to Experiment struct to create deep copy with proper Finished pointer handling
- Return experiment copy from RunExperiment to prevent race condition with JSON marshaling
- Update mock Eval calls to use float64 for window parameter instead of int64 in redis_ratelimit_test.go
- Update comments to reflect correct parameter types: now (int64), window (float64), limit (int64)
2026-04-25 06:54:29 +03:00
nutcas3 0220dc5b52 refactor: Remove pnpm workspace configuration file from web-dashboard
- Remove pnpm-workspace.yaml with ignoredBuiltDependencies for sharp and unrs-resolver
2026-04-25 06:53:39 +03:00
nutcas3 93bf51df65 feat: Add Consul service discovery integration to API server with automatic registration
- Add discovery package import to server.go
- Add fmt and strconv imports for service ID generation and port parsing
- Add CONSUL_ADDR environment variable check to conditionally enable service discovery
- Add discovery.NewServiceDiscovery initialization with error handling and logging
- Add service registration with api-server name, dynamic port from config, and api/telecom tags
- Add serviceID generation using api
2026-04-25 06:51:04 +03:00
nutcas3 6b2a38b51b feat: Add RabbitMQ message queue integration for profile event publishing in carrier-connector
- Add github.com/rabbitmq/amqp091-go v1.11.0 dependency to go.mod
- Add messageQueue parameter to OrderProfileHandlerWithRepo and DeleteProfileHandlerWithRepo
- Add PublishProfileEvent calls for profile.downloaded and profile.deleted events with goroutines
- Add message queue initialization in main.go with RABBITMQ_URL environment variable
- Add profile-events queue declaration with error handling and fallback
- Add messageQueue parameter to setupRoutes
2026-04-25 06:50:13 +03:00
nutcas3 0ea496b627 feat: Add RabbitMQ message queue integration with profile event publishing
- Add mq package with MessageQueue struct containing connection, channel, and url fields
- Add Message struct with Type, Payload, and Timestamp fields
- Add NewMessageQueue constructor with RABBITMQ_URL environment variable and amqp://guest:guest@localhost:5672/ default
- Add Close method to cleanup channel and connection resources
- Add DeclareQueue method with durable queue configuration
- Add Publish method with 5-second context
2026-04-25 06:49:21 +03:00
nutcas3 1fc84859df refactor: Remove structured logging initialization from API server startup
- Remove logging package import from server.go
- Remove logging.InitWithDefaults call and error handling
- Replace logging.Fatalf with log.Fatalf for database initialization errors
2026-04-25 06:37:33 +03:00
nutcas3 1c89fdac92 feat: Add structured logging initialization to API server startup with database error logging
- Add logging package import to server.go
- Add logging.InitWithDefaults call after config loading with error handling
- Replace log.Fatalf with logging.Fatalf for database initialization errors
2026-04-25 06:36:37 +03:00
nutcas3 2a71cba13e feat: Move casbin, gorm-adapter, gorilla/websocket, and validator to direct dependencies
- Move github.com/casbin/casbin/v2 v2.135.0 from indirect to direct dependencies
- Move github.com/casbin/gorm-adapter/v3 v3.41.0 from indirect to direct dependencies
- Move github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 from indirect to direct dependencies
- Move github.com/go-playground/validator/v10 v10.30.2 from indirect to direct dependencies
- Add github.com/dgryski/go-rendezvous v0.0.0-20
2026-04-25 06:36:18 +03:00
nutcas3 47c57c9b48 feat: Add timeout handling to health check execution with goroutine-based result channel
- Add resultChan channel to receive health check results asynchronously
- Execute checker.CheckHealth in goroutine to enable timeout detection
- Add select statement to handle both successful completion and timeout cases
- Return StatusUnhealthy with "Health check timed out" message on context timeout
- Set ResponseTime to 10 seconds when timeout occurs
2026-04-25 06:34:12 +03:00
nutcas3 442e051e8d feat: Remove explicit pnpm version from CI workflow to use version from package.json 2026-04-25 06:32:51 +03:00
nutcas3 6cf546712b refactor: Replace interface{} with any type alias across codebase
- Replace interface{} with any in api_integration_test.go makeRequest method and test response maps
- Replace interface{} with any in logging.go WithField method and all logging function signatures
- Replace interface{} with any in middleware etag.go sync.Map.Range callback
- Replace interface{} with any in middleware redis_ratelimit.go RedisClientInterface and result parsing
- Replace interface{} with any in middleware redis_ratelimit_
2026-04-25 06:31:02 +03:00
nutcas3 cfd5ca63cf feat: Add Kubernetes service manager with deployment operations and pod log streaming
- Add kubernetes package with ServiceManager struct containing clientset and namespace fields
- Add Service struct with Name, Status, Version, Uptime, CPU, Memory, Replicas, and Available fields
- Add NewServiceManager constructor with in-cluster config and kubeconfig fallback
- Add KUBERNETES_NAMESPACE environment variable with telecom-platform-dev default
- Add getInClusterNamespace helper to read namespace from service
2026-04-25 06:29:36 +03:00
nutcas3 57e7d9c258 feat: Add Kubernetes service management integration to CLI with fallback to API client
- Add k8s.io/api, k8s.io/apimachinery, and k8s.io/client-go v0.31.0 dependencies to go.mod
- Add kubernetes.NewServiceManager integration to listServices with fallback to API client
- Add Replicas column to services table showing available/total replicas
- Add kubernetes.GetServiceStatus integration to showServiceStatus with fallback to API client
- Add Replicas field to service status display
- Add kubernetes.RestartDeployment integration to restartService
2026-04-25 06:29:23 +03:00
nutcas3 a54c0951f1 feat: Add packet-gateway Dockerfile with eBPF dependencies and upgrade charging-engine to Rust 1.95
- Update charging-engine.Dockerfile from rust:1.94-slim to rust:1.95-slim
- Add packet-gateway.Dockerfile with rust:1.95-slim builder stage
- Add pkg-config, libssl-dev, clang, llvm, libelf-dev, and libbpf-dev build dependencies for eBPF support
- Add debian:bookworm-slim runtime stage with libssl3 and ca-certificates
- Copy circuit_breaker.rs from charging-engine for shared functionality
- Set RUST_LOG=info environment variable
2026-04-25 06:20:58 +03:00
nutcas3 715417c0eb feat: Add structured logging with logrus and configurable output formats
- Add sirupsen/logrus v1.9.4 dependency to go.mod
- Add logging package with global Logger instance
- Add Config struct with Level, Format, and Output fields
- Add DefaultConfig with LOG_LEVEL, LOG_FORMAT, and LOG_OUTPUT environment variables
- Add Init function with level parsing, JSON/text formatter selection, and stdout/stderr output
- Add InitWithDefaults helper function
- Add WithField, WithFields, and WithError helper
2026-04-25 06:19:48 +03:00
nutcas3 b714fa8382 feat: Add HashiCorp Consul service discovery integration with API client v1.34.2
- Add hashicorp/consul/api v1.34.2 dependency to go.mod
- Add armon/go-metrics v0.4.1 for metrics collection
- Add hashicorp/go-hclog v1.5.0 for structured logging
- Add hashicorp/go-cleanhttp v0.5.2 for HTTP client utilities
- Add hashicorp/go-immutable-radix v1.3.1 for radix tree data structures
- Add hashicorp/go-multierror v1.1.1 for error aggregation
- Add hashicorp/go-rootcerts v1.0.2 for certificate management
2026-04-25 06:19:22 +03:00
nutcas3 76d1f7b1ec feat: Add RabbitMQ message queue integration with exchange and queue management support
- Add rabbitmq/amqp091-go v1.11.0 dependency to go.mod
- Add MessageQueue struct with connection, channel, and url fields
- Add Message struct with Type, Payload, and Timestamp fields
- Add NewMessageQueue constructor with RABBITMQ_URL environment variable support and amqp://guest:guest@localhost:5672/ default
- Add Close method for connection cleanup
- Add DeclareQueue method with durable configuration
- Add Publish method with 5
2026-04-25 06:15:11 +03:00
nutcas3 19a4aaee01 feat: Add user-based rate limiting to protected API routes with 100 requests per minute limit
- Add RateLimitByUser middleware to protected route group with 100 req/min limit
- Add RateLimitByUser middleware to apiProtected route group with 100 req/min limit
2026-04-25 06:12:59 +03:00
nutcas3 653f23ff24 feat: Wrap all Kubernetes API operations with circuit breaker protection and improve error handling
- Add strings import to kubernetes.go
- Wrap ListDeployments with circuitBreaker.Execute and move result building inside closure
- Wrap GetDeployment with circuitBreaker.Execute and move result assignment inside closure
- Wrap ScaleDeployment with circuitBreaker.Execute and simplify error messages
- Wrap RestartDeployment with circuitBreaker.Execute
- Wrap PodLogs with circuitBreaker.Execute and add streaming
2026-04-25 06:12:40 +03:00
nutcas3 12513943cc feat: Add circuit breaker protection to Kubernetes service with configurable thresholds and timeout
- Add circuitbreaker import to kubernetes.go
- Add circuitBreaker field to KubernetesService struct
- Add circuit breaker initialization in NewKubernetesService with Config struct
- Add K8S_CB_FAILURE_THRESHOLD environment variable with 5 default
- Add K8S_CB_SUCCESS_THRESHOLD environment variable with 2 default
- Add K8S_CB_TIMEOUT_SECONDS environment variable with 60 second default
- Add getEnvUint helper
2026-04-25 06:04:15 +03:00
nutcas3 2b23461eef feat: Add circuit breaker pattern implementation to API server with configurable thresholds and timeout
- Add State enum with Closed, Open, and HalfOpen states and String method
- Add CircuitBreaker struct with mutex, state tracking, failure/success counters, and timeout
- Add Config struct with FailureThreshold, SuccessThreshold, and Timeout fields
- Add NewCircuitBreaker constructor with Config parameter
- Add DefaultConfig with 5 failure threshold, 2 success threshold, and 60 second timeout
2026-04-25 06:04:00 +03:00
nutcas3 f5b22063e3 feat: Add configurable authentication enforcement to charging engine with ENFORCE_AUTH environment variable
- Add ENFORCE_AUTH environment variable with true default to auth middleware
- Add early return when ENFORCE_AUTH=false for development/testing bypass
- Replace development comment with UNAUTHORIZED status code when no valid authentication found
- Move authentication bypass logic from end of function to environment-based check at start
2026-04-25 06:02:06 +03:00
nutcas3 0bb8571b02 feat: Add IP-based rate limiting to charging engine with configurable RPS and burst size
- Add rate_limit module to lib.rs exports
- Add create_rate_limiter function with SmartIpKeyExtractor for IP-based limiting
- Add RATE_LIMIT_RPS environment variable with 10 requests/second default
- Add RATE_LIMIT_BURST environment variable with 20 burst size default
- Add RateLimitResponse struct with TOO_MANY_REQUESTS status code
- Add GovernorLayer with per_second quota and burst_size configuration to router
2026-04-25 06:01:42 +03:00
nutcas3 ce560c0dc4 feat: Add rate limiting with tower-governor and update health endpoint path to /v1/health
- Add tower-governor 0.4.2 dependency to Cargo.toml
- Update health check route from /health to /v1/health for API versioning consistency
2026-04-25 05:58:26 +03:00
nutcas3 0e11bf49dc feat: Add service worker with offline support and route caching to web dashboard
- Add offline.html fallback page with gradient background, centered container, and retry button
- Add sw.js service worker with telecom-dashboard-v1 cache for dashboard routes
- Add install event handler caching /, /login, /dashboard, /services, /monitoring, /deploy, /plugins, /automation, /chaos, /billing, and /config routes
- Add fetch event handler with cache-first strategy and offline.html fallback
- Add activate event
2026-04-25 05:58:10 +03:00
nutcas3 131f9a0d69 feat: Enable caching for all GET API endpoints in web dashboard with true flag parameter
- Add cache=true parameter to subscribers.list and subscribers.get endpoints
- Add cache=true parameter to system.stats and system.health endpoints
- Add cache=true parameter to services.list, services.get, services.health, services.podStatus, and services.events endpoints
- Add cache=true parameter to monitoring.metrics, monitoring.alerts, and monitoring.health endpoints
- Add cache=true parameter to deploy
2026-04-25 05:56:05 +03:00
nutcas3 16bf257b90 feat: Add client-side caching layer to web dashboard with configurable TTL and pattern-based invalidation
- Add CACHE_TTL environment variable with 30000ms default to API configuration
- Add DataCache class with Map-based storage, timestamp tracking, and TTL expiration
- Add cache methods for set, get, invalidate, invalidatePattern, clear, and size operations
- Add getCachedData helper function with fetcher callback and TTL override support
- Add apiFetch wrapper with optional cache parameter for GET
2026-04-25 05:55:07 +03:00
nutcas3 1f1fef56db feat: Add start-all and stop-all commands to services with simulation output and table display
- Add "start-all" and "stop-all" cases to services command handler
- Add startAllServices function with table output for service name, status, and message
- Add stopAllServices function with reverse service order for graceful shutdown
- Add service list iteration with status display for api-server, charging-engine, carrier-connector, packet-gateway, and web-dashboard
- Add "start-all" and "stop-all" commands
2026-04-25 05:54:39 +03:00
nutcas3 be6b6856fa feat: Add configurable logging with JSON and pretty format support to packet gateway
- Add LOG_FORMAT environment variable with compact/pretty format options
- Add LOG_JSON environment variable for JSON output toggle
- Add EnvFilter with INFO level default to tracing subscriber
- Enable target display in log output
- Add conditional initialization for JSON, pretty, and compact log formats
- Add startup log message showing active logging configuration
2026-04-25 05:54:13 +03:00
nutcas3 609eba2920 feat: Add comprehensive error handling and logging to eBPF sync operations with EbpfError types
- Replace ? operator with explicit error handling in sync_from_redis for credits and blocked users sync
- Add error logging before returning EbpfError::RedisFetchError in sync operations
- Replace generic map errors with EbpfError::MapNotFound and MapAccessError in trigger_sync
- Add match-based error handling with logging for sync_control map insert operation
- Replace generic map errors with EbpfError::MapNot
2026-04-25 05:53:39 +03:00
nutcas3 bc01fc1885 feat: Add structured error handling to eBPF operations with EbpfError types and error logging
- Add EbpfError import to ebpf.rs module
- Replace generic error messages with EbpfError::LoadError in program load operations
- Replace generic error messages with EbpfError::AttachError in XDP attach operations with interface field
- Replace generic error messages with EbpfError::MapNotFound and MapAccessError in map access operations
- Add error logging with error! macro before returning errors in all
2026-04-25 05:53:23 +03:00
nutcas3 5bb5e37e07 feat: Add eBPF error types with recoverability classification for packet gateway
- Add EbpfError enum with LoadError, AttachError, MapNotFound, MapAccessError, RedisSyncError, RedisFetchError, NotAttached, Timeout, and InvalidData variants
- Add is_recoverable method returning true for MapAccessError, RedisSyncError, RedisFetchError, and Timeout errors
- Add thiserror::Error derive for automatic error trait implementation
- Add interface and map_name fields to AttachError and MapAccessError variants
2026-04-25 05:52:57 +03:00