ability to certify files

pull/34/head
Zlatin Balevsky 2019-12-09 16:19:45 +00:00
parent e0d006ec69
commit f69d4027db
4 changed files with 41 additions and 17 deletions

View File

@ -1,5 +1,6 @@
package com.muwire.webui;
import java.io.File;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@ -7,10 +8,12 @@ import java.util.concurrent.ConcurrentHashMap;
import com.muwire.core.Core;
import com.muwire.core.InfoHash;
import com.muwire.core.Persona;
import com.muwire.core.SharedFile;
import com.muwire.core.filecert.Certificate;
import com.muwire.core.filecert.CertificateFetchEvent;
import com.muwire.core.filecert.CertificateFetchStatus;
import com.muwire.core.filecert.CertificateFetchedEvent;
import com.muwire.core.filecert.UICreateCertificateEvent;
import com.muwire.core.filecert.UIFetchCertificatesEvent;
import com.muwire.core.filecert.UIImportCertificateEvent;
@ -74,6 +77,15 @@ public class CertificateManager {
core.getEventBus().publish(event);
}
void certify(File file) {
SharedFile sf = core.getFileManager().getFileToSharedFile().get(file);
if (sf == null)
return;
UICreateCertificateEvent event = new UICreateCertificateEvent();
event.setSharedFile(sf);
core.getEventBus().publish(event);
}
static class CertificateRequest {
private final Persona user;
private final InfoHash infoHash;

View File

@ -1,6 +1,7 @@
package com.muwire.webui;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletConfig;
@ -114,6 +115,14 @@ public class CertificateServlet extends HttpServlet {
return;
}
certificateManager.importCertificate(certificate);
} else if (action.equals("certify")) {
String path = req.getParameter("file");
if (path == null) {
resp.sendError(403,"Bad param");
return;
}
File file = Util.getFromPathElements(path);
certificateManager.certify(file);
}
}

View File

@ -136,7 +136,7 @@ public class FilesServlet extends HttpServlet {
resp.sendError(403,"Bad param");
return;
}
File file = getFromPathElements(pathElements);
File file = Util.getFromPathElements(pathElements);
if (file == null) {
resp.sendError(403, "Bad param");
return;
@ -148,7 +148,7 @@ public class FilesServlet extends HttpServlet {
resp.sendError(403,"Bad param");
return;
}
File file = getFromPathElements(pathElements);
File file = Util.getFromPathElements(pathElements);
if (file == null) {
resp.sendError(403, "Bad param");
return;
@ -159,19 +159,5 @@ public class FilesServlet extends HttpServlet {
fileManager.comment(file, comment);
}
}
private static File getFromPathElements(String pathElements) {
File current = null;
for (String element : DataHelper.split(pathElements,",")) {
element = Util.unescapeHTMLinXML(Base64.decodeToString(element));
if (element == null) {
return null;
}
if (current == null)
current = new File(element);
else
current = new File(current, element);
}
return current;
}
}

View File

@ -1,11 +1,13 @@
package com.muwire.webui;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;
import net.i2p.I2PAppContext;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.util.Translate;
@ -88,6 +90,21 @@ public class Util {
}
return unescaped;
}
public static File getFromPathElements(String pathElements) {
File current = null;
for (String element : DataHelper.split(pathElements,",")) {
element = unescapeHTMLinXML(Base64.decodeToString(element));
if (element == null) {
return null;
}
if (current == null)
current = new File(element);
else
current = new File(current, element);
}
return current;
}
/**
* @return a JSON-encoded mapping of translations needed for the javascript,