From fb3772ec951e9439293a9c04b4afb86478288346 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 19 Jun 2018 11:15:16 +0200 Subject: [PATCH] android: Log retries to the same log file It's cleared when a new connection is started or there is a manual retry. --- .../org/strongswan/android/logic/CharonVpnService.java | 8 ++++++++ .../org/strongswan/android/logic/VpnStateService.java | 4 ++++ .../app/src/main/jni/libandroidbridge/charonservice.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java index 7910f7d52..8d9284fcc 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java @@ -79,6 +79,7 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe public static final String DISCONNECT_ACTION = "org.strongswan.android.CharonVpnService.DISCONNECT"; private static final String NOTIFICATION_CHANNEL = "org.strongswan.android.CharonVpnService.VPN_STATE_NOTIFICATION"; public static final String LOG_FILE = "charon.log"; + public static final String KEY_IS_RETRY = "retry"; public static final int VPN_STATE_NOTIFICATION_ID = 1; private String mLogFile; @@ -137,6 +138,7 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe if (intent != null) { VpnProfile profile = null; + boolean retry = false; if (VPN_SERVICE_ACTION.equals(intent.getAction())) { /* triggered when Always-on VPN is activated */ @@ -159,12 +161,18 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe String password = bundle.getString(VpnProfileDataSource.KEY_PASSWORD); profile.setPassword(password); + retry = bundle.getBoolean(CharonVpnService.KEY_IS_RETRY, false); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); pref.edit().putString(Constants.PREF_MRU_VPN_PROFILE, profile.getUUID().toString()) .apply(); } } } + if (profile != null && !retry) + { /* delete the log file if this is not an automatic retry */ + deleteFile(LOG_FILE); + } setNextProfile(profile); } return START_NOT_STICKY; diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java index 63b54cd2b..9982d56a4 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java @@ -295,6 +295,10 @@ public class VpnStateService extends Service /* reset if this is a manual retry or a new connection */ mTimeoutProvider.reset(); } + else + { /* mark this as an automatic retry */ + profileInfo.putBoolean(CharonVpnService.KEY_IS_RETRY, true); + } intent.putExtras(profileInfo); context.startService(intent); } diff --git a/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c b/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c index 06c5cada4..cb9dfa807 100644 --- a/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c +++ b/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c @@ -469,7 +469,7 @@ static void set_options(char *logfile) lib->settings->set_str(lib->settings, "charon.filelog.%s.time_format", "%b %e %T", logfile); lib->settings->set_bool(lib->settings, - "charon.filelog.%s.append", FALSE, logfile); + "charon.filelog.%s.append", TRUE, logfile); lib->settings->set_bool(lib->settings, "charon.filelog.%s.flush_line", TRUE, logfile); lib->settings->set_int(lib->settings,