package io.scal.secureshareui.login;
import info.guardianproject.netcipher.proxy.OrbotHelper;
import info.guardianproject.netcipher.web.WebkitProxy;
import timber.log.Timber;
import io.scal.secureshareui.lib.Util;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class FlickrWebActivity extends LockableActivity {
private static final String TAG = "FlickrWebActivity";
// FIXME security: we need to override the webviews cache, cookies, formdata cache to store only in sqlcipher/iocipher, currently it hits disk and then we clear it
private WebView mWebview;
@SuppressLint("SetJavaScriptEnabled")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Timber.d("onCreate()");
String url = null;
Bundle extras = getIntent().getExtras();
if (extras != null) {
url = extras.getString("authURL");
}
if ((url == null) || (url.length() == 0)) {
Timber.e("no url found");
return;
}
// check for tor settings and set proxy
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean useTor = settings.getBoolean("pusetor", false);
mWebview = new WebView(this);
if (useTor) {
Timber.d("user selected \"use tor\"");
if ((!OrbotHelper.isOrbotInstalled(getApplicationContext())) || (!OrbotHelper.isOrbotRunning(getApplicationContext()))) {
Timber.e("user selected \"use tor\" but orbot is not installed or not running");
return;
} else {
try {
WebkitProxy.setProxy("android.app.Application", getApplicationContext(), mWebview, Util.ORBOT_HOST, Util.ORBOT_HTTP_PORT);
} catch (Exception e) {
Timber.e("user selected \"use tor\" but an exception was thrown while setting the proxy: " + e.getLocalizedMessage());
return;
}
}
} else {
Timber.d("user selected \"don't use tor\"");
}
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.setVisibility(View.VISIBLE);
setContentView(mWebview);
mWebview.setWebViewClient(new WebViewClient() {
Intent resultIntent = new Intent();
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("oauth_token=") && url.contains("oauth_verifier=")) {
Uri uri = Uri.parse(url);
String token = uri.getQueryParameter("oauth_token");
String verifier = uri.getQueryParameter("oauth_verifier");
resultIntent.putExtra("token", token);
resultIntent.putExtra("verifier", verifier);
setResult(Activity.RESULT_OK, resultIntent);
finish();
return true;
} else {
return super.shouldOverrideUrlLoading(view, url);
}
}
});
mWebview.loadUrl(url);
}
@Override
public void finish() {
Timber.d("finish()");
super.finish();
Util.clearWebviewAndCookies(mWebview, this);
}
}