Archiv ‘IT’

Sonntag, 3. November 2013

(Aus dem Archiv) Default LPR Queue Names of different Vendors

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die “Perlen” über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

List

Windows with LPR-Support: Use the name of the printer as it appears in Start > Settings > Printers (don’t know whether spaces and special chars cause problems).

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) Apple Printers

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die “Perlen” über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

Apple Knowledge Base

  • Apple Printer Utility (Mac)
    The Apple Printer Utility program works with all Apple PostScript Level 1, PostScript Level 2, and PostScript 3 printers. If this software is used with a non-Apple printer or with a printer developed after this release, a set of generic features will be available. The generic feature set consists of options that are common to most PostScript printers. These features should work with non-Apple printers but are not specifically supported by Apple. This utility is included with the LaserWriter 8.5.1 software posted here. It replaces all previous versions of Apple Printer Utility.

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) HP Printers

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die “Perlen” über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

HP provides a variety of software solutions to set up or manage your HP Jetdirect-connected network printers. more…

  • HP Install Network Printer
    Install a single network printer or small group of printers on a small peer-to-peer or client-server network.
  • HP Download Manager
    Upgrades HP Jetdirect firmware. Downloads firmware files from the internet as needed. A bundled package of Download Manager and firmware files can also be downloaded.
  • HP Web Jetadmin
    Remote installation, configuration, and management of HP Jetdirect-connected print servers, non-HP printers that support the Standard Printer MIB, and printers with embedded Web servers Alerts and consumables management. Remote firmware upgrades for HP Jetdirect print servers Asset tracking and utilization analysis.
  • Securing HP Jetdirect Print Server
    The following security steps are described which will help make an HP Jetdirect print server secure on the network.
  • HP Web Jetadmin Settings Explained
    This document provides instructions for using the embedded Web server in the HP Jetdirect 175X, 200M, 250M, 610N print servers that have a firmware version of x.21.xx.

Tags: , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) “Saving your Settings” / “Einstellungen werden gespeichert” takes forever on logout

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die “Perlen” über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

  1. Group Policy Editor (gpedit.msc)
  2. Local Computer Policy
  3. Administrative Templates
  4. System
  5. Logon
  6. “Maximum retries to unload and update user profile” = 2 (default 60 [seconds? tries?])

Hint taken from Annoyances.org

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 7. September 2013

Unter Mac OS X auf den Avocent SwitchView IP 1010 zugreifen

Seit mein privater Linux Entwicklungsserver im Juli auf Grund eines Ausfalls des Kabelmodems und einem Wackelkontakt des Switch-Netzteils länger als erwartet offline war, habe ich drei verschiedene Massnahmen ergriffen, damit solche Probleme nicht mehr auftreten können:

  • Der Server ist nun mit zwei Netzwerkkabeln mit dem Intranet verbunden; eines über den besagten Gigabit-Switch, eines direkt am Internet-Router
  • Der Server soll dereinst zudem noch mit einem ZYXEL NWD2205 Ultra Compact Wireless N USB Adapter NWD2205 WLAN Client (Affiliate-Link) als dritter Netzwerk-Fallback funktionieren; bisher hatte ich aber noch nicht Zeit, den USB-Stick zu konfigurieren (stecken tut er vorerst einmal an einem freien USB-Port)
  • Der Server hängt nun an einem iKVM-Switch, d.h. ein netzwerkbasiertes Gerät, welches das analoge Bild des VGA-Ausganges nimmt, es digitalisiert und per VNC an eine Client-Software weitergibt.

Letzte Massnahme dient uns dann, wenn der Server bspw. nach einem apt-get dist-upgrade nicht mehr hochkommt und keine Möglichkeit besteht, per SSH auf den Server zuzugreifen. Mit dem iKVM-Switch kann ich den Bootprozess aus der Ferne überwachen.

Ich habe mich über Ricardo.ch für 150 CHF mit einem (notabene völlig veralteten) Avocent SwitchView IP 1010 eingedeckt (Nachfolgemodell: Avocent SVIP1020 – 202 SwitchView IP, Affiliate-Link).

Gestern nun nahm ich mir die Zeit, um das Teil in das Intranet zu integrieren. Der Aufwand war leider grösser als erwartet, doch nun klappt der Zugriff von meinem Mac mini hier in Bern auf den iKVM-Switch in Neuenegg:

SVIP Viewer Mac OS X Wine

Nachfolgend sei das Vorgehen beschrieben:

Inbetriebnahme Hardware

Leider erhielt ich den iKVM–Switch per Ricardo.ch ohne das dem Gerät normalerweise beliegenden KVM-Kabel, welches PS/2-Schnittstellen und VGA-Anschluss vereint und vom Server zum Switch führt. Dumm gelaufen!

Jedenfalls war ich nicht bereit, zusätzlich noch ein Heidengeld für dieses Kabel auszugeben. Meine Shopping-Liste sah dementsprechend folgendermassen aus:

Den LCD-Monitor (15 Zoll) und die Mini-Tastatur (leider mit deutschem Layout) besass ich bereits. Beides schloss ich direkt an den iKVM-Switch an.

Werkseinstellungen und IP-Konfiguration

Zuerst setzte ich das Gerät auf Werkseinstellungen zurück, was dazu führte, dass es neu die IP 192.168.1.254 trug — in meinem Subnetz verwende ich aber 192.168.0! Ich verband deshalb mein MacBook Air mit einem Ethernetkabel mittels Apple USB-Ethernet-Adapter direkt mit dem iKVM-Switch. Anschliessend änderte ich die IP-Adresse meines MacBooks auf 192.168.1.1 und setzte dieselbe IP als Gateway.

Nun konnte ich den Web-Browser öffnen und auf https://192.168.1.254/ zeigen lassen. Mittels HTTP Basic Auth authentifiziert man sich als admin mit dem Passwort password (liebe Grüsse vom IT-Auditor). Bevor der Konfigurationsspass beginnen kann, muss man den Popup-Blocker des Browsers (bei mir für solche Fälle Firefox) deaktivieren.

Erst so gelangt man in die äusserst hässliche Java-Konfigurationsoberfläche. Die Netzwerkeinstellungen befinden sich unter

  1. Settings
  2. Global
  3. Network

Wer dem iKVM-Switch die IP-Adresse per DHCP übergeben will, findet in der Anzeige auch die MAC-Adresse des Gerätes. Wer auf Nummer sicher gehen will, konfiguriert die Adresse statisch, damit man auch beim Ausfall des DHCP-Servers auf das Gerät zugreifen kann. Mittels OK bestätigen, und schwups kann der Switch nun direkt mit dem Intranet verbunden werden.

In der weiteren Konfiguration deaktivierte ich unter

  1. Settings
  2. Global
  3. Sessions

die erzwungene SSL-Verschlüsselung ([ ] SSL connections only (must use https://) sowie [x] Allow Telnet and FTP connections. Ersteres bringt die Zertifikatswarnungen in den Web-Browsern weg, zweiteres eröffnet einem Telnet-Zugang auf das auf dem iKVM-Switch laufende FreeBSD-System. Natürlich sollte man die Aktivierung/Deaktivierung dieser Optionen in einem Unternehmensnetzwerk hinterfragen — im heimischen Netzwerk nehme ich die Sicherheitsrisiken gerne in Kauf.

Schlussendlich änderte ich auch noch das Administrator-Passwort und erstelle einen zusätzlichen Benutzer ohne Administrationsrechten.

VNC-Client in Gang bringen

Als der Switch auf den Markt gelassen wurde, sah die Systemlandschaft von iKVM-Benutzern noch deutlich anders aus als heute. Leider bietet der Switch nur eine Zugriffsmöglichkeit über den vpclient.exe, dem über die Web-Oberfläche zwei Sicherheitstoken mitgegeben werden. Folglich benötigt man nicht nur installiertes Java, sondern auch den Microsoft Internet Explorer und natürlich Windows, welche das Win32-Binary ausführen kann.

Glücklicherweise hat ein findiger Hacker (für mich nur via Google Cache erreichbar; lokales Backup) für das offenbar mehr oder weniger baugleiche APC AP5456 IP Gateway for Analog KVM ein bash Shell-Script entwickelt, mit welchem man die Tokens via cURL über die Web-Oberfläche des Switches abfrägt und damit die EXE-Datei aufruft (via wine).

wine

Zu Beginn sollte man Kaffee und Pop-Corn bereithalten, denn zuerst installiert man sich mit MacPorts das Paket wine:

# port install wine

Nach gefühlten vier Stunden Kompiliererei liegt wine als ausführbare Binärdatei vor.

vpclient.exe

Als nächstes lädt man sich vom Web-Server des iKVM-Switches die .cab-Datei herunter, welche die unter Windows ausführbare vpclient.exe und anderes Geschmäus enthält. Im Grunde kann man sich das weiter unten aufgeführte Script zu Nutze machen — aber etwas manuelle Arbeit schadet ja auch nichts. Deshalb logge ich mich per Telnet auf dem Switch ein und führe anschliessend folgenden Befehl aus, welcher mir den Namen der .cab-Datei nennt:

$ telnet 192.168.1.254
...
$ find /web -name "*.cab"
/web/vpclient4102.cab

Bei meinem iKVM-Switch mit Firmware-Version 1.0.5.6 und Build 04.09.07.1 handelt es sich um folgende URL:

192.168.1.254/vpclient4102.cab

ikvm.sh

Die .cab-Datei entpackt man danach in einem frei wählbaren Ordner; ich verwende hierzu The Unarchiver. Ins selbe Verzeichnis lädt man sich auch das Script von Chris, welches im oben genannten Cache vorgehalten wird. Der Vollständigkeit halber poste ich das Script hier auch noch:

#!/bin/bash

# A script to access an APC brand model AP5456 IP Gateway for Analog KVM 
# In Linux, using Wine

USERNAME="apc"
PASSWORD=""
KVM_SERVER=""

VIEWER_PATH=""

while [ -z "$KVM_SERVER" ]
do
    echo -n "FQDN of KVM Server (not including https://): "
    read KVM_SERVER
done

while [ -z "$USERNAME" ]
do
        echo -n "Username: "
        read USERNAME
done

while [ -z "$PASSWORD" ]
do
        echo -n "Password: "
        tput invis
        read PASSWORD
        tput sgr0
done

get_cab_name () {
    while read line
    do
        if [ "${line/'OBJECT CODEBASE'/}" != "$line" ]; then
            cab_name="${line##*'<OBJECT CODEBASE="'}"
            cab_name="${cab_name%%'"'*}"
            echo "$cab_name"
        fi
    done
}

get_cmd_args () {
    while read line
    do
        if [ "${line/PARAM/}" != "$line" ]; then
            ipaddr="${line##*'<PARAM NAME="ipaddr" VALUE="'}"
            ipaddr="${ipaddr%%'"'*}"

            sessionkey="${line##*'<PARAM NAME="sessionkey" VALUE="'}"
            sessionkey="${sessionkey%%'"'*}"

            encryptionkey="${line##*'<PARAM NAME="encryptionkey" VALUE="'}"
            encryptionkey="${encryptionkey%%'"'*}"
        fi
    done
    if [ -n "$sessionkey" ] && [ -n "$encryptionkey" ] && [ -n "$ipaddr" ]; then
        echo "-k $sessionkey -e $encryptionkey $ipaddr"
    fi

}

wine="`which wine`"
if [ -z "$wine" ]; then
    echo "Wine was not found, but is required.  Can not continue without it." >&2
    exit 1
fi

cd "`dirname $0`"
#If a path to vpclient.exe wasn't specified, and we can't find it, use /tmp
#as a place to download it to
if [ -z "$VIEWER_PATH" ] && ! [ -f "vpclient.exe" ]; then
    mkdir -p "/tmp/vpclient"
    VIEWER_PATH="/tmp/vpclient"
fi

#If a full path wasn't specified, prepend current working directory
if [ "${VIEWER_PATH:0:1}" != "/" ]; then
    VIEWER_PATH="`pwd`/$VIEWER_PATH"
fi

if ! [ -f "$VIEWER_PATH/vpclient.exe" ]; then

    cab_url="`curl -s --insecure --user "$USERNAME:$PASSWORD" "https://$KVM_SERVER/launch.asp" |get_cab_name`"
    cab_url="https://$KVM_SERVER/$cab_url"

    cabextract="`which cabextract`"
    if [ -z "$cabextract" ]; then
        echo "vpclient.exe was not found in $VIEWER_PATH" >&2
        echo "cabextract was not found either, so we can't download">&2
        echo -e "and extract vpclient.exe from it's CAB archive.\n" >&2
        echo "Error: user intervention required." >&2
        echo "----------------------------------" >&2
        echo "Download $cab_url" >&2
        echo "Unpack `basename $cab_url` into $VIEWER_PATH" >&2
        echo " -- OR -- " >&2
        echo "Install cabextract" >&2
        exit 1
    fi

    if ! [ -d "$VIEWER_PATH" ]; then
        echo "WARNING: Viewer Path specified is not valid." >&2
        echo "Path: $VIEWER_PATH" >&2
        echo -e "-------------------------------------------\n" >&2
        echo -n "Would you like me to create it? (y/N)?" >&2
        read answer
        shopt -s nocasematch
        if [ "$answer" = "y" ]; then
            mkdir -p "$VIEWER_PATH"
            if ! [ -d "$VIEWER_PATH" ]; then
                echo "Couldn't create: $VIEWER_PATH" >&2
                exit 1
            fi
        else
            exit
        fi
        shopt -u nocasematch
        
    fi

    cd "$VIEWER_PATH"
        curl -s --insecure --user "$USERNAME:$PASSWORD" "$cab_url" >"`basename $cab_url`"
        $cabextract -q "`basename $cab_url`" 2>/dev/null
fi


cmd_args="`curl -s --insecure --user "$USERNAME:$PASSWORD" "https://$KVM_SERVER/launch.asp" |get_cmd_args`"

cd "$VIEWER_PATH"

#Sanity check
if [ -f "./vpclient.exe" ]; then
    $wine "./vpclient.exe" $cmd_args
else
    echo "Failed, do it yourself: $wine vpclient.exe $cmd_args"
fi

Ich speichere es als ikvm.sh und mache es mit folgendem Befehl ausführbar:

$ chmod 755 ikvm.sh

Nachdem ich mich mit PPTP auf meinen Netgear WNDR3700-100PES RangeMax Router (Dual Band, Wireless-N,300 GigaBit) (Affiliate-Link) mit DD-WRT eingewählt habe (die Konfigurationsanleitung für die VPN-Lösung würde den Umfang dieses Blog-Posts sprengen), kann ich das Script starten (beim ersten Laden dauert es eine Ewigkeit, bis wine sich konfiguriert hat), gebe die IP-Adresse ein (192.168.0.5 reicht vollkommen aus) und die Zugangsdaten des Routers ein und erhalte innert Sekunden die Bildschirmanzeige des Servers auf den Monitor gezaubert.

Problembehandlung

Sobald alles sauber eingerichtet ist, sollte man den iKVM-Switch neu starten. Dies kann entweder physisch vor Ort oder aber über die Web-Oberfläche aus der Ferne geschehen:

  1. Tools
  2. Reboot Appliance

Ich habe zudem über Telnet auch noch einige Male /usr/bin/vps von Hand gestartet. Seither klappt jeder Verbindungsversuch auf Anhieb.

Erscheint ein pinkiger Hintergrund anstelle des Videobildes und friert wine anschliessend ein, sollte man den ganzen Prozess abschiessen und ikvm.sh erneut ausführen. Das Problem löst sich beim zweiten Aufruf.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 15. August 2013

Mit imapfilter eingehende E-Mails verschieben — aber erst nach der Lektüre

In einem anderen Blog-Artikel habe ich vor einiger Zeit beschrieben, wie ich mich mittels imapfilter von den Filterregeln meiner Mailserverbetreiber losgelöst habe. Sollte ich mich jemals von der cyon GmbH abwenden, müsste ich die Filterregeln beim neuen Anbieter — falls überhaupt möglich — nicht erneut umständlich über eine Web-Oberfläche einprogrammieren.

In der Zwischenzeit habe ich realisiert, dass nachfolgender Befehl optimal ist, um Nachrichten automatisiert in der IMAP-Ordnerstruktur abzulegen — aber erst, nachdem ich die Nachrichten auch wirklich gelesen habe:

messages = mbox.INBOX:contain_from('email@domain.tld') * mbox.INBOX:is_seen()
messages:move_messages(mbox['IMAP-Folder'])

Der erste Befehl auf der ersten Zeile wählt E-Mails eines bestimmten Absenders aus. Das Asterisk (“*”) bedeutet “AND”, während der zweite Teil des Ausdrucks die Bedingung macht, dass die E-mail-Nachricht als gelesen markiert ist.

Ich verwende einen solchen Filter beispielsweise, um Kalendereinladungen abzulegen, sobald ich diese bestätigt habe.

Tags: , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 29. Juni 2013

Die neue Welt nach Google Reader

Es ist vollbracht: Ich habe soeben alle meine Feeds unter Google Reader gelöscht, nachdem ich sie als OPML-Datei exportiert hatte.

Meine Feeds habe ich zu Feedbin gezügelt und habe mich nicht gescheut, den Jungs dort im Jahr einige paar Dollars für die Dienstleistung zu überweisen.

Mein initiales Setup zum Konsum von RSS Feeds sieht am 29. Juni 2013 folgendermassen aus:

Besonders geschmerzt hat der Umstand, dass Silvio Rizzis Reeder auf dem iPad weiterhin nur die Synchronisation mit Google Reader unterstützt. Ich musste mich deshalb schweren Herzens von dieser App trennen. Mr. Reader funktioniert tadellos mit Feedbin, aber das UI stört mich. Zu viele Schatten und Rundungen, wo doch der Trend bezüglich iOS-Applikationen klar Richtung flachem, skeumorph-losen Designs geht.

Tags: , , , , , , , ,
Labels: Blogosphäre, IT

2 Kommentare | neuen Kommentar verfassen

Samstag, 13. April 2013

Google Calendar zeigt selber entwickelte ICS-Feeds nicht mehr an

Heute habe ich festgestellt, dass meine selber entwickelten .ics-Feeds in Google Calendar nicht mehr angezeigt werden. Das Debugging ergab:

  1. Mein Server läuft, welcher die .ics-Dateien bereitstellt
  2. Mittels wget kann ich die .ics-Datei herunterladen
  3. Die Datei sieht in vim in Ordnung aus
  4. In access.log wird angezeigt, dass ein Google-Bot gelegentlich auf die Datei zugreift

Auf Grund einer Fehlermeldung des iCalendar Validator ist mir nun bewusst, dass in .ics-Kalenderdateien keine Unix-Zeilenumbrüche erlaubt sind (\n), sondern nur die MS DOS-Zeilenumbrüche (\r\n) unterstützt werden.

Nachdem ich in meiner ICS-Klasse folgende Zeile eingefügt habe, wird der Kalender in Google Calendar endlich wieder ordentlich angezeigt:

...
$out = str_replace("\n","\r\n",$out);

return $out
...

Nachtrag

In einem anderen ICS-Script verwende ich keine Klassen und spitze die Kalenderdaten nicht vorgängig in eine Variable ab. Ich habe das PHP-Script deshalb kurzerhand komplett auf MS DOS Zeilenendungen umgestellt:

sed s/$/^M/ unix.php dos.php

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 10. März 2013

Thunderbird effizient mit einem IMAP-Server und zehntausenden E-Mails verwenden

Neben der lokalen Ablage der Logs meines Linux-Servers unter /var/log leite ich Resultate von Cron-Läufen auch an eine E-Mail-Adresse auf einen in einem Rechenzentrum stehenden IMAP-Server weiter. Einerseits stelle ich so sicher, dass ich im Falle eines verheerenden Hacks auf dem IMAP-Server möglicherweise Informationen extrahieren kann, welche mir bei der Forensik helfen. Ob diese Lösung wirklich das Gelbe des Eis ist sei hier dahingestellt (heute würde ich mich wohl für eine Lösung wie Splunk entscheiden).

Nach langer Zeit habe ich heute wieder einmal per Web-Mail in diesen Account hineingeschaut und musst feststellen, dass sich in zwei IMAP-Ordnern je über 50’000 Mails angesammelt haben. Ich entschied mich, diese Ordner zu säubern. Hierzu verwendete ich aber nicht die vom Hoster angebotene Web-Mail-Lösung Roundcube, sondern Mozilla Thunderbird.

Nachfolgend einige Tipps, wie man mit der riesigen Flut an Mails umgeht:

Alle IMAP-Nachrichte herunterladen

Einerseits habe ich unter

  1. Thunderbird
  2. Preferences
  3. Advanced
  4. General
  5. Config Editor

den Wert von mail.server.default.check_all_folders_for_new auf true gesetzt. Ob dies etwas bewirkt, kann ich leider nicht sagen.

Andererseits habe ich auch bemerkt, dass man alle E-Mails in einem Ordner mittels Command-A auswählt und dann mittels Rechtsklick über die Option “Get Selected Messages” herunterladen kann.

IMAP-Nachrichten auf dem Server durchsuchen

Unter

  1. Edit
  2. Find
  3. Search Messages…
  4. [x] Run search on server

In meinem Fall funktionierte diese Methode aber nicht; es wurden nur die Bodies derjenigen Mails durchsucht, welche sich bereits lokal auf meiner Festplatte befanden.

Zehntausende E-Mails rasch löschen

Nachfolgende Option verhindert, dass Thunderbird während Minuten nicht mehr reagiert, einen Spinning Beachball anzeigt und in Mac OS X’ Activity Monitor rot als “not responding” markiert wird:

  1. Tools
  2. Account Settings…
  3. Server Settings
  4. When I delete a message: (x) Remove it immediately

Dies verhindert, dass zu löschende Nachrichten von Thunderbird im Hintergrund in den Ordner “Trash” verschoben werden, aus welchem man diese danach noch mittels “Empty Trash” löschen muss.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 6. März 2013

Wenn Subversion zwar updaten, aber nicht committen kann

Heute habe ich eines meiner Web-Projekte aktualisiert. Ich arbeitete dabei direkt auf dem produktiven Web-Server. Ein svn up klappte problemlos. Doch als ich die direkt auf dem Server neu erstellte robots.txt in das Repository einchecken wolle, kam es zu folgender Fehlermeldung:

$ svn ci -m "robots.txt fehlte"
svn: Commit failed (details follow):
svn: At least one property change failed; repository is unchanged
svn: Server sent unexpected return value (400 Bad Request) in response to PROPPATCH request for '//!svn/wbl/56ef405d-3812-4a6b-a62d-edae457cb0b0/1057'

Die Log-Daten meines Apache-Servers, welcher mittels WebDAV auch den Zugang zum SVN-Repository bereitstellt, vermeldeten folgendes:

access.log:

...
[SOURCE IP] - - [06/Mar/2013:20:08:56 +0100] "OPTIONS /repository HTTP/1.1" 401 772 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:56 +0100] "OPTIONS /repository HTTP/1.1" 200 1039 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:56 +0100] "PROPFIND /repository HTTP/1.1" 207 741 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:56 +0100] "MKACTIVITY /!svn/act/74bcecab-e942-418b-84e4-822ad8581d59 HTTP/1.1" 201 758 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:57 +0100] "CHECKOUT /!svn/vcc/default HTTP/1.1" 201 777 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:57 +0100] "PROPPATCH //!svn/wbl/74bcecab-e942-418b-84e4-822ad8581d59/1058 HTTP/1.1" 400 478 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
[SOURCE IP] - [USER] [06/Mar/2013:20:08:57 +0100] "DELETE /!svn/act/74bcecab-e942-418b-84e4-822ad8581d59 HTTP/1.1" 204 302 "-" "SVN/1.6.17 (r1128011) neon/0.28.2"
...

error.log:

[Wed Mar 06 19:48:10 2013] [error] [client [SOURCE IP]] Digest: uri mismatch -  does not match request-uri 

Unterwegs vom Produktionssystem zum Repository-Server kam es zu einem Problem, in welchem die Domain meines Servers aus der Request-URI entfernt wurde. Ich muss hierbei noch erwähnen, dass zwischen den beiden Servern ein (nicht transparenter) Proxy-Server mit Squid werkelt. Inwiefern dieser Server in den Vorgang gepfuscht hat, kann ich nicht sagen.

Nach langem Pröbeln habe ich es irgendwie hingekriegt. Die Lösung des Problems erscheint mir immer noch mysteriös — aber so sei es wohl manchmal halt: Nachdem ich einerseits folgende zwei Konfigurationsdateien umbenannt …

  • /etc/subversion/servers
  • ~/.subversion/servers

… und andererseits den Inhalt des Verzeichnisses

~/.subversion/auth/

komplett gelöscht hatte, klappte es mit dem Commit plötzlich problemlos.

Eine Vermutung habe ich: Da ich mich seit mehr als einem Jahr nicht mehr auf dem Server eingeloggt hatte, könnten unter auth noch Überreste der damals verwendeten HTTP Basic-Authentifizierung gespeichert gewesen sein. Mittlerweile bin ich auf HTTP Digest-Authentifizierung umgestiegen, um Passwörter im schlimmsten Fall nicht mehr im Klartext über ein öffentliches WiFi zu jagen. Indiz dafür ist, dass ich heute nach der Löschaktion gefragt wurde, ob ich das Passwort im Klartext auf dem Server speichern möchte (was ich abgelehnt habe).

Oder aber eine oder beide Konfigurationsdateien enthielten eine Option, welche die Übertragung der Informationen störte — bspw. der hardkodierte Proxy. Wieso die HTTP-Verbindung zum Repository-Server auch nach der Umbenennung der zwei Konfigurationsdateien weiter funktionierte, ist und bleibt schleierhaft. Wobei, jetzt kommt mir in den Sinn, dass die Admins dieses Netzwerks kurz vor meinem Weggang planten, einen transparenten Proxy einzurichten … Das könnte die Lösung sein.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen