About Me · Send mail to the author(s) E-mail · Twitter

At GROSSWEBER we practice what we preach. We offer trainings for modern software technologies like Behavior Driven Development, Clean Code and Git. Our staff is fluent in a variety of languages, including English.

Feed Icon


Open Source Projects


Blogs of friends

Now playing [?]

Error retrieving information from external service.

Wow, what a mouthful of a title.

What do we have here? We've got a Site-To-Site VPN to be established from a ISA Server with a dynamic IP address. Dynamic IP addresses are assigned by ISPs for consumer cable and DSL internet connections and will be renewed at least each 24 hours. That is, every time your internet connection is established, your public IP changes. This prevents you from hosting internet servers on top of your cheapo DSL service.

Site-To-Site VPNs basically connect two private networks over a secured internet tunnel. ISA Server supports Site-To-Site VPNs but requires a static IP address for the local VPN gateway. Since the local VPN gateway is your ISA Server that has a dynamic IP address, you have to either purchase a static IP address (expensive) or update the local endpoint's IP address every time your internet connection is established. A pitfall I ran into when I was setting up the VPN connection together with my very helpful colleague Timo from Synexus was that we were able to successfully connect to the remote site until the DSL connection dropped. All further VPN connection attempts failed because due to the reconnect, ISA Server's public IP changed. This isn't reflected by the remote site configuration, the dropdown box is just emptied:

Local Endpoint IP is empty after reconnects

Now you'll either have to change the local endpoint address using the ISA Server management console every time your DSL line is connected or you could automate that using ISA's rich COM object model.

Scripting the ISA Server COM objects with Windows PowerShell is easy. It actually takes just six lines of code to set the new public IP for all Site-To-Site VPN connections.

param([string] $newIP = $(throw "Update-IsaServerIPSecPublicIp: New IP address is missing"))

$root = New-Object -comObject "FPC.Root" -strict
$server = $root.Arrays | Select-Object -first 1
$publicNetwork = $server.NetworkConfiguration.Networks | Where-Object { $_.NetworkType -eq 3 }
$ipSecSite2SiteNetworks = $server.NetworkConfiguration.Networks | Where-Object { $_.NetworkConnectionType -eq 4 }

$ipSecSite2SiteNetworks | ForEach-Object { $_.VpnConfiguration.IPSecSettings.LocalServerAddress = $newIP; $_.VpnConfiguration.IPSecSettings.Save() }

The next step will be to integrate this script to an application that detects changes to IP address of certain network interfaces – we use DirectUpdate to keep our domains current. But any other tool like the free DynDNS Updater that is able to spawn a process when a new IP is detected will certainly do.

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -noprofile -command C:\Tools\Update-IsaServerIPSecPublicIp.ps1 <new IP address>

If you didn't use PowerShell until now, take a look at Scott Hanselman's most recent dnrTV webcast. Scott has recorded a really nice piece where he starts downloading the PowerShell bits and walks you though the basic concepts and some more interesting details.

Session Manager Available On CodePlex

Posted in ASP.NET | DNUG Leipzig | Tools and Software at Monday, 10 September 2007 20:09 W. Europe Daylight Time

Our Dilemma

For this year's .NET Summercamp 2007 we find ourselves in the lucky position of having more speakers and session suggestions than slots available. What we needed was a session suggestion and rating system allowing our speakers to submit proposals that could later be approved by us. Of course there are large conference management systems out there, often with boatloads of unneeded functionality like billing. We rather wanted to use a simple tool at no cost.

The Solution

So I went and wrote it myself an ASP.NET 2.0 web application. The outcome of my efforts, named Session Manager, is available on CodePlex. Session Manager is free software licensed under the BSD License.

Session Manager Screen Shot

If you're running a user group or plan to organize larger events besides regular user group meetings, Session Manager certainly is worth a try. If you find it not yet perfect, please go ahead grab the source code and customize it to your needs or post a suggestion. I already wrote down some ideas on improvements.

Session Manager was a great opportunity to build an application with the Model View Presenter and WebNavigator patterns in mind. One has to write a little more code (mostly interface definitions) but gains great testability and portability across web and rich clients.


I've created a demo installation based on the current version. Go ahead and fiddle, you can't damage anything.

Have fun!

Geocaching: Robert und Marci auf mephisto 97.6

Posted in NonTech at Thursday, 06 September 2007 23:50 W. Europe Daylight Time

Robert und Marci, zwei der Mitorganisatoren der Überraschungs-Geocaching-Rallye zu meinen Ehren (i.e. Geburtstag) wurden vor einigen Wochen vom Leipziger Lokalradio mephisto 97.6 zur neuartigen Freizeitbeschäftigung Geocaching interviewt.

Durch Wald und Wiesen, in Städte, oder an abgelegene Orte wie z.B. Abrisshäuser. Das neue Hobby Geocaching führt querfeldein. Geocaching ist ein noch recht unbekanntes Abenteuer. Wir haben mal die Leipziger dazu befragt.

Dabei ist ein kleiner 4-Minuten-Beitrag entstanden der einen guten Einstieg in das Thema gibt. Leipziger die es gern selbst einmal ausprobieren möchten, starten am besten hier.

Rezept: Rehkeule

Posted in Recipes (German) at Tuesday, 04 September 2007 21:44 W. Europe Daylight Time
  • 1,5 kg Rehkeule mit Knochen
  • Olivenöl
  • 3 Zweige Rosmarin
  • 15 Wacholderbeeren
  • 5 Lorbeerblätter
  • 1 TL Knoblauch
  • 1 Suppengemüse
  • 3 Karotten
  • 1 dicke Scheibe Sellerie
  • getrocknete Waldpilze
  • Soßenbinder
  • 2 Zwiebeln
  • 1 Glas Preiselbeerenmarmelade
  • 2 EL Butterschmalz
  • 1 TL gemahlenes Piment
  • Salz, Pfeffer
  • für die Beilage: Apfelrotkohl, Kloßteig, 4 Scheiben Buttertoast

Das Fleisch vom Knochen lösen, Sehnen und Bindegewebe entfernen. Das Fleisch ohne Salz und Pfeffer zusammen mit einigen Rosmarinnadeln, Knoblauch, zwei zerkleinerten Lorbeerblättern und der Hälfte der angedrückten Wacholderbeeren mit reichlich Olivenöl für einen Tag einlegen.

Das restliche Fleisch (die Kleinteile) zusammen mit den Knochen, grob gehackten Wurzelgemüsen, Salz und Pfeffer zwei Stunden auskochen. Die Brühe durchsieben.

Wenn das Fleisch durchgezogen ist, mit Küchenpapier abtupfen, von den Gewürzen befreien, salzen und pfeffern. Das Butterschmalz in einem großen Topf oder Bräter erhitzen und die Fleischteile kräftig anbraten. Gehackte Zwiebel, in Scheiben geschnitte Karotte und fein gewürfelten Sellerie hinzugeben und mit anschwitzen. Mit der Brühe aufgießen, drei Lorbeerblätter, Piment, die restlichen (angedrückten) Wacholderbeeren, Pilze und zwei Zweige Rosmarin hinzugeben und mit Salz unf Pfeffer würzen. Die Hälfte der Preiselbeermarmelade hinzufügen und bei kleiner Hitze 1,5 h köcheln. Das Fleisch anschließend aus dem Topf nehmen und entgegen der Faserrichtung in Scheiben schneiden. Parallel dazu die Soße mit Soßenbinder andicken. Fleisch wieder in die Soße legen.

Dazu passen am besten Klöße und Apfelrotkohl: Für die Klöße die Toastscheiben klein würfeln und mit etwas Butter in einer kleinen Pfanne vorsichtig anrösten. Den Kloßteig in der Hand formen, einige Croutons in eine Vertiefung in der Masse geben und gut verschließen. 20-25 Minuten in heißem Salzwasser mit etwas Kartoffelstärke garziehen. "Normaler" Rotkohl erhält durch etwas Apfelsaft eine besondere Note. Das Essen zusammen mit der restlichen Preiselbeermarmelade servieren.