UNPKG

@synet/net

Version:

Network abstraction layer for Synet. visit https://syntehtism.ai for more information.

71 lines (70 loc) 4.1 kB
"use strict"; // Export domain entities, interfaces and common utilities var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdapterType = void 0; exports.createWireguardService = createWireguardService; __exportStar(require("./domain/entities/wireguard"), exports); //export * from "./domain/interfaces/wireguard-adapter.interface"; //export * from "./domain/interfaces/keys-repository.interface"; //export * from "./domain/interfaces/configuration-repository.interface"; // Export application services __exportStar(require("./application/services/wireguard-service"), exports); // Export infrastructure components as needed // Enum for adapter types var AdapterType; (function (AdapterType) { AdapterType["WIREGUARD_TOOLS"] = "wireguard_tools"; AdapterType["SYNETD"] = "synetd"; })(AdapterType || (exports.AdapterType = AdapterType = {})); // Factory functions const filesystem_1 = require("./infrastructure/filesystem/filesystem"); const command_executor_1 = require("./infrastructure/command/command-executor"); const file_keys_repository_1 = require("./infrastructure/repositories/file-keys-repository"); const file_configuration_repository_1 = require("./infrastructure/repositories/file-configuration-repository"); const wireguard_tools_adapter_1 = require("./infrastructure/adapters/wireguard-tools-adapter"); const synetd_adapter_1 = require("./infrastructure/adapters/synetd-adapter"); const wireguard_service_1 = require("./application/services/wireguard-service"); const logger_1 = require("@synet/logger"); /** * Create a WireGuard service with the specified adapter type */ function createWireguardService(type = AdapterType.SYNETD, options = {}, logger) { // const effectiveLogger = logger || new ConsoleLogger('WireguardService'); const effectiveLogger = logger || (0, logger_1.getLogger)("Network"); switch (type) { case AdapterType.WIREGUARD_TOOLS: { const opts = options; const fileSystem = new filesystem_1.NodeFileSystem(); const commandExecutor = new command_executor_1.NodeCommandExecutor(logger); // Keys repository uses user home directory for storage const keysRepository = new file_keys_repository_1.FileKeysRepository(fileSystem, opts.configDir, effectiveLogger); // Config repository uses user home directory for internal config const configRepository = new file_configuration_repository_1.FileConfigurationRepository(fileSystem, opts.configDir, effectiveLogger); const adapter = new wireguard_tools_adapter_1.WireguardToolsAdapter(keysRepository, configRepository, commandExecutor, opts.interfaceName || "synet0", opts.configDir || "/etc/.synet", effectiveLogger); return new wireguard_service_1.WireguardService(adapter, effectiveLogger); } case AdapterType.SYNETD: { const opts = options; const fileSystem = new filesystem_1.NodeFileSystem(); const keysRepository = new file_keys_repository_1.FileKeysRepository(fileSystem, undefined, effectiveLogger); const adapter = new synetd_adapter_1.SynetdAdapter(keysRepository, opts.baseUrl || "http://localhost:4001", effectiveLogger); return new wireguard_service_1.WireguardService(adapter, effectiveLogger); } default: throw new Error(`Unsupported adapter type: ${type}`); } }