Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 29 additions & 8 deletions doorcontrol.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@
# Author: Robert A Swirsky / Thrill Science
# Date: June 1, 2020 (Initial Commit)

# Updates : December 9, 2021 (Add HTTPs / HTTP methods)

import requests
import json
import argparse
import time
import os
from datetime import date

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

from requests.auth import HTTPDigestAuth

Expand All @@ -27,19 +31,29 @@ def check_key(d, key):
def get_door_list(params):
(addr, username, password) = params
data = {"axtdc:GetDoorList":{}}
r=requests.post(str.format("http://{0}/vapix/doorcontrol", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password))
if (args.httpmethod == 'HTTPS' or args.httpmethod == None):
r=requests.post(str.format("https://{0}/vapix/doorcontrol", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password), verify = False)
else:
r=requests.post(str.format("http://{0}/vapix/doorcontrol", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password))
if r.status_code == 200:
e = json.loads(r.text)
return { k['token']: k['Name'] for k in e['Door']}
else:
return {}

def make_http_request(data, addr, username, password):
r=requests.post(str.format("http://{0}/vapix/pacs", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password))
if (args.httpmethod == 'HTTPS' or args.httpmethod == None):
r=requests.post(str.format("https://{0}/vapix/pacs", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password), verify = False)
else:
r=requests.post(str.format("http://{0}/vapix/pacs", addr),
json.dumps(data),
auth=HTTPDigestAuth(username, password))
return r

def get_user_list(params):
Expand Down Expand Up @@ -85,7 +99,12 @@ def get_events(userList, doorList, accessPointList, args):
"ConvertFilterTimeFromLocal":True
}
}
r=requests.post(str.format("http://{0}/vapix/eventlogger",args.ipAddress),
if (args.httpmethod == 'HTTPS' or args.httpmethod == None):
r=requests.post(str.format("https://{0}/vapix/eventlogger",args.ipAddress),
json.dumps(data),
auth=HTTPDigestAuth(args.user, args.password), verify = False)
else:
r=requests.post(str.format("http://{0}/vapix/eventlogger",args.ipAddress),
json.dumps(data),
auth=HTTPDigestAuth(args.user, args.password))
if r.status_code == 200:
Expand Down Expand Up @@ -127,16 +146,18 @@ def get_events(userList, doorList, accessPointList, args):
axisAddress = os.environ.get('AxisAddress')
axisUser = os.environ.get('AxisUser')
axisPassword = os.environ.get('AxisPassword')
axisHttpMethod = os.environ.get('axisHttpMethod')

parser.add_argument("--fromDate",default=defaultDate, help="event date in YYYY-MM-DDTHH:MM:SS format")
parser.add_argument("--ipAddress",default=axisAddress, help="ip address or DNS name of controller")
parser.add_argument("--user",default=axisUser, help="username")
parser.add_argument("--password",default=axisPassword, help="password")
parser.add_argument("--httpmethod",default=axisHttpMethod, help="httpmethod")
args = parser.parse_args()

if args.ipAddress == None or args.user == None or args.password == None:
print("Error: Set AxisAddress, AxisUser, and AxisPassword as environment variables or use command line options.")
exit(-1)
else:
else:
(userList, doorList, accessPointList) = get_configuration_lists(args)
get_events(userList, doorList, accessPointList, args)