1
0
mirror of http://galexander.org/git/simplesshd.git synced 2024-11-30 11:18:12 +00:00

when creating the Service, we check for a pid file for an orphaned daemon

process, and if it exists, we kill it.
This commit is contained in:
Greg Alexander 2014-12-16 18:42:37 -05:00
parent e77351edd4
commit 5c01b97345

View File

@ -4,6 +4,9 @@ import android.app.Service;
import android.content.Intent; import android.content.Intent;
import android.content.Context; import android.content.Context;
import android.os.IBinder; import android.os.IBinder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class SimpleSSHDService extends Service { public class SimpleSSHDService extends Service {
public static int sshd_pid = 0; public static int sshd_pid = 0;
@ -11,7 +14,15 @@ public class SimpleSSHDService extends Service {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
Prefs.init(this); Prefs.init(this);
read_pidfile();
if (is_started()) {
/* would prefer to restart the daemon process rather
* than leave the stale one around.. */
stop_sshd();
}
} }
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
@ -81,6 +92,22 @@ public class SimpleSSHDService extends Service {
} }
} }
private static void read_pidfile() {
try {
File f = new File(Prefs.get_path(), "dropbear.pid");
if (f.exists()) {
BufferedReader r = new BufferedReader(
new FileReader(f));
try {
sshd_pid =
Integer.valueOf(r.readLine());
} finally {
r.close();
}
}
} catch (Exception e) { /* *shrug* */ }
}
private native void start_sshd(int port, String path, private native void start_sshd(int port, String path,
String shell, String home); String shell, String home);
private native void stop_sshd(); private native void stop_sshd();