Merge pull request #404 from CJHarms/ff-agent-fixes

FF Agent Fixes - Header Ordering
This commit is contained in:
Bastian Schroll 2019-08-30 16:50:12 +02:00 committed by GitHub
commit 5663bea32f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 4 deletions

View file

@ -1,10 +1,12 @@
# Changelog
### __[v#.#]__ - date
##### Added
- Telegram-Plugin: In der generierten Übersichtkarte wird eine Anfahrtsroute integriert. Der Abfahrtsort ist konfiguierbar. [#382](https://github.com/Schrolli91/BOSWatch/pull/382)
- Hue-Plugin: Geräte die mit einer Hue bridge verbunden sind können aus BOSWatch ein- und ausgeschaltet werden. [#394](https://github.com/Schrolli91/BOSWatch/issues/394)
##### Changed
- FFAgent Plugin: zusätzliches OrderedDict "alarmHeadersOrdered" implementiert um das HTTP Header Ordering sicherzustellen. Zusätzlich den HTTP Request mittels Session implementiert um das Header Ordering zu bewahren. Zusätzliches Debug Logging für die Header implementiert. [#356] (https://github.com/Schrolli91/BOSWatch/issues/356)
##### Deprecated
##### Removed
##### Fixed

View file

@ -13,7 +13,6 @@ versionNr = "2.4.3"
branch = "dev"
buildDate = "unreleased"
# Global variables
config = 0
script_path = ""

View file

@ -13,6 +13,8 @@ import logging # Global logger
import hmac, hashlib
import json, requests
from collections import OrderedDict
from includes import globalVars # Global variables
#from includes.helper import timeHandler
@ -123,8 +125,9 @@ def run(typ,freq,data):
}
alarmData = json.dumps(alarmData)
logging.debug(alarmData)
alarmHeaders = {
"Content-Type": "application/json",
"webApiToken": webApiToken,
@ -132,12 +135,30 @@ def run(typ,freq,data):
"selectiveCallCode": selectiveCallCode,
"hmac": hmac.new(webApiKey, webApiToken + selectiveCallCode + accessToken + alarmData, digestmod=hashlib.sha256).hexdigest()
}
logging.debug(alarmHeaders)
alarmHeadersOrdered=OrderedDict()
alarmHeadersOrdered['webApiToken']=webApiToken
alarmHeadersOrdered['accessToken']=accessToken
alarmHeadersOrdered['selectiveCallCode']=selectiveCallCode
alarmHeadersOrdered['hmac']=hmac.new(webApiKey, webApiToken + selectiveCallCode + accessToken + alarmData, digestmod=hashlib.sha256).hexdigest()
logging.debug(alarmHeadersOrdered)
if globalVars.config.get("FFAgent", "live") == "1":
r = requests.post(url, data=alarmData, headers=alarmHeaders, verify=serverCertFile, cert=(clientCertFile, clientCertPass))
s = requests.Session()
s.headers = OrderedDict([('Content-Type', 'application/json')])
logging.debug(s.headers)
r = s.post(url, data=alarmData, headers=alarmHeadersOrdered, verify=serverCertFile, cert=(clientCertFile, clientCertPass))
else:
r = requests.post(url, data=alarmData, headers=alarmHeaders, verify=serverCertFile)
s = requests.Session()
s.headers = OrderedDict([('Content-Type', 'application/json')])
logging.debug(s.headers)
r = s.post(url, data=alarmData, headers=alarmHeadersOrdered, verify=serverCertFile)
logging.debug(r.request.headers)
except:
logging.error("cannot send FFAgent request")