SAT9/.resources/4781903f83834e30d70bf70f5437b9f45078c73693e2d1dd0279ffd7195c7876
2025-04-18 19:44:27 +04:00

83 lines
3.0 KiB
Plaintext

from urllib2_aws4auth import aws_urlopen, Request
from urllib2 import HTTPError
from urllib import urlencode
import json
import boto3
from pprint import pformat
REGION = 'us-east-2'
SERVICE = 'execute-api'
ENDPOINT = 'https://l7o38q47a6.execute-api.us-east-2.amazonaws.com/default/ScadaProductMetrics'
LOGGER = system.util.getLogger('activityLog')
def openSession():
CREDS = boto3.Session().get_credentials()
AWS_ACCESS_KEY_ID = CREDS.access_key
AWS_SECRET_ACCESS_KEY = CREDS.secret_key
TOKEN = CREDS.token
OPENER = aws_urlopen(
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY,
REGION,
SERVICE,
session_token=TOKEN,
verify=False)
return OPENER
def createActivityDetails(session, resource_type, resource, current_page, start_time, end_time = None):
user = session.props.auth.user.userName
session_id = session.props.id
site = session.custom.fc
start_time = system.date.format(start_time, 'yyyy-MM-dd HH:mm:ss')
end_time = system.date.format(end_time, 'yyyy-MM-dd HH:mm:ss') if end_time != None else end_time
user_UTCoffset = session.props.device.timezone.utcOffset
activityDetails = {'username':user,
'session_id':session_id,
'site': site,
'start_time': start_time,
'end_time':end_time,
'user_UTCoffset': user_UTCoffset,
'resource_type': resource_type,
'resource': resource,
'current_page': current_page}
return activityDetails
def logActivity(session, resource_type, resource, current_page, start_time, end_time = None):
activityDetails = createActivityDetails(session, resource_type, resource, current_page, start_time, end_time)
user = session.props.auth.user.userName
opener = openSession()
params = activityDetails
payload = json.dumps(params)
method = 'POST'
# in the headers the Ignition session username (session.props.auth.user.userName) must be supplied as 'X-Ignition-User'
headers = {
'Content-type': 'application/json',
'X-Ignition-User': user
}
req = Request(url=ENDPOINT, method=method, data=payload, headers=headers)
# open the request and process the read
try:
resp = opener(req)
response = json.loads(resp.read())
error = None
print pformat(response)
except HTTPError, e:
error = str(e)
response = None
print error
LOGGER.info(error)
return {'error': error, 'response':response }
def callLogger(self, resource_type, resource = None, current_page= None):
""" self is reference to the view. So if calling from shutdown script on the view, pass self.
If calling from a component, pass self.view"""
if self.session.custom.enable_activity_logging:
if self.session.props.device.type != 'designer':
end_time = system.date.now() if resource_type == 'page' else None
start_time = self.custom.activityLogger.start_time
pageid = self.custom.activityLogger.pageid
resource = pageid if resource == None else resource
current_page = pageid if current_page == None else current_page
logActivity(self.session, resource_type, resource, current_page, start_time, end_time)