Browse Source

Fix for Torrentflux-b4rt installs in the web root (so with no folder setting).

pull/82/head
Eric Kok 11 years ago
parent
commit
c6e79aa342
  1. 47
      lib/src/org/transdroid/daemon/Tfb4rt/Tfb4rtAdapter.java

47
lib/src/org/transdroid/daemon/Tfb4rt/Tfb4rtAdapter.java

@ -51,13 +51,10 @@ import com.android.internalcopy.http.multipart.FilePart; @@ -51,13 +51,10 @@ import com.android.internalcopy.http.multipart.FilePart;
import com.android.internalcopy.http.multipart.MultipartEntity;
import com.android.internalcopy.http.multipart.Part;
/**
* An adapter that allows for easy access to Torrentflux-b4rt installs. Communication
* is handled via HTTP GET requests and XML responses.
*
* An adapter that allows for easy access to Torrentflux-b4rt installs. Communication is handled via HTTP GET requests
* and XML responses.
* @author erickok
*
*/
public class Tfb4rtAdapter implements IDaemonAdapter {
@ -90,19 +87,19 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -90,19 +87,19 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
case Retrieve:
// Request all torrents from server
return new RetrieveTaskSuccessResult((RetrieveTask) task, makeStatsRequest(),null);
return new RetrieveTaskSuccessResult((RetrieveTask) task, makeStatsRequest(), null);
case AddByFile:
// Add a torrent to the server by sending the contents of a local .torrent file
String file = ((AddByFileTask)task).getFile();
String file = ((AddByFileTask) task).getFile();
makeFileUploadRequest("fileUpload", file);
return null;
case AddByUrl:
// Request to add a torrent by URL
String url = ((AddByUrlTask)task).getUrl();
String url = ((AddByUrlTask) task).getUrl();
makeActionRequest("urlUpload", url);
return new DaemonTaskSuccessResult(task);
@ -110,7 +107,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -110,7 +107,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
// Remove a torrent
RemoveTask removeTask = (RemoveTask) task;
makeActionRequest((removeTask.includingData()? "deleteWithData": "delete"), task.getTargetTorrent().getUniqueID());
makeActionRequest((removeTask.includingData() ? "deleteWithData" : "delete"), task.getTargetTorrent()
.getUniqueID());
return new DaemonTaskSuccessResult(task);
case Pause:
@ -144,7 +142,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -144,7 +142,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
return null;
default:
return new DaemonTaskFailureResult(task, new DaemonException(ExceptionType.MethodUnsupported, task.getMethod() + " is not supported by " + getType()));
return new DaemonTaskFailureResult(task, new DaemonException(ExceptionType.MethodUnsupported,
task.getMethod() + " is not supported by " + getType()));
}
} catch (DaemonException e) {
return new DaemonTaskFailureResult(task, e);
@ -190,7 +189,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -190,7 +189,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
}
// Make request
HttpGet httpget = new HttpGet(buildWebUIUrl(RPC_URL_DISPATCH + action + RPC_URL_DISPATCH2 + RPC_URL_AID + (action.equals("urlUpload")? RPC_URL_URL: RPC_URL_TRANSFER) + target));
HttpGet httpget = new HttpGet(buildWebUIUrl(RPC_URL_DISPATCH + action + RPC_URL_DISPATCH2 + RPC_URL_AID
+ (action.equals("urlUpload") ? RPC_URL_URL : RPC_URL_TRANSFER) + target));
HttpResponse response = httpclient.execute(httpget);
// Read response (a successful action always returned '1')
@ -261,15 +261,22 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -261,15 +261,22 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
/**
* Build the URL of specific Torrentflux site request from the user settings and some requested action.
* @param act The action to perform, which is an already build query string without usernmae/password, i.e. dispatcher.php?action=stop&transfer=ubuntu.torrent
* @return The URL of a specific request, i.e. http://localhost:80/turrentflux/dispatcher.php?action=stop&transfer=ubuntu.torrent&username=admin&md5pass=asd98as7d
* @param act The action to perform, which is an already build query string without usernmae/password, i.e.
* dispatcher.php?action=stop&transfer=ubuntu.torrent
* @return The URL of a specific request, i.e.
* http://localhost:80/turrentflux/dispatcher.php?action=stop&transfer=ubuntu
* .torrent&username=admin&md5pass=asd98as7d
*/
private String buildWebUIUrl(String act) {
String folder = settings.getFolder().endsWith("/")?
settings.getFolder().substring(0, settings.getFolder().length() - 1):
settings.getFolder();
return (settings.getSsl() ? "https://" : "http://") + settings.getAddress() + ":" + settings.getPort() +
folder + act + RPC_URL_USER + settings.getUsername() + RPC_URL_PASS + md5Pass((settings.getPassword() == null? "": settings.getPassword()));
String folder = "";
if (settings.getFolder() != null) {
folder = settings.getFolder();
if (folder.endsWith("/"))
folder = folder.substring(0, folder.length() - 1);
}
return (settings.getSsl() ? "https://" : "http://") + settings.getAddress() + ":" + settings.getPort() + folder
+ act + RPC_URL_USER + settings.getUsername() + RPC_URL_PASS
+ md5Pass((settings.getPassword() == null ? "" : settings.getPassword()));
}
/**
@ -281,8 +288,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter { @@ -281,8 +288,8 @@ public class Tfb4rtAdapter implements IDaemonAdapter {
try {
MessageDigest m = MessageDigest.getInstance("MD5");
byte[] data = pass.getBytes();
m.update(data,0,data.length);
BigInteger i = new BigInteger(1,m.digest());
m.update(data, 0, data.length);
BigInteger i = new BigInteger(1, m.digest());
return String.format("%1$032X", i);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();

Loading…
Cancel
Save