UNPKG

n8n-nodes-netdevices

Version:

n8n node to interact with network devices (Cisco, MikroTik, Arista, Extreme Networks, Dell, Juniper, HP, Aruba, Ubiquiti, Palo Alto, Fortinet - ISP, data center, campus, and edge)

388 lines 15.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConnectionDispatcher = void 0; exports.ConnectHandler = ConnectHandler; exports.ConnectHandlerWithAutoDetect = ConnectHandlerWithAutoDetect; const base_connection_1 = require("./base-connection"); const cisco_1 = require("./cisco"); const juniper_1 = require("./juniper"); const linux_1 = require("./linux"); const paloalto_1 = require("./paloalto"); const ciena_1 = require("./ciena"); const fortinet_1 = require("./fortinet"); const ericsson_1 = require("./ericsson"); const device_specific_jump_host_connection_1 = require("./device-specific-jump-host-connection"); const vyos_1 = require("./vyos"); const huawei_1 = require("./huawei"); const arista_1 = require("./arista"); const hp_1 = require("./hp"); const ubiquiti_1 = require("./ubiquiti"); const mikrotik_1 = require("./mikrotik"); const extreme_1 = require("./extreme"); const dell_1 = require("./dell"); const versa_1 = require("./versa"); const CONNECTION_CLASS_MAPPING = { 'cisco_ios': cisco_1.CiscoConnection, 'cisco_ios_xe': cisco_1.CiscoConnection, 'cisco_ios_xr': cisco_1.CiscoIOSXRConnection, 'cisco_nxos': cisco_1.CiscoConnection, 'cisco_asa': cisco_1.CiscoConnection, 'cisco_sg300': cisco_1.CiscoSG300Connection, 'juniper_junos': juniper_1.JuniperConnection, 'juniper_srx': juniper_1.JuniperConnection, 'paloalto_panos': paloalto_1.PaloAltoConnection, 'ciena_saos': ciena_1.CienaSaosConnection, 'fortinet_fortios': fortinet_1.FortinetConnection, 'ericsson_ipos': ericsson_1.EricssonConnection, 'ericsson_mltn': ericsson_1.EricssonMinilinkConnection, 'linux': linux_1.LinuxConnection, 'generic': base_connection_1.BaseConnection, 'vyos': vyos_1.VyosConnection, 'huawei_vrp': huawei_1.HuaweiConnection, 'arista_eos': arista_1.AristaConnection, 'hp_procurve': hp_1.HPProcurveConnection, 'aruba_os': hp_1.ArubaOsConnection, 'aruba_aoscx': hp_1.ArubaAosCxConnection, 'ubiquiti_edgeswitch': ubiquiti_1.UbiquitiEdgeSwitchConnection, 'ubiquiti_edgerouter': ubiquiti_1.UbiquitiEdgeRouterConnection, 'ubiquiti_unifi': ubiquiti_1.UbiquitiUnifiSwitchConnection, 'mikrotik_routeros': mikrotik_1.MikrotikRouterOsConnection, 'mikrotik_switchos': mikrotik_1.MikrotikSwitchOsConnection, 'extreme_exos': extreme_1.ExtremeExosConnection, 'dell_os10': dell_1.DellOS10Connection, 'versa_flexvnf': versa_1.VersaFlexVNFConnection, }; class ConnectionDispatcher { static createConnection(credentials) { const deviceType = credentials.deviceType.toLowerCase(); const ConnectionClass = CONNECTION_CLASS_MAPPING[deviceType]; if (!ConnectionClass) { throw new Error(`Unsupported device type: ${deviceType}. Supported types: ${Object.keys(CONNECTION_CLASS_MAPPING).join(', ')}`); } const deviceConnection = new ConnectionClass(credentials); if (credentials.useJumpHost && credentials.jumpHostHost && credentials.jumpHostPort && credentials.jumpHostUsername && credentials.jumpHostAuthMethod) { return new device_specific_jump_host_connection_1.DeviceSpecificJumpHostConnection(credentials, deviceConnection); } return deviceConnection; } static getSupportedDeviceTypes() { return Object.keys(CONNECTION_CLASS_MAPPING); } static isDeviceTypeSupported(deviceType) { return Object.keys(CONNECTION_CLASS_MAPPING).includes(deviceType.toLowerCase()); } static getDeviceTypeDisplayName(deviceType) { const displayNames = { 'cisco_ios': 'Cisco IOS', 'cisco_ios_xe': 'Cisco IOS-XE', 'cisco_ios_xr': 'Cisco IOS-XR', 'cisco_nxos': 'Cisco NX-OS', 'cisco_asa': 'Cisco ASA', 'cisco_sg300': 'Cisco SG300', 'juniper_junos': 'Juniper JunOS', 'juniper_srx': 'Juniper SRX', 'paloalto_panos': 'Palo Alto PAN-OS', 'ciena_saos': 'Ciena SAOS', 'fortinet_fortios': 'Fortinet FortiOS', 'ericsson_ipos': 'Ericsson IPOS', 'ericsson_mltn': 'Ericsson MiniLink', 'linux': 'Linux Server', 'generic': 'Generic SSH', 'vyos': 'VyOS', 'huawei_vrp': 'Huawei VRP', 'arista_eos': 'Arista EOS', 'hp_procurve': 'HP ProCurve', 'aruba_os': 'Aruba OS (Mobility Controllers)', 'aruba_aoscx': 'Aruba AOS-CX', 'ubiquiti_edgeswitch': 'Ubiquiti EdgeSwitch', 'ubiquiti_edgerouter': 'Ubiquiti EdgeRouter', 'ubiquiti_unifi': 'Ubiquiti UniFi Switch', 'mikrotik_routeros': 'MikroTik RouterOS', 'mikrotik_switchos': 'MikroTik SwitchOS', 'extreme_exos': 'Extreme Networks ExtremeXOS', 'dell_os10': 'Dell EMC OS10', 'versa_flexvnf': 'Versa FlexVNF', }; return displayNames[deviceType.toLowerCase()] || deviceType; } static getDeviceTypeOptions() { return [ { name: 'Cisco IOS', value: 'cisco_ios', description: 'Cisco IOS routers and switches' }, { name: 'Cisco IOS-XE', value: 'cisco_ios_xe', description: 'Cisco IOS-XE devices' }, { name: 'Cisco IOS-XR', value: 'cisco_ios_xr', description: 'Cisco IOS-XR routers (service provider)' }, { name: 'Cisco NX-OS', value: 'cisco_nxos', description: 'Cisco Nexus switches' }, { name: 'Cisco ASA', value: 'cisco_asa', description: 'Cisco ASA firewalls' }, { name: 'Cisco SG300', value: 'cisco_sg300', description: 'Cisco SG300 series switches' }, { name: 'Juniper JunOS', value: 'juniper_junos', description: 'Juniper routers and switches' }, { name: 'Juniper SRX', value: 'juniper_srx', description: 'Juniper SRX firewalls' }, { name: 'Palo Alto PAN-OS', value: 'paloalto_panos', description: 'Palo Alto Networks firewalls' }, { name: 'Ciena SAOS', value: 'ciena_saos', description: 'Ciena SAOS switches and platforms' }, { name: 'Fortinet FortiOS', value: 'fortinet_fortios', description: 'Fortinet FortiOS firewalls and security appliances' }, { name: 'Ericsson IPOS', value: 'ericsson_ipos', description: 'Ericsson IPOS devices' }, { name: 'Ericsson MiniLink', value: 'ericsson_mltn', description: 'Ericsson MiniLink devices' }, { name: 'Linux Server', value: 'linux', description: 'Linux servers and appliances' }, { name: 'Generic SSH', value: 'generic', description: 'Generic SSH connection' }, { name: 'VyOS', value: 'vyos', description: 'VyOS routers' }, { name: 'Huawei VRP (NE Series)', value: 'huawei_vrp', description: 'Huawei NE/AR/S series running VRP (incl. NE8000).', }, { name: 'Arista EOS', value: 'arista_eos', description: 'Arista EOS switches (data center)', }, { name: 'HP ProCurve', value: 'hp_procurve', description: 'HP ProCurve switches', }, { name: 'Aruba OS', value: 'aruba_os', description: 'Aruba OS Mobility Controllers (wireless)', }, { name: 'Aruba AOS-CX', value: 'aruba_aoscx', description: 'Aruba AOS-CX switches (modern campus)', }, { name: 'Ubiquiti EdgeSwitch', value: 'ubiquiti_edgeswitch', description: 'Ubiquiti EdgeSwitch series', }, { name: 'Ubiquiti EdgeRouter', value: 'ubiquiti_edgerouter', description: 'Ubiquiti EdgeRouter series (EdgeOS)', }, { name: 'Ubiquiti UniFi Switch', value: 'ubiquiti_unifi', description: 'Ubiquiti UniFi switches', }, { name: 'MikroTik RouterOS', value: 'mikrotik_routeros', description: 'MikroTik routers (ISP/WISP)', }, { name: 'MikroTik SwitchOS', value: 'mikrotik_switchos', description: 'MikroTik switches', }, { name: 'Extreme Networks ExtremeXOS', value: 'extreme_exos', description: 'Extreme ExtremeXOS switches (campus/data center)', }, { name: 'Dell EMC OS10', value: 'dell_os10', description: 'Dell EMC OS10 switches (data center/campus)', }, { name: 'Versa FlexVNF', value: 'versa_flexvnf', description: 'Versa Networks FlexVNF (SD-WAN/NFV)', }, ]; } static async autoDetectDeviceType(credentials) { const tempCredentials = { ...credentials, deviceType: 'generic' }; const connection = new base_connection_1.BaseConnection(tempCredentials); try { await connection.connect(); const response = await connection.sendCommand(''); const output = response.output.toLowerCase(); if (output.includes('cisco') || output.includes('ios') || output.includes('nx-os')) { if (output.includes('nx-os') || output.includes('nexus')) { return 'cisco_nxos'; } else if (output.includes('asa')) { return 'cisco_asa'; } else if (output.includes('ios-xr') || output.includes('iosxr')) { return 'cisco_ios_xr'; } else if (output.includes('ios-xe')) { return 'cisco_ios_xe'; } else if (output.includes('sg300') || output.includes('small business')) { return 'cisco_sg300'; } else { return 'cisco_ios'; } } if (output.includes('junos') || output.includes('juniper')) { if (output.includes('srx')) { return 'juniper_srx'; } else { return 'juniper_junos'; } } if (output.includes('ciena') || output.includes('saos')) { return 'ciena_saos'; } if (output.includes('fortinet') || output.includes('fortios') || output.includes('fortigate')) { return 'fortinet_fortios'; } if (output.includes('palo alto') || output.includes('pan-os') || output.includes('panos') || output.includes('paloalto')) { return 'paloalto_panos'; } if (output.includes('ericsson') || output.includes('ipos')) { return 'ericsson_ipos'; } if (output.includes('minilink')) { return 'ericsson_mltn'; } if (output.includes('linux') || output.includes('ubuntu') || output.includes('centos') || output.includes('redhat') || output.includes('debian') || output.includes('bash') || output.includes('$') || output.includes('~')) { return 'linux'; } if (output.includes('huawei') || output.includes('vrp') || output.includes('versatile routing platform') || output.includes('ne8000')) { return 'huawei_vrp'; } if (output.includes('arista') || output.includes('arista eos')) { return 'arista_eos'; } if (output.includes('procurve') || output.includes('hp switch')) { return 'hp_procurve'; } if (output.includes('aruba')) { if (output.includes('arubaos') || output.includes('mobility controller') || output.includes('mobility master')) { return 'aruba_os'; } else if (output.includes('aos-cx') || output.includes('aoscx')) { return 'aruba_aoscx'; } return 'aruba_aoscx'; } if (output.includes('ubiquiti') || output.includes('ubnt')) { if (output.includes('edgerouter') || output.includes('edgeos')) { return 'ubiquiti_edgerouter'; } else if (output.includes('edgeswitch')) { return 'ubiquiti_edgeswitch'; } else if (output.includes('unifi')) { return 'ubiquiti_unifi'; } return 'ubiquiti_edgeswitch'; } if (output.includes('mikrotik') || output.includes('routeros')) { if (output.includes('switchos')) { return 'mikrotik_switchos'; } return 'mikrotik_routeros'; } if (output.includes('extremexos') || output.includes('extreme networks') || output.includes('exos')) { return 'extreme_exos'; } if (output.includes('dell') && (output.includes('os10') || output.includes('dellos10'))) { return 'dell_os10'; } if (output.includes('versa') || output.includes('flexvnf')) { return 'versa_flexvnf'; } return null; } catch (error) { return null; } finally { await connection.disconnect(); } } } exports.ConnectionDispatcher = ConnectionDispatcher; function ConnectHandler(credentials) { return ConnectionDispatcher.createConnection(credentials); } async function ConnectHandlerWithAutoDetect(credentials) { const tempCredentials = { ...credentials, deviceType: 'generic' }; const detectedType = await ConnectionDispatcher.autoDetectDeviceType(tempCredentials); if (!detectedType) { throw new Error('Could not auto-detect device type'); } const finalCredentials = { ...credentials, deviceType: detectedType }; return ConnectionDispatcher.createConnection(finalCredentials); } //# sourceMappingURL=connection-dispatcher.js.map