GIT repositories

Index page of all the GIT repositories that are clonable form this server via HTTPS. Übersichtsseite aller GIT-Repositories, die von diesem Server aus über git clone (HTTPS) erreichbar sind.

Services

A bunch of service scripts to convert, analyse and generate data. Ein paar Services zum Konvertieren, Analysieren und Generieren von Daten.

GNU octave web interface

A web interface for GNU Octave, which allows to run scientific calculations from netbooks, tables or smartphones. The interface provides a web form generator for Octave script parameters with pre-validation, automatic script list generation, as well presenting of output text, figures and files in a output HTML page. Ein Webinterface für GNU-Octave, mit dem wissenschaftliche Berechnungen von Netbooks, Tablets oder Smartphones aus durchgeführt werden können. Die Schnittstelle beinhaltet einen Formulargenerator für Octave-Scriptparameter, mit Einheiten und Einfabevalidierung. Textausgabe, Abbildungen und generierte Dateien werden abgefangen und in einer HTML-Seite dem Nutzer als Ergebnis zur Verfügung gestellt.

Octave Web-Interface FAQ

Octave web interface FAQ

FAQ

This section answeres some questions I received via email and short descriptions how we resolved the problems.

FAQ

In diesem Abschnitt werden ein paar Fragen, die ich über Email erhalten habe, (als Kopie bzw. Kurzbeschreibung) beantwortet.

Is the software available for Windows platforms?

Short answer: No. The web interface was compliant in the beginning but as installing Octave and gnuplot for CLI usage was already too much hazzle the support for windows was dropped in an early stage.

Gibt es die Software für Windows?

In Kürze: Nein, leider nicht. Die Webschnittstelle war anfangs kompatibel, jedoch stellte sich schnell heraus, dass die Installation von kommandozeilenbasiertem Octave mit Gnuplot (ohne GUI) ein sich immer wieder änderndes Problem darstellte. Daher wurde der Support für diese Platform gestrichen.

Can I protect my scripts with user/password?

Yes. A simple way is to add basic authentication in the /var/www/octave/.htaccess file. The sample is for a password file containing SHA1 hashes of the passwords (no plain text), however I would recommend to specify the location of this file not in the www-root.

Kann ich Skripts mit Nutzernamen und Passwort schützen?

Ja. Der einfachste Weg ist in /var/www/octave/.htaccess ein paar Zeilen hinzuzufügen. Das Beispiel arbeitet mit einer SHA1-Passwortdatei im Verzeichnis der Webschnittstelle, ich empfehle allerdings einen anderen Speicherort zu wählen.

<FilesMatch "htoctaveusers$">
  Order Allow,Deny
  Deny from all
</FilesMatch>
AuthType Basic
AuthName "Restricted script access"
AuthUserFile /var/www/octave/.htoctaveusers
Require valid-user
 
# Add users type in the shell:
# $ htpasswd -csb /var/www/octave/.htoctaveusers USERNAME PASSWORD
# [...]

Alternatively you can use PHP and database techniques or LDAP connectors to do so. Introducing this is out of the scope here. But a good location to hook this user check is the web interface config file:

Alternativen sind PHP-Techniken, die auf Datenbanken bzw. LDAP basieren. Auf diese Möglichkeiten einzugehen würde den Rahmen der Antwort sprengen, aber eine gute Stelle diese Nutzervalidierung aufzurugen ist die Konfigdatei der Webschnittstellt:

<?
// /var/www/octave/include/config.php
 
// auth.php "`dies()`" with a 401 status if not logged in or authentication fails.
require_once($_SERVER['DOCUMENT_ROOT'] . "/PATH/auth.php");
 
// [...]

I am modifying the web interface. How to debug?

Simple: Set enable the swlib tracer in the config file and use the tracer::trace(...) function:

<?
// /var/www/octave/include/config.php
 
$WEBOCTAVE_OCTAVE_TRACE_LEVEL = LOG_DEBUG; // Modify this as chatty you like the software
$WEBOCTAVE_OCTAVE_TRACE_PRINT_PROTOCOL = true;
 
/// Your file/location/ where you work:
[...]
use sw\Tracer;
 
Tracer::trace("Hello, here a text!", LOG_ERROR);
Tracer::trace("Hello, here a text!", LOG_WARNING);
Tracer::trace("Hello, here a text!", LOG_NOTICE);
Tracer::trace("Hello, here a text!", LOG_DEBUG);
 
$var = array('something', array('key1' => 'sub-something', 'key2' => true));
Tracer::trace_r($var, "Content of variable \$var", LOG_DEBUG);