forked from vladimirs-git/fortigate-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaddress.py
More file actions
99 lines (79 loc) · 3.51 KB
/
Copy pathaddress.py
File metadata and controls
99 lines (79 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"""Address examples.
- Create address in the Fortigate
- Get all addresses from the Fortigate
- Get filtered address by name (unique identifier)
- Filter address by operator *equals* "=="
- Filter address by operator *contains* "=@"
- Filter address by operator *not equals* "!="
- Update address data in the Fortigate
- Check for presence of address in the Fortigate
- Delete address from the Fortigate by name
- Delete addresses from the Fortigate by filter
- Check for absence of address in the Fortigate
- FortigateAPI *with* statement
"""
import logging
from pprint import pprint
from fortigate_api import FortigateAPI
logging.getLogger().setLevel(logging.DEBUG)
HOST = "host"
USERNAME = "username"
PASSWORD = "password"
fgt = FortigateAPI(host=HOST, username=USERNAME, password=PASSWORD)
fgt.login()
# Create Address
data = {
"name": "ADDRESS",
"obj-type": "ip",
"subnet": "127.0.0.100 255.255.255.252",
"type": "ipmask",
}
response = fgt.address.create(data=data)
print("address.create", response) # address.create <Response [200]>
print("\nGets all addresses from the Fortigate")
addresses = fgt.address.get()
print(f"addresses count={len(addresses)}") # addresses count=1727
print("\nGets filtered address by name (unique identifier)")
addresses = fgt.address.get(uid="ADDRESS")
pprint(addresses)
# [{"comment": "",
# "name": "ADDRESS",
# "subnet": "127.0.0.100 255.255.255.252",
# "uuid": "a386e4b0-d6cb-51ec-1e28-01e0bc0de43c",
# ...
# }]
print("\nFilters address by operator equals \"==\"")
addresses = fgt.address.get(filter="name==ADDRESS")
print(f"addresses count={len(addresses)}") # addresses count=1
print("\nFilters address by operator contains \"=@\"")
addresses = fgt.address.get(filter="subnet=@127.0")
print(f"addresses count={len(addresses)}") # addresses count=4
print("\nFilters address by operator not equals \"!=\"")
addresses = fgt.address.get(filter="name!=ADDRESS")
print(f"addresses count={len(addresses)}") # addresses count=1726
print("\nFilters address by multiple conditions")
addresses = fgt.address.get(filter=["subnet=@127.0", "type==ipmask"])
print(f"addresses count={len(addresses)}") # addresses count=1
print("\nUpdates address data in the Fortigate")
data = dict(name="ADDRESS", subnet="127.0.0.255 255.255.255.255", color=6)
response = fgt.address.update(uid="ADDRESS", data=data)
print("address.update", response, response.ok) # address.update <Response [200]> True
print("\nChecks for presence of address in the Fortigate")
response = fgt.address.is_exist(uid="ADDRESS")
print("address.is_exist", response) # address.is_exist True
print("\nDeletes address from the Fortigate by name")
response = fgt.address.delete(uid="ADDRESS")
print("address.delete", response, response.ok) # address.delete <Response [200]> True
print("\nDeletes addresses: ADDRESS, FIREWALL_AUTH_PORTAL_ADDRESS from the Fortigate by filter. "
"Returns <Response [500]> because FIREWALL_AUTH_PORTAL_ADDRESS cannot be deleted")
response = fgt.address.delete(filter="name=@ADDRESS")
print("address.delete", response, response.ok) # address.delete <Response [500]> False
print("\nChecks for absence of address in the Fortigate")
response = fgt.address.is_exist(uid="ADDRESS")
print("address.is_exist", response) # address.is_exist False
fgt.logout()
# FortigateAPI *with* statement
print("\nFortigateAPI *with* statement")
with FortigateAPI(host=HOST, username=USERNAME, password=PASSWORD) as fgt:
response = fgt.address.is_exist(uid="ADDRESS")
print("address.is_exist", response) # address.is_exist False