Monday, July 29, 2013

How to manually install the OpenVPN binary

It seems that since the upgrade to Android 4.3 the OpenVPN Installer App is not working for me any more. I get some error saying /system cannot be mounted writeable (rw).
However, it is still possible to install the openvpn binary per hand... and it is not as complicated as it seems! This guide only works on rooted devices and is written for Linux users, however the lower part should also work on Windows and Mac.

At first you need to get the Android Debug Bridge binary and install it on your computer (I just put it into $HOME/bin).
Then download the latest OpenVPN Installer APK - we need to extract the openvpn binary from this package:
wget http://android-openvpn-installer.googlecode.com/files/OpenVPN-Installer-0.2.4.apk
To extract the xbin-binary, you can use FileRoller on Gnome or any other tool. Here is an example of how do it with the terminal only:
unzip OpenVPN-Installer-0.2.4.apk assets/openvpn-2.1.1-static-xbin
mv assets/openvpn-2.1.1-static-xbin openvpn
rm -r assets
Now use adb to push the binary to your phone/tablet's "sdcard" (external storage):
adb push openvpn /sdcard/
The next two commands will open a shell and give us root access on your Android device. Everything you type afterwards happens directly on your device, so be careful!
adb shell
su
Now we need to mount /system as writeable to be able to make changes. Next we copy the binary to its final location and delete it on the sdcard (unfortunately moving is not possible). After we changed the file-permissions so that the binary can be executed, we need to mount /system as read-only again:
mount -o remount rw /system
cp /sdcard/openvpn /system/xbin/
rm /sdcard/openvpn
chmod 755 /system/xbin/openvpn
mount -o remount ro /system
Everything should be done now. Close the connection to your device by typing exit two times and try to use OpenVPN Settings! The installer app will also show you "Binary installed" if everything worked!

Sunday, July 14, 2013

Rainy can't be built on Debian Wheezy any more - here is a solution!

To be able to build Rainy on Debian Wheezy (and probably also on Ubuntu), you need to do several preparations, because building now depends on NuGet (http://nuget.codeplex.com).
At first you need to install mono-complete, as this tool has many dependencies:

$ sudo apt-get install mono-complete

Then download the nuget command-line utilityhttp://nuget.codeplex.com/releases
Further create a file/script called "nuget" so that nuget.exe is called with our desired options:
#!/bin/bash
mono --runtime=v4.0 /usr/local/bin/nuget.exe "$@"

Copy both files (nuget and nuget.exe) to /usr/local/bin/ and make it executable:

$ sudo cp nuget* /usr/local/bin/
$ sudo chmod a+x /usr/local/bin/nuget


You now can already call nuget in your terminal. However, if it still creates an error, you need to download Microsoft.Build.dll and also copy it to /usr/local/bin. Get it, for example, here: http://headsigned.com/download/running-nuget-command-line-on-linux/Microsoft.Build.zip
This blogpost also explains how to extract the ddl from a working Windows installation in case you don't trust the previous source: http://headsigned.com/article/running-nuget-command-line-on-linux

Now you can try to make Rainy. If it throws an error not being able to download from https://something, import the certificates from Mozilla:

$ mozroots --import --sync

Now it should be able to build Rainy on Debian!

$ git clone https://github.com/Dynalon/Rainy.git
$ cd Rainy
$ make