Blog

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

  • Zeitungen und Schlagzeilen

    Es ist interessant wir man Sätze einer Person verschieden gewichten kann.

    Hier ein Beispiel wie Zeitungen die Aussage eine Person zum Titel machen:
    Das erste Bild ist von Blick.ch das zweite von 20min.ch beide am 20.2.2011 Abends um 20:30 gemacht.

  • Exchange POP3 Connector mit ungültigem Return-Path

    Heute hatte ich das Problem das der POP3 Connector Fehlermeldungen anzeigte weil eine ungültige E-Mail im Postfach lag.

    Die Mail kam vom Postfix Server und hatte einen ungültigen Return-Path im Header.

    Mit follgendem Befehl auf der Exchange-Verwaltungskonsole konnte das Problem behoben werden:

    Set-ReceiveConnector -Identity ($Env:computername + „\Windows SBS Fax Sharepoint Receive “ + $Env:computername) -DefaultDomain $Env:UserDNSDomain

    Gruss Marco

  • UltraVNC Standartmonitor festlegen

    Beim Start von UltraVNC wird standartmässig der erste Monitor gezeigt.

    Falls man nun möchte das der zweite Monitor standartmässig angezeigt wird oder das beide Monitor sofort angezeigt werden kann dies in der UltraVNC.ini einstellen:

    Sobald der Server das erstemal gestartet wurde wir im Ornder von UltraVNC (Standart: C:\Programme\UltraVNC) die Datei UltraVNC.ini angelegt.

    Mit den Parametern
    primary=1 und secondary=0

    wird der Standartmonitor festgelegt.
    Monitor 1: primary=1 und secondary=0
    Monitor 2: primary=0 und secondary=1
    Beide: primary=1 und secondary=1

    Gruss Marco

  • SQL Server führende Nullen entfernen

    Mit diesem kleinen Statement kann man führende Nullen in einem Textfeld entfernen.

    UPDATE [dbo]. [Customers]
    SET [CustomerKey] = REPLACE(LTRIM(REPLACE([CustomerKey], ‚0‘, ‚ ‚)), ‚ ‚, ‚0‘)

    Grundsätzlich führt in drei Schritten:

    Die 0 werden erst mit einem Leerzeichen ersetzt.
    Danach werden mit LTrim die vorderen Leerzeichen entfernt.
    Jetzt werden alle Leerzeichen wieder mit 0 ersetzt.

    Das ganze geht also nur wenn man keine Leerzeichen im String hat.

  • NullableDateTimePicker

    Ich hatte heute das Problem das ich mit dem DateTimePicker einen Nothing wert darstellen wollte. Der DateTimePicker hat eine so schöne Checkbox mit der man das Datum deaktivieren kann. Wieso bei einem deaktiviertem nicht einfach ein Nothing als Value zurückgegeben wird bleibt Microsofts Geheimnis. Zum glück können wir das Control aber ableiten 🙂

    Public Class NullableDateTimePicker
        Inherits DateTimePicker
    
        Public Sub New()
            MyBase.New()
            InitializeComponent()
        End Sub
    
        Public Shadows Property Value() As Nullable(Of DateTime)
             Get
                If Not MyBase.Checked Then
                    Return Nothing
                Else
                    Return New Nullable(Of DateTime)(MyBase.Value)
                End If
             End Get
             Set(ByVal value As Nullable(Of DateTime))
                If value.HasValue = False Then
                    MyBase.Value = DateTime.Now
                    MyBase.Checked = False
                Else
                    MyBase.Value = value.Value
                    MyBase.Checked = True
                End If
            End Set
        End Property
    End Class
    
    
    

    Indem wir die Valueeigenschaft überschreiben lässt sich daraus ein richtig gutes Control machen 🙂

    Gruss Marco

  • ClamAV mit Mailfunktion

    Also heute hatte ich das Problem ClamAv dazu zu bringen das ich jede Woche einen Prüfungsbericht bekommen und falls ein Virus gefunden wird ich auf unter der Woche informiert werden.

    So ist mein Vorschlag, da ich etwas in php bewandert bin habe ich das Shellskript in php geschrieben:

    #!/usr/bin/php5
    <?php
    exec("/usr/bin/clamscan -ri /",$data);
    
    $found = true;
    foreach($data as $line)
    {
            if(preg_match("/^Infected files:/",$line))
            {
                    $count = str_replace("Infected files: ","",$line);
                    // Ich habe auf dem Rechne 4 beispielviren zum Testen diese müssen natürlich ignoriert werden.
                    if($count == 4) $found = false;
            }
            $message .= $line . "\n";
    }
    
    if($found || date("D") == "Sat")
    {
           if($found)
           {
                   $betreff = "Virus found !!!!";
           } else {
                   $betreff = "Scan okay";
           }
    
           $header = 'From: root@example.ch' . "\r\n" .
                     'Reply-To: info@example.ch' . "\r\n" .
                     'X-Mailer: PHP/' . phpversion();
           mail("info@example.ch",$betreff,$message);
    }
    ?>
    
    
    

    Das noch per link im /etc/cron.daily/ ablegen und nun werde ich jeden Sa informiert das noch alles in Ordnung ist.

    Gruss Marco

  • Asterisk 1.4 mit DEVSTATE (DEVICE_STATE) erweitern

    Ich stand heute vor dem Problem das ich die Funktion DEVSTATE (in 1.6 DEVICE_STATE) in Asterisk ausprobieren wollte.

    Leider ist diese Funktion in der 1.4 noch nicht vorhanden also ist nachinstallieren angesagt.

    # Compiler installieren + tools
    aptitude install gcc g++ binutils libtool make libncurses-dev subversion
    # Patch aus dem Internet laden
    cd /tmp
    svn checkout http://svncommunity.digium.com/svn/russell/asterisk-1.4/func_devstate-1.4/
    # Asterisk holen
    cd /usr/src
    tar -xzf asterisk-1.4.19.2.tar.gz
    rm asterisk-1.4.19.2.tar.gz
    cd asterisk-1.4.19.2/funcs/
    cp /tmp/func_devstate-1.4/func_devstate.c ./
    
    # Asterisk kompilieren
    ./configure && make clean && make
    
    # Neue Funktion laden
    cd /usr/lib/asterisk/modules/
    cp /usr/src/asterisk-1.4.19.2/funcs/func_devstate.so ./
    
    # Aufräumen
    rm -r /tmp/func_devstate-1.4
    rm -r /usr/src/asterisk
    aptitude remove gcc g++ binutils libtool make libncurses-dev subversion
    
    

    So nun funktioniert der Befehl DEVSTATE

  • Asterisk Weckruf

    So nachdem ich ein wenig mit Asterisk gespielt habe. Konnte ich mithilfe der Erklährung aus dem Asterisk-Buch einen Weckruf implementieren.

    Einfach im ensprechenden Kontext in der Datei extensions.ael follgende Zeilen einfügen

    _*77*XXXXXXXXXXXX => {
     Answer();
     Set(Jahr=${EXTEN:4:4});
     Set(Monat=${EXTEN:8:2});
     Set(Tag=${EXTEN:10:2});
     Set(Stunden=${EXTEN:12:2});
     Set(Minuten=${EXTEN:14:2});
     System(echo -e "Channel: SIP/${CALLERID(num)}\\nContext: Weckruf\\nExtension: 23" > /tmp/${UNIQUEID}.call);
     System(touch -t ${Jahr}${Monat}${Tag}${Stunden}${Minuten} /tmp/${UNIQUEID}.call);
     System(mv /tmp/${UNIQUEID}.call /var/spool/asterisk/outgoing/);
     Playback(rqsted-wakeup-for);
     SayNumber(${Stunden});
     SayNumber(${Minuten});
     Playback(digits/oclock);
     Hangup();
    }

    Und dann noch einen neuen Kontext für den Rückruf erzeugen:

    context Weckruf {
    
     23 => {
     Answer();
     Wait(1);
     Playback(this-is-yr-wakeup-call);
     Wait(1);
     Hangup();
     }
    
    }

    Nun kann mit Anwählen der Nummer *77* gefolgt von Jahr Monat Tag Stunde Minute (*77*200910030730) der Wecker gestellt werden.

    🙂