diff --git a/mobile/res/values/strings.xml b/mobile/res/values/strings.xml
index 0f84061c..bbbb5fb8 100644
--- a/mobile/res/values/strings.xml
+++ b/mobile/res/values/strings.xml
@@ -135,6 +135,8 @@
How often IITCm should search for new plugin versions
Force plugin update
Update all enabled user plugins
+ Require secure updates
+ If enabled, only https updates are handled
- System Bar
diff --git a/mobile/res/xml/preferences.xml b/mobile/res/xml/preferences.xml
index 5978e5f1..c3d8e6ef 100644
--- a/mobile/res/xml/preferences.xml
+++ b/mobile/res/xml/preferences.xml
@@ -106,6 +106,11 @@
android:key="pref_force_plugin_update"
android:title="@string/pref_force_plugin_update"
android:summary="@string/pref_force_plugin_update_sum"/>
+
{
private final Activity mActivity;
private String mFilePath;
private String mScript;
+ private HashMap mScriptInfo;
public UpdateScript(final Activity activity) {
mActivity = activity;
@@ -34,20 +36,28 @@ public class UpdateScript extends AsyncTask {
mFilePath = urls[0];
// get local script meta information
mScript = IITC_FileManager.readStream(new FileInputStream(new File(mFilePath)));
- final String updateURL = IITC_FileManager.getScriptInfo(mScript).get("updateURL");
- final String downloadURL = IITC_FileManager.getScriptInfo(mScript).get("downloadURL");
+ mScriptInfo = IITC_FileManager.getScriptInfo(mScript);
+ String updateURL = mScriptInfo.get("updateURL");
+ final String downloadURL = mScriptInfo.get("downloadURL");
+ if (updateURL == null) updateURL = downloadURL;
+
+ // check for https protocol
+ final URL url = new URL(updateURL);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);
+ Boolean secureUpdates = prefs.getBoolean("pref_secure_updates", true);
+ if (!url.getProtocol().equals("https") && secureUpdates) return false;
// get remote script meta information
- final File file_old = new File(mFilePath);
- final InputStream is = new URL(updateURL).openStream();
- final String old_version = IITC_FileManager.getScriptInfo(mScript).get("version");
- final String new_version = IITC_FileManager.getScriptInfo(IITC_FileManager.readStream(is)).get("version");
+ final InputStream is = url.openStream();
+ final String remote_version = IITC_FileManager.getScriptInfo(IITC_FileManager.readStream(is)).get("version");
+ final File local_file = new File(mFilePath);
+ final String local_version = mScriptInfo.get("version");
// update script if neccessary
- if (old_version.compareTo(new_version) < 0) {
- Log.d("plugin " + mFilePath + " outdated\n" + old_version + " vs " + new_version);
+ if (local_version.compareTo(remote_version) < 0) {
+ Log.d("plugin " + mFilePath + " outdated\n" + local_version + " vs " + remote_version);
Log.d("updating file....");
- IITC_FileManager.copyStream(new URL(downloadURL).openStream(), new FileOutputStream(file_old), true);
+ IITC_FileManager.copyStream(new URL(downloadURL).openStream(), new FileOutputStream(local_file), true);
Log.d("...done");
return true;
}
diff --git a/mobile/src/com/cradle/iitc_mobile/prefs/ForceUpdatePreference.java b/mobile/src/com/cradle/iitc_mobile/prefs/ForceUpdatePreference.java
index 1cb5bcb2..f0341b6a 100644
--- a/mobile/src/com/cradle/iitc_mobile/prefs/ForceUpdatePreference.java
+++ b/mobile/src/com/cradle/iitc_mobile/prefs/ForceUpdatePreference.java
@@ -9,11 +9,6 @@ import android.util.AttributeSet;
import com.cradle.iitc_mobile.R;
-/**
- * The OptionDialogPreference will display a dialog, and will persist the
- * true
when pressing the positive button and false
- * otherwise. It will persist to the android:key specified in xml-preference.
- */
public class ForceUpdatePreference extends Preference {
public ForceUpdatePreference(Context context, AttributeSet attrs) {