From 6635c8ffc53091e1a82b1dc7b9646a62cd014be7 Mon Sep 17 00:00:00 2001 From: Eric Kok Date: Wed, 2 Apr 2014 08:38:16 +0200 Subject: [PATCH] Fixed support for Xirvik shared seedboxes (that require loading the RPC mount point from the server). --- core/res/values/changelog.xml | 5 ++ core/res/values/strings.xml | 1 + core/res/xml/pref_seedbox_xirvikshared.xml | 4 + .../core/seedbox/XirvikSharedSettings.java | 6 +- .../seedbox/XirvikSharedSettingsActivity.java | 78 ++++++++++++++++++- 5 files changed, 90 insertions(+), 4 deletions(-) diff --git a/core/res/values/changelog.xml b/core/res/values/changelog.xml index 015d1414..ea548002 100644 --- a/core/res/values/changelog.xml +++ b/core/res/values/changelog.xml @@ -18,6 +18,11 @@ Transdroid 2.1.2\n +- Fixed labeling from details screen\n +- Fixed qBittorrent support\n +- Fixed Xirvik shared seedbox support\n +\n +Transdroid 2.1.2\n - Support for new Torrent Search\'s private sites\n - Added optional auto refresh\n - Allow larger .torrent file uploads with rTorrent\n diff --git a/core/res/values/strings.xml b/core/res/values/strings.xml index 227dacc1..6f15c8ff 100644 --- a/core/res/values/strings.xml +++ b/core/res/values/strings.xml @@ -328,6 +328,7 @@ Like eplus001.xirvik.com Like semixl001a.xirvik.com Like desharedgbit001.xirvik.com + Cannot retrieve the Xirvik SCGI folder setting; please try again later or correct your server address setting Like 001.seedstuff.ca rTorrent diff --git a/core/res/xml/pref_seedbox_xirvikshared.xml b/core/res/xml/pref_seedbox_xirvikshared.xml index 19e629a7..e935de89 100644 --- a/core/res/xml/pref_seedbox_xirvikshared.xml +++ b/core/res/xml/pref_seedbox_xirvikshared.xml @@ -35,5 +35,9 @@ android:key="seedbox_xirvikshared_pass" android:title="@string/pref_pass" android:inputType="textPassword" /> + diff --git a/core/src/org/transdroid/core/seedbox/XirvikSharedSettings.java b/core/src/org/transdroid/core/seedbox/XirvikSharedSettings.java index d172ee16..31e12196 100644 --- a/core/src/org/transdroid/core/seedbox/XirvikSharedSettings.java +++ b/core/src/org/transdroid/core/seedbox/XirvikSharedSettings.java @@ -44,6 +44,7 @@ public class XirvikSharedSettings extends SeedboxSettingsImpl implements Seedbox } String user = prefs.getString("seedbox_xirvikshared_user_" + order, null); String pass = prefs.getString("seedbox_xirvikshared_pass_" + order, null); + String rpc = prefs.getString("seedbox_xirvikshared_rpc_" + order, null); return new ServerSetting( orderOffset + order, prefs.getString("seedbox_xirvikshared_name_" + order, null), @@ -56,7 +57,7 @@ public class XirvikSharedSettings extends SeedboxSettingsImpl implements Seedbox true, true, null, - "/RPC2", + rpc, true, user, pass, @@ -85,7 +86,8 @@ public class XirvikSharedSettings extends SeedboxSettingsImpl implements Seedbox @Override public void removeServerSetting(SharedPreferences prefs, int order) { removeServerSetting(prefs, "seedbox_xirvikshared_server_", new String[] { "seedbox_xirvikshared_name_", - "seedbox_xirvikshared_server_", "seedbox_xirvikshared_user_", "seedbox_xirvikshared_pass_" }, order); + "seedbox_xirvikshared_server_", "seedbox_xirvikshared_user_", "seedbox_xirvikshared_pass_", + "seedbox_xirvikshared_rpc_" }, order); } } diff --git a/core/src/org/transdroid/core/seedbox/XirvikSharedSettingsActivity.java b/core/src/org/transdroid/core/seedbox/XirvikSharedSettingsActivity.java index 90affa9f..2f715ed5 100644 --- a/core/src/org/transdroid/core/seedbox/XirvikSharedSettingsActivity.java +++ b/core/src/org/transdroid/core/seedbox/XirvikSharedSettingsActivity.java @@ -16,22 +16,35 @@ */ package org.transdroid.core.seedbox; +import java.io.InputStream; + import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; import org.transdroid.core.R; +import org.transdroid.core.gui.log.Log; +import org.transdroid.core.gui.navigation.NavigationHelper; +import org.transdroid.core.gui.settings.KeyBoundPreferencesActivity; import org.transdroid.core.gui.settings.*; +import org.transdroid.daemon.util.HttpHelper; import android.annotation.TargetApi; import android.content.Intent; import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.preference.EditTextPreference; import android.preference.PreferenceManager; +import de.keyboardsurfer.android.widget.crouton.Crouton; /** - * Activity that allows for the configuration of a Xirvik shared seedbox. The key can be supplied to update an - * existing server setting instead of creating a new one. + * Activity that allows for the configuration of a Xirvik shared seedbox. The key can be supplied to update an existing + * server setting instead of creating a new one. * @author Eric Kok */ @EActivity @@ -52,7 +65,68 @@ public class XirvikSharedSettingsActivity extends KeyBoundPreferencesActivity { initTextPreference("seedbox_xirvikshared_server"); initTextPreference("seedbox_xirvikshared_user"); initTextPreference("seedbox_xirvikshared_pass"); + initTextPreference("seedbox_xirvikshared_rpc"); + + } + + @Override + protected void onPreferencesChanged() { + + new AsyncTask() { + @Override + protected String doInBackground(Void... params) { + try { + + // When the shared server settings change, we also have to update the RPC mount point to use + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(XirvikSharedSettingsActivity.this); + String server = prefs.getString("seedbox_xirvikshared_server_" + key, null); + String user = prefs.getString("seedbox_xirvikshared_user_" + key, null); + String pass = prefs.getString("seedbox_xirvikshared_pass_" + key, null); + + // Retrieve the RPC mount point setting from the server itself + DefaultHttpClient httpclient = HttpHelper.createStandardHttpClient(true, user, pass, true, null, + HttpHelper.DEFAULT_CONNECTION_TIMEOUT, server, 443); + String url = "https://" + server + ":443/browsers_addons/transdroid_autoconf.txt"; + HttpResponse request = httpclient.execute(new HttpGet(url)); + InputStream stream = request.getEntity().getContent(); + String folder = HttpHelper.convertStreamToString(stream).trim(); + if (folder.startsWith("