mirror of https://github.com/zlatinb/muwire
remove .orig
parent
afb92b0e4e
commit
37dcedb99b
|
@ -1,706 +0,0 @@
|
|||
class SearchStatus {
|
||||
constructor(xmlNode) {
|
||||
this.revision = xmlNode.getElementsByTagName("Revision")[0].childNodes[0].nodeValue
|
||||
this.query = xmlNode.getElementsByTagName("Query")[0].childNodes[0].nodeValue
|
||||
this.uuid = xmlNode.getElementsByTagName("uuid")[0].childNodes[0].nodeValue
|
||||
this.senders = xmlNode.getElementsByTagName("Senders")[0].childNodes[0].nodeValue
|
||||
this.results = xmlNode.getElementsByTagName("Results")[0].childNodes[0].nodeValue
|
||||
}
|
||||
}
|
||||
|
||||
class SearchBySender {
|
||||
constructor(xmlNode) {
|
||||
this.resultBatches = new Map();
|
||||
|
||||
var resultsBySender = xmlNode.getElementsByTagName("ResultsBySender")[0];
|
||||
var resultsFromSenders = resultsBySender.getElementsByTagName("ResultsFromSender");
|
||||
var i;
|
||||
for (i = 0; i < resultsFromSenders.length; i++) {
|
||||
var results = new ResultsBySender(resultsFromSenders[i]);
|
||||
this.resultBatches.set(results.sender, results);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SearchByFile {
|
||||
constructor(xmlNode) {
|
||||
this.resultBatches = new Map();
|
||||
|
||||
var resultsByFile = xmlNode.getElementsByTagName("ResultsByFile")[0];
|
||||
var resultsForFile = resultsByFile.getElementsByTagName("ResultsForFile");
|
||||
var i;
|
||||
for (i = 0; i < resultsForFile.length; i++) {
|
||||
var results = new ResultsByFile(resultsForFile[i]);
|
||||
this.resultBatches.set(results.infoHash, results);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ResultsBySender {
|
||||
constructor(xmlNode) {
|
||||
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
|
||||
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
|
||||
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
|
||||
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
|
||||
this.trust = xmlNode.getElementsByTagName("Trust")[0].childNodes[0].nodeValue;
|
||||
this.results = new Map();
|
||||
var resultNodes = xmlNode.getElementsByTagName("Result");
|
||||
var i;
|
||||
for (i = 0 ; i < resultNodes.length; i ++) {
|
||||
var result = new ResultBySender(resultNodes[i]);
|
||||
this.results.set(result.infoHash,result);
|
||||
}
|
||||
}
|
||||
|
||||
getTrustLinks() {
|
||||
if (this.trust == "NEUTRAL")
|
||||
return this.getTrustLink() + this.getDistrustLink()
|
||||
else if (this.trust == "TRUSTED")
|
||||
return this.getNeutralLink() + this.getDistrustLink()
|
||||
else
|
||||
return this.getTrustLink() + this.getNeutralLink()
|
||||
}
|
||||
|
||||
getTrustLink() {
|
||||
return "<span id='trusted-link-" + this.senderB64 + "'>" +
|
||||
"<a href='#' onclick='window.markTrusted(\"" +
|
||||
this.senderB64 + "\"); return false;'>" + _t("Mark Trusted") + "</a></span><span id='trusted-" +
|
||||
this.senderB64 + "'></span>"
|
||||
}
|
||||
|
||||
getNeutralLink() {
|
||||
return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>" + _t("Mark Neutral") + "</a>"
|
||||
}
|
||||
|
||||
getDistrustLink() {
|
||||
return "<span id='distrusted-link-" + this.senderB64 + "'>" +
|
||||
"<a href='#' onclick='window.markDistrusted(\"" +
|
||||
this.senderB64 + "\"); return false;'>" + _t("Mark Distrusted") + "</a></span><span id='distrusted-" +
|
||||
this.senderB64 + "'></span>"
|
||||
}
|
||||
}
|
||||
|
||||
class ResultsByFile {
|
||||
constructor(xmlNode) {
|
||||
this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue;
|
||||
this.infoHash = xmlNode.getElementsByTagName("InfoHash")[0].childNodes[0].nodeValue;
|
||||
this.size = xmlNode.getElementsByTagName("Size")[0].childNodes[0].nodeValue;
|
||||
this.downloading = xmlNode.getElementsByTagName("Downloading")[0].childNodes[0].nodeValue;
|
||||
this.results = new Map();
|
||||
var resultNodes = xmlNode.getElementsByTagName("Result");
|
||||
var i;
|
||||
for (i = 0; i < resultNodes.length; i++) {
|
||||
var result = new ResultByFile(resultNodes[i]);
|
||||
this.results.set(result.sender, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ResultBySender {
|
||||
constructor(xmlNode) {
|
||||
this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue;
|
||||
this.size = xmlNode.getElementsByTagName("Size")[0].childNodes[0].nodeValue;
|
||||
this.infoHash = xmlNode.getElementsByTagName("InfoHash")[0].childNodes[0].nodeValue;
|
||||
this.downloading = xmlNode.getElementsByTagName("Downloading")[0].childNodes[0].nodeValue;
|
||||
this.comment = null;
|
||||
var comment = xmlNode.getElementsByTagName("Comment")
|
||||
if (comment.length == 1)
|
||||
this.comment = comment[0].childNodes[0].nodeValue;
|
||||
this.certificates = xmlNode.getElementsByTagName("Certificates")[0].childNodes[0].nodeValue
|
||||
}
|
||||
|
||||
getCertificatesBlock() {
|
||||
if (this.certificates == "0")
|
||||
return ""
|
||||
var linkText = _t("View {0} Certificates", this.certificates)
|
||||
var link = "<a href='#' onclick='window.viewCertificatesBySender(\"" + this.infoHash + "\",\"" + this.certificates + "\");return false;'>" +
|
||||
linkText + "</a>"
|
||||
var id = senderB64 + "_" + this.infoHash
|
||||
var html = "<div id='certificates-link-" + id +"'>" + link + "</div><div id='certificates-" + id +"'></div>"
|
||||
return html
|
||||
}
|
||||
}
|
||||
|
||||
class ResultByFile {
|
||||
constructor(xmlNode) {
|
||||
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
|
||||
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
|
||||
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
|
||||
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
|
||||
this.trust = xmlNode.getElementsByTagName("Trust")[0].childNodes[0].nodeValue;
|
||||
this.comment = null;
|
||||
var comment = xmlNode.getElementsByTagName("Comment")
|
||||
if (comment.length == 1)
|
||||
this.comment = comment[0].childNodes[0].nodeValue;
|
||||
this.certificates = xmlNode.getElementsByTagName("Certificates")[0].childNodes[0].nodeValue
|
||||
}
|
||||
|
||||
getCertificatesBlock() {
|
||||
if (this.certificates == "0")
|
||||
return ""
|
||||
var linkText = _t("View {0} Certificates", this.certificates)
|
||||
var link = "<a href='#' onclick='window.viewCertificatesByFile(\"" + this.senderB64 + "\",\"" + this.certificates + "\");return false;'>" + linkText + "</a>"
|
||||
var id = this.senderB64 + "_" + infoHash
|
||||
var html = "<div id='certificates-link-" + id +"'>" + link + "</div><div id='certificates-" + id +"'></div>"
|
||||
return html
|
||||
}
|
||||
|
||||
getTrustLinks() {
|
||||
if (this.trust == "NEUTRAL")
|
||||
return this.getTrustLink() + this.getDistrustLink()
|
||||
else if (this.trust == "TRUSTED")
|
||||
return this.getNeutralLink() + this.getDistrustLink()
|
||||
else
|
||||
return this.getTrustLink() + this.getNeutralLink()
|
||||
}
|
||||
|
||||
getTrustLink() {
|
||||
return "<span id='trusted-link-" + this.senderB64 + "'>" +
|
||||
"<a href='#' onclick='window.markTrusted(\"" +
|
||||
this.senderB64 + "\"); return false;'>" + _t("Mark Trusted") + "</a></span><span id='trusted-" +
|
||||
this.senderB64 + "'></span>"
|
||||
}
|
||||
|
||||
getNeutralLink() {
|
||||
return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>" + _t("Mark Neutral") + "</a>"
|
||||
}
|
||||
|
||||
getDistrustLink() {
|
||||
return "<span id='distrusted-link-" + this.senderB64 + "'>" +
|
||||
"<a href='#' onclick='window.markDistrusted(\"" +
|
||||
this.senderB64 + "\"); return false;'>" + _t("Mark Distrusted") + "</a></span><span id='distrusted-" +
|
||||
this.senderB64 + "'></span>"
|
||||
}
|
||||
}
|
||||
|
||||
class Certificate {
|
||||
constructor(xmlNode) {
|
||||
this.issuer = xmlNode.getElementsByTagName("Issuer")[0].childNodes[0].nodeVlue
|
||||
this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeVlue
|
||||
this.comment = null
|
||||
try {
|
||||
this.comment = xmlNode.getElementsByTagName("Comment")[0].childNodes[0].nodeVlue
|
||||
} catch(ignore) {}
|
||||
this.timestamp = xmlNode.getElementsByTagName("Timestamp")[0].childNodes[0].nodeVlue
|
||||
this.base64 = xmlNode.getElementsByTagName("Base64")[0].childNodes[0].nodeVlue
|
||||
}
|
||||
|
||||
renderRow() {
|
||||
var commentPresent = "false"
|
||||
if (this.comment != null)
|
||||
commentPresent = "true"
|
||||
|
||||
var html = "<tr>"
|
||||
html += "<td>" + this.issuer + "</td>"
|
||||
html += "<td>" + this.name + "</td>"
|
||||
html += "<td>" + commentPresent + "</td>"
|
||||
html += "<td>" + this.timestamp + "</td>"
|
||||
html += "</tr>"
|
||||
return html
|
||||
}
|
||||
}
|
||||
|
||||
class CertificateResponse {
|
||||
constructor(xmlNode) {
|
||||
this.status = xmlNode.getElementsByTagName("Status")[0].childNodes[0].nodeValue
|
||||
this.total = xmlNode.getElementsByTagName("Total")[0].childNodes[0].nodeValue
|
||||
|
||||
var certNodes = xmlNode.getElementsByTagName("Certificates")[0].getElementsByTagName("Certificate")
|
||||
var i
|
||||
this.certificates = []
|
||||
for (i = 0; i < certNodes.length; i++) {
|
||||
certificates.push( new Certificate(certNodes[i]))
|
||||
}
|
||||
}
|
||||
|
||||
renderTable() {
|
||||
var html = _t("Status") + " " + this.status
|
||||
if (this.certificates.length == 0)
|
||||
return html
|
||||
|
||||
html += " "
|
||||
html += _t("Certificates") + " " + this.certificates.length + "/" + this.total
|
||||
|
||||
var headers = [_t("Issuer"), _t("Name"), _t("Comment"), _t("Timestamp")]
|
||||
html += "<br/>"
|
||||
html += "<table><thead><tr><th>" + headers.join("</th><th>") + "</th></thead><tbody>"
|
||||
var i
|
||||
for(i = 0; i < this.certificates.length; i++) {
|
||||
html += this.certificates[i].renderRow()
|
||||
}
|
||||
html += "</tbody></table>"
|
||||
|
||||
return html
|
||||
}
|
||||
}
|
||||
|
||||
class CertificateFetch {
|
||||
constructor(senderB64, fileInfoHash) {
|
||||
this.senderB64 = senderB64
|
||||
this.fileInfoHash = fileInfoHash
|
||||
this.divId = senderB64 + "_" + fileInfoHash
|
||||
}
|
||||
|
||||
updateTable() {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
|
||||
var block = document.getElementById("certificates-" + this.divId)
|
||||
}
|
||||
}
|
||||
xmlhttp.open("GET", "/MuWire/Certificate", true)
|
||||
xmlhttp.send()
|
||||
}
|
||||
}
|
||||
|
||||
var statusByUUID = new Map()
|
||||
var currentSearchBySender = null
|
||||
var currentSearchByFile = null
|
||||
var currentSender = null
|
||||
var currentFile = null
|
||||
var expandedComments = new Map();
|
||||
var certificateFetches = new Map()
|
||||
|
||||
var uuid = null;
|
||||
var sender = null;
|
||||
var senderB64 = null
|
||||
var lastXML = null;
|
||||
var infoHash = null;
|
||||
|
||||
function showCommentBySender(divId, spanId) {
|
||||
var split = divId.split("_");
|
||||
var commentDiv = document.getElementById(divId);
|
||||
var comment = "<pre>"+ currentSearchBySender.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
|
||||
commentDiv.innerHTML = comment
|
||||
expandedComments.set(divId, comment);
|
||||
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"Sender\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||
var linkSpan = document.getElementById(spanId);
|
||||
linkSpan.innerHTML = hideLink;
|
||||
}
|
||||
|
||||
function showCommentByFile(divId, spanId) {
|
||||
var split = divId.split("_");
|
||||
var commentDiv = document.getElementById(divId);
|
||||
var comment = "<pre>"+currentSearchByFile.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
|
||||
commentDiv.innerHTML = comment
|
||||
expandedComments.set(divId, comment);
|
||||
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"File\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||
var linkSpan = document.getElementById(spanId);
|
||||
linkSpan.innerHTML = hideLink;
|
||||
}
|
||||
|
||||
function hideComment(divId, spanId, byFile) {
|
||||
expandedComments.delete(divId);
|
||||
var commentDiv = document.getElementById(divId);
|
||||
commentDiv.innerHTML = ""
|
||||
var showLink = "<a href='#' onclick='window.showCommentBy"+byFile+"(\"" + divId + "\",\"" + spanId + "\"); return false;'>" + _t("Show Comment") + "</a>";
|
||||
var linkSpan = document.getElementById(spanId);
|
||||
linkSpan.innerHTML = showLink;
|
||||
}
|
||||
|
||||
function download(resultInfoHash) {
|
||||
var xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var resultSpan = document.getElementById("download-"+resultInfoHash);
|
||||
resultSpan.innerHTML = _t("Downloading");
|
||||
}
|
||||
}
|
||||
xmlhttp.open("POST", "/MuWire/Download", true);
|
||||
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
xmlhttp.send(encodeURI("action=start&infoHash="+resultInfoHash+"&uuid="+uuid));
|
||||
}
|
||||
|
||||
function markTrusted(host) {
|
||||
var linkSpan = document.getElementById("trusted-link-"+host)
|
||||
linkSpan.innerHTML = ""
|
||||
|
||||
var textAreaSpan = document.getElementById("trusted-"+host)
|
||||
|
||||
var textbox = "<textarea id='trust-reason-" + host + "'></textarea>"
|
||||
var submitLink = "<a href='#' onclick='window.submitTrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
|
||||
var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
|
||||
|
||||
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
|
||||
|
||||
textAreaSpan.innerHTML = html
|
||||
}
|
||||
|
||||
function markNeutral(host) {
|
||||
publishTrust(host, "", "neutral")
|
||||
}
|
||||
|
||||
function markDistrusted(host) {
|
||||
var linkSpan = document.getElementById("distrusted-link-"+host)
|
||||
linkSpan.innerHTML = ""
|
||||
|
||||
var textAreaSpan = document.getElementById("distrusted-"+host)
|
||||
|
||||
var textbox = "<textarea id='distrust-reason-" + host + "'></textarea>"
|
||||
var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
|
||||
var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
|
||||
|
||||
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
|
||||
|
||||
textAreaSpan.innerHTML = html
|
||||
}
|
||||
|
||||
function submitTrust(host) {
|
||||
var reason = document.getElementById("trust-reason-"+host).value
|
||||
publishTrust(host, reason, "trust")
|
||||
}
|
||||
|
||||
function submitDistrust(host) {
|
||||
var reason = document.getElementById("trust-reason-"+host).value
|
||||
publishTrust(host, reason, "distrust")
|
||||
}
|
||||
|
||||
function cancelTrust(host) {
|
||||
var textAreaSpan = document.getElementById("trusted-" + host)
|
||||
textAreaSpan.innerHTML = ""
|
||||
|
||||
var linkSpan = document.getElementById("trusted-link-"+host)
|
||||
var html = "<a href='#' onclick='markTrusted(\"" + host + "\"); return false;'>" + _t("Mark Trusted") + "</a>"
|
||||
linkSpan.innerHTML = html
|
||||
}
|
||||
|
||||
function cancelDistrust(host) {
|
||||
var textAreaSpan = document.getElementById("distrusted-" + host)
|
||||
textAreaSpan.innerHTML = ""
|
||||
|
||||
var linkSpan = document.getElementById("distrusted-link-"+host)
|
||||
var html = "<a href='#' onclick='markDistrusted(\"" + host + "\"); return false;'>" + _t("Mark Distrusted") + "</a>"
|
||||
linkSpan.innerHTML = html
|
||||
}
|
||||
|
||||
function publishTrust(host, reason, trust) {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
if (refreshType == "Sender")
|
||||
refreshGroupBySender(uuid)
|
||||
else if (refreshType == "File")
|
||||
refreshGroupByFile(uuid)
|
||||
}
|
||||
}
|
||||
xmlhttp.open("POST","/MuWire/Trust", true)
|
||||
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
xmlhttp.send("action=" + trust + "&reason=" + reason + "&persona=" + host)
|
||||
}
|
||||
|
||||
function updateSender(senderName) {
|
||||
sender = senderName;
|
||||
|
||||
var resultsFromSpan = document.getElementById("resultsFrom");
|
||||
resultsFromSpan.innerHTML = _t("Results From {0}", sender);
|
||||
|
||||
var resultsDiv = document.getElementById("bottomTable");
|
||||
var table = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Size") + "</th><th>" + _t("Download") + "</th></tr></thead><tbody>"
|
||||
var x = currentSearchBySender
|
||||
var senderBatch = x.resultBatches.get(sender)
|
||||
senderB64 = senderBatch.senderB64
|
||||
x = senderBatch.results;
|
||||
for (var [resultInfoHash, result] of x) {
|
||||
table += "<tr>";
|
||||
table += "<td>";
|
||||
table += result.name;
|
||||
if (result.comment != null) {
|
||||
var divId = "comment_" + uuid + "_" + senderName + "_" + resultInfoHash;
|
||||
var spanId = "comment-link-"+resultInfoHash + senderName + uuid;
|
||||
var comment = expandedComments.get(divId);
|
||||
if (comment != null) {
|
||||
var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"Sender\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||
table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>";
|
||||
table += "<div id='" + divId + "'>"+comment+"</div>";
|
||||
} else {
|
||||
var link = "<a href='#' onclick='window.showCommentBySender(\"" + divId +
|
||||
"\",\""+spanId+"\");"+
|
||||
"return false;'>" + _t("Show Comment") + "</a>";
|
||||
table += "<br/><span id='"+spanId+"'>"+link+"</span>";
|
||||
table += "<div id='"+divId+"'></div>";
|
||||
}
|
||||
}
|
||||
table += result.getCertificatesBlock()
|
||||
table += "</td>";
|
||||
table += "<td>";
|
||||
table += result.size;
|
||||
table += "</td>";
|
||||
table += "<td>";
|
||||
if (result.downloading == "false") {
|
||||
table += "<span id='download-"+ resultInfoHash+"'><a href='#' onclick='window.download(\"" + resultInfoHash + "\");return false;'>" + _t("Download") + "</a></span>";
|
||||
} else {
|
||||
table += _t("Downloading");
|
||||
}
|
||||
table += "</td>";
|
||||
table += "</tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
if (x.size > 0)
|
||||
resultsDiv.innerHTML = table;
|
||||
}
|
||||
|
||||
function updateFile(fileInfoHash) {
|
||||
infoHash = fileInfoHash;
|
||||
|
||||
var searchResults = currentSearchByFile.resultBatches.get(infoHash);
|
||||
|
||||
var resultsFromSpan = document.getElementById("resultsFrom");
|
||||
resultsFromSpan.innerHTML = "Results For "+searchResults.name;
|
||||
|
||||
var resultsDiv = document.getElementById("bottomTable");
|
||||
var table = "<table><thead><tr><th>" + _t("Sender") + "</th><th>" + _t("Browse") + "</th></tr></thead><tbody>";
|
||||
var i;
|
||||
for (var [senderName, result] of searchResults.results) {
|
||||
table += "<tr>";
|
||||
table += "<td>";
|
||||
table += senderName
|
||||
if (result.comment != null) {
|
||||
var divId = "comment_" + uuid + "_" + fileInfoHash + "_" + senderName;
|
||||
var spanId = "comment-link-" + fileInfoHash + senderName + uuid;
|
||||
var comment = expandedComments.get(divId);
|
||||
if (comment != null) {
|
||||
var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"File\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||
table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>";
|
||||
table += "<div id='" + divId + "'>"+comment+"</div>";
|
||||
} else {
|
||||
var link = "<a href='#' onclick='window.showCommentByFile(\"" + divId +
|
||||
"\",\""+spanId+"\");"+
|
||||
"return false;'>" + _t("Show Comment") + "</a>";
|
||||
table += "<br/><span id='"+spanId+"'>"+link+"</span>";
|
||||
table += "<div id='"+divId+"'></div>";
|
||||
}
|
||||
}
|
||||
table += result.getCertificatesBlock()
|
||||
table += "</td>";
|
||||
if (result.browse == "true") {
|
||||
if (result.browsing == "true")
|
||||
table += "<td>" + _t("Browsing") + "</td>"
|
||||
else {
|
||||
table += "<td><span id='browse-link-" + result.senderB64 + "'>" + getBrowseLink(result.senderB64) + "</span></td>"
|
||||
}
|
||||
}
|
||||
table += "<td>" + result.trust + " " + result.getTrustLinks() + "</td>"
|
||||
table += "</tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
if (searchResults.results.size > 0)
|
||||
resultsDiv.innerHTML = table;
|
||||
}
|
||||
|
||||
function updateUUIDBySender(resultUUID) {
|
||||
uuid = resultUUID;
|
||||
|
||||
var currentStatus = statusByUUID.get(uuid)
|
||||
|
||||
var currentSearchSpan = document.getElementById("currentSearch");
|
||||
currentSearchSpan.innerHTML = currentStatus.query + " Results";
|
||||
|
||||
var sendersDiv = document.getElementById("topTable");
|
||||
var table = "<table><thead><tr><th>" + _t("Sender") + "</th><th>" + _t("Browse") + "</th><th>" + _t("Trust") + "</th></tr></thead><tbody>";
|
||||
var x = currentSearchBySender.resultBatches;
|
||||
for (var [senderName, senderBatch] of x) {
|
||||
table += "<tr><td><a href='#' onclick='updateSender(\""+senderName+"\");return false;'>"
|
||||
table += senderName;
|
||||
table += "</a></td>";
|
||||
if (senderBatch.browse == "true") {
|
||||
if (senderBatch.browsing == "true")
|
||||
table += "<td>" + _t("Browsing") + "</td>"
|
||||
else
|
||||
table += "<td><span id='browse-link-" + senderBatch.senderB64 + "'>" + getBrowseLink(senderBatch.senderB64) + "</span></td>"
|
||||
}
|
||||
table += "<td>" + senderBatch.trust + " "+senderBatch.getTrustLinks() + "</td>"
|
||||
table += "</tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
if (x.size > 0)
|
||||
sendersDiv.innerHTML = table;
|
||||
if (sender != null)
|
||||
updateSender(sender);
|
||||
}
|
||||
|
||||
function updateUUIDByFile(resultUUID) {
|
||||
uuid = resultUUID;
|
||||
|
||||
var currentStatus = statusByUUID.get(uuid)
|
||||
|
||||
var currentSearchSpan = document.getElementById("currentSearch");
|
||||
currentSearchSpan.innerHTML = _t("Results for {0}", currentStatus.query)
|
||||
|
||||
var topTableDiv = document.getElementById("topTable");
|
||||
var table = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Size") + "</th><th>" + _t("Download") + "</th></tr></thead><tbody>";
|
||||
var x = currentSearchByFile.resultBatches;
|
||||
for (var [fileInfoHash, file] of x) {
|
||||
table += "<tr><td><a href='#' onclick='updateFile(\""+fileInfoHash+"\");return false;'>";
|
||||
table += file.name;
|
||||
table += "</a></td>";
|
||||
table += "<td>";
|
||||
table += file.size;
|
||||
table += "</td>";
|
||||
table += "<td>";
|
||||
if (file.downloading == "false")
|
||||
table += "<span id='download-"+fileInfoHash+"'><a href='#' onclick='window.download(\""+fileInfoHash+"\"); return false;'>" + _t("Download") + "</a></span>";
|
||||
else
|
||||
table += _t("Downloading");
|
||||
table += "</td></tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
if (x.size > 0)
|
||||
topTableDiv.innerHTML = table;
|
||||
if (infoHash != null)
|
||||
updateFile(infoHash);
|
||||
}
|
||||
|
||||
function refreshGroupBySender(searchUUID) {
|
||||
var xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function () {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var xmlDoc = this.responseXML;
|
||||
currentSearchBySender = new SearchBySender(xmlDoc)
|
||||
updateUUIDBySender(searchUUID);
|
||||
}
|
||||
}
|
||||
xmlhttp.open("GET", "/MuWire/Search?section=groupBySender&uuid="+searchUUID, true);
|
||||
xmlhttp.send();
|
||||
}
|
||||
|
||||
function refreshGroupByFile(searchUUID) {
|
||||
var xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function () {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var xmlDoc = this.responseXML;
|
||||
|
||||
currentSearchByFile = new SearchByFile(xmlDoc)
|
||||
updateUUIDByFile(searchUUID)
|
||||
}
|
||||
}
|
||||
xmlhttp.open("GET", "/MuWire/Search?section=groupByFile&uuid="+searchUUID, true);
|
||||
xmlhttp.send();
|
||||
}
|
||||
|
||||
function getBrowseLink(host) {
|
||||
return "<a href='#' onclick='window.browse(\"" + host + "\"); return false;'>" + _t("Browse") + "</a>"
|
||||
}
|
||||
|
||||
function browse(host) {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var linkSpan = document.getElementById("browse-link-"+host)
|
||||
linkSpan.innerHTML = _t("Browsing");
|
||||
}
|
||||
}
|
||||
xmlhttp.open("POST", "/MuWire/Browse", true)
|
||||
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
xmlhttp.send("action=browse&host="+host)
|
||||
}
|
||||
|
||||
function viewCertificatesByFile(fileSenderB64, count) {
|
||||
var fetch = new CertificateFetch(fileSenderB64, infoHash)
|
||||
certificateFetches.set(fetch.divId, fetch)
|
||||
|
||||
var linkSpan = document.getElementById("certificates-link-" + fetch.divId)
|
||||
var hideLink = "<a href='#' onclick='window.hideCertificatesByFile(\"" + fileSenderB64 + "\",\"" + count + "\");return false;'>" + _t("Hide Certificates") + "</a>"
|
||||
linkSpan.innerHTML = hideLink
|
||||
|
||||
var fetchSpan = document.getElementById("certificates-" + fetch.divId)
|
||||
fetchSpan.innerHTML = _t("Fetching Certificates")
|
||||
}
|
||||
|
||||
function hideCertificatesByFile(fileSenderB64, count) {
|
||||
var id = fileSenderB64 + "_" + infoHash
|
||||
certificateFetches.delete(id) // TODO: propagate cancel to core
|
||||
|
||||
var fetchSpan = document.getElementById("certificates-" + id)
|
||||
fetchSpan.innerHTML = ""
|
||||
|
||||
var linkSpan = document.getElementById("certificates-link-" + id)
|
||||
var linkText = _t("View {0} Certificates", count)
|
||||
var showLink = "<a href='#' onclick='window.viewCertificatesByFile(\"" + fileSenderB64 + "\",\"" + count + "\");return false;'>" + linkText + "</a>"
|
||||
linkSpan.innerHTML = showLink
|
||||
}
|
||||
|
||||
function viewCertificatesBySender(fileInfoHash, count) {
|
||||
var fetch = new CertificateFetch(senderB64, fileInfoHash)
|
||||
certificateFetches.set(fetch.divId, fetch)
|
||||
|
||||
var linkSpan = document.getElementById("certificates-link-" + fetch.divId)
|
||||
var hideLink = "<a href='#' onclick='window.hideCertificatesBySender(\"" + fileInfoHash + "\",\"" + count + "\");return false;'>" +
|
||||
_t("Hide Certificates") + "</a>"
|
||||
linkSpan.innerHTML = hideLink
|
||||
|
||||
var fetchSpan = document.getElementById("certificates-" + fetch.divId)
|
||||
fetchSpan.innerHTML = _t("Fetching Certificates")
|
||||
}
|
||||
|
||||
function hideCertificatesBySender(fileInfoHash, count) {
|
||||
var id = senderB64 + "_" + fileInfoHash
|
||||
certificateFetches.delete(id) // TODO: propagate cancel to core
|
||||
|
||||
var fetchSpan = document.getElementById("certificates-" + id)
|
||||
fetchSpan.innerHTML = ""
|
||||
|
||||
var linkSpan = document.getElementById("certificates-link-" + id)
|
||||
var linkText = _t("View {0} Certificates", count)
|
||||
var showLink = "<a href='#' onclick='window.viewCertificatesBySender(\"" + fileInfoHash + "\",\"" + count + "\");return false;'>" +
|
||||
linkText + "</a>"
|
||||
linkSpan.innerHTML = showLink
|
||||
}
|
||||
|
||||
function refreshStatus() {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var currentSearch = null
|
||||
if (uuid != null)
|
||||
currentSearch = statusByUUID.get(uuid)
|
||||
statusByUUID.clear()
|
||||
|
||||
var activeSearches = this.responseXML.getElementsByTagName("Search")
|
||||
var i
|
||||
for(i = 0; i < activeSearches.length; i++) {
|
||||
var searchStatus = new SearchStatus(activeSearches[i])
|
||||
statusByUUID.set(searchStatus.uuid, searchStatus)
|
||||
}
|
||||
|
||||
|
||||
var table = "<table><thead><tr><th>" + _t("Query") + "</th><th>" + _t("Senders") + "</th><th>" + _t("Results") + "</th></tr></thead><tbody>"
|
||||
for (var [searchUUID, status] of statusByUUID) {
|
||||
table += "<tr>"
|
||||
table += "<td>" + "<a href='#' onclick='refreshGroupBy" + refreshType + "(\"" + searchUUID + "\");return false;'>" + status.query + "</a></td>"
|
||||
table += "<td>" + status.senders + "</td>"
|
||||
table += "<td>" + status.results + "</td>"
|
||||
table += "</tr>"
|
||||
}
|
||||
table += "</tbody></table>"
|
||||
|
||||
var activeDiv = document.getElementById("activeSearches")
|
||||
activeDiv.innerHTML = table
|
||||
|
||||
if (uuid != null) {
|
||||
var newStatus = statusByUUID.get(uuid)
|
||||
if (newStatus.revision > currentSearch.revision)
|
||||
refreshFunction(uuid)
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlhttp.open("GET", "/MuWire/Search?section=status", true)
|
||||
xmlhttp.send()
|
||||
}
|
||||
|
||||
var refreshFunction = null
|
||||
var refreshType = null
|
||||
|
||||
function initGroupBySender() {
|
||||
refreshFunction = refreshGroupBySender
|
||||
refreshType = "Sender"
|
||||
setInterval(refreshStatus, 3000);
|
||||
setTimeout(refreshStatus, 1);
|
||||
}
|
||||
|
||||
function initGroupByFile() {
|
||||
refreshFunction = refreshGroupByFile
|
||||
refreshType = "File"
|
||||
setInterval ( refreshStatus, 3000);
|
||||
setTimeout ( refreshStatus, 1);
|
||||
}
|
Loading…
Reference in New Issue