public static final int VPN_STATE_NOTIFICATION_ID = 1;
private String mLogFile;
+ private String mAppDir;
private VpnProfileDataSource mDataSource;
private Thread mConnectionHandler;
private VpnProfile mCurrentProfile;
public void onCreate()
{
mLogFile = getFilesDir().getAbsolutePath() + File.separator + LOG_FILE;
+ mAppDir = getFilesDir().getAbsolutePath();
mDataSource = new VpnProfileDataSource(this);
mDataSource.open();
addNotification();
BuilderAdapter builder = new BuilderAdapter(mCurrentProfile);
- if (initializeCharon(builder, mLogFile, mCurrentProfile.getVpnType().has(VpnTypeFeature.BYOD)))
+ if (initializeCharon(builder, mLogFile, mAppDir, mCurrentProfile.getVpnType().has(VpnTypeFeature.BYOD)))
{
Log.i(TAG, "charon started");
SettingsWriter writer = new SettingsWriter();
*
* @param builder BuilderAdapter for this connection
* @param logfile absolute path to the logfile
+ * @param appdir absolute path to the data directory of the app
* @param byod enable BYOD features
* @return TRUE if initialization was successful
*/
- public native boolean initializeCharon(BuilderAdapter builder, String logfile, boolean byod);
+ public native boolean initializeCharon(BuilderAdapter builder, String logfile, String appdir, boolean byod);
/**
* Deinitialize charon, provided by libandroidbridge.so
* Initialize the charonservice object
*/
static void charonservice_init(JNIEnv *env, jobject service, jobject builder,
- jboolean byod)
+ char *appdir, jboolean byod)
{
private_charonservice_t *this;
static plugin_feature_t features[] = {
* Initialize charon and the libraries via JNI
*/
JNI_METHOD(CharonVpnService, initializeCharon, jboolean,
- jobject builder, jstring jlogfile, jboolean byod)
+ jobject builder, jstring jlogfile, jstring jappdir, jboolean byod)
{
struct sigaction action;
struct utsname utsname;
- char *logfile, *plugins;
+ char *logfile, *appdir, *plugins;
/* logging for library during initialization, as we have no bus yet */
dbg = dbg_android;
charon->load_loggers(charon);
- charonservice_init(env, this, builder, byod);
+ appdir = androidjni_convert_jstring(env, jappdir);
+ charonservice_init(env, this, builder, appdir, byod);
+ free(appdir);
if (uname(&utsname) != 0)
{