diff --git a/CHANGELOG.md b/CHANGELOG.md index 49870db..e774716 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [5.2.0] - 2025-05-14 + +### Added + +- Log duration of user sessions + ## [5.1.1] - 2025-05-06 ### Fixed diff --git a/linux/debian/changelog b/linux/debian/changelog index 8028fa4..51f72ee 100644 --- a/linux/debian/changelog +++ b/linux/debian/changelog @@ -1,3 +1,9 @@ +ogagent (5.2.0-1) stable; urgency=medium + + * Log length of user sessions + + -- OpenGnsys developers Mon, 12 May 2025 11:38:27 +0200 + ogagent (5.1.1-1) stable; urgency=medium * Fix URL for notifying stop to ogcore diff --git a/src/VERSION b/src/VERSION index ac14c3d..91ff572 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -5.1.1 +5.2.0 diff --git a/src/cfg/ogagent.cfg b/src/cfg/ogagent.cfg index da0048e..09c339f 100644 --- a/src/cfg/ogagent.cfg +++ b/src/cfg/ogagent.cfg @@ -17,6 +17,8 @@ level=full # Log Level, if omitted, will be set to INFO log=DEBUG +imgname= + # TLS ca=C:\Program Files (x86)\OGagent\ca.crt crt=C:\Program Files (x86)\OGagent\ogagent.crt diff --git a/src/opengnsys/modules/server/OpenGnSys/__init__.py b/src/opengnsys/modules/server/OpenGnSys/__init__.py index 8a17cbe..4e93001 100644 --- a/src/opengnsys/modules/server/OpenGnSys/__init__.py +++ b/src/opengnsys/modules/server/OpenGnSys/__init__.py @@ -213,6 +213,10 @@ class OpenGnSysWorker(ServerWorker): """ Sends OGAgent stopping notification to OpenGnsys server """ + now = time.time() + for elem in self.user: + sess_len = now - elem['login_ts'] + logger.debug ('Session of logged in user {} took {} seconds'.format (elem['username'], int (sess_len))) logger.debug('onDeactivation') self.REST.sendMessage('ogagent/stopped', {'mac': self.interface.mac, 'ip': self.interface.ip, 'ostype': operations.os_type, 'osversion': operations.os_version}) @@ -223,7 +227,7 @@ class OpenGnSysWorker(ServerWorker): """ user, language, self.session_type = tuple(data.split(',')) logger.debug('Received login for {0} using {2} with language {1}'.format(user, language, self.session_type)) - self.user.append(user) + self.user.append ({'username': user, 'login_ts': time.time() }) self.REST.sendMessage('ogagent/loggedin', {'ip': self.interface.ip, 'user': user, 'language': language, 'session': self.session_type, 'ostype': operations.os_type, 'osversion': operations.os_version}) @@ -232,7 +236,11 @@ class OpenGnSysWorker(ServerWorker): """ Sends session logout notification to OpenGnsys server """ - logger.debug('Received logout for {}'.format(user)) + sess_len = 0 + for elem in self.user: + if user != elem['username']: continue + sess_len = time.time() - elem['login_ts'] + logger.debug ('Received logout for {}, session length {} seconds'.format (user, int (sess_len))) try: self.user.pop() except IndexError: @@ -288,7 +296,7 @@ class OpenGnSysWorker(ServerWorker): if get_params.get('detail', 'false') == 'true': res.update({'agent_version': VERSION, 'os_version': operations.os_version, 'sys_load': os.getloadavg()}) if res['loggedin']: - res.update({'sessions': len(self.user), 'current_user': self.user[-1]}) + res.update({'sessions': len(self.user), 'current_user': self.user[-1]['username']}) except KeyError: # Unknown operating system res = {'status': 'UNK'} diff --git a/src/opengnsys/modules/server/ogAdmClient/__init__.py b/src/opengnsys/modules/server/ogAdmClient/__init__.py index 2a2769c..134085c 100644 --- a/src/opengnsys/modules/server/ogAdmClient/__init__.py +++ b/src/opengnsys/modules/server/ogAdmClient/__init__.py @@ -422,7 +422,7 @@ class ogAdmClientWorker (ogLiveWorker): params = [] disk_info = cfg.pop (0) logger.debug (f'disk_info ({disk_info})') - for k in ['dis', 'tch']: + for k in ['dis']: params.append (f'{k}={disk_info[k]}') disk_info_str = '*'.join (params)