diff --git a/webui/src/main/java/com/muwire/webui/CertificateManager.java b/webui/src/main/java/com/muwire/webui/CertificateManager.java index 80e252d5..17377a3b 100644 --- a/webui/src/main/java/com/muwire/webui/CertificateManager.java +++ b/webui/src/main/java/com/muwire/webui/CertificateManager.java @@ -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; diff --git a/webui/src/main/java/com/muwire/webui/CertificateServlet.java b/webui/src/main/java/com/muwire/webui/CertificateServlet.java index 3834e8ef..fba1ea6e 100644 --- a/webui/src/main/java/com/muwire/webui/CertificateServlet.java +++ b/webui/src/main/java/com/muwire/webui/CertificateServlet.java @@ -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); } } diff --git a/webui/src/main/java/com/muwire/webui/FilesServlet.java b/webui/src/main/java/com/muwire/webui/FilesServlet.java index d61e76cf..c2c9d897 100644 --- a/webui/src/main/java/com/muwire/webui/FilesServlet.java +++ b/webui/src/main/java/com/muwire/webui/FilesServlet.java @@ -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; - } + } diff --git a/webui/src/main/java/com/muwire/webui/Util.java b/webui/src/main/java/com/muwire/webui/Util.java index a4842c3f..180dea1d 100644 --- a/webui/src/main/java/com/muwire/webui/Util.java +++ b/webui/src/main/java/com/muwire/webui/Util.java @@ -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,