96 lines
3.2 KiB
Bash
Executable file
96 lines
3.2 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# ein kleines Web-Interface, um die trac-admin-Konsole zu verwenden
|
|
#
|
|
|
|
set -u
|
|
|
|
# parent-URL der trac-Projekte
|
|
TRACURL="/trac"
|
|
# das trac-admin-Program
|
|
TRACADMIN="/usr/bin/trac-admin"
|
|
# das Verzeichnis, das alle trac-Projekte enthaelt
|
|
REPOS_ROOT="/data/trac"
|
|
# die URL der css-Datei von trac
|
|
CSSURL=/trac-shared/css/trac.css
|
|
|
|
############# Funktionen ###################
|
|
|
|
hole_uebergabe()
|
|
# Parameter: Name der Variablen
|
|
# extrahiert eine Variable aus dem Query-String
|
|
{
|
|
# Parameter holen | in Zeilen aufspalten | die richtige rausfiltern | nur den Wert nehmen | ausmaskierte "+/ " wiedereinsetzen
|
|
echo "$QUERY_STRING" | sed "s/&/\n/g" | grep "^$1=" | cut -d "=" -f 2 | sed "s/+/ /g; s/%2B/+/g"
|
|
}
|
|
|
|
hole_project_name()
|
|
# ermittelt den Namen des aktuellen Projekts
|
|
# entweder: aus dem HTTP_REFERER (vorherige Seite in der History) -> beim ersten Aufruf der Konsole
|
|
# oder: aus der Formular-Variable -> nach jedem ausgefuehrten Konsolen-Kommando
|
|
{
|
|
local proj=`hole_uebergabe trac_project`
|
|
if [ -z "$proj" ]
|
|
then # hole den Projektnamen aus der History
|
|
local ref=`set | grep "^HTTP_REFERER=" | cut -d "=" -f 2`
|
|
proj=`echo "$ref" | sed "s#^.*$TRACURL/\([^/]*\).*#\1#"`
|
|
fi
|
|
echo "$proj"
|
|
}
|
|
|
|
|
|
########## es geht los #################
|
|
|
|
echo 'Content-Type: text/html'
|
|
echo
|
|
|
|
# Header anzeigen
|
|
echo '<html><head>'
|
|
echo '<title>TracAdmin-Konsole (handgemacht)</title>'
|
|
echo '<link rel="stylesheet" type="text/css" href="'$CSSURL'">'
|
|
echo '<style type="text/css">'
|
|
echo '</head><body>'
|
|
|
|
# den Namen des trac-Projekts ermitteln
|
|
# das geht erst nach dem Header, da diese Ermittlung eventuell eine Fehlermeldung produziert
|
|
TRAC_PROJECT=`hole_project_name`
|
|
[ -z "$TRAC_PROJECT" -o ! -d "$REPOS_ROOT/$TRAC_PROJECT" ] && echo "ungueltiges trac-Projekt ($TRAC_PROJECT)" && exit 1
|
|
|
|
# das REPOS-Verzeichnis setzen
|
|
REPOS="$REPOS_ROOT/$TRAC_PROJECT"
|
|
|
|
# die Ueberschrift
|
|
echo
|
|
echo '<p style="text-align:right;text-style:italic"><a href="'$TRACURL/$TRAC_PROJECT'" title="zur schönen Oberfläche">'
|
|
echo 'zurück zur trac-Oberfläche</a></p>'
|
|
echo '<h1 style="margin:5px; top-margin:7%">'
|
|
echo 'Die Mini-TracAdmin-Konsole für <i>'$TRAC_PROJECT'</i>:</h1>'
|
|
|
|
# das Formular
|
|
echo '<form style="text-align:center; background-color:lightgray; padding:5px; margin:5px"'
|
|
echo 'action="'$SCRIPT_NAME'" method="get">'
|
|
echo 'Argumente für <tt>trac-admin</tt>:'
|
|
echo '<input name="commandline" type="text" size="50">'
|
|
echo '<input type="submit" name="submit" value=" Ausfuehren ">'
|
|
echo '<input type="hidden" name="trac_project" value="'$TRAC_PROJECT'">'
|
|
echo '</form>'
|
|
|
|
################ pruefe, ob Parameter reinkamen #################
|
|
para=`hole_uebergabe commandline`
|
|
|
|
# falls eine Befehlszeile uebergeben wurde, wird sie ausgefuehrt und die Ausgabe angezeigt
|
|
if [ -n "$para" ]
|
|
then FARBE="lightgreen"
|
|
output=`"$TRACADMIN" "$REPOS" "$para"`
|
|
echo -e "$output" | grep -q '^\*\*' && FARBE=red
|
|
echo '<div style="background-color:'$FARBE'; padding:5px; font-family:monospace; margin:5px">'
|
|
echo -e "$output" | sed "s/$/<BR>/"
|
|
echo '</div>'
|
|
fi
|
|
|
|
# den Hilfe-Text des tracadmin-Programms anzeigen
|
|
echo
|
|
echo '<div style="padding:5px; margin:5px; background-color:lightblue;font-family:monospace;">'
|
|
"$TRACADMIN" "$REPOS" help | sed "s/$/<br>/"
|
|
echo '</div></body></html>'
|
|
|