die trac admin konsole
This commit is contained in:
parent
0c9416c116
commit
87eb71663b
1 changed files with 96 additions and 0 deletions
96
tracadmin-console.sh
Executable file
96
tracadmin-console.sh
Executable file
|
@ -0,0 +1,96 @@
|
|||
#!/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>'
|
||||
|
Loading…
Reference in a new issue