iTALC download
Handbuch
ITALC in Wikipedia
Features:
Sicherheits-Hinweis: Bei Variante 1, 2 und 3 ist der private-Key für einen „fähigen“ Schüler zugänglich!
siehe –> iTALC unter Linux
iTALC wird von der Homepage heruntergeladen. Die Installation wird, wie im englischen Wiki beschrieben, durchgeführt.
Die Zugriffsberechtigungen werden durch ein private/public-Keypaar geregelt, das bei der Erstinstallation erzeugt werden muss.
Die PCs und ihre Anordnung in den einzelnen Räumen ist in der Konfigurationsdatei globalconfig.xml
enthalten. Diese Datei wird beim ersten Aufruf durch das Master-Modul erstellt. Sie befindet sich dann im Profilverzeichnis des Benutzers unter ..\Anwendungsdaten\iTALC\
. Die Datei kann auch am Server durch ein Script aus der Workstations-Datei der paedML einfach erstellt werden –> php-Script
Wenn man nur ein Image pflegen möchte, so müssen beide Module (Master und Client) installiert und ein neues Images erzeugt werden.
Dabei darf aber der „Private-Key“ von C:\Programme\iTALC\keys\private\teacher\key
nicht für einen Schüler verfügbar sein.
Die Aufnahme des Programms ins Image ist jedoch entbehrlich, wenn man mit dem Tool INSTALLRITE einmalig von einer Lehrer- und Clientinstallation je ein ausführbares Installkit erstellt. Durch die Ausführung dieses Kits wird die erforderliche lokale Programm-Installation beim Start des Lehrerrechners bzw. Schülerrechner im Hintergrund vorgenommen. Das erfordert nur eine zusätzlichen Befehlzeile in der /home/samba/netlogon/common.bat pro Raum und nur am Lehrer-PC ist dann das Lehrer-Programm zugänglich.
Will man kein neues Image machen, ist die Nutzung von zwei verschiedenen INSTALLRITE-iTALC-Installationskits (je eines für die Schülermodulinstallation und die Lehrermodulinstallation) zu empfehlen.
Vorgehensweise:
Die xml-Konfigurationsdateien werden am besten nur vom pgmadmin einmalig am Lehrerrechner für jeden Raum erstellt (später auch gepflegt!) und dann in ein Verzeichnis auf den Server kopiert. – Beim Start eines PC werden nun über die Abfrage einer Variablen im logon-Script die für den aktuellen Raum passenden Konfigurationsdateien vom Server auf den Lehrer-PC in das ITALC-Verzeichnis kopiert. Dazu setzt man die Umgebungsvariable „Raum“ im Logon z.B. mit set raum=%computername:~0,6% , wobei der Variablen %raum% die ersten 6 Zeichen aus %computername% zugewiesen werden.
Auszug aus /home/samba/netlogon/common.bat: Vorbereitung der ITALC-Sitzung in einem bestimmten Raum
RRM REM ...folgende ITALC-Zeilen sollen nur für Raum r01 gelten set room=%computername:~0,3%# # ...weist der Variablen %room% die ersten 3 Zeichen aus der Variablen computername = r01-pc1 zu. if not "%ROOM%"=="r01" goto r01ende REM ITALC-Installation REM REM Die folgende Zeile gilt nur bei Flashinstallation von ITALC mit INSTALLRITE-Kits... REM REM ...am Lehrer-PC(lehrerkit.exe)bzw. an übrige Raum-PCs(schuelerkit.exe) start /W if "%COMPUTERNAME%"=="r01-17" (P:\vorlagen\italc\lehrerkit.exe) else schuelerkit.exe REM REM Falls ITALC schon mal gestartet war am Lehrer-PC während dieser Computersitzung if exist "C:\Programme\iTALC\keys\private\teacher\key" goto italccr1ende REM REM Lehrer-Key wird auf den Lehrerrechner kopiert if "%COMPUTERNAME%"=="r01-17" xcopy "P:\vorlagen\italc\key" "C:\Programme\iTALC\keys\private\teacher" /I /S /Y REM REM Raumspezifische Konfigurationsdateien (globalconfig.xml und personalconfig.xml) werden auf den Lehrerrechner kopiert if "%COMPUTERNAME%"=="r01-17" xcopy "P:\vorlagen\italc\cr\*.xml" "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\iTALC" /Y :italccr1ende :r01ende
* Das iTALC-Schüler-/Client-Programm wird standardmaessig auf allen Clients beim Logon mit einem INSTALLRITE-Kit installiert und gestartet. - Alternativ kann diese Installation bereits im Image vorhanden sein und auf allen Rechnern grundsätzlich als Dienst laufen.
* Nur wenn sich an irgendeinem PC des Raumes ein Lehrer (Mitglied der Linuxgruppe „teachers“) oder der pgmadmin anmeldet, wird beim Logon ein Start-Icon fuer das iTALC-Lehrermodul auf den Desktop kopiert (s.u. /home/samba/netlogon/common.bat) - Mit diesem ICON startet der Lehrer bei Bedarf eine Batchdatei, die wiederum das iTALC-Lehrermodul an diesem PC mit einem INSTALLRITE-Kit installiert, dann die iTALC-Raumkonfigurationsdateien in diese nun lokal vorhandene iTALC-Lehrermodul-Installation kopiert und zum Schluss das iTALC-Lehrermodul an diesem PC startet.
* Damit nicht jeder Lehrer die Raumkonfigurationsdateien nach seinen persönlichen Vorstellungen dauerhaft ändert, kann, falls so gewünscht, nur der User pgmadmin im Rahmen des gestarteten iTALC-Lehrermoduls raumspezifische Daten vorgeben bzw. ändern. Nur er kann die während der Sitzung geänderten iTALC-Raumkonfigurationsdateien am Sitzungsende als einziger dauerhaft auf dem Server abspeichern bzw. dauerhaft ändern.
Dafür nötige Änderungen bzw. der neue ITALC-Abschnitt in der /home/samba/netlogon/common.bat
REM REM -- Ab hier fuer alle Clients -- REM -- iTALC-Client per INSTALLRITE-Kit auf allen Clients installieren und starten -- start /w K:\pgm-susi\pgm\Italc\itclient.exe hide.exe C:\Programme\iTALC\ica.exe REM REM -- Eingrenzung auf Lehrer; ifmember.exe stammt aus MS-Win2000-XP-Resource-Kit, Freeware -- ifmember.exe teachers if %errorlevel%==1 ( REM -- ACHTUNG: Die erste Klammer _muss_ in der if - Zeile stehen! -- REM -- Der Link zu it-master.bat wird auf den Lehrer-Desktop kopiert -- REM -- aus /home/samba/netlogon/ oder aus dem italc-Programmverzeichnis. -- REM -- Damit kann bei Bedarf dem iTALC-Lehrermodul installiert u. gestartet werden. -- xcopy K:\pgm-susi\pgm\Italc\iTALC-Lehrer.lnk "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\" /I /Y ) REM REM -- ab hier nur für pgmadmin, weil er nicht Mitglied von "teachers" ist -- if "%USERNAME%"=="pgmadmin" xcopy K:\pgm-susi\pgm\Italc\iTALC-Lehrer.lnk "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\" /I /Y
Die Datei it-master.bat , die im /home/samba/netlogon oder im italc-Programmverzeichnis liegt, installiert das Lehrermodul:
@echo off REM 1. Raumname wird als Umgebungsvariable aus der Variablen Computername extrahiert REM und temporär für diesen Batchlauf gesetzt for /f "delims=- tokens=1" %%i in ("%COMPUTERNAME%") do set ROOM=%%i REM 2. Eventuell noch laufender iTALC-Client-Prozess (ica.exe) wird gestoppt taskkill.exe /F /IM ica.exe >nul REM 3. Installation des iTALC-Lehrermoduls per ausführbarem INSTALLRITE-Kit start /w K:\pgm-susi\pgm\Italc\itmaster.exe del "C:\Dokumente und Einstellungen\pgmadmin\Desktop\iTALC.lnk" >nul REM 4. Kopieren der raumspezifischen iTALC-Konfiguration in die gerade erfolgte REM lokale iTALC-Lehrermodul-Installation xcopy K:\pgm-susi\pgm\Italc\ital_%room%\conf_%room%\*.* "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\iTALC\*.*" /I /Y >nul REM 5. Start des iTALC-Client und -Lehrermoduls start /w hide.exe C:\Programme\iTALC\ica.exe start /W C:\Programme\iTALC\italc.exe REM 6. iTALC-Lehrermodul wurde beendet und, falls pgmadmin, werden die Raum-Konfigurationsdateien auf den REM Server gesichert. Von Lehrern veraenderte Raum-Einstellungen werden verworfen. if not "%USERNAME%"=="pgmadmin" goto end xcopy "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\iTALC\*.*" K:\pgm-susi\pgm\iTALC\ital_%room%\conf_%room%\*.* /Y >nul :end
Diskussion dazu: http://mailman.schule-bw.de/pipermail/linuxmuster/2009-October/026500.html
! Achtung: Unbedingt sehr genau auf Groß- u. Kleinschreibung achten!
@echo off :winnt rem if NOT "%OS%"=="Windows_NT" goto winnt_ende rem for /f "delims=- tokens=1" %%i in ("%COMPUTERNAME%") do set ROOM=%%i if "%ROOM%"=="" set ROOM=Default if exist K:\Patches\%ROOM%.reg regedit /s K:\Patches\%ROOM%.reg if exist K:\Patches\%COMPUTERNAME%.reg regedit /s K:\Patches\%COMPUTERNAME%.reg REM if exist K:\Patches\%USERNAME%.reg regedit /s K:\Patches\%USERNAME%.reg rem :winnt_ende set room=%COMPUTERNAME:~0,4% set SCANDRIVE=I: \\%SERVER%\netlogon\ifmember.exe teachers if not %errorlevel%==1 (goto students) if %errorlevel%==1 ( echo Trenne Laufwerk %SCANDRIVE% net use %SCANDRIVE% /DELETE /YES > NUL echo Verbinde %SCANDRIVE% mit \\%SERVER%\iTALC net use %SCANDRIVE% \\%SERVER%\iTALC /YES /persistent:no > NUL goto r01ende ) :students REM Studens set SCANDRIVE=J: REM \\%SERVER%\netlogon\ifmember.exe students REM if %errorlevel%==1 ( echo Trenne Laufwerk %SCANDRIVE% net use %SCANDRIVE% /DELETE /YES > NUL echo Verbinde %SCANDRIVE% mit \\%SERVER%\key net use %SCANDRIVE% \\%SERVER%\key /YES /persistent:no > NUL goto r02ende ) :r01ende xcopy "I:\%room%" "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\iTALC" /I /S /Y xcopy "I:\vorlagen\iTALCp\*.exe" "C:\Programme\iTALC" /I /S /Y xcopy "I:\vorlagen\iTALCl\*.lnk" "C:\Dokumente und Einstellungen\%USERNAME%\Desktop" /I /S /Y xcopy "I:\vorlagen\keys\*.*" "C:\Programme\iTALC\keys" /I /S /Y net use %SCANDRIVE% /DELETE /YES > NUL goto r03ende :r02ende rd /s /Q "C:\Programme\iTALC\keys" del "C:\Programme\italc\italc.exe" xcopy "J:\public\*.*" "C:\Programme\iTALC\keys\public" /I /S /Y net use %SCANDRIVE% /DELETE /YES > NUL :italccrende1 :r03ende REM if not exist h:\*.* shutdown -l :r04ende
*Folgende 2 Freigaben in der smb.conf erstellen:
[iTALC] comment = iTALC path = /home/samba/iTALC writable = no write list = @domadmins force group = domadmins force create mode = 664 force directory mode = 775 guest ok = Yes [key] comment = key path = /home/samba/key force create mode = 777 force directory mode = 777 guest ok = Yes
Setzte für die Verzeichnisse /home/samba/iTALC und /home/samba/iTALC/key die Berechtigungen auf 0777 (die Option -R ist dabei nciht erforderlich) und setze für beide Verzeichnisse den Besitzer auf Administrator und die Gruppe auf domadmins (Erläuterung: Der Befehl für die Berechtigungen lautet: chmod 0777 /home/samba/iTALC und chmod 0777 /home/samba/iTALC/key — Der Befehl für die Zuordnung als Besitzer lautet: chown Administrator /home/samba/iTALC und chown Administrator /home/samba/key — Der Befehl für die Zuordnung zur Gruppe lautet: chgrp domadmins /home/samba/iTALC und chgrp domadmins /home/samba/iTALC/key )
Funktion:
Wurde in den Computerräumen iTALC installiert, ist es egal, ob die Client-
oder Masterdateien auf den Rechnern sind.
Beim Anmelden eines Lehrers werden die Keys und das Programm mit Link auf den
Rechner kopiert.
Meldet sich ein Schüler an, werden die Programmdatei, der
Link und der Masterkey gelöscht und nur der Client_key auf den Rechner kopiert.
Diese Methode funktioniert auch von zu Hause aus, das heißt, man installiert auf dem Rechner zu Hause iTALC komplett mit neuen Keys und kopiert die Keys der Schulen danach ins iTALC-Verzeichnis, auch die xml-Dateien der Schule kopiert man in das Anwendungsverzeichnis. Jetzt kann man, wenn man über VPN auf dem Schulserver eingeloggt ist, mit iTALC die einzelnen Rechner der Schule aufrufen, mit ihnen arbeiten oder sie auch problemlos gezielt ausschalten.
Diese Variante erfordert ein neues Image, das aber für Lehrer-PC und Schüler-PC identisch sein kann. Die netlogon-Dateien müssen nicht verändert werden, ebensowenig ist ein Installkit notwendig. Die Zugriffsberechtigung für Lehrer auf das Master-Modul und den private-Key wird am Server eingestellt.
C:\Programme
nach K:
C:\Programme\iTALC\keys\private
(auch im Papierkob)C:\Programme\iTALC\italc.exe
(auch im Papierkorb)K:\iTALC\italc.exe
HKLM/Software/iTALC Solutions/iTALC/keypathprivate
auf den Wert „K:\iTALC\keys\private\teacher\key“
setzen# chgrp -R teachers /home/samba/progs/iTALC # chmod -R 750 /home/samba/progs/iTALC
Zum Testen kann man sich nun als Schüler anmelden unter unter K:
auf \iTALC
zugreifen, dies sollte nicht funktionieren.
Als Alternative kann man den private-Key von iTALC auch in ein Unterverzeichnis des Lehrer-Tausch-Verzeichnisses legen (z.B. in H:\_tauschen\tausch-Lehrer\italc\
). Dann sind Rechteanpassungen nicht unbedingt notwendig. Ebenso ist dann der private-Key auch von Linux-Clients zugänglich, ohne dass man das Samba-Share zu K:
im Linux-Client einbinden muss. Zu beachten ist dabei, dass der pgmadmin nicht der Guppe teachers angehört und eine andere Struktur in seinem Tauschverzeichnis besitzt.
iTALC 2 bietet diese neue Möglichkeit der Authentifizierung. Bei der Installation wählt man anstelle der Erzeugung eines Schlüsselpaares bzw. anstelle des Imports eines Schlüssels die direkte Authentifizierung per Benutzername und Passwort. Auf den Client-Rechnern muss dann eingetragen werden welchen Personen der Zugriff erlaubt ist. Hier können sowohl einzelne Personen als auch Gruppen eingetragen werden. Es bietet sich also an die Gruppe teachers
als berechtigt einzutragen.
Startet ein Benutzer das Master-Modul so wird er nach Benutzername und Passwort gefragt. Als Benutzername ist der aktuelle Anmeldename voreingetragen, so dass die Eingabe des Passworts in der Regel genügt. Der Client überprüft dann ob dieser Benutzer zugreifen darf.
Momentan liegt iTALC 2 als release-candidate-1 vor. Diese Version scheint (zumindest mit Windows-PCs) stabil zu laufen.
Ist das Clientprogramm als Dienst² bereits im Image integriert, kann dieser beim Systemstart über REMBO/mySHN bei Bedarf aktiviert werden. - Dazu muss z.B. Folgendes in die Datei /opt/rembo/global/files/myshn/patches/patch-nt-user.ref eingetragen werden:
# Aktiviere ICAS-Dienst für Rechner in r100 und r200, deaktiviere für alle anderen # Mit dem dword-Wert 2 wird der icas-Dienst gestartet, mit 4 nicht. [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\icas] @if HOST: r100-*, r200-* "Start"=dword:00000002 @else "Start"=dword:00000004 @endif
²) Man kann unter Windows in der Kommandozeile mit - net start „ITALC Client“ oder * net stop „ITALC Client“ den Dienst starten und stoppen. Im Service Plugin unter Windows kann man den Dienst auch aktivieren, deaktivieren und auf „Manuell starten“ stellen.
Weil dieses Programm mit VNC arbeitet, kann es auch über das Internet für Schulungen eingesetzt werden.
Leider funktioniert die VPN Schnittstelle von iTALC nur mit einem VPN-Server, wie z.B. OpenVPN. Ich denke mit Hamachi kann man das viel einfacher bewerkstelligen. Man braucht keinen VPN-Server. Hamachi ist viel einfacher und funktioniert stabil unter Windows und Linux.
Beim Start des iTALC-Lehrerprogrammes kann es vorkommen, dass die Verbindungen des Lehrerrechners zu den Schülerrechnern anfänglich nicht stabil sind bzw. teilweise gar nicht zustande kommen. - Das könnte folgenden Grund haben:
Ab WindowsXP-SP2 gibt es von MS zwei Einschränkungen, die den Verbindungsaufbau beeinflussen. Diese sollen die Verbreitung von Viren zu bremsen. Leider haben diese Einstellung hat aber auch negative Auswirkungen auf andere Programme, wie eben auch auf iTALC, wo viele parallele Verbindungen nötig sind und fortwährend viele Verbindungsanfragen erfolgen.
Eine Verbindung zu einem Server befindet sich im Wartezustand, wenn dieser noch nicht geantwortet hat. Ab 10 Verbindungen im Wartezustand landen standardmäßig alle weiteren Verbindungsanfragen in einer Warteschlange und bekommen erst später oder vielleicht nie eine Verbindung zum Server.
Abhilfe:
1. Die Begrenzung aufheben und …
a) …die Datei tcpip.sys patchen mit Patcher
Einfach den Patcher downloaden, ausführen und seine Nachfragen zweimal mit Ja (y) bestätigen.
Nach dem erfolgreichen Patchen wird automatisch die geänderte TCPIP.SYS installiert und der Rechner sollte nun neu gestartet werden. - Bei evtl. auftretenden Fehlern mit dem Patcher kann die ursprüngliche TCPIP.SYS wieder aus der automatisch vom Patcher angelegten Sicherheitskopie erstellt werden.
b) …oder, einfacher, mit xp-antispy (im oberen Menü: Spezial→Verbindungslimit)
2. Die Anzahl der möglichen parallelen Verbindungen erhöhen mit einer Registryänderung
Auch die Anzahl der ein- und ausgehenden parallelen Verbindungen wurde auf 10 begrenzt. Mit der folgenden Registry-Änderung kann dieser Wert wieder auf den vorherigen Standardwert 16.777.214 erhöht werden. Unter
HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Services\ Tcpip\ Parameters
einen neuen Wert mit dem Namen „TcpNumConnections“ als Datentyp REG_DWORD erstellen und dessen Wert auf einen von max. 16777214 (0x00fffffe) oder niedriger einstellen.
Das script erstellt die confdateien für iTALC aus der /etc/linuxmuster/workstations und legt sie im Verzeichnis ./automatische-configuration-<zeitstempel>/<Raumbezeichnung>
Man legt das Script auf dem Server in ein Verzeichnis und führt es per
php <scriptname> aus.
<?php // erstelle_italc_config.php // Skript zum einfachen Erstellen der Configurationsdateien fuer ITALC // getestet mit der Linux-Musterloesung PaedML4.0.2 // Skript geschrieben von Jesko Anschütz MAI 2009 // jesko.anschuetz@montfort-realschule.de // in diesem Skript braucht nichts veraendert zu werden. $workstations = "/etc/linuxmuster/workstations"; $config_pfad = "automatische_config_".date("Ymd-Hms"); function raeume_ermitteln() { global $workstations; $ausgabe = shell_exec('cat '.$workstations.' |cut -d ";" -f 1|sort -u'); $raeume=explode("\n",$ausgabe); array_pop($raeume); return $raeume; } function workstations_einlesen() { global $workstations; $workstations_datei=fopen($workstations, "r"); if (!$workstations_datei) die ("Skript in Funktion ".__FUNCTION__." abgebrochen!<br />Datei $workstations_datei' konnte nicht zum Lesen geöffnet werden! Ist der Pfad korrekt?"); while (!feof($workstations_datei)) // Datei Zeilenweise in ein Array schreiben { $zeile = fgets($workstations_datei); // Zeile einlesen if ($zeile) $zeilenarray[].= $zeile; // Wenn Zeile nicht leer ist, dem Array hinzufügen } fclose($workstations_datei); return $zeilenarray; } function reduziere_array($workstations_array) // Das Weblog auf Zeitstempel, IP und URL reduzieren. { global $konfiguration; $zeilennummer = 0; // Startwert für den Arrayindex foreach ($workstations_array as $zeile) { $zeilennummer += 1; // Arrayindex um eins erhöhen $zeile=trim($zeile); //Leerzeichen am Anfang und Ende stören ja nur... $spalte=explode(";",$zeile); // Semikolon als Spaltentrenner nehmen und in Spalten in Array abspeichern $raum = $spalte[0]; $rechnername = $spalte[1]; $ipaddress = $spalte[4]; $macaddress = $spalte[3]; $reduziertes_array[$zeilennummer]['rechnername']=$rechnername; $reduziertes_array[$zeilennummer]['ip']=$ipaddress; $reduziertes_array[$zeilennummer]['mac']=$macaddress; $reduziertes_array[$zeilennummer]['raum']=$raum; } return $reduziertes_array; // und zurückgeschickt... } // Beginn des Hauptprogrammes $raeume = raeume_ermitteln(); $rohdaten = workstations_einlesen(); $auslese = reduziere_array($rohdaten); $status=shell_exec("mkdir $config_pfad"); // Ein Verzeichnis erstellen, damit es nicht so unübersichtlich wird... foreach($raeume as $aktueller_raum) // für jeden Raum ... { $status=shell_exec("mkdir $config_pfad/$aktueller_raum"); //.... ein Verzeichnis erstellen, $config_datei=fopen("$config_pfad/$aktueller_raum/globalconfig.xml", "w"); // ... eine Config anlegen if (!$config_datei) die("konnte Konfigdatei nicht anlegen"); $datei_inhalt='<?xml version="1.0"?>'."\n".' <!DOCTYPE italc-config-file>'."\n".' <globalclientconfig version="1.0.9" >'."\n".' <body>'."\n".' <classroom name="'.$aktueller_raum.'" >'."\n".' '; foreach($auslese as $rechner) { if ($rechner['raum']==$aktueller_raum) { echo $datei_inhalt.='<client hostname="'.$rechner['ip'].'" mac="'.$rechner['mac'].'" type="0" id="'.rand(10000,99999).'" name="'.$rechner['rechnername'].'" />'."\n"; } } $datei_inhalt.=' </classroom>'."\n".' </body>'."\n".' </globalclientconfig>'."\n".' '; fputs($config_datei, $datei_inhalt); fclose($config_datei); }