sniff own https traffic

In a Java programming project I needed to see what SOAP request my application sends out to a server. Everything soapy was done inside a 3rd-party-library and I couldn't make it log the request to the console.

So what I did was using a tool called mitmproxy. This provides a man-in-the-middle proxy server that accepts HTTP calls and can forward them via HTTPS.

First you need to create a configuration file. Mine is named httpser.py and looks like this (it actually is a python program):

def request(context, flow):
  flow.request.scheme = 'https'
  flow.request.port = 443

Then fire up the server by running:

mitmproxy -s httpser.py

Now tell your Java program to use a http proxy server by starting it with these JVM parameters:

-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080

To learn how to use mitmproxy's UI, check out their website.

Quartz in Tomcat 7 einbinden

Quartz ist ein Scheduler der es auf relativ einfache Weise ermöglicht, Aktionen zu bestimmten Zeitpunkten auszuführen. Wenn man Quartz in Tomcat einbindet, wird es automatisch gestartet und gestoppt. Außerdem zeige ich hier, wie man einen Scheduler erzeugt, den man dann in den Servlets / WebServices oder was auch immer verwenden kann um neue Jobs einzustellen.

web.xml

Hier wird dafür gesorgt, dass Quartz gestartet und gestoppt wird. Der erste Parameter gibt an, wo die config-Datei zu finden ist. In diesem Beispiel liegt sie im root des classpath.

 <listener>
 <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
 </listener>
 <context-param>
 <param-name>quartz:config-file</param-name>
 <param-value>quartz.properties</param-value>
 </context-param>
 <context-param>
 <param-name>quartz:shutdown-on-unload</param-name>
 <param-value>true</param-value>
 </context-param>
 <context-param>
 <param-name>quartz:wait-on-shutdown</param-name>
 <param-value>false</param-value>
 </context-param>
 <context-param>
 <param-name>quartz:start-scheduler-on-load</param-name>
 <param-value>true</param-value>
 </context-param>

Scheduler holen

Den Scheduler holt man jetzt aus dem ServletContext:

    /**
     * returns the scheduler
     */
    public static Scheduler getScheduler(ServletContext context)
            throws SchedulerException {
        StdSchedulerFactory factory = (StdSchedulerFactory) context
                .getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");
        return factory.getScheduler("MyScheduler");
    }

That's it. Jetzt kann man Quartz in Tomcat verwenden.

JobStore in der Datenbank

Um die in der web.xml definierte DataSource der Anwendung mitzubenutzen muss man in quartz.properties nur folgendes einstellen:

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.dataSource = <datasource-name>
org.quartz.dataSource.eweb_pool.jndiURL = java:comp/env/jdbc/<datasource-name>
org.quartz.jobStore.tablePrefix = QRTZ_

Die Definitionen für die Datenbanktabellen sind im Downloadpaket von Quartz enthalten.

Changelog für Android-App erstellen

Android-Change-Log ScreenshotAuf dieser Seite stelle ich einen Codeschnippsel zur Verfügung, mit dem man ein komplettes changelog oder release notes einfach erstellen kann: Android-Change-Log

Features:

  • einfaches Schreiben des Changelogs
  • styleable mit CSS
  • komplette Änderungshistorie anzeigen oder nur die Neuigkeiten seit der letzen installierten Version
  • open source – public domain
  • Abwärtskompatibel bis Android 1.5
  • Demo-App zum runterladen