onvif-python 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- onvif/__init__.py +13 -0
- onvif/client.py +485 -0
- onvif/operator.py +130 -0
- onvif/services/__init__.py +75 -0
- onvif/services/accesscontrol.py +105 -0
- onvif/services/accessrules.py +47 -0
- onvif/services/actionengine.py +46 -0
- onvif/services/analytics/analytics.py +60 -0
- onvif/services/analytics/ruleengine.py +44 -0
- onvif/services/analyticsdevice.py +122 -0
- onvif/services/appmgmt.py +40 -0
- onvif/services/authenticationbehavior.py +83 -0
- onvif/services/credential.py +159 -0
- onvif/services/deviceio.py +165 -0
- onvif/services/devicemgmt.py +410 -0
- onvif/services/display.py +62 -0
- onvif/services/doorcontrol.py +93 -0
- onvif/services/events/events.py +41 -0
- onvif/services/events/notification.py +34 -0
- onvif/services/events/pullpoint.py +29 -0
- onvif/services/events/subscription.py +21 -0
- onvif/services/imaging.py +62 -0
- onvif/services/media.py +424 -0
- onvif/services/media2.py +310 -0
- onvif/services/provisioning.py +50 -0
- onvif/services/ptz.py +187 -0
- onvif/services/receiver.py +46 -0
- onvif/services/recording.py +136 -0
- onvif/services/replay.py +30 -0
- onvif/services/schedule.py +82 -0
- onvif/services/search.py +149 -0
- onvif/services/security/advancedsecurity.py +19 -0
- onvif/services/security/authorizationserver.py +31 -0
- onvif/services/security/dot1x.py +42 -0
- onvif/services/security/jwt.py +21 -0
- onvif/services/security/keystore.py +208 -0
- onvif/services/security/mediasigning.py +30 -0
- onvif/services/security/tlsserver.py +82 -0
- onvif/services/thermal.py +54 -0
- onvif/services/uplink.py +28 -0
- onvif/utils/__init__.py +4 -0
- onvif/utils/exceptions.py +33 -0
- onvif/utils/wsdl.py +297 -0
- onvif/wsdl/ver10/accesscontrol/wsdl/index.html +7 -0
- onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +702 -0
- onvif/wsdl/ver10/accessrules/wsdl/index.html +7 -0
- onvif/wsdl/ver10/actionengine.wsdl +1265 -0
- onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +4159 -0
- onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +7 -0
- onvif/wsdl/ver10/analyticsdevice.wsdl +709 -0
- onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +502 -0
- onvif/wsdl/ver10/appmgmt/wsdl/index.html +7 -0
- onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +1382 -0
- onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +7 -0
- onvif/wsdl/ver10/credential/wsdl/credential.wsdl +2018 -0
- onvif/wsdl/ver10/credential/wsdl/index.html +7 -0
- onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +4623 -0
- onvif/wsdl/ver10/deviceio.wsdl +1414 -0
- onvif/wsdl/ver10/display/display.wsdl +383 -0
- onvif/wsdl/ver10/display/wsdl/index.htm +383 -0
- onvif/wsdl/ver10/display.wsdl +521 -0
- onvif/wsdl/ver10/doorcontrol/wsdl/index.html +7 -0
- onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +449 -0
- onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +947 -0
- onvif/wsdl/ver10/events/wsdl/event.wsdl +947 -0
- onvif/wsdl/ver10/events/wsdl/index.html +7 -0
- onvif/wsdl/ver10/federatedsearch.wsdl +344 -0
- onvif/wsdl/ver10/media/wsdl/media.wsdl +3684 -0
- onvif/wsdl/ver10/pacs/accesscontrol.wsdl +1942 -0
- onvif/wsdl/ver10/pacs/doorcontrol.wsdl +1792 -0
- onvif/wsdl/ver10/pacs/types.xsd +181 -0
- onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +588 -0
- onvif/wsdl/ver10/receiver.wsdl +398 -0
- onvif/wsdl/ver10/recording.wsdl +1231 -0
- onvif/wsdl/ver10/replay.wsdl +221 -0
- onvif/wsdl/ver10/schedule/wsdl/index.html +7 -0
- onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +1383 -0
- onvif/wsdl/ver10/schema/common.xsd +422 -0
- onvif/wsdl/ver10/schema/metadatastream.xsd +520 -0
- onvif/wsdl/ver10/schema/onvif.xsd +9251 -0
- onvif/wsdl/ver10/search.wsdl +882 -0
- onvif/wsdl/ver10/thermal/wsdl/index.html +7 -0
- onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +777 -0
- onvif/wsdl/ver10/topics/topicns.xml +13 -0
- onvif/wsdl/ver10/uplink/wsdl/index.html +7 -0
- onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +256 -0
- onvif/wsdl/ver20/analytics/humanbody.xsd +490 -0
- onvif/wsdl/ver20/analytics/humanface.xsd +501 -0
- onvif/wsdl/ver20/analytics/index.html +7 -0
- onvif/wsdl/ver20/analytics/radiometry.xsd +389 -0
- onvif/wsdl/ver20/analytics/rules.xsd +127 -0
- onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +757 -0
- onvif/wsdl/ver20/analytics/wsdl/index.html +7 -0
- onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +603 -0
- onvif/wsdl/ver20/media/wsdl/index.html +7 -0
- onvif/wsdl/ver20/media/wsdl/media.wsdl +2862 -0
- onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +1450 -0
- onvif/wsdl/ver20/util/federated_search_documentation.html +1647 -0
- onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +8 -0
- onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +2580 -0
- onvif/wsdl/ver20/util/operationIndex.html +97 -0
- onvif_python-0.0.1.dist-info/METADATA +381 -0
- onvif_python-0.0.1.dist-info/RECORD +106 -0
- onvif_python-0.0.1.dist-info/WHEEL +5 -0
- onvif_python-0.0.1.dist-info/licenses/LICENSE.md +21 -0
- onvif_python-0.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# onvif/services/recording.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Recording:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("recording")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Recording", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def CreateRecording(self, RecordingConfiguration):
|
|
22
|
+
return self.operator.call(
|
|
23
|
+
"CreateRecording", RecordingConfiguration=RecordingConfiguration
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def DeleteRecording(self, RecordingToken):
|
|
27
|
+
return self.operator.call("DeleteRecording", RecordingToken=RecordingToken)
|
|
28
|
+
|
|
29
|
+
def GetRecordings(self):
|
|
30
|
+
return self.operator.call("GetRecordings")
|
|
31
|
+
|
|
32
|
+
def SetRecordingConfiguration(self, RecordingToken, RecordingConfiguration):
|
|
33
|
+
return self.operator.call(
|
|
34
|
+
"SetRecordingConfiguration",
|
|
35
|
+
RecordingToken=RecordingToken,
|
|
36
|
+
RecordingConfiguration=RecordingConfiguration,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def GetRecordingConfiguration(self, RecordingToken):
|
|
40
|
+
return self.operator.call(
|
|
41
|
+
"GetRecordingConfiguration", RecordingToken=RecordingToken
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def GetRecordingOptions(self, RecordingToken):
|
|
45
|
+
return self.operator.call("GetRecordingOptions", RecordingToken=RecordingToken)
|
|
46
|
+
|
|
47
|
+
def CreateTrack(self, RecordingToken, TrackConfiguration):
|
|
48
|
+
return self.operator.call(
|
|
49
|
+
"CreateTrack",
|
|
50
|
+
RecordingToken=RecordingToken,
|
|
51
|
+
TrackConfiguration=TrackConfiguration,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def DeleteTrack(self, RecordingToken, TrackToken):
|
|
55
|
+
return self.operator.call(
|
|
56
|
+
"DeleteTrack", RecordingToken=RecordingToken, TrackToken=TrackToken
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
def GetTrackConfiguration(self, RecordingToken, TrackToken):
|
|
60
|
+
return self.operator.call(
|
|
61
|
+
"GetTrackConfiguration",
|
|
62
|
+
RecordingToken=RecordingToken,
|
|
63
|
+
TrackToken=TrackToken,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def SetTrackConfiguration(self, RecordingToken, TrackToken, TrackConfiguration):
|
|
67
|
+
return self.operator.call(
|
|
68
|
+
"SetTrackConfiguration",
|
|
69
|
+
RecordingToken=RecordingToken,
|
|
70
|
+
TrackToken=TrackToken,
|
|
71
|
+
TrackConfiguration=TrackConfiguration,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def CreateRecordingJob(self, JobConfiguration):
|
|
75
|
+
return self.operator.call(
|
|
76
|
+
"CreateRecordingJob", JobConfiguration=JobConfiguration
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def DeleteRecordingJob(self, JobToken):
|
|
80
|
+
return self.operator.call("DeleteRecordingJob", JobToken=JobToken)
|
|
81
|
+
|
|
82
|
+
def GetRecordingJobs(self):
|
|
83
|
+
return self.operator.call("GetRecordingJobs")
|
|
84
|
+
|
|
85
|
+
def SetRecordingJobConfiguration(self, JobToken, JobConfiguration):
|
|
86
|
+
return self.operator.call(
|
|
87
|
+
"SetRecordingJobConfiguration",
|
|
88
|
+
JobToken=JobToken,
|
|
89
|
+
JobConfiguration=JobConfiguration,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def GetRecordingJobConfiguration(self, JobToken):
|
|
93
|
+
return self.operator.call("GetRecordingJobConfiguration", JobToken=JobToken)
|
|
94
|
+
|
|
95
|
+
def SetRecordingJobMode(self, JobToken, Mode):
|
|
96
|
+
return self.operator.call("SetRecordingJobMode", JobToken=JobToken, Mode=Mode)
|
|
97
|
+
|
|
98
|
+
def GetRecordingJobState(self, JobToken):
|
|
99
|
+
return self.operator.call("GetRecordingJobState", JobToken=JobToken)
|
|
100
|
+
|
|
101
|
+
def ExportRecordedData(
|
|
102
|
+
self,
|
|
103
|
+
SearchScope,
|
|
104
|
+
FileFormat,
|
|
105
|
+
StorageDestination,
|
|
106
|
+
StartPoint=None,
|
|
107
|
+
EndPoint=None,
|
|
108
|
+
):
|
|
109
|
+
return self.operator.call(
|
|
110
|
+
"ExportRecordedData",
|
|
111
|
+
StartPoint=StartPoint,
|
|
112
|
+
EndPoint=EndPoint,
|
|
113
|
+
SearchScope=SearchScope,
|
|
114
|
+
FileFormat=FileFormat,
|
|
115
|
+
StorageDestination=StorageDestination,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
def StopExportRecordedData(self, OperationToken):
|
|
119
|
+
return self.operator.call(
|
|
120
|
+
"StopExportRecordedData", OperationToken=OperationToken
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def GetExportRecordedDataState(self, OperationToken):
|
|
124
|
+
return self.operator.call(
|
|
125
|
+
"GetExportRecordedDataState", OperationToken=OperationToken
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
def OverrideSegmentDuration(
|
|
129
|
+
self, TargetSegmentDuration, Expiration, RecordingConfiguration
|
|
130
|
+
):
|
|
131
|
+
return self.operator.call(
|
|
132
|
+
"OverrideSegmentDuration",
|
|
133
|
+
TargetSegmentDuration=TargetSegmentDuration,
|
|
134
|
+
Expiration=Expiration,
|
|
135
|
+
RecordingConfiguration=RecordingConfiguration,
|
|
136
|
+
)
|
onvif/services/replay.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# onvif/services/replay.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Replay:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("replay")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Replay", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetReplayUri(self, StreamSetup, RecordingToken):
|
|
22
|
+
return self.operator.call(
|
|
23
|
+
"GetReplayUri", StreamSetup=StreamSetup, RecordingToken=RecordingToken
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def GetReplayConfiguration(self):
|
|
27
|
+
return self.operator.call("GetReplayConfiguration")
|
|
28
|
+
|
|
29
|
+
def SetReplayConfiguration(self, Configuration):
|
|
30
|
+
return self.operator.call("SetReplayConfiguration", Configuration=Configuration)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# onvif/services/schedule.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Schedule:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("schedule")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Schedule", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetScheduleState(self, Token):
|
|
22
|
+
return self.operator.call("GetScheduleState", Token=Token)
|
|
23
|
+
|
|
24
|
+
def GetScheduleInfo(self, Token):
|
|
25
|
+
return self.operator.call("GetScheduleInfo", Token=Token)
|
|
26
|
+
|
|
27
|
+
def GetScheduleInfoList(self, Limit=None, StartReference=None):
|
|
28
|
+
return self.operator.call(
|
|
29
|
+
"GetScheduleInfoList", Limit=Limit, StartReference=StartReference
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def GetSchedules(self, Token):
|
|
33
|
+
return self.operator.call("GetSchedules", Token=Token)
|
|
34
|
+
|
|
35
|
+
def GetScheduleList(self, Limit=None, StartReference=None):
|
|
36
|
+
return self.operator.call(
|
|
37
|
+
"GetScheduleList", Limit=Limit, StartReference=StartReference
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
def CreateSchedule(self, Schedule):
|
|
41
|
+
return self.operator.call("CreateSchedule", Schedule=Schedule)
|
|
42
|
+
|
|
43
|
+
def SetSchedule(self, Schedule):
|
|
44
|
+
return self.operator.call("SetSchedule", Schedule=Schedule)
|
|
45
|
+
|
|
46
|
+
def ModifySchedule(self, Schedule):
|
|
47
|
+
return self.operator.call("ModifySchedule", Schedule=Schedule)
|
|
48
|
+
|
|
49
|
+
def DeleteSchedule(self, Token):
|
|
50
|
+
return self.operator.call("DeleteSchedule", Token=Token)
|
|
51
|
+
|
|
52
|
+
def GetSpecialDayGroupInfo(self, Token):
|
|
53
|
+
return self.operator.call("GetSpecialDayGroupInfo", Token=Token)
|
|
54
|
+
|
|
55
|
+
def GetSpecialDayGroupInfoList(self, Limit=None, StartReference=None):
|
|
56
|
+
return self.operator.call(
|
|
57
|
+
"GetSpecialDayGroupInfoList", Limit=Limit, StartReference=StartReference
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def GetSpecialDayGroups(self, Token):
|
|
61
|
+
return self.operator.call("GetSpecialDayGroups", Token=Token)
|
|
62
|
+
|
|
63
|
+
def GetSpecialDayGroupList(self, Limit=None, StartReference=None):
|
|
64
|
+
return self.operator.call(
|
|
65
|
+
"GetSpecialDayGroupList", Limit=Limit, StartReference=StartReference
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
def CreateSpecialDayGroup(self, SpecialDayGroup):
|
|
69
|
+
return self.operator.call(
|
|
70
|
+
"CreateSpecialDayGroup", SpecialDayGroup=SpecialDayGroup
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def SetSpecialDayGroup(self, SpecialDayGroup):
|
|
74
|
+
return self.operator.call("SetSpecialDayGroup", SpecialDayGroup=SpecialDayGroup)
|
|
75
|
+
|
|
76
|
+
def ModifySpecialDayGroup(self, SpecialDayGroup):
|
|
77
|
+
return self.operator.call(
|
|
78
|
+
"ModifySpecialDayGroup", SpecialDayGroup=SpecialDayGroup
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
def DeleteSpecialDayGroup(self, Token):
|
|
82
|
+
return self.operator.call("DeleteSpecialDayGroup", Token=Token)
|
onvif/services/search.py
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# onvif/services/search.py
|
|
2
|
+
|
|
3
|
+
from ..operator import ONVIFOperator
|
|
4
|
+
from ..utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Search:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("search")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Search", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
20
|
+
|
|
21
|
+
def GetRecordingSummary(self):
|
|
22
|
+
return self.operator.call("GetRecordingSummary")
|
|
23
|
+
|
|
24
|
+
def GetRecordingInformation(self, RecordingToken):
|
|
25
|
+
return self.operator.call(
|
|
26
|
+
"GetRecordingInformation", RecordingToken=RecordingToken
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def GetMediaAttributes(self, Time, RecordingTokens=None):
|
|
30
|
+
return self.operator.call(
|
|
31
|
+
"GetMediaAttributes", RecordingTokens=RecordingTokens, Time=Time
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def FindRecordings(self, Scope, KeepAliveTime, MaxMatches=None):
|
|
35
|
+
return self.operator.call(
|
|
36
|
+
"FindRecordings",
|
|
37
|
+
Scope=Scope,
|
|
38
|
+
MaxMatches=MaxMatches,
|
|
39
|
+
KeepAliveTime=KeepAliveTime,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def GetRecordingSearchResults(
|
|
43
|
+
self, SearchToken, MinResults=None, MaxResults=None, WaitTime=None
|
|
44
|
+
):
|
|
45
|
+
return self.operator.call(
|
|
46
|
+
"GetRecordingSearchResults",
|
|
47
|
+
SearchToken=SearchToken,
|
|
48
|
+
MinResults=MinResults,
|
|
49
|
+
MaxResults=MaxResults,
|
|
50
|
+
WaitTime=WaitTime,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def FindEvents(
|
|
54
|
+
self,
|
|
55
|
+
StartPoint,
|
|
56
|
+
Scope,
|
|
57
|
+
SearchFilter,
|
|
58
|
+
IncludeStartState,
|
|
59
|
+
KeepAliveTime,
|
|
60
|
+
EndPoint=None,
|
|
61
|
+
MaxMatches=None,
|
|
62
|
+
):
|
|
63
|
+
return self.operator.call(
|
|
64
|
+
"FindEvents",
|
|
65
|
+
StartPoint=StartPoint,
|
|
66
|
+
EndPoint=EndPoint,
|
|
67
|
+
Scope=Scope,
|
|
68
|
+
SearchFilter=SearchFilter,
|
|
69
|
+
IncludeStartState=IncludeStartState,
|
|
70
|
+
MaxMatches=MaxMatches,
|
|
71
|
+
KeepAliveTime=KeepAliveTime,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def GetEventSearchResults(
|
|
75
|
+
self, SearchToken, MinResults=None, MaxResults=None, WaitTime=None
|
|
76
|
+
):
|
|
77
|
+
return self.operator.call(
|
|
78
|
+
"GetEventSearchResults",
|
|
79
|
+
SearchToken=SearchToken,
|
|
80
|
+
MinResults=MinResults,
|
|
81
|
+
MaxResults=MaxResults,
|
|
82
|
+
WaitTime=WaitTime,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
def FindPTZPosition(
|
|
86
|
+
self,
|
|
87
|
+
StartPoint,
|
|
88
|
+
Scope,
|
|
89
|
+
SearchFilter,
|
|
90
|
+
KeepAliveTime,
|
|
91
|
+
EndPoint=None,
|
|
92
|
+
MaxMatches=None,
|
|
93
|
+
):
|
|
94
|
+
return self.operator.call(
|
|
95
|
+
"FindPTZPosition",
|
|
96
|
+
StartPoint=StartPoint,
|
|
97
|
+
EndPoint=EndPoint,
|
|
98
|
+
Scope=Scope,
|
|
99
|
+
SearchFilter=SearchFilter,
|
|
100
|
+
MaxMatches=MaxMatches,
|
|
101
|
+
KeepAliveTime=KeepAliveTime,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def GetPTZPositionSearchResults(
|
|
105
|
+
self, SearchToken, MinResults=None, MaxResults=None, WaitTime=None
|
|
106
|
+
):
|
|
107
|
+
return self.operator.call(
|
|
108
|
+
"GetPTZPositionSearchResults",
|
|
109
|
+
SearchToken=SearchToken,
|
|
110
|
+
MinResults=MinResults,
|
|
111
|
+
MaxResults=MaxResults,
|
|
112
|
+
WaitTime=WaitTime,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
def GetSearchState(self, SearchToken):
|
|
116
|
+
return self.operator.call("GetSearchState", SearchToken=SearchToken)
|
|
117
|
+
|
|
118
|
+
def EndSearch(self, SearchToken):
|
|
119
|
+
return self.operator.call("EndSearch", SearchToken=SearchToken)
|
|
120
|
+
|
|
121
|
+
def FindMetadata(
|
|
122
|
+
self,
|
|
123
|
+
StartPoint,
|
|
124
|
+
Scope,
|
|
125
|
+
MetadataFilter,
|
|
126
|
+
KeepAliveTime,
|
|
127
|
+
EndPoint=None,
|
|
128
|
+
MaxMatches=None,
|
|
129
|
+
):
|
|
130
|
+
return self.operator.call(
|
|
131
|
+
"FindMetadata",
|
|
132
|
+
StartPoint=StartPoint,
|
|
133
|
+
EndPoint=EndPoint,
|
|
134
|
+
Scope=Scope,
|
|
135
|
+
MetadataFilter=MetadataFilter,
|
|
136
|
+
MaxMatches=MaxMatches,
|
|
137
|
+
KeepAliveTime=KeepAliveTime,
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
def GetMetadataSearchResults(
|
|
141
|
+
self, SearchToken, MinResults=None, MaxResults=None, WaitTime=None
|
|
142
|
+
):
|
|
143
|
+
return self.operator.call(
|
|
144
|
+
"GetMetadataSearchResults",
|
|
145
|
+
SearchToken=SearchToken,
|
|
146
|
+
MinResults=MinResults,
|
|
147
|
+
MaxResults=MaxResults,
|
|
148
|
+
WaitTime=WaitTime,
|
|
149
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# onvif/services/security/advancedsecurity.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AdvancedSecurity:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("advancedsecurity")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
service_path="Security", # fallback
|
|
14
|
+
xaddr=xaddr,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def GetServiceCapabilities(self):
|
|
19
|
+
return self.operator.call("GetServiceCapabilities")
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# onvif/services/security/authorizationserver.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AuthorizationServer:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("authorizationserver")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
xaddr=xaddr,
|
|
14
|
+
**kwargs,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
def GetAuthorizationServerConfigurations(self, Token=None):
|
|
18
|
+
return self.operator.call("GetAuthorizationServerConfigurations", Token=Token)
|
|
19
|
+
|
|
20
|
+
def CreateAuthorizationServerConfiguration(self, Configuration):
|
|
21
|
+
return self.operator.call(
|
|
22
|
+
"CreateAuthorizationServerConfiguration", Configuration=Configuration
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def SetAuthorizationServerConfiguration(self, Configuration):
|
|
26
|
+
return self.operator.call(
|
|
27
|
+
"SetAuthorizationServerConfiguration", Configuration=Configuration
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def DeleteAuthorizationServerConfiguration(self, Token):
|
|
31
|
+
return self.operator.call("DeleteAuthorizationServerConfiguration", Token=Token)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# onvif/services/security/dot1x.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Dot1X:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("dot1x")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
xaddr=xaddr,
|
|
14
|
+
**kwargs,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
def AddDot1XConfiguration(self, Dot1XConfiguration):
|
|
18
|
+
return self.operator.call(
|
|
19
|
+
"AddDot1XConfiguration", Dot1XConfiguration=Dot1XConfiguration
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
def GetAllDot1XConfigurations(self):
|
|
23
|
+
return self.operator.call("GetAllDot1XConfigurations")
|
|
24
|
+
|
|
25
|
+
def GetDot1XConfiguration(self, Dot1XID):
|
|
26
|
+
return self.operator.call("GetDot1XConfiguration", Dot1XID=Dot1XID)
|
|
27
|
+
|
|
28
|
+
def DeleteDot1XConfiguration(self, Dot1XID):
|
|
29
|
+
return self.operator.call("DeleteDot1XConfiguration", Dot1XID=Dot1XID)
|
|
30
|
+
|
|
31
|
+
def SetNetworkInterfaceDot1XConfiguration(self, token, Dot1XID):
|
|
32
|
+
return self.operator.call(
|
|
33
|
+
"SetNetworkInterfaceDot1XConfiguration", token=token, Dot1XID=Dot1XID
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def GetNetworkInterfaceDot1XConfiguration(self, token):
|
|
37
|
+
return self.operator.call("GetNetworkInterfaceDot1XConfiguration", token=token)
|
|
38
|
+
|
|
39
|
+
def DeleteNetworkInterfaceDot1XConfiguration(self, token):
|
|
40
|
+
return self.operator.call(
|
|
41
|
+
"DeleteNetworkInterfaceDot1XConfiguration", token=token
|
|
42
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# onvif/services/security/jwt.py
|
|
2
|
+
|
|
3
|
+
from ...operator import ONVIFOperator
|
|
4
|
+
from ...utils import ONVIFWSDL
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class JWT:
|
|
8
|
+
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
definition = ONVIFWSDL.get_definition("jwt")
|
|
10
|
+
self.operator = ONVIFOperator(
|
|
11
|
+
definition["path"],
|
|
12
|
+
binding=f"{{{definition['namespace']}}}{definition['binding']}",
|
|
13
|
+
xaddr=xaddr,
|
|
14
|
+
**kwargs,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
def GetJWTConfiguration(self):
|
|
18
|
+
return self.operator.call("GetJWTConfiguration")
|
|
19
|
+
|
|
20
|
+
def SetJWTConfiguration(self, Configuration):
|
|
21
|
+
return self.operator.call("SetJWTConfiguration", Configuration=Configuration)
|