Monday, October 21, 2013

Remote debugging a java application

You can remote debug a running applet. Set it in the Java control panel, in "runtime parameters" for the JRE
-Djava.compiler=NONE -Xnoagent -Xdebug 
-Xrunjdwp:transport=dt_socket,address=,server=y,suspend=n for JVM 1.4
or -agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n for JVM 1.5 and newer

These are considered insecure JVM parameters and will cause the LiveConnect error: "This application is going to perform an insecure operation" See StackOverflow LINK for more info

How to set the parameters:

This is equivalent to setting the JAVA_OPTS environment variable.

The settings in Eclipse:

For the uninitiated: the idea is that the JVM starting the applet looks at the server parameter. If it's set to 'y' then the applet running JVM acts as a debugging server. You then from Eclipse (or another IDE) connect with Socket Attach. You start the application, and start the debugging session in your IDE, which connects to the running applet.

 If you set server=n then in Eclipse you set the connection type to Socket Listen,  which means that Eclipse acts as a debugging server. You start the debugging session in Eclipse, the debugging server starts and waits. You then start the web application (or applet) which will connect to Eclipse).

If you need to debug the whole applet loading procedure You can set the suspend=y parameter. You start the web application, and the applet start will be paused, waiting for you to start the debugging session against it.

Note: Enabling JWDP debugging seems to break running through a proxy ( such as fiddler ). The control pannel settings for network and proxy are ignored, and proxy=DIRECT is chosen always

Friday, March 22, 2013

HOWTO: OpenVPN connection with traffic routing in Windows

So from SITE1 I wanted to connect to a remote SITE2 and run my browser against SITE3 through the proxy at SITE 2 in order to debug a web application.

In order to do this I need to install an OpenVPN server at SITE2 and an OpenVPN client at SITE1
SITE2 will be first accessed through TeamViewer to create a connection, then we create the VPN tunnel throgh the TeamViewer connection.

Install the OpenVPN software ( ) at SITE2 and SITE1

At SITE2 set up the server, generate certificates for server and client in the easy-rsa folder of OpenVPN
At SITE1 set up the client, copy the certificates from the server

# the ip of the vpn server machine
port 1194
proto udp
dev tap
dev tun
ca "C:\\Program Files (x86)\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files (x86)\\OpenVPN\\easy-rsa\\keys\\server.crt"
key "C:\\Program Files (x86)\\OpenVPN\\easy-rsa\\keys\\server.key"  # This file should be kept secret
dh "C:\\Program Files (x86)\\OpenVPN\\easy-rsa\\keys\\dh1024.pem"
# this will redirect all traffic, even HTTP, over the vpn tunnel
push "redirect-gateway def1"
# this will enable DNS lookup over the VPN tunnel
push "dhcp-option DNS"


remote 1194
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\client1.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\client1.key"

In windows networking select the default ethernet connection "Local Network Connection" Control Panel\All Control Panel Items\Network and Sharing Center and when the dialog appears, check "Allow network users to connect through this computer's internet connection". Select Local Area Connection 2, which should be Your VPN connection interface

Start server, connect client, and bada-bing, you're now surfing through a VPN tunnel.
Of course this would be a good way to access Your home computer from work to do all the private surfing hidden from the eyes of your friendly IT-administrator.