#992: OGAgent sends the session type when user logs in.

remotes/github/master opengnsys-1.1.1d
Ramón M. Gómez 2020-07-23 14:04:12 +02:00
parent 8f3a5704d1
commit af35fd94e6
6 changed files with 29 additions and 10 deletions

View File

@ -115,9 +115,9 @@ class MessagesProcessor(QtCore.QThread):
def isAlive(self): def isAlive(self):
return self.ipc is not None return self.ipc is not None
def sendLogin(self, userName, language): def sendLogin(self, user_data):
if self.ipc: if self.ipc:
self.ipc.sendLogin(userName, language) self.ipc.sendLogin(user_data)
def sendLogout(self, userName): def sendLogout(self, userName):
if self.ipc: if self.ipc:
@ -221,7 +221,8 @@ class OGASystemTray(QtGui.QSystemTrayIcon):
self.modules[:] = validMods # copy instead of assignment self.modules[:] = validMods # copy instead of assignment
# If this is running, it's because he have logged in, inform service of this fact # If this is running, it's because he have logged in, inform service of this fact
self.ipc.sendLogin(operations.getCurrentUser(), operations.getSessionLanguage()) self.ipc.sendLogin((operations.getCurrentUser(), operations.getSessionLanguage(),
operations.get_session_type()))
def deinitialize(self): def deinitialize(self):
for mod in reversed(self.modules): # Deinitialize reversed of initialization for mod in reversed(self.modules): # Deinitialize reversed of initialization

View File

@ -317,8 +317,8 @@ class ClientIPC(threading.Thread):
msg = six.int2byte(msg) + six.int2byte(l & 0xFF) + six.int2byte(l >> 8) + data msg = six.int2byte(msg) + six.int2byte(l & 0xFF) + six.int2byte(l >> 8) + data
self.clientSocket.sendall(msg) self.clientSocket.sendall(msg)
def sendLogin(self, username, language): def sendLogin(self, user_data):
self.sendRequestMessage(REQ_LOGIN, username+','+language) self.sendRequestMessage(REQ_LOGIN, ','.join(user_data))
def sendLogout(self, username): def sendLogout(self, username):
self.sendRequestMessage(REQ_LOGOUT, username) self.sendRequestMessage(REQ_LOGOUT, username)

View File

@ -282,6 +282,14 @@ def getSessionLanguage():
return locale.getdefaultlocale()[0] return locale.getdefaultlocale()[0]
def get_session_type():
"""
Returns the user's session type (xrdp, wayland, x11, tty,...)
:return: string
"""
return 'xrdp' if 'XRDP_SESSION' in os.environ else os.environ.get('XDG_SESSION_TYPE', 'unknown').lower()
def showPopup(title, message): def showPopup(title, message):
''' '''
Displays a message box on user's session (during 1 min). Displays a message box on user's session (during 1 min).

View File

@ -81,6 +81,7 @@ class OpenGnSysWorker(ServerWorker):
interface = None # Bound interface for OpenGnsys interface = None # Bound interface for OpenGnsys
REST = None # REST object REST = None # REST object
logged_in = False # User session flag logged_in = False # User session flag
session_type = '' # User session type
locked = {} locked = {}
random = None # Random string for secure connections random = None # Random string for secure connections
length = 32 # Random string length length = 32 # Random string length
@ -162,10 +163,11 @@ class OpenGnSysWorker(ServerWorker):
""" """
Sends session login notification to OpenGnsys server Sends session login notification to OpenGnsys server
""" """
user, sep, language = data.partition(',') user, language, self.session_type = tuple(data.split(','))
logger.debug('Received login for {} with language {}'.format(user, language)) logger.debug('Received login for {0} using {2} with language {1}'.format(user, language, self.session_type))
self.logged_in = True self.logged_in = True
self.REST.sendMessage('ogagent/loggedin', {'ip': self.interface.ip, 'user': user, 'language': language, 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}) 'ostype': operations.os_type, 'osversion': operations.os_version})
def onLogout(self, user): def onLogout(self, user):
@ -213,7 +215,7 @@ class OpenGnSysWorker(ServerWorker):
:param server: :param server:
:return: JSON object {"status": "status_code", "loggedin": boolean} :return: JSON object {"status": "status_code", "loggedin": boolean}
""" """
res = {'status': '', 'loggedin': self.logged_in} res = {'status': '', 'loggedin': self.logged_in, 'session': self.session_type}
if platform.system() == 'Linux': # GNU/Linux if platform.system() == 'Linux': # GNU/Linux
# Check if it's OpenGnsys Client. # Check if it's OpenGnsys Client.
if os.path.exists('/scripts/oginit'): if os.path.exists('/scripts/oginit'):

View File

@ -254,6 +254,14 @@ def getSessionLanguage():
return locale.getdefaultlocale()[0] return locale.getdefaultlocale()[0]
def get_session_type():
"""
returns the user's session type (Local session, RDP,...)
:return: string
"""
return os.environ.get('SESSIONNAME').lower()
def showPopup(title, message): def showPopup(title, message):
''' '''
Displays a message box on user's session (during 1 min). Displays a message box on user's session (during 1 min).

View File

@ -57,13 +57,13 @@ except ImportError:
import os import os
from distutils.core import setup from distutils.core import setup
import py2exe
import sys import sys
# Reading version file: # Reading version file:
try: try:
with open('VERSION', 'r') as v: with open('VERSION', 'r') as v:
VERSION = v.read().split() VERSION = v.read().rstrip()
except IOError: except IOError:
VERSION = '1.1.0' VERSION = '1.1.0'