From d711684ac4ba435ecade5c120ead053e64a69ed4 Mon Sep 17 00:00:00 2001 From: Peter Gerwinski <peter.gerwinski@hs-bochum.de> Date: Sun, 27 Dec 2020 20:45:16 +0100 Subject: [PATCH] README.md: licenses, minimal installation instructions --- README.md | 244 +++++++++++++--- home/pult/vnc-testbild.pdf | Bin 0 -> 55498 bytes home/pult/vncX/.vnc/passwd | 2 + home/pult/vncX/.vnc/passwdfile | 2 + home/pult/vncX/.vnc/xstartup | 4 + home/pult/vncX/vnc-testbild.pdf | 1 + pult-install | 7 + www/virtual-rooms/conference.html | 104 +++++++ www/virtual-rooms/index.de.html | 266 ++++++++++++++++++ www/virtual-rooms/index.en.html | 265 +++++++++++++++++ www/virtual-rooms/index.html | 1 + ...hschule-bochum-cvh-vertikal-v2-128x205.png | Bin 0 -> 15054 bytes www/virtual-rooms/stylesheets/default.css | 38 +++ 13 files changed, 902 insertions(+), 32 deletions(-) create mode 100644 home/pult/vnc-testbild.pdf create mode 100644 home/pult/vncX/.vnc/passwd create mode 100644 home/pult/vncX/.vnc/passwdfile create mode 100755 home/pult/vncX/.vnc/xstartup create mode 120000 home/pult/vncX/vnc-testbild.pdf create mode 100644 www/virtual-rooms/conference.html create mode 100644 www/virtual-rooms/index.de.html create mode 100644 www/virtual-rooms/index.en.html create mode 120000 www/virtual-rooms/index.html create mode 100644 www/virtual-rooms/logo-hochschule-bochum-cvh-vertikal-v2-128x205.png create mode 100644 www/virtual-rooms/stylesheets/default.css diff --git a/README.md b/README.md index 4451888..78564f9 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,15 @@ - + PULT is the ULTimate Learning/Teaching Tool =========================================== Contents -------- - * What is PULT? - * Okay, more technically, what is PULT? - * How does this look like in practice? - * License - -Installation: see INSTALL.md (to be written soon) + * [ What is PULT? ](#what-is-pult) + * [ Okay, more technically, what is PULT? ](#okay-more-technically-what-is-pult) + * [ How does this look like in practice? ](#how-does-this-look-like-in-practice) + * [ Licence ](#licence) + * [ Installation ](#installation) What is PULT? ------------- @@ -37,7 +36,7 @@ What is PULT? You can run it on your own server for best-possible data protection and privacy. You can study how it works, adapt it to your needs, and publish your improvements for everyone - to benefit. Also, there are no licensing fees. + to benefit. Also, there are no licencing fees. * **PULT husbands your CPU power and network bandwidth.** @@ -61,15 +60,15 @@ Okay, more technically, what is PULT? ------------------------------------- PULT is a collection of small programs, mostly Unix shell scripts. It provides a console (in German: „Pult“:–) where the lecturer can -select which visual content is offered to the audioence via a web +select which visual content is offered to the audience via a web interface, *noVNC*. These visual contents can be a shared desktop, a camera view, an uploaded image or screenshot, or some arbitrary content provided by some other tool via a web interface, for instance a BigBlueButton presentation or the shared whiteboard of OpenMeetings. -PULT itself only handles video. For the audio part and chat part -it cooperates with Mumble. +PULT itself only handles video. For the audio part and the chat +part it cooperates with Mumble. The virtual “meeting rooms” in PULT are called *channels*. For each channel, there is one instance of noVNC, showing a virtual desktop, @@ -147,14 +146,14 @@ rather than full-screen. For camera modules this is the default. A typical application is to run a VNC shared desktop full-screen and to show a camera view of the lecturer at the edge. ->  +>  > > Figure 1: A minimalistic PULT console. > > VNC is enabled automatically. > The buttons are for switching a camera. ->  +>  > > Figure 2: A PULT console with many features enabled > @@ -178,7 +177,7 @@ How does this look like in practice? go to the web page of the channel, type in the channel's password, and see a welcome screen. ->  +>  > > The welcome screen at the Bochum University of Applied Sciences @@ -190,11 +189,11 @@ How does this look like in practice? camera. The camera view becomes visible in the lower right corner of the channel. ->  +>  > > PULT console with VNC and Camera started ->  +>  > > The noVNC screen shows the lecturer's shared desktop in > full-screen mode and the camera view in the lower right corner. @@ -205,7 +204,7 @@ How does this look like in practice? the shared desktop. After the welcoming, L presses “Camera min” to switch back to the previous screen arrangement. ->  +>  > > The camera in full-screen view @@ -215,7 +214,7 @@ How does this look like in practice? L minimises the presentation on the desktop and presents the source code. ->  +>  > > The same arrangement with the desktop showing a smaller view of > the presentation on the right and a source code example on the @@ -240,7 +239,7 @@ How does this look like in practice? S2 logs into OpenMeetings and draws the mathematical calculations for everyone to see via noVNC. ->  +>  > > A shared OpenMeetings whiteboard presented via noVNC. > The cameraa view still shows the lecturer. @@ -250,7 +249,7 @@ How does this look like in practice? S2 logs into Jitsi Meet, and the second camera view appears on the noVNC screen. ->  +>  > > A shared OpenMeetings whiteboard presented via noVNC, plus > two camera views. The upper one was sent via Jitsi Meet. @@ -270,12 +269,12 @@ How does this look like in practice? and “VNC stop”. The channel shows a welcome screen again. To end the session, everyone closes their browser windows. -License +Licence ------- PULT is Free Software (Open Source) under the -[GNU Affero General Public License (AGPL)](https://www.gnu.org/licenses/agpl-3.0.html), -version 3 or higher, +[ GNU Affero General Public License (AGPL) ](https://www.gnu.org/licenses/agpl-3.0.html), +either version 3 of the licence, or, at your option, any later version. In short this means: @@ -286,19 +285,200 @@ In short this means: To make this possible, you have, as a user of the software, the right to obtain its source code, *even if the software - runs on a server*, and you only connect to that server. + runs on a server, and you only connect to that server*. (This “even on a server” clause is what distinguishes the - GNU Affero General Public License (AGPL) from the “normal” - GNU General Public Licnese (GPL).) + GNU Affero GPL from the “normal” GNU GNU GPL.) - * You are free to distribute copies of this software, - gratis or for a fee, *provided that* you don't deny - anyone the rights we gave to you. + * You are free to redistribute copies of this software, + gratis or for a fee, *provided that you don't deny + anyone the rights we gave to you*. (This “provided that” clause is the *Copyleft* - principle, an essential feature of the GNU licenses.) + principle, an essential feature of the GNU licences.) - * You are free to improve this software and to publish your - improvements, so the whole society benefits from it. + * You are free to improve this software and to redistribute + your improvements, so everyone can benefit from it. Again, you may do this as a charity service, but you are also free to found a business providing this kind of service. + + * There is NO WARRANTY, unless you are paying someone + to provide a warranty for you. + +The GNU AGPL applies to PULT itself. Many components used by PULT +are under different licences. However they are all Free Software, +and their licence conditions are essentially subsets of those of +the GNU AGPL. + +A simplified list of the individual licences follows. +For details, please examine the individual software packages. + + * *Mumble* (server and client): 3-clause BSD licence + + * Mumble web interface *mumble-web*: ISC licence + + * Web server: *nginx*: 2-clause BSD licence, + or *Apache*: Apache licence 2.0 + + * *noVNC*: MPL 2.0 + + * *yesVNC*: GNU APGL 3+ (part of PULT) + + * *websockify*: GNU GPL 3 + + * *TigerVNC*: GNU GPL 2.0 + + * *TightVNC*: GNU GPL 2.0+ + + * *x11vnc*: GNU GPL 2.0 + + * *ssvnc*: GNU GPL 2.0 + + * *OpenSSH*: 3-clause BSD licence + + * *PuTTY*: MIT/Expat licence + + * *Janus WebRTC Gateway*: GNU GPL 3 + + * *Firefox* web browser and *geckodriver*: MPL 2.0 + + * *Chromium* web browser and *chromedriver*: 3-clause BSD licence + + * *Selenium*: Apache licence 2.0 + + * *Python*: PSF licence + + * *Node.js*: MIT/Expat licence + + * *Netcat*: 3-clause BSD licence + + * *Bash*: GNU GPL 3+ + + * *botamusique*: MIT/Expat licence + +For an overview about the licences themselves, see +[ https://www.gnu.org/licenses/license-list.html ](https://www.gnu.org/licenses/license-list.html). + +Installation +------------ + +You can find detailed installation instructions in the file +[ doc/pult-install.pdf ](doc/pult-install.pdf) (to be written). +This section gives a brief overview. + +The PULT server was desiged to run on GNU/Linux. However it should +not be difficult to make it run on other Unix-like systems. + +PULT consists of several parts to be installed separately. You can +choose which ones you want to use. Most of them make use of other +software which is well-established and probably included in your +GNU/Linux distribution for easy installation. + + * **Mumble** + + PULT itself only handles video. For a useful system you need + something which handles the audio part. We highly recommend + Mumble for its stability and quality. Mumble also provides a + chat function which has proven very useful. + + PULT comes with some utilites which are designed to cooperate + with Mumble. + + For the audience, the most efficient way to participate in Mumble + is to install a Mumble client. If you want to provide an easier, + albeit less efficient access method, you can install mumble-web, + a web interface for Mumble. + + The Mumble server (Murmur) is included in many GNU/Linux + distributions. The Mumble client (for the audience) for + vaious platforms can be downloaded from + [ https://www.mumble.com/ ](https://www.mumble.com/). + The Mumble web interface is available at + [ https://github.com/Johni0702/mumble-web ](https://github.com/Johni0702/mumble-web). + + * **VNC** + + Almost everything the audience can watch is conveyed via noVNC. + + For sharing a desktop via VNC, the most efficient way is to + install a VNC server on the lecturer's computer. If you want + to provide an easier, albeit less efficient method, you can + install yesVNC, a web interface for VNC, developed as part of + PULT. + + The VNC server and client software, including the noVNC web + interface, is included in many GNU/Linux distributions. + Lecturers who want to install a VNC server can use TightVNC, + [ https://tightvnc.com/download.php ](https://tightvnc.com/download.php). + Lecturers who want to use an SSH tunnel but cannot easily use + OpenSSH, can use PuTTY, available at + [ https://www.chiark.greenend.org.uk/~sgtatham/putty/ ](https://www.chiark.greenend.org.uk/~sgtatham/putty/). + + * **PULT Itself** + + PULT itself is a collection of small programs, mostly shell + scripts, to control everything. This includes start/stop scripts + for systemd, HTML files and CGI scripts for web interfaces, and + configuration templates for your web server (*Apache* or *nginx*). + + There is a shell script, *pult-install*, in the same directory as + this file. When you run it with root privileges, it will copy + the files which make up PULT to their directories and give them + appropriate permissions. However, this script is incomplete, + leaving important tasks such as creating user accounts and + enabling systemd services as manual tasks. + + * **CVH-Camera** + + We have developed a native camera subsystem for PULT, CVH-Camera. + It provides a simple web interface to share a camera view and + uses the Janus WebRTC gateway to distribute it to the audience. + That way, CVH-Camera provides high quality at resonably low + consumption of CPU power and network bandwidth. + + CVH-Camera is available at + [ https://gitlab.cvh-server.de/sdoering/cvh-camera ](https://gitlab.cvh-server.de/sdoering/cvh-camera). + Parts of it are included in the PULT sources and get installed + via the *pult-install* shell script. + + * **Browser-Based Video Contents** + + PULT can use Selenium, Python, and the web browsers Chromium and + Firefox for accessing web contents provided by other systems. + + In particular, PULT can extract a camera view out of an external + Jitsi Meet or BigBlueButton, as an alternative to CVH-Camera. + The browser method requires more CPU power and network bandwidth + at a lower quality, but it provides the same level of reliability + as CVH-Camera. + + The required software, Selenium, Python, Chromium, ChromeDriver, + and Firefox, is included in most GNU/Linux distributions. + One additional component, GecokDriver, can be downloaded from + [ https://github.com/mozilla/geckodriver/releases ](https://github.com/mozilla/geckodriver/releases). + + * **External Conference Systems** + + If you want to use a shared whiteboard, we recommend to + install OpenMeetings and to import its whiteboard into + PULT as a browser-based content (see above). The same + is possible for BigBlueButton. + + It is straightforward to import contents from other external + systems. Just copy and modify one of the existing modules, + for instance *bbb-camera*. + + * **Other Useful Stuff** + + We also provide *CVH-Bot*, a bot which joins the Mumble chat and + makes it easy to conduct polls. CVH-Bot is available at + [ https://gitlab.cvh-server.de/jvongehr/cvh-bot ](https://gitlab.cvh-server.de/jvongehr/cvh-bot). + + Speaking of Mumble bots, we can recommend *botamusique* for + playing music in Mumble – for your events, for fun and for + testing purposes. You can find botamusique at + [ https://github.com/azlux/botamusique ](https://github.com/azlux/botamusique). + + At the Bochum University of Applied Sciences, we provide a web + page which allows for quick access to a *virtual room*, i.e. a + combination of a Mumble channel and a VNC channel in PULT. Be + welcome to copy it and to adapt it to your room structure. diff --git a/home/pult/vnc-testbild.pdf b/home/pult/vnc-testbild.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4d4a22152ffb288b73df368192c74cfd92c2f371 GIT binary patch literal 55498 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 literal 0 HcmV?d00001 diff --git a/home/pult/vncX/.vnc/passwd b/home/pult/vncX/.vnc/passwd new file mode 100644 index 0000000..cc48b75 --- /dev/null +++ b/home/pult/vncX/.vnc/passwd @@ -0,0 +1,2 @@ +�!�<�Kp;3� +'�M� \ No newline at end of file diff --git a/home/pult/vncX/.vnc/passwdfile b/home/pult/vncX/.vnc/passwdfile new file mode 100644 index 0000000..acca0cc --- /dev/null +++ b/home/pult/vncX/.vnc/passwdfile @@ -0,0 +1,2 @@ +topsecret +viewonly diff --git a/home/pult/vncX/.vnc/xstartup b/home/pult/vncX/.vnc/xstartup new file mode 100755 index 0000000..ef06468 --- /dev/null +++ b/home/pult/vncX/.vnc/xstartup @@ -0,0 +1,4 @@ +#!/bin/dash + +xsetroot -solid white +xpdf -fullscreen "$HOME/vnc-testbild.pdf" 6 diff --git a/home/pult/vncX/vnc-testbild.pdf b/home/pult/vncX/vnc-testbild.pdf new file mode 120000 index 0000000..c5b4e47 --- /dev/null +++ b/home/pult/vncX/vnc-testbild.pdf @@ -0,0 +1 @@ +../vnc-testbild.pdf \ No newline at end of file diff --git a/pult-install b/pult-install index 3bf80e3..7c9ce5f 100755 --- a/pult-install +++ b/pult-install @@ -85,6 +85,13 @@ Please install manually: - etc/nginx/sites-available/fragment.conf in your nginx configuration - etc/janus/janus.plugin.videoroom.jcfg.fragment in your janus configuration - www/vnc as your VNC channel web page + - www/virtual-rooms as your quick access interface + - home/pult as the home directory for your "pult" user + - home/pult/vncX as the VNC home directories inside /home/pult + Note: It contains a subdirectory ".vnc". + Replace X by the channel numbers: vnc1, vnc2, ... + The file ".vnc/passwdfile" is plain text. When you change it, + use "cat passwdfile | vncpasswd -f > passwd" to regenerate a "passwd" file. - adapt cvh-camera-update-credentials to your www directory, and add a cron job to execute it periodically, for instance: 42 * * * * $sbin_directory/cvh-camera-update-credentials diff --git a/www/virtual-rooms/conference.html b/www/virtual-rooms/conference.html new file mode 100644 index 0000000..ad8729d --- /dev/null +++ b/www/virtual-rooms/conference.html @@ -0,0 +1,104 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Strict//EN"> +<!-- + Web Interface for Virtual Rooms at Campus Velbert/Heiligenhaus, + Bochum University of Applied Sciences + + Copyright 2020 Peter Gerwinski <http://www.peter.gerwinski.de> + + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +--> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf8"> + <title>Virtuelle Räume</title> + <link rel="stylesheet" href="stylesheets/default.css" type="text/css"> + </head> + <body> + <img src="logo-hochschule-bochum-cvh-vertikal-v2-128x205.png" + alt="Hochschule Bochum, Campus Velbert/Heiligenhaus" + class="logo" align="right"/> + <p align="right"><small><a href="index.en.html">[more options]<a></small></p> + <h1>Welcome to our Conference!</h1> + <noscript> + <p> + <strong>Please note:</strong> + These web interfaces only work with cookies and JavaScript. + Sorry for that. + </p> + </noscript> + <script type="text/javascript"> + + function generateUserName () + { + var userName = document.getElementById ("user_name"); + var length = 5; + var result = 'User_'; + var characters = '0123456789'; + var charactersLength = characters.length; + for (var i = 0; i < length; i++) + result += characters.charAt (Math.floor (Math.random () * charactersLength)); + userName.value = result; + } + + function enterRoom () + { + var userName = document.getElementById ("user_name"); + userName.value = userName.value.replace (/ /g, "_"); + var url = new URL (window.location.href); + var vncChannel = url.searchParams.get ("ch"); + var password = url.searchParams.get ("pw"); + var mumbleURL = "https://mumble.cvh-server.de" + + "?channelName=Conference%20Room" + + "&username=" + userName.value + + "&matrix=true"; + if (!vncChannel) + alert ("Room not selected. The link to this page appears to be broken."); + else if (!password) + alert ("Missing password. The link to this page appears to be broken."); + else if (!userName.value) + alert ("Missing username. If you want to participate anonymously with a random name, press the “Generate” button."); + else if (vncChannel > 0) + { + var halfResolution = document.getElementById ("half_resolution"); + window.open (mumbleURL, "_blank"); + window.location.href = "https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/" + + vncChannel + "/&reconnect=1&resize=scale&autoconnect=true&password=" + password; + } + else + window.location.href = mumbleURL; + return false; + } + + </script> + <p>Please enter a name that will be displayed with your contributions.</p> + <form onsubmit="return enterRoom ();"> + <p> + Username: + <input type="text" size="20" id="user_name"/> + <button type="button" id="random" onclick="generateUserName ();">Generate</button> + </p> + <p><button type="submit" id="submit">Enter Conference Room</button><p> + </form> + <p> + After pressing the “Enter Conference Room” button you will be forwarded + to our video system (VNC), where you can watch the presentation. + In addition, a second tab will open and connect you to our audio system (Mumble), + where you can listen to the speaker, speak yourself, and exchange text messages. + </p> + <p> + Contact: + <a href="mailto:peter.gerwinski@hs-bochum.de">Prof. Dr. Peter Gerwinski</a> + </p> + </body> +</html> diff --git a/www/virtual-rooms/index.de.html b/www/virtual-rooms/index.de.html new file mode 100644 index 0000000..89388a0 --- /dev/null +++ b/www/virtual-rooms/index.de.html @@ -0,0 +1,266 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Strict//EN"> +<!-- + Web Interface for Virtual Rooms at Campus Velbert/Heiligenhaus, + Bochum University of Applied Sciences + + Copyright 2020 Peter Gerwinski <http://www.peter.gerwinski.de> + + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +--> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf8"> + <title>Virtuelle Räume</title> + <link rel="stylesheet" href="stylesheets/default.css" type="text/css"> + </head> + <body> + <img src="logo-hochschule-bochum-cvh-vertikal-v2-128x205.png" + alt="Hochschule Bochum, Campus Velbert/Heiligenhaus" + class="logo" align="right"/> + <p align="right"><small><a href="index.en.html">[English]<a></small></p> + <h1>Virtuelle Räume</h1> + <noscript> + <p> + <strong>Hinweis:</strong> + Diese Web-Interfaces funktionieren leider nur mit Cookies und JavaScript. + </p> + </noscript> + <script type="text/javascript"> + + function getVncChannel () + { + var room = document.getElementById ("room"); + var vncChannel = 0; + switch (room.value) + { + case "--- bitte auswählen ---": + vncChannel = -1; + break; + case "Hörsaal%201": + case "Seminarraum%201": + vncChannel = 1; + break; + case "Seminarraum%202": + case "Conference%20Room": + vncChannel = 6; + break; + case "Hörsaal%203": + case "Seminarraum%203": + vncChannel = 3; + break; + case "Hörsaal%204": + case "Seminarraum%204": + vncChannel = 4; + break; + } + return vncChannel; + } + + function roomChanged () + { + var vncChannel = getVncChannel (); + if (vncChannel < 0) + { + document.getElementById ("vnc_only").disabled = true; + document.getElementById ("vnc_and_mumble").disabled = true; + document.getElementById ("vnc_and_mumble").checked = true; + document.getElementById ("mumble_only").disabled = true; + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("user_name").disabled = true; + document.getElementById ("user_name_label").style.color = "gray"; + document.getElementById ("submit").disabled = true; + } + else if (vncChannel > 0) + { + document.getElementById ("vnc_only").disabled = false; + document.getElementById ("vnc_and_mumble").disabled = false; + document.getElementById ("vnc_and_mumble").checked = true; + document.getElementById ("mumble_only").disabled = false; + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + else + { + document.getElementById ("vnc_only").disabled = true; + document.getElementById ("vnc_and_mumble").disabled = true; + document.getElementById ("mumble_only").disabled = false; + document.getElementById ("mumble_only").checked = true; + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("submit").disabled = false; + } + } + + function vncOrMumbleChanged () + { + var vncOnly = document.getElementById ("vnc_only"); + var mumbleOnly = document.getElementById ("mumble_only"); + if (vncOnly.checked) + { + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = true; + document.getElementById ("user_name_label").style.color = "gray"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + else if (mumbleOnly.checked) + { + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("submit").disabled = false; + } + else + { + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + } + + function enterRoom () + { + var room = document.getElementById ("room"); + var vncChannel = getVncChannel (); + var userName = document.getElementById ("user_name"); + var mumbleURL; + if (document.getElementById ("vnc_only").checked) + mumbleURL = ""; + else + mumbleURL = "https://mumble.cvh-server.de" + + "?channelName=" + room.value + + "&username=" + userName.value + + "&matrix=true"; + if (vncChannel < 0) + alert ("Bitte Raum auswählen."); + else if (vncChannel == 6) + { + var room = "100" + vncChannel; + var halfResolution = document.getElementById ("half_resolution"); + var prescale = ""; + if (halfResolution.checked) + { + vncChannel += 10; + prescale = "&video_prescale=1/2" + } + if (mumbleURL.length > 0) + window.open (mumbleURL, "_blank"); + window.location.href = "https://streaming.cvh-server.de/vnc.html?host=streaming.cvh-server.de&port=443&path=websock/" + + vncChannel + "/&reconnect=1&resize=scale&autoconnect=true&password=" + password.value + + "&room=" + room + prescale; + } + else if (vncChannel > 0) + { + var halfResolution = document.getElementById ("half_resolution"); + if (halfResolution.checked) + vncChannel += 6; + if (mumbleURL.length > 0) + window.open (mumbleURL, "_blank"); + window.location.href = "https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/" + + vncChannel + "/&reconnect=1&resize=scale&autoconnect=true&password=" + password.value; + } + else + window.location.href = mumbleURL; + document.getElementById ("clear_room").selected = true; + return false; + } + + </script> + <form onsubmit="return enterRoom ();"> + Raum: + <select name="room" id="room" onchange="roomChanged ();"> + <option selected="selected" value="none" id="clear_room">--- bitte auswählen ---</option> + <option value="Hörsaal%201">Hörsaal 1</option> + <option value="Hörsaal%202">Hörsaal 2</option> + <option value="Hörsaal%203">Hörsaal 3</option> + <option value="Hörsaal%204">Hörsaal 4</option> + <option value="Seminarraum%201">Seminarraum 1</option> + <option value="Seminarraum%202">Seminarraum 2</option> + <option value="Seminarraum%203">Seminarraum 3</option> + <option value="Seminarraum%204">Seminarraum 4</option> + <option value="Seminarraum%205">Seminarraum 5</option> + <option value="Seminarraum%206">Seminarraum 6</option> + <option value="Seminarraum%207">Seminarraum 7</option> + <option value="Besprechungsraum%201">Besprechungsraum 1</option> + <option value="Besprechungsraum%202">Besprechungsraum 2</option> + <option value="Raum%201">Raum 1</option> + <option value="Raum%202">Raum 2</option> + <option value="Raum%203">Raum 3</option> + <option value="Raum%204">Raum 4</option> + <option value="Raum%205">Raum 5</option> + <option value="Raum%206">Raum 6</option> + <option value="Conference%20Room">Conference Room</option> + </select> + <br/> + <table border="0" cellpadding="0" cellspacing="30"> + <tr valign="top"> + <td> + <input type="radio" name="vnc_or_mumble" id="vnc_only" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="vnc_only">nur Bild (Ton separat über Mumble)</label><br/> + <input type="radio" name="vnc_or_mumble" id="vnc_and_mumble" checked="checked" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="vnc_and_mumble">Bild und Ton (2 Tabs)</label><br/> + <input type="radio" name="vnc_or_mumble" id="mumble_only" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="mumble_only">nur Ton (Mumble-Web-Client)</label> + </td> + <td> + <input type="radio" name="resolution" id="full_resolution" checked="checked" disabled="true"/> + <label for="full_resolution">volle Auflösung</label><br/> + <input type="radio" name="resolution" id="half_resolution" disabled="true"/> + <label for="half_resolution">halbe Auflösung</label><br/> + </td> + </tr> + </table> + <table border="0" cellpadding="0" cellspacing="5"> + <tr> + <td id="password_label" style="color: gray;">Passwort für VNC:</td> + <td><input type="password" size="25" id="password" disabled="true"/></td> + </tr> + <tr valign="top"> + <td id="user_name_label" style="color: gray;">Benutzername für Mumble: </td> + <td> + <input type="text" size="25" id="user_name" disabled="true"/><br/> + <font size="-3">(z. B. pgerwinski für „Peter Gerwinski“)</font> + </td> + </tr> + </table> + <br/> + <button type="submit" id="submit" disabled="true">Raum betreten</button> + </form> + <p> + Ansprechpartner: + <a href="mailto:peter.gerwinski@hs-bochum.de">Prof. Dr. Peter Gerwinski</a> + </p> + </body> +</html> diff --git a/www/virtual-rooms/index.en.html b/www/virtual-rooms/index.en.html new file mode 100644 index 0000000..84a1afe --- /dev/null +++ b/www/virtual-rooms/index.en.html @@ -0,0 +1,265 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Strict//EN"> +<!-- + Web Interface for Virtual Rooms at Campus Velbert/Heiligenhaus, + Bochum University of Applied Sciences + + Copyright 2020 Peter Gerwinski <http://www.peter.gerwinski.de> + + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +--> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf8"> + <title>Virtal Rooms</title> + <link rel="stylesheet" href="stylesheets/default.css" type="text/css"> + </head> + <body> + <img src="logo-hochschule-bochum-cvh-vertikal-v2-128x205.png" + alt="Hochschule Bochum, Campus Velbert/Heiligenhaus" + class="logo" align="right"/> + <p align="right"><small><a href="index.de.html">[Deutsch]<a></small></p> + <h1>Virtual Rooms</h1> + <noscript> + <p> + <strong>Please note:</strong> + These web interfaces only work with cookies and JavaScript. + Sorry for that. + </p> + </noscript> + <script type="text/javascript"> + + function getVncChannel () + { + var room = document.getElementById ("room"); + var vncChannel = 0; + switch (room.value) + { + case "--- please select ---": + vncChannel = -1; + break; + case "Hörsaal%201": + case "Seminarraum%201": + vncChannel = 1; + break; + case "Seminarraum%202": + case "Conference%20Room": + vncChannel = 6; + break; + case "Hörsaal%203": + case "Seminarraum%203": + vncChannel = 3; + break; + case "Hörsaal%204": + case "Seminarraum%204": + vncChannel = 4; + break; + } + return vncChannel; + } + + function roomChanged () + { + var vncChannel = getVncChannel (); + if (vncChannel < 0) + { + document.getElementById ("vnc_only").disabled = true; + document.getElementById ("vnc_and_mumble").disabled = true; + document.getElementById ("vnc_and_mumble").checked = true; + document.getElementById ("mumble_only").disabled = true; + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("user_name").disabled = true; + document.getElementById ("user_name_label").style.color = "gray"; + document.getElementById ("submit").disabled = true; + } + else if (vncChannel > 0) + { + document.getElementById ("vnc_only").disabled = false; + document.getElementById ("vnc_and_mumble").disabled = false; + document.getElementById ("vnc_and_mumble").checked = true; + document.getElementById ("mumble_only").disabled = false; + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + else + { + document.getElementById ("vnc_only").disabled = true; + document.getElementById ("vnc_and_mumble").disabled = true; + document.getElementById ("mumble_only").disabled = false; + document.getElementById ("mumble_only").checked = true; + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("submit").disabled = false; + } + } + + function vncOrMumbleChanged () + { + var vncOnly = document.getElementById ("vnc_only"); + var mumbleOnly = document.getElementById ("mumble_only"); + if (vncOnly.checked) + { + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = true; + document.getElementById ("user_name_label").style.color = "gray"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + else if (mumbleOnly.checked) + { + document.getElementById ("full_resolution").disabled = true; + document.getElementById ("half_resolution").disabled = true; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = true; + document.getElementById ("password_label").style.color = "gray"; + document.getElementById ("submit").disabled = false; + } + else + { + document.getElementById ("full_resolution").disabled = false; + document.getElementById ("half_resolution").disabled = false; + document.getElementById ("user_name").disabled = false; + document.getElementById ("user_name_label").style.color = "black"; + document.getElementById ("password").disabled = false; + document.getElementById ("password_label").style.color = "black"; + document.getElementById ("submit").disabled = false; + } + } + + function enterRoom () + { + var room = document.getElementById ("room"); + var vncChannel = getVncChannel (); + var userName = document.getElementById ("user_name"); + var mumbleURL; + if (document.getElementById ("vnc_only").checked) + mumbleURL = ""; + else + mumbleURL = "https://mumble.cvh-server.de" + + "?channelName=" + room.value + + "&username=" + userName.value + + "&matrix=true"; + if (vncChannel < 0) + alert ("Please select a room."); + else if (vncChannel == 6) + { + var room = "100" + vncChannel; + var halfResolution = document.getElementById ("half_resolution"); + var prescale = ""; + if (halfResolution.checked) + { + vncChannel += 10; + prescale = "&video_prescale=1/2" + } + if (mumbleURL.length > 0) + window.open (mumbleURL, "_blank"); + window.location.href = "https://streaming.cvh-server.de/vnc.html?host=streaming.cvh-server.de&port=443&path=websock/" + + vncChannel + "/&reconnect=1&resize=scale&autoconnect=true&password=" + password.value + + "&room=" + room + prescale; + } + else if (vncChannel > 0) + { + var halfResolution = document.getElementById ("half_resolution"); + if (halfResolution.checked) + vncChannel += 6; + if (mumbleURL.length > 0) + window.open (mumbleURL, "_blank"); + window.location.href = "https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/" + + vncChannel + "/&reconnect=1&resize=scale&autoconnect=true&password=" + password.value; + } + else + window.location.href = mumbleURL; + document.getElementById ("clear_room").selected = true; + return false; + } + + </script> + <form onsubmit="return enterRoom ();"> + Room: + <select name="room" id="room" onchange="roomChanged ();"> + <option selected="selected" value="none" id="clear_room">--- please select ---</option> + <option value="Conference%20Room">Conference Room</option> + <option value="Hörsaal%201">Hörsaal 1</option> + <option value="Hörsaal%202">Hörsaal 2</option> + <option value="Seminarraum%201">Seminarraum 1</option> + <option value="Seminarraum%202">Seminarraum 2</option> + <option value="Seminarraum%203">Seminarraum 3</option> + <option value="Seminarraum%204">Seminarraum 4</option> + <option value="Seminarraum%205">Seminarraum 5</option> + <option value="Seminarraum%206">Seminarraum 6</option> + <option value="Seminarraum%207">Seminarraum 7</option> + <option value="Besprechungsraum%201">Besprechungsraum 1</option> + <option value="Besprechungsraum%202">Besprechungsraum 2</option> + <option value="Raum%201">Raum 1</option> + <option value="Raum%202">Raum 2</option> + <option value="Raum%203">Raum 3</option> + <option value="Raum%204">Raum 4</option> + <option value="Raum%205">Raum 5</option> + <option value="Raum%206">Raum 6</option> + </select> + <br/> + <table border="0" cellpadding="0" cellspacing="30"> + <tr valign="top"> + <td> + <input type="radio" name="vnc_or_mumble" id="vnc_only" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="vnc_only">video only (audio via Mumble)</label><br/> + <input type="radio" name="vnc_or_mumble" id="vnc_and_mumble" checked="checked" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="vnc_and_mumble">video and audio (2 tabs)</label><br/> + <input type="radio" name="vnc_or_mumble" id="mumble_only" disabled="true" onchange="vncOrMumbleChanged ();"/> + <label for="mumble_only">audio only (Mumble web client)</label> + </td> + <td> + <input type="radio" name="resolution" id="full_resolution" checked="checked" disabled="true"/> + <label for="full_resolution">full resolution</label><br/> + <input type="radio" name="resolution" id="half_resolution" disabled="true"/> + <label for="half_resolution">half resolution</label><br/> + </td> + </tr> + </table> + <table border="0" cellpadding="0" cellspacing="5"> + <tr> + <td id="password_label" style="color: gray;">Password for VNC:</td> + <td><input type="password" size="25" id="password" disabled="true"/></td> + </tr> + <tr valign="top"> + <td id="user_name_label" style="color: gray;">Username for Mumble: </td> + <td> + <input type="text" size="25" id="user_name" disabled="true"/><br/> + <font size="-3">(e. g. pgerwinski for “Peter Gerwinski”)</font> + </td> + </tr> + </table> + <br/> + <button type="submit" id="submit" disabled="true">Enter Room</button> + </form> + <p> + Contact: + <a href="mailto:peter.gerwinski@hs-bochum.de">Prof. Dr. Peter Gerwinski</a> + </p> + </body> +</html> diff --git a/www/virtual-rooms/index.html b/www/virtual-rooms/index.html new file mode 120000 index 0000000..69d7d96 --- /dev/null +++ b/www/virtual-rooms/index.html @@ -0,0 +1 @@ +index.de.html \ No newline at end of file diff --git a/www/virtual-rooms/logo-hochschule-bochum-cvh-vertikal-v2-128x205.png b/www/virtual-rooms/logo-hochschule-bochum-cvh-vertikal-v2-128x205.png new file mode 100644 index 0000000000000000000000000000000000000000..79011af023680fe0f231aa7f6233615aa14fbf4b GIT binary patch literal 15054 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 GgeCxuAv&1= literal 0 HcmV?d00001 diff --git a/www/virtual-rooms/stylesheets/default.css b/www/virtual-rooms/stylesheets/default.css new file mode 100644 index 0000000..73d1e40 --- /dev/null +++ b/www/virtual-rooms/stylesheets/default.css @@ -0,0 +1,38 @@ +/* + Web Interface for Virtual Rooms at Campus Velbert/Heiligenhaus, + Bochum University of Applied Sciences + + Copyright 2020 Peter Gerwinski <http://www.peter.gerwinski.de> + + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +body +{ + font-family: sans-serif; + max-width: 50em; +} +img.logo +{ + margin-left: 2em; + margin-bottom: 2em; +} +input, select, button +{ + font-size: 90%; +} +input:disabled+label +{ + color: #c0c0c0; +} -- GitLab