Skip to content

Commit 6dc61b2

Browse files
Merge pull request #4 from SamBriskman/Sam
Update test case
2 parents bcd40cc + 0f0491d commit 6dc61b2

File tree

24 files changed

+3787
-49
lines changed

24 files changed

+3787
-49
lines changed

components/netdriver/plugins/check_point/check_point.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def get_mode_prompt_patterns(self) -> dict[Mode, re.Pattern]:
3737
}
3838

3939
def get_more_pattern(self) -> tuple[re.Pattern, str]:
40-
return (CheckPointBase.PatternHelper.get_more_pattern, self._CMD_MORE)
40+
return (CheckPointBase.PatternHelper.get_more_pattern(), self._CMD_MORE)
4141

4242
class PatternHelper:
4343
""" Inner class for patterns """

components/netdriver/server/handlers/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,24 @@
22
# -*- coding: utf-8 -*-
33
from asyncssh import SSHServerProcess
44

5+
from netdriver.server.handlers.arista.arista_eos import AristaEOSHandler
56
from netdriver.server.handlers.array.array_ag import ArrayAGHandler
67
from netdriver.server.handlers.chaitin.chaitin_ctdsg import ChaiTinCTDSGHandler
8+
from netdriver.server.handlers.check_point.check_point_gaia import CheckPointGaiaHandler
79
from netdriver.server.handlers.cisco.cisco_asa import CiscoASAHandler
810
from netdriver.server.handlers.cisco.cisco_nexus import CiscoNexusHandler
911
from netdriver.server.handlers.command_handler import CommandHandler
1012
from netdriver.server.handlers.dptech.dptech_fw1000 import DptechFW1000Handler
13+
from netdriver.server.handlers.fortinet.fortinet_fortigate import FortinetFortigateHandler
14+
from netdriver.server.handlers.huawei.huawei_ce import HuaweiCEHandler
1115
from netdriver.server.handlers.huawei.huawei_usg import HuaweiUSGHandler
1216
from netdriver.server.handlers.hillstone.hillstone_sg6000 import HillstoneSG6000Handler
1317
from netdriver.server.handlers.h3c.h3c_secpath import H3CSecPathHandler
1418
from netdriver.server.handlers.h3c.h3c_vsr import H3CVsrHandler
1519
from netdriver.server.handlers.juniper.juniper_srx import JuniperSRXHandler
1620
from netdriver.server.handlers.juniper.juniper_ex import JuniperEXHandler
1721
from netdriver.server.handlers.maipu.maipu_nss import MaiPuNSSHandler
22+
from netdriver.server.handlers.paloalto.paloalto_pa import PaloaltoPAHandler
1823
from netdriver.server.handlers.qianxin.qianxin_nsg import QiAnXinNSGHandler
1924
from netdriver.server.handlers.topsec.topsec_ngfw import TopSecNGFWHandler
2025
from netdriver.server.handlers.venustech.venustech_usg import VenustechUSGHandler
@@ -56,5 +61,15 @@ def create_handler(process: SSHServerProcess,
5661
return ChaiTinCTDSGHandler(process, conf_path)
5762
elif TopSecNGFWHandler.is_selectable(vendor, model, version):
5863
return TopSecNGFWHandler(process, conf_path)
64+
elif AristaEOSHandler.is_selectable(vendor, model, version):
65+
return AristaEOSHandler(process, conf_path)
66+
elif CheckPointGaiaHandler.is_selectable(vendor, model, version):
67+
return CheckPointGaiaHandler(process, conf_path)
68+
elif FortinetFortigateHandler.is_selectable(vendor, model, version):
69+
return FortinetFortigateHandler(process, conf_path)
70+
elif PaloaltoPAHandler.is_selectable(vendor, model, version):
71+
return PaloaltoPAHandler(process, conf_path)
72+
elif HuaweiCEHandler.is_selectable(vendor, model, version):
73+
return HuaweiCEHandler(process, conf_path)
5974
else:
6075
raise ValueError(f"Unsupported device: {vendor}:{model}:{version}")

components/netdriver/server/handlers/arista/__init__.py

Whitespace-only changes.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/usr/bin/env python3.10.6
2+
# -*- coding: utf-8 -*-
3+
4+
from pathlib import Path
5+
from asyncssh import SSHServerProcess
6+
from netdriver.client.mode import Mode
7+
from netdriver.exception.server import ClientExit
8+
from netdriver.server.handlers.command_handler import CommandHandler
9+
from netdriver.server.models import DeviceBaseInfo
10+
11+
12+
class AristaEOSHandler(CommandHandler):
13+
""" Arista EOS Command Handler """
14+
15+
info = DeviceBaseInfo(
16+
vendor="arista",
17+
model="eos",
18+
version="*",
19+
description="Arista EOS Command Handler"
20+
)
21+
22+
@classmethod
23+
def is_selectable(cls, vendor: str, model: str, version: str) -> bool:
24+
# only check vendor and model, check version in the future
25+
if cls.info.vendor == vendor and cls.info.model == model:
26+
return True
27+
28+
def __init__(self, process: SSHServerProcess, conf_path: str = None):
29+
# current file path
30+
if conf_path is None:
31+
cwd_path = Path(__file__).parent
32+
conf_path = f"{cwd_path}/arista_eos.yml"
33+
self.conf_path = conf_path
34+
super().__init__(process)
35+
36+
async def switch_vsys(self, command: str) -> bool:
37+
return False
38+
39+
async def switch_mode(self, command: str) -> bool:
40+
if command not in self.config.modes[self._mode].switch_mode_cmds:
41+
return False
42+
43+
match self._mode:
44+
case Mode.LOGIN:
45+
if command == "exit":
46+
# logout
47+
raise ClientExit
48+
if command == "enable":
49+
self._mode = Mode.ENABLE
50+
return True
51+
case Mode.ENABLE:
52+
if command == "exit":
53+
# logout
54+
raise ClientExit
55+
elif command == "configure terminal":
56+
# switch to config mode
57+
self._mode = Mode.CONFIG
58+
return True
59+
elif command == "disable":
60+
self._mode = Mode.LOGIN
61+
return True
62+
case Mode.CONFIG:
63+
if command == "exit" or command == "end":
64+
# exit config mode
65+
self._mode = Mode.ENABLE
66+
return True
67+
elif command == "disable":
68+
# login mode
69+
self._mode = Mode.LOGIN
70+
return True
71+
case _:
72+
return False
73+
return False

0 commit comments

Comments
 (0)