Bug 20525 - xrdp RDP Proxy Integration mit DVS Sessionbroker
xrdp RDP Proxy Integration mit DVS Sessionbroker
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: OpenDVDI
UCS 2.4
Other Linux
: P5 normal (vote)
: OpenDVDI MS2
Assigned To: Arvid Requate
Philipp Hahn
:
Depends on: 19953
Blocks: 20526
  Show dependency treegraph
 
Reported: 2010-10-27 13:16 CEST by Arvid Requate
Modified: 2023-03-25 06:40 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
xrdp patch for sessionbroker integration (2.30 KB, patch)
2010-11-05 15:56 CET, rsagner
Details | Diff
Angepasster Patch: umask und stringlength (2.23 KB, patch)
2010-11-08 11:17 CET, Arvid Requate
Details | Diff
Der Erstmal endgültige Patch (2.70 KB, patch)
2010-11-10 09:36 CET, rsagner
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Requate univentionstaff 2010-10-27 13:16:12 CEST
Die Idee ist, dass sich ein Benutzer von einem Windows-Client aus per RDP-Client mit dem xrdp-Host verbindet und dieser nach Authentifikation der übermittelten Benutzercredentials einen Sessionbroker-Client startet, um bei dem DVS Sessionbroker-Server eine neue Session zu registrieren und dann mit der vom Sessionbroker-Server übermittelten IP-Adresse eine RDP-Verbindung zur Desktop-Instanz des Benutzers aufzubauen. Ggf. kann hier der univention-sessionbroker-client aus dem univention-thin-client-dvs Paket verwendet werden.

+++ This bug was initially created as a clone of Bug #19953 +++

> Der direkte Zugriff über Micorsofts Remote Desktop Protocol (RDP) ist möglich. 
> Die mit dem Client über virtuelle Kanäle verbundenen Infrastrukturen sind als 
> RDP-Proxy realisiert und Drucker, Sound und USB werden unterstützt und 
> angesprochen.
Comment 1 rsagner univentionstaff 2010-11-04 17:26:24 CET
Das dynamische IP bestimmen für die zugewiesene  DVS Instanz funktioniert.
Dass Prinzip ist folgendes: xrdp startet über eine pipe für eine Session eine modifizierte  Version von unvention-dvs-sessionbroker client.
Diesem Programm werden der Benutzername und eine Passwortdatei über geben.
univention-dvs-sessionbroker-xrdp liefert eine seine pid und die ip der Desktopinstanz zurück  und xrdp kann dann die Verbindung zu dem richtigen host aufnehmen.
Wird die Session beendet, schickt xrdp ein SIGUSR1 an univention-dvs-sessionbroker-xrdp, was sich daraufhin beendet und die Session im sessionbroker beendet.

Was noch sehr wichtig ist nach MS2.
1. SIGCHLD richtig behandeln  wenn  unnivention-dvs-sessionbroker-xrdp sich beendet.
2. Robustheit überarbeiten, wenn univention-dvs-sessionbroker-xrpd, failed werden sicherlich  irgendwo null pointer referenziert, das kommt in C programmen  immer sehr  schlecht -> SIGSEV
Comment 2 rsagner univentionstaff 2010-11-04 17:30:16 CET
Noch keine Patches erstellt, wir prüfen erst mal einen xrdp fork, welcher angeblich sound und  usb  unterstützt.
Die Änderungen sind aber wohl die gleichen.
Comment 3 rsagner univentionstaff 2010-11-05 15:56:53 CET
Created attachment 2804 [details]
xrdp patch for sessionbroker integration
Comment 4 Arvid Requate univentionstaff 2010-11-08 11:17:53 CET
Created attachment 2807 [details]
Angepasster Patch: umask und stringlength
Comment 5 rsagner univentionstaff 2010-11-10 09:36:30 CET
Created attachment 2817 [details]
Der Erstmal endgültige Patch
Comment 6 rsagner univentionstaff 2010-11-10 09:37:24 CET
Das Paket jetzt ist im Scope Opendvdi verfügbar.
Comment 7 Arvid Requate univentionstaff 2010-11-19 09:51:51 CET
Funktioniert soweit gut, der Patch und der client müssten aber noch ein bisschen angepasst werden:

* univention-dvs-sessionroker-client bekommt vom Server unter anderem den univentionDVSWindowsDomain übergeben, der Pro Benutzer ein anderer sein kann. Das muss in mod->domain übernommen werden.

* Es wäre gut, wenn univention-dvs-sessionroker-client im --xrdp Mode die Werte in einer klareren Form (z.B. "Key: Value\n") ausgibt.
Comment 8 Arvid Requate univentionstaff 2010-11-19 10:57:24 CET
Es wäre meiner Meinung nach gut, wenn man den sessionbroker-client-Call nur dann macht, wenn in der xrdp.ini z.B.
 ip=skript://usr/sbin/univention-dvs-sessionbroker-xrdp

steht. Damit müsste das Skript auch nicht hardgecoded im Patch stehen und man hätte eine deutlich höhere Chance den Patch Upstream zu bekommen.
In den "lib=libxup" und "lib=libvnc"-Modi wird z.B. "ip=-1" dafür verwendet, um anzuzeigen, dass ein lokaler connect erfolgen soll.
Comment 9 Arvid Requate univentionstaff 2010-11-19 11:18:51 CET
Der Patch sollte dann einfach nicht die Option --xrdp mitliefern. Statt dessen habe ich in univention-dvs-xrdp-config (Bug 19953, Comment 14) jetzt

 ip=skript:/usr/sbin/univention-dvs-sessionbroker-client --xrdp

eingetragen.
Comment 10 Arvid Requate univentionstaff 2010-11-22 12:14:14 CET
Comment 7 und Comment 9 sind jetzt umgesetzt. Der Patch wurde nochmal stärker überarbeitet, um die Kommunikation mit dem SB-Client robuster zu machen und ihn ein bisschen "upstreambarer" zu gestalten. Das Paket xrdp ist jetzt mit dem Patch neu im Release-Scope ucs_2.4-0-opendvdi gebaut.

Der univention-dvs-sessionbroker-client ist entsprechend um die Ausgabe von univentionDVSWindowsDomain erweitert und macht jetzt außerdem kein sleep(3) mehr im connect_rdp (es ist bisher unklar wofür der mal als workaround eingeführt wurde). Das Paket univention-dvs-sessionbroker wurde entsprechend auch neu gebaut.
Comment 11 Philipp Hahn univentionstaff 2010-12-14 17:58:55 CET
Der RDP-Proxy funktioniert soweit, allerdings bekomme ich bei absichtlich falsch angegebener Windows-Domain nur einen schwarzen Bildschirm ohne jeglichen weitere Rückmeldung:
  rdesktop -u phahn -p XXXXXXXX -d OPENDVDI2 xen2.knut.univention.de

Getestet wurde nur ohne Drucker- und Datei-Freigaben.
Comment 12 Arvid Requate univentionstaff 2010-12-14 19:19:08 CET
Ok, das scheint aber ein xrdp-Problem zu sein, das hatte man auch schon ohne die sessionbroker-Integration. Für den MS2 erstmal nicht relevant, die Startseite des Webclients hat die Windows-Domäne des Servers voreingetragen.
Comment 13 Philipp Hahn univentionstaff 2010-12-15 08:16:51 CET
Bis auf Comment #12 funktioniert das dann erstmal so für MS2, von daher VERIFIED.