Univention Bugzilla – Attachment 7688 Details for
Bug 40210
Prevent screenshots of teacher's computer
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch against UCS@school 4.1 source package
bug40210.patch (text/plain), 5.61 KB, created by
Sönke Schwardt-Krummrich
on 2016-05-25 22:52:17 CEST
(
hide
)
Description:
Patch against UCS@school 4.1 source package
Filename:
MIME Type:
Creator:
Sönke Schwardt-Krummrich
Created:
2016-05-25 22:52:17 CEST
Size:
5.61 KB
patch
obsolete
>diff --git a/ucs-school-4.1/ucs-school-umc-computerroom/debian/ucs-school-umc-computerroom.univention-config-registry-variables b/ucs-school-4.1/ucs-school-umc-computerroom/debian/ucs-school-umc-computerroom.univention-config-registry-variables >index 4d62e40..51b9836 100644 >--- a/ucs-school-4.1/ucs-school-umc-computerroom/debian/ucs-school-umc-computerroom.univention-config-registry-variables >+++ b/ucs-school-4.1/ucs-school-umc-computerroom/debian/ucs-school-umc-computerroom.univention-config-registry-variables >@@ -9,3 +9,15 @@ Description[de]=UMC-Computerraum-Administration: auf "yes" setzen, um UltraVNC-S > Description[en]=UMC-Computerroom-Administration: set "yes" to activate UltraVNC shortcut (Default: false) > Type=str > Categories=management-umc >+ >+[ucsschool/umc/computerroom/hide_screenshots/groups] >+Description[de]=Kommaseparierte Liste mit Gruppennamen, für deren Mitglieder keine Screenshots im Computerraum-Modul angezeigt werden sollen (Standard: Domain Admins) >+Description[en]=Comma separated list of group names, for whose group members no screenshots are shown in computer room module (Default: Domain Admins) >+Type=str >+Categories=management-umc >+ >+[ucsschool/umc/computerroom/hide_screenshots/teachers] >+Description[de]=Der Wert "true" verhindert die Anzeige von Screenshots von Lehrer-Rechnern im Computerraum-Modul (Standard: false) >+Description[en]=By setting this variable to "true", screenshots of teacher's computers are not shown in computer room module (Default: false) >+Type=bool >+Categories=management-umc >diff --git a/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py b/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py >index be76005..029f5c1 100644 >--- a/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py >+++ b/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py >@@ -81,7 +81,8 @@ from notifier.nf_qt import _exit > _ = Translation('ucs-school-umc-computerroom').translate > > ROOMDIR = '/var/cache/ucs-school-umc-computerroom' >- >+FN_SCREENSHOT_DENIED = '/usr/share/ucs-school-umc-computerroom/screenshot_denied.jpg' >+FN_SCREENSHOT_NOTREADY = '/usr/share/ucs-school-umc-computerroom/screenshot_notready.jpg' > > def _getRoomFile(roomDN): > if roomDN.startswith('cn='): >@@ -545,17 +546,27 @@ class Instance(SchoolBaseModule): > """ > > tmpfile = computer.screenshot >- if tmpfile is None: >- # vnc has not (yet) received any screenshots from the computer >- # dont worry, try again later >- self.finished(request.id, None) >- return >+ if computer.hide_screenshot: >+ filename = FN_SCREENSHOT_DENIED >+ elif tmpfile is None: >+ filename = FN_SCREENSHOT_NOTREADY >+ else: >+ filename = tmpfile.name >+ > response = Response(mime_type = MIMETYPE_JPEG) > response.id = request.id > response.command = 'COMMAND' >- with open(tmpfile.name, 'rb') as fd: >- response.body = fd.read() >- os.unlink(tmpfile.name) >+ MODULE.info('screenshot(%s): hide screenshot = %r' % (computer.name, computer.hide_screenshot)) >+ try: >+ with open(filename, 'rb') as fd: >+ response.body = fd.read() >+ except (IOError, OSError) as ex: >+ MODULE.error('Unable to load screenshot file %r: %s' % (filename, ex)) >+ try: >+ if tmpfile: >+ os.unlink(tmpfile.name) >+ except (IOError, OSError) as ex: >+ MODULE.error('Unable to remove temporary screenshot file %r: %s' % (tmpfile.name, ex)) > self.finished(request.id, response) > > @check_room_access >diff --git a/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py b/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py >index b45a33c..564c437 100644 >--- a/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py >+++ b/ucs-school-4.1/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py >@@ -115,13 +115,22 @@ class UserMap( dict ): > MODULE.info( 'Unknown user "%s"' % username ) > dict.__setitem__( self, userstr, UserInfo( '', '' ) ) > else: >+ result[0].open() > userobj = UserInfo( result[ 0 ].dn, username ) >- for grp in result[ 0 ][ 'groups' ]: >- if grp.endswith( search_base.workgroups ): >- userobj.workgroups.append( udm_uldap.explodeDn( grp, True )[ 0 ] ) >- elif grp.endswith( search_base.classes ): >- userobj.school_class = udm_uldap.explodeDn( grp, True )[ 0 ] > userobj.isTeacher = search_base.isTeacher( userobj.dn ) >+ >+ blacklisted_groups = set([x.strip().lower() for x in ucr.get('ucsschool/umc/computerroom/hide_screenshots/groups', 'Domain Admins').split(',')]) >+ users_groupmemberships = set([udm_uldap.explodeDn(x, True)[0].lower() for x in result[0]['groups']]) >+ MODULE.info('UserMap: %s: hide screenshots for following groups: %s' % (username, blacklisted_groups,)) >+ MODULE.info('UserMap: %s: user is member of following groups: %s' % (username, users_groupmemberships,)) >+ userobj.hide_screenshot = bool(blacklisted_groups & users_groupmemberships) >+ >+ if ucr.is_true('ucsschool/umc/computerroom/hide_screenshots/teachers', False) and userobj.isTeacher: >+ MODULE.info('UserMap: %s: is teacher hiding screenshot' % (username,)) >+ userobj.hide_screenshot = True >+ >+ MODULE.info('UserMap: %s: hide_screenshot=%r' % (username, userobj.hide_screenshot)) >+ > dict.__setitem__( self, userstr, userobj ) > > _usermap = UserMap() >@@ -383,6 +392,14 @@ class ITALC_Computer( notifier.signals.Provider, QObject ): > return (self._computer.info.get('mac') or [''])[ 0 ] > > @property >+ def hide_screenshot(self): >+ global _usermap >+ try: >+ return _usermap[str(self._username.current)].hide_screenshot >+ except AttributeError: >+ return False >+ >+ @property > def isTeacher( self ): > global _usermap > try:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 40210
: 7688