- Make everything faster
- New feature: the app can use DNS servers listening on alternate ports (ur0011)
- New feature: the app can now be activated as a Device Administrator (ur0020)
- New feature: support for 64-bit architectures in setools-android
- New feature: auto clear notification (ur0031)
- New feature: custom notification priority (ur0032)
- Migrate root library from RootCommands to libsuperuser
- Add OpenDNS on port 443 in the predefined list of available servers
- Ask again for root permissions after an upgrade
- Add iptables cleanup procedure in the Advanced settings
- Upgrade gradle, EventBus, setools-android, android-rate, showcaseview, dashclock-api
- New library: vntnumberpickerpreference
- bugfix when busybox replaces toolbox/toybox
- bugfixes
Category Archives: Programming
Override DNS is #malicious-harmful!?
Hi guys,
my app is temporarily out of the Play Store. I hope it’s really a temporary thing.
It seems that my last beta (beta78), the one available only to the beta testers, was not compliant to the 4.4 section of the Developer Distribution Agreement. But let me explain in the right order.
50 minutes ago I received an e-mail from the Google Play Support. It was notifying me of some kind of violation. The e-mail was referring to the app: “Virtual Button ROOT MENU” (package ID jp.ne.neko.freewing.VirtualButtonRootMenu
).
It seems that that app, which disables SELinux, violates the Developer Distribution Agreement
Don’t transmit or link to… items that may introduce security vulnerabilities to or harm user devices, apps, or personal data.
OK.
I’m serious it wasn’t some kind of phishing, they simply sent me the right notice but referring to someone else.
My latest beta has an advanced option which, if chosen, temporary lowers the device security by disabling SELinux on the device. It applies the DNS and brings SELinux back again. So it seems I’m guilty.
And now
Disabling SELinux is not approved by the Play Store.
In my humble opinion it was not so obvious, but anyway, I repackaged a stable release and a beta without the SELinux thing. I’m waiting to see my app online again.
Statically compile redis 3.0.2 on CentOS 5 (RHEL 5)
How to statically compile redis 3.0.2 on CentOS 5 (RHEL 5)
wget http://download.redis.io/releases/redis-3.0.2.tar.gz
wget http://prdownloads.sourceforge.net/tcl/tcl8.5.18-src.tar.gz
Install tcl8.5
tar xfz tcl8.5.18-src.tar.gz
cd tcl8.5.18/unix
./configure
make
make test
make install
Compile redis
Statically linked binaries
make CFLAGS="-static" EXEEXT="-static" LDFLAGS="-I/usr/local/include/"
Dynamically linked binaries
make LDFLAGS="-I/usr/local/include/"
How to manually install redis
cd src/
cp redis-{server,cli} /usr/local/bin/
chown root: /usr/local/bin/redis-{server,cli}
chmod 755 /usr/local/bin/redis-{server,cli}
mkdir /{var,etc}/redis /var/redis/6379
chmod 775 /{var,etc}/redis
cp redis.conf /etc/redis/6379.conf
sed -i 's/daemonize no/daemonize yes/' /etc/redis/6379.conf
sed -i 's,pidfile /var/run/redis.pid,pidfile /var/run/redis_6379.pid,' /etc/redis/6379.conf
sed -i 's/^# bind 127.0.0.1/bind 127.0.0.1/' /etc/redis/6379.conf
sed -i 's,logfile "",logfile "/var/log/redis_6379.log",' /etc/redis/6379.conf
sed -i 's,dir ./,dir /var/redis/6379,' /etc/redis/6379.conf
How to compile rsync for Android in Ubuntu
My situation
My machine
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
The latest rsync version to compile (for me it was rsync-3.1.0.tar.gz)
$ curl -s http://rsync.samba.org/ftp/rsync/ \
| sed -r 's/^.*href="([^"]*)".*$/\1/' | grep 'rsync-[0-9].*\.tar\.gz$'
Procedure
- save the tarball name in a variable
$ RSYNCTGZ="rsync-3.1.0.tar.gz"
- install needed software
$ sudo aptitude install gcc-arm-linux-gnueabi
- download sources
$ wget http://rsync.samba.org/ftp/rsync/$RSYNCTGZ $ tar xzf $RSYNCTGZ $ cd rsync-[0-9]*
- compile
$ ./configure --host=arm-linux-gnueabi CFLAGS=-static $ make
- install on the device
$ adb push rsync /data/local/tmp && adb shell chmod 775 /data/local/tmp/rsync
- test execution
$ adb shell /data/local/tmp/rsync
References
Override DNS for KitKat – first release
Override DNS for KitKat has been released
Override DNS is the easiest way to force your rooted phone to use custom nameservers on mobile networks.
Many things dealing with name resolution have changed in Android 4.4 KitKat and so all the current Play Store apps stopped working.
The problem I found with this release of Android (4.4) is that, apparently for caching reasons, the system behaviour has been changed to redirect all DNS queries to a system daemon called netd
(here’s a link to a presentation related to Android networking before 4.4 which, however, covers part of this topics).
The getprop
/setprop
method used by all the DNS changer apps does not work anymore. Those values, when changed, get simply ignored by the netd
daemon.
It’s necessary to communicate directly to the daemon via the /dev/socket/netd
socket.
The app automatically guesses the network device name and applies the right commands each time a mobile network gets activated.