feat: improve WireGuard client management and framework initialization

- Improve WireGuard client IP calculation logic (find next available IP)
- Add local wireguard-clients directory for storing client configs
- Integrate Redis pool into CacheInitializer
- Improve ContainerBootstrapper with better imports and Redis pool
- Add monitoring role tags for better task organization
- Update WireGuard documentation
- Store generated WireGuard client configs locally
This commit is contained in:
2025-11-02 03:29:23 +01:00
parent f56d53d873
commit e598309c48
12 changed files with 183 additions and 37 deletions

View File

@@ -13,12 +13,21 @@ use App\Framework\DI\ContainerCompiler;
use App\Framework\DI\DefaultContainer;
use App\Framework\DI\DependencyResolver;
use App\Framework\Discovery\DiscoveryServiceBootstrapper;
use App\Framework\Http\Parser\HttpRequestParser;
use App\Framework\Http\Parser\ParserCache;
use App\Framework\Http\Request;
use App\Framework\Http\RequestFactory;
use App\Framework\Http\ResponseEmitter;
use App\Framework\Logging\DefaultLogger;
use App\Framework\Logging\Formatter\DevelopmentFormatter;
use App\Framework\Logging\Handlers\ConsoleHandler;
use App\Framework\Logging\Logger;
use App\Framework\Logging\LoggerInitializer;
use App\Framework\Logging\LogLevel;
use App\Framework\Performance\Contracts\PerformanceCollectorInterface;
use App\Framework\Reflection\CachedReflectionProvider;
use App\Framework\Redis\RedisPoolInitializer;
use App\Framework\Config\Environment;
final readonly class ContainerBootstrapper
{
@@ -149,19 +158,20 @@ final readonly class ContainerBootstrapper
$container->instance(Logger::class, $logger);
$container->instance(PerformanceCollectorInterface::class, $collector);
$container->instance(Cache::class, new CacheInitializer($collector, $container)());
$pool = new RedisPoolInitializer($container, $container->get(Environment::class))->initialize();
$container->instance(Cache::class, new CacheInitializer($collector, $container, $pool)());
$container->instance(ResponseEmitter::class, new ResponseEmitter());
// TEMPORARY FIX: Manual RequestFactory binding until Discovery issue is resolved
$container->singleton(\App\Framework\Http\Request::class, function ($container) {
$container->singleton(Request::class, function ($container) {
error_log("ContainerBootstrapper: Creating Request singleton");
// Get Cache from container (it was just registered above)
$frameworkCache = $container->get(\App\Framework\Cache\Cache::class);
$parserCache = new \App\Framework\Http\Parser\ParserCache($frameworkCache);
$parser = new \App\Framework\Http\Parser\HttpRequestParser($parserCache);
$factory = new \App\Framework\Http\RequestFactory($parser);
$frameworkCache = $container->get(Cache::class);
$parserCache = new ParserCache($frameworkCache);
$parser = new HttpRequestParser($parserCache);
$factory = new RequestFactory($parser);
error_log("ContainerBootstrapper: About to call factory->createFromGlobals()");
$request = $factory->createFromGlobals();
@@ -232,15 +242,15 @@ final readonly class ContainerBootstrapper
$handlers = $isMcpMode
? [new \App\Framework\Logging\Handlers\NullHandler()]
: [
new \App\Framework\Logging\Handlers\ConsoleHandler(
new \App\Framework\Logging\Formatter\DevelopmentFormatter(),
\App\Framework\Logging\LogLevel::DEBUG
new ConsoleHandler(
new DevelopmentFormatter(),
LogLevel::DEBUG
)
];
$logger = new \App\Framework\Logging\DefaultLogger(
clock: $clock,
minLevel: \App\Framework\Logging\LogLevel::DEBUG,
minLevel: LogLevel::DEBUG,
handlers: $handlers,
processorManager: new \App\Framework\Logging\ProcessorManager(),
contextManager: new \App\Framework\Logging\LogContextManager()