#992: Cherry-pick commit `af35fd9`.
ogAgent sends the session type when user logs in.remotes/github/python3
parent
64c933fbb8
commit
be263c6e2f
|
@ -108,9 +108,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:
|
||||||
|
@ -206,7 +206,8 @@ class OGASystemTray(QtWidgets.QSystemTrayIcon):
|
||||||
logger.error("Activation of {} failed: {}".format(mod.name, utils.exceptionToMessage(e)))
|
logger.error("Activation of {} failed: {}".format(mod.name, utils.exceptionToMessage(e)))
|
||||||
self.modules[:] = valid_mods # copy instead of assignment
|
self.modules[:] = valid_mods # 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
|
||||||
|
|
|
@ -318,8 +318,8 @@ class ClientIPC(threading.Thread):
|
||||||
msg = bytes([msg]) + bytes([l & 0xFF]) + bytes([l >> 8]) + data
|
msg = bytes([msg]) + bytes([l & 0xFF]) + bytes([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)
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -107,6 +107,7 @@ class OpenGnSysWorker(ServerWorker):
|
||||||
interface = None # Bound interface for OpenGnsys
|
interface = None # Bound interface for OpenGnsys
|
||||||
REST = None # REST object
|
REST = None # REST object
|
||||||
user = [] # User sessions
|
user = [] # User sessions
|
||||||
|
session_type = '' # User session type
|
||||||
random = None # Random string for secure connections
|
random = None # Random string for secure connections
|
||||||
length = 32 # Random string length
|
length = 32 # Random string length
|
||||||
exec_level = None # Execution level (permitted operations)
|
exec_level = None # Execution level (permitted operations)
|
||||||
|
@ -201,10 +202,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.user.append(user)
|
self.user.append(user)
|
||||||
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):
|
||||||
|
@ -261,7 +263,8 @@ class OpenGnSysWorker(ServerWorker):
|
||||||
st = {'linux': 'LNX', 'macos': 'OSX', 'windows': 'WIN'}
|
st = {'linux': 'LNX', 'macos': 'OSX', 'windows': 'WIN'}
|
||||||
try:
|
try:
|
||||||
# Standard status
|
# Standard status
|
||||||
res = {'status': st[operations.os_type.lower()], 'loggedin': len(self.user) > 0}
|
res = {'status': st[operations.os_type.lower()], 'loggedin': len(self.user) > 0,
|
||||||
|
'session': self.session_type}
|
||||||
# Detailed status
|
# Detailed status
|
||||||
if get_params.get('detail', 'false') == 'true':
|
if get_params.get('detail', 'false') == 'true':
|
||||||
res.update({'agent_version': VERSION, 'os_version': operations.os_version, 'sys_load': os.getloadavg()})
|
res.update({'agent_version': VERSION, 'os_version': operations.os_version, 'sys_load': os.getloadavg()})
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue