*) changed layout of blacklist adminstration (less cluttered)

*) it is possible to move/edit/delete more than one entry at a time now
*) it is easier to choose a target for blacklist import now
*) fixed several bugs
*) to be continued...

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5330 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
low012 16 years ago
parent ef66438662
commit 421d056550

@ -279,7 +279,7 @@ public class BlacklistCleaner_p {
if (s.contains("\\\\")) {
s = s.replaceAll(Pattern.quote("\\\\"), Matcher.quoteReplacement("\\"));
}
if (list.contains(s)) {
list.remove(s);
listChanged = true;

@ -0,0 +1,52 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>YaCy '#[clientname]#': Blacklist Administration</title>
#%env/templates/metas.template%#
</head>
<body id="Blacklist">
#%env/templates/header.template%#
#%env/templates/submenuBlacklist.template%#
<h2>Blacklist Import</h2>
<p>Used Blacklist engine: <span class="settingsValue">#[blacklistEngine]#</span></p>
#(disabled)#
<fieldset class="importListItems">
<legend>Import blacklist items from...</legend>
<!-- Blacklist import from other peer -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>other YaCy peers:</legend>
<select name="hash">
#{otherHosts}#
<option value="#[hash]#">#[name]#</option>
#{/otherHosts}#
</select>
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
<!-- blacklist import from url -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>URL:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="url" />
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
<!-- blacklist import from file -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>file:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="file" />
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
</fieldset>::#(/disabled)#
#%env/templates/footer.template%#
</body>
</html>

@ -0,0 +1,95 @@
// BlacklistImpExp_p.java
// -----------------------
// part of YaCy
// (C) by Michael Peter Christen; mc@yacy.net
// first published on http://www.anomic.de
// Frankfurt, Germany, 2004
//
// This File is contributed by Alexander Schier
//
// $LastChangedDate: 2008-10-30 01:03:14 +0100 (Do, 30 Okt 2008) $
// $LastChangedRevision: 5309 $
// $LastChangedBy: low012 $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// You must compile this file with
// javac -classpath .:../classes Blacklist_p.java
// if the shell's current path is HTROOT
import java.io.File;
import java.util.Iterator;
import java.util.TreeMap;
import de.anomic.data.listManager;
import de.anomic.http.httpRequestHeader;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacySeed;
import java.util.List;
public class BlacklistImpExp_p {
private final static String DISABLED = "disabled_";
public static serverObjects respond(final httpRequestHeader header, final serverObjects post, final serverSwitch<?> env) {
final plasmaSwitchboard sb = (plasmaSwitchboard) env;
// initialize the list manager
listManager.switchboard = (plasmaSwitchboard) env;
listManager.listsPath = new File(listManager.switchboard.getRootPath(),listManager.switchboard.getConfig("listManager.listsPath", "DATA/LISTS"));
// loading all blacklist files located in the directory
final List<String> dirlist = listManager.getDirListing(listManager.listsPath);
String blacklistToUse = null;
final serverObjects prop = new serverObjects();
prop.putHTML("blacklistEngine", plasmaSwitchboard.urlBlacklist.getEngineInfo());
// if we have not chosen a blacklist until yet we use the first file
if (blacklistToUse == null && dirlist != null && dirlist.size() > 0) {
blacklistToUse = dirlist.get(0);
}
// List known hosts for BlackList retrieval
if (sb.webIndex.seedDB != null && sb.webIndex.seedDB.sizeConnected() > 0) { // no nullpointer error
int peerCount = 0;
try {
final TreeMap<String, String> hostList = new TreeMap<String, String>();
final Iterator<yacySeed> e = sb.webIndex.seedDB.seedsConnected(true, false, null, (float) 0.0);
while (e.hasNext()) {
final yacySeed seed = e.next();
if (seed != null) hostList.put(seed.get(yacySeed.NAME, "nameless"),seed.hash);
}
String peername;
while ((peername = hostList.firstKey()) != null) {
final String Hash = hostList.get(peername);
prop.putHTML(DISABLED + "otherHosts_" + peerCount + "_hash", Hash);
prop.putXML(DISABLED + "otherHosts_" + peerCount + "_name", peername);
hostList.remove(peername);
peerCount++;
}
} catch (final Exception e) {/* */}
prop.put(DISABLED + "otherHosts", peerCount);
}
prop.putXML(DISABLED + "currentBlacklist", (blacklistToUse==null) ? "" : blacklistToUse);
prop.put("disabled", (blacklistToUse == null) ? "1" : "0");
return prop;
}
}

@ -0,0 +1,38 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>YaCy '#[clientname]#': Blacklist Test</title>
#%env/templates/metas.template%#
</head>
<body id="Blacklist">
#%env/templates/header.template%#
#%env/templates/submenuBlacklist.template%#
<h2>Blacklist Test</h2>
<p>Used Blacklist engine: <span class="settingsValue">#[blacklistEngine]#</span></p>
<!-- blacklist selection -->
<fieldset>
<legend>Test list:</legend>
<form action="BlacklistTest_p.html" method="post" enctype="multipart/form-data">
<input type="text" name="testurl" size="50" value="http://" />&nbsp;
<input type="submit" name="testList" value="Test" />
#(testlist)#::
<div>
The tested URL was #[url]#<br>
It is blocked for the following cases:<br>
<ul>
#(listedincrawler)#::<li>Crawling</li>#(/listedincrawler)#
#(listedindht)#::<li>DHT</li>#(/listedindht)#
#(listedinnews)#::<li>News</li>#(/listedinnews)#
#(listedinproxy)#::<li>Proxy</li>#(/listedinproxy)#
#(listedinsearch)#::<li>Search</li>#(/listedinsearch)#
#(listedinsurftips)#::<li>Surftips</li>#(/listedinsurftips)#
</ul>
</div>
#(/testlist)#
</form>
</fieldset>
#%env/templates/footer.template%#
</body>
</html>

@ -0,0 +1,83 @@
// BlacklistTest_p.java
// -----------------------
// part of YaCy
// (C) by Michael Peter Christen; mc@yacy.net
// first published on http://www.anomic.de
// Frankfurt, Germany, 2004
//
// This File is contributed by Alexander Schier
//
// $LastChangedDate: 2008-10-30 01:03:14 +0100 (Do, 30 Okt 2008) $
// $LastChangedRevision: 5309 $
// $LastChangedBy: low012 $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// You must compile this file with
// javac -classpath .:../classes Blacklist_p.java
// if the shell's current path is HTROOT
import java.io.File;
import java.net.MalformedURLException;
import de.anomic.data.listManager;
import de.anomic.http.httpRequestHeader;
import de.anomic.index.indexReferenceBlacklist;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyURL;
public class BlacklistTest_p {
public static serverObjects respond(final httpRequestHeader header, final serverObjects post, final serverSwitch<?> env) {
// initialize the list manager
listManager.switchboard = (plasmaSwitchboard) env;
listManager.listsPath = new File(listManager.switchboard.getRootPath(),listManager.switchboard.getConfig("listManager.listsPath", "DATA/LISTS"));
final serverObjects prop = new serverObjects();
prop.putHTML("blacklistEngine", plasmaSwitchboard.urlBlacklist.getEngineInfo());
// do all post operations
if(post != null && post.containsKey("testList")) {
prop.put("testlist", "1");
String urlstring = post.get("testurl", "");
if(!urlstring.startsWith("http://")) urlstring = "http://"+urlstring;
yacyURL testurl = null;
try {
testurl = new yacyURL(urlstring, null);
} catch (final MalformedURLException e) { testurl = null; }
if(testurl != null) {
prop.putHTML("testlist_url",testurl.toString());
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_CRAWLER, testurl))
prop.put("testlist_listedincrawler", "1");
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_DHT, testurl))
prop.put("testlist_listedindht", "1");
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_NEWS, testurl))
prop.put("testlist_listedinnews", "1");
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_PROXY, testurl))
prop.put("testlist_listedinproxy", "1");
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_SEARCH, testurl))
prop.put("testlist_listedinsearch", "1");
if(plasmaSwitchboard.urlBlacklist.isListed(indexReferenceBlacklist.BLACKLIST_SURFTIPS, testurl))
prop.put("testlist_listedinsurftips", "1");
}
else prop.put("testlist_url","not valid");
}
return prop;
}
}

@ -9,7 +9,6 @@
#%env/templates/submenuBlacklist.template%#
<h2>Blacklist Administration</h2>
<p>Used Blacklist engine: <span class="settingsValue">#[blacklistEngine]#</span></p>
<p>
This function provides an URL filter to the proxy; any blacklisted URL is blocked
from being loaded. You can define several blacklists and activate them separately.
@ -17,46 +16,25 @@
collect blacklist entries from other peers.
</p>
<h3>Active list: #(disabled)#<em>#[currentBlacklist]#</em>::<span class="error">No blacklist selected</span>#(/disabled)#</h3>
<p>Used Blacklist engine: <span class="settingsValue">#[blacklistEngine]#</span></p>
<!-- blacklist selection -->
<fieldset>
<legend>Test list:</legend>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<input type="text" name="testurl" size="50" value="http://" />&nbsp;
<input type="submit" name="testList" value="Test" />
#(testlist)#::
<div>
The tested URL was #[url]#<br>
It is blocked for the following cases:<br>
<ul>
#(listedincrawler)#::<li>Crawling</li>#(/listedincrawler)#
#(listedindht)#::<li>DHT</li>#(/listedindht)#
#(listedinnews)#::<li>News</li>#(/listedinnews)#
#(listedinproxy)#::<li>Proxy</li>#(/listedinproxy)#
#(listedinsearch)#::<li>Search</li>#(/listedinsearch)#
#(listedinsurftips)#::<li>Surftips</li>#(/listedinsurftips)#
</ul>
</div>
#(/testlist)#
</form>
</fieldset>
<fieldset class="selectList">
<legend>Select list:</legend>
#(disabled)#
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<select name="selectedListName" size="1">
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data" name="selectListName">
<select name="selectedListName" size="1" onChange="document.selectListName.submit();">
#{blackLists}#
<option value="#[name]#" #(selected)#::selected="selected"#(/selected)#>#[name]# [#(shared)#not shared::shared#(/shared)#] #{active}# #[blTypeName]##{/active}#</option>
<option value="#[name]#" #(selected)#::selected="selected"#(/selected)#>#[name]# [#(shared)#not shared::shared#(/shared)#]</option>
#{/blackLists}#
</select>
<input type="submit" name="selectList" value="select" />
<input type="hidden" name="selectList" value="select" />
<input type="submit" />
</form>
::
#(/disabled)#
</fieldset>
<fieldset class=" createList">
<fieldset class="createList">
<legend>Create new list:</legend>
#(error)#
::
@ -70,74 +48,59 @@
<input type="text" id="newListName" size ="50" name="newListName" />
<input type="submit" name="createNewList" value="create" />
</form>
</fieldset>
</fieldset>
<br /><br />
#(disabled)#
<fieldset class="listSettings">
<legend>Settings for this list</legend>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<div>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="shareList" value="Share/don't share this list" />
<input type="submit" name="deleteList" value="Delete this list" />
</div>
</form>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Activate this list for ...</legend>
<dl>
#{currentActiveFor}#
<dt><label for="activateList4#[blTypeName]#">#[blTypeName]#</label></dt>
<dd>
<input type="checkbox" id="activateList4#[blTypeName]#" name="activateList4#[blTypeName]#" value="on" #(checked)#checked="checked"::#(/checked)# />
</dd>
#{/currentActiveFor}#
</dl>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="activateList" value="Save" />
</fieldset>
</form>
</fieldset>
<fieldset class="editList">
<legend>Edit this list</legend>
<!-- Blacklist configuration -->
#(edit)#
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<p>
These are the domain name / path patterns in this blacklist:<br />
You can select them here for deletion
</p>
<p>These are the domain name/path patterns in <strong><em>#[currentBlacklist]#</em></strong>:</p>
<div>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<select name="selectedEntry" size="8">
<!--<option disabled>blocked Sites</option>-->
<table border="0" cellpadding="2" cellspacing="1">
<tr class="TableHeader">
<td></td>
<td><strong>Blacklist Pattern</strong></td>
</tr>
#{Itemlist}#
<option value="#[item]#">#[item]#</option>
<tr class="TableCell#(dark)#Light::Dark#(/dark)#">
<td><input type="checkbox" name="selectedEntry.#[count]#" value="#[item]#" /></td>
<td>#[item]#</td>
</tr>
#{/Itemlist}#
</select>
<br />
<input type="submit" name="deleteBlacklistEntry" value="Delete URL pattern" />
<br /><br />
#(edit)#
<input type="submit" name="editBlacklistEntry" value="Edit URL pattern" />
::
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="editedBlacklistEntry" size="50" value="#[item]#"/>
<input type="hidden" name="selectedBlacklistEntry" value="#[item]#"/>
<input type="submit" name="editBlacklistEntry" value="Save URL pattern" />
</form>
#(/edit)#
</table>
<br />
<br />
<input type="submit" name="moveBlacklistEntry" value="Move URL pattern to" />
<select name="action" size="1">
<option value="editBlacklistEntry">Edit selected pattern(s)</option>
<option value="deleteBlacklistEntry">Delete selected pattern(s)</option>
<option value="moveBlacklistEntry">Move selected pattern(s) to</option>
</select>
&nbsp;
<select name="targetBlacklist" size="1">
#{blackLists}#
#{blackListsMove}#
<option value="#[name]#">#[name]#</option>
#{/blackLists}#
#{/blackListsMove}#
</select>
&nbsp;
<input type="submit" />
</div>
</form>
::
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<div>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
#{editList}#
<input type="text" name="editedBlacklistEntry.#[count]#" size="50" value="#[item]#"/>
<input type="hidden" name="selectedBlacklistEntry.#[count]#" value="#[item]#"/>
#{/editList}#
<input type="hidden" name="action" value="editBlacklistEntry" />
<input type="submit" value="Save URL pattern" />
</div>
</form>
#(/edit)#
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<ul>
<li>domain/fullpath</li>
@ -154,10 +117,37 @@
</div>
</form>
</fieldset>
<fieldset class="listSettings">
<legend>Settings for this list</legend>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<div>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="shareList" value="Share/don't share this list" />
<input type="submit" name="deleteList" value="Delete this list" />
</div>
</form>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Activate this list for ...</legend>
<dl>
#{currentActiveFor}#
<dt><label for="activateList4#[blTypeName]#">#[blTypeName]#</label></dt>
<dd>
<input type="checkbox" id="activateList4#[blTypeName]#" name="activateList4#[blTypeName]#" value="on" #(checked)#checked="checked"::#(/checked)# />
</dd>
#{/currentActiveFor}#
</dl>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="activateList" value="Save" />
</fieldset>
</form>
</fieldset>
::#(/disabled)#
<!--
<div>
<p>
#(status)# <!-- 0: -->
#(status)#
::
<strong>#[item]#</strong> was removed from blacklist
::
@ -165,43 +155,7 @@
#(/status)#
</p>
</div>
#(disabled)#
<fieldset class="importListItems">
<legend>Import blacklist items from...</legend>
<!-- Blacklist import from other peer -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>other YaCy peers:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<select name="hash">
#{otherHosts}#
<option value="#[hash]#">#[name]#</option>
#{/otherHosts}#
</select>
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
<!-- blacklist import from url -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>URL:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="url" />
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
<!-- blacklist import from file -->
<form action="sharedBlacklist_p.html" method="get">
<fieldset>
<legend>file:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="file" />
<input type="submit" value="Load new blacklist items" />
</fieldset>
</form>
</fieldset>::#(/disabled)#
-->
#%env/templates/footer.template%#
</body>
</html>

@ -36,8 +36,7 @@ import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.TreeMap;
import java.util.List;
import de.anomic.data.listManager;
import de.anomic.http.httpRequestHeader;
@ -47,17 +46,16 @@ import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.server.logging.serverLog;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacyURL;
import java.util.List;
public class Blacklist_p {
private final static String EDIT = "edit_";
private final static String DISABLED = "disabled_";
private final static String BLACKLIST = "blackLists_";
private final static String BLACKLIST_MOVE = "blackListsMove_";
private final static String BLACKLIST_SHARED = "BlackLists.Shared";
public static serverObjects respond(final httpRequestHeader header, final serverObjects post, final serverSwitch<?> env) {
final plasmaSwitchboard sb = (plasmaSwitchboard) env;
// initialize the list manager
listManager.switchboard = (plasmaSwitchboard) env;
@ -68,14 +66,16 @@ public class Blacklist_p {
final String[] supportedBlacklistTypes = supportedBlacklistTypesStr.split(",");
// loading all blacklist files located in the directory
final List<String> dirlist = listManager.getDirListing(listManager.listsPath);
List<String> dirlist = listManager.getDirListing(listManager.listsPath);
String blacklistToUse = null;
final serverObjects prop = new serverObjects();
prop.putHTML("blacklistEngine", plasmaSwitchboard.urlBlacklist.getEngineInfo());
// do all post operations
if (post != null) {
final String action = post.get("action", "");
if(post.containsKey("testList")) {
prop.put("testlist", "1");
@ -146,6 +146,9 @@ public class Blacklist_p {
prop.putHTML("error_name", blacklistToUse);
blacklistToUse = null;
}
// reload Blacklists
dirlist = listManager.getDirListing(listManager.listsPath);
}
} else if (post.containsKey("deleteList")) {
@ -173,7 +176,7 @@ public class Blacklist_p {
blacklistToUse = null;
// reload Blacklists
listManager.reloadBlacklists();
dirlist = listManager.getDirListing(listManager.listsPath);
} else if (post.containsKey("activateList")) {
@ -215,19 +218,26 @@ public class Blacklist_p {
} else { // inactive list -> enable
listManager.updateListSet(BLACKLIST_SHARED, blacklistToUse);
}
} else if (post.containsKey("deleteBlacklistEntry")) {
} else if (action.equals("deleteBlacklistEntry")) {
/* ===========================================================
* Delete an entry from a blacklist
* =========================================================== */
blacklistToUse = post.get("currentBlacklist");
String temp = null;
final String temp = deleteBlacklistEntry(post.get("currentBlacklist"),
post.get("selectedEntry"), header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
final String[] selectedBlacklistEntries = post.getAll("selectedEntry.*");
if (selectedBlacklistEntries.length > 0) {
for (int i = 0; i < selectedBlacklistEntries.length; i++) {
temp = deleteBlacklistEntry(blacklistToUse,
selectedBlacklistEntries[i], header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
}
}
} else if (post.containsKey("addBlacklistEntry")) {
@ -245,31 +255,39 @@ public class Blacklist_p {
return prop;
}
} else if (post.containsKey("moveBlacklistEntry")) {
} else if (action.equals("moveBlacklistEntry")) {
/* ===========================================================
* Move an entry from one blacklist to another
* =========================================================== */
blacklistToUse = post.get("currentBlacklist");
String targetBlacklist = post.get("targetBlacklist");
String temp = null;
final String[] selectedBlacklistEntries = post.getAll("selectedEntry.*");
if (selectedBlacklistEntries.length > 0 && !targetBlacklist.equals(blacklistToUse)) {
for (int i = 0; i < selectedBlacklistEntries.length; i++) {
if (!post.get("targetBlacklist").equals(post.get("currentBlacklist"))) {
String temp = addBlacklistEntry(post.get("targetBlacklist"),
post.get("selectedEntry"), header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
temp = deleteBlacklistEntry(post.get("currentBlacklist"),
post.get("selectedEntry"), header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
temp = addBlacklistEntry(targetBlacklist,
selectedBlacklistEntries[i], header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
temp = deleteBlacklistEntry(blacklistToUse,
selectedBlacklistEntries[i], header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
}
}
} else if (post.containsKey("editBlacklistEntry")) {
} else if (action.equals("editBlacklistEntry")) {
/* ===========================================================
* Edit entry of a blacklist
@ -277,33 +295,50 @@ public class Blacklist_p {
blacklistToUse = post.get("currentBlacklist");
final String[] editedBlacklistEntries = post.getAll("editedBlacklistEntry.*");
// if edited entry has been posted, save changes
if(post.containsKey("editedBlacklistEntry")) {
if (!post.get("selectedBlacklistEntry").equals(post.get("editedBlacklistEntry"))) {
String temp = deleteBlacklistEntry(post.get("currentBlacklist"),
post.get("selectedBlacklistEntry"), header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
temp = addBlacklistEntry(post.get("currentBlacklist"),
post.get("editedBlacklistEntry"), header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
if (editedBlacklistEntries.length > 0) {
final String[] selectedBlacklistEntries = post.getAll("selectedBlacklistEntry.*");
if (selectedBlacklistEntries.length != editedBlacklistEntries.length) {
prop.put("LOCATION", "");
return prop;
}
String temp = null;
for (int i = 0; i < selectedBlacklistEntries.length; i++) {
if (!selectedBlacklistEntries[i].equals(editedBlacklistEntries[i])) {
temp = deleteBlacklistEntry(blacklistToUse, selectedBlacklistEntries[i], header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
temp = addBlacklistEntry(blacklistToUse, editedBlacklistEntries[i], header, supportedBlacklistTypes);
if (temp != null) {
prop.put("LOCATION", temp);
return prop;
}
}
}
prop.putHTML(DISABLED + EDIT + "currentBlacklist", blacklistToUse);
// else return entry to be edited
} else {
final String selectedEntry = post.get("selectedEntry");
final String currentBlacklist = post.get("currentBlacklist");
if (selectedEntry != null && currentBlacklist != null) {
prop.putHTML(DISABLED + "edit_item", selectedEntry);
prop.putHTML(DISABLED + "edit_currentBlacklist", currentBlacklist);
prop.put(DISABLED + "edit", "1");
final String[] selectedEntries = post.getAll("selectedEntry.*");
if (selectedEntries != null && blacklistToUse != null) {
for (int i = 0; i < selectedEntries.length; i++) {
prop.putHTML(DISABLED + EDIT + "editList_" + i + "_item", selectedEntries[i]);
prop.put(DISABLED + EDIT + "editList_" + i + "_count", i);
}
prop.putHTML(DISABLED + EDIT + "currentBlacklist", blacklistToUse);
prop.put(DISABLED + "edit", "1");
prop.put(DISABLED + EDIT + "editList", selectedEntries.length);
}
}
}
@ -325,44 +360,24 @@ public class Blacklist_p {
Arrays.sort(list.toArray(sortedlist));
// display them
boolean dark = true;
for (int j=0;j<sortedlist.length;++j){
final String nextEntry = sortedlist[j];
if (nextEntry.length() == 0) continue;
if (nextEntry.startsWith("#")) continue;
prop.putHTML(DISABLED + "Itemlist_" + entryCount + "_item", nextEntry);
prop.put(DISABLED + EDIT + "Itemlist_" + entryCount + "_dark", dark ? "1" : "0");
dark = !dark;
prop.putHTML(DISABLED + EDIT + "Itemlist_" + entryCount + "_item", nextEntry);
prop.put(DISABLED + EDIT + "Itemlist_" + entryCount + "_count", entryCount);
entryCount++;
}
prop.put(DISABLED + "Itemlist", entryCount);
// List known hosts for BlackList retrieval
if (sb.webIndex.seedDB != null && sb.webIndex.seedDB.sizeConnected() > 0) { // no nullpointer error
int peerCount = 0;
try {
final TreeMap<String, String> hostList = new TreeMap<String, String>();
final Iterator<yacySeed> e = sb.webIndex.seedDB.seedsConnected(true, false, null, (float) 0.0);
while (e.hasNext()) {
final yacySeed seed = e.next();
if (seed != null) hostList.put(seed.get(yacySeed.NAME, "nameless"),seed.hash);
}
String peername;
while ((peername = hostList.firstKey()) != null) {
final String Hash = hostList.get(peername);
prop.putHTML(DISABLED + "otherHosts_" + peerCount + "_hash", Hash);
prop.putXML(DISABLED + "otherHosts_" + peerCount + "_name", peername);
hostList.remove(peername);
peerCount++;
}
} catch (final Exception e) {/* */}
prop.put(DISABLED + "otherHosts", peerCount);
}
prop.put(DISABLED + EDIT + "Itemlist", entryCount);
}
// List BlackLists
int blacklistCount = 0;
int blacklistMoveCount = 0;
if (dirlist != null) {
for (String element : dirlist) {
@ -379,6 +394,9 @@ public class Blacklist_p {
}
prop.put(DISABLED + "currentActiveFor", supportedBlacklistTypes.length);
} else {
prop.putXML(DISABLED + EDIT + BLACKLIST_MOVE + blacklistMoveCount + "_name", element);
blacklistMoveCount++;
}
if (listManager.listSetContains(BLACKLIST_SHARED, element)) {
@ -399,8 +417,10 @@ public class Blacklist_p {
}
}
prop.put(DISABLED + "blackLists", blacklistCount);
prop.put(DISABLED + EDIT + "blackListsMove", blacklistMoveCount);
prop.putXML(DISABLED + "currentBlacklist", (blacklistToUse==null) ? "" : blacklistToUse);
prop.putXML(DISABLED + EDIT + "currentBlacklist", (blacklistToUse==null) ? "" : blacklistToUse);
prop.put("disabled", (blacklistToUse == null) ? "1" : "0");
return prop;
}

@ -9,24 +9,24 @@
# use section names to jump
############ Sections: ########################
## "global elements" ##
## "global elements" ##
# all html elements without ".class" or "#id"
###############################################
## "global classes" ##
## "global classes" ##
# i.e. ".strong"; ".left"; ".error";
###############################################
## "privat classes" ##
## "privat classes" ##
# all htnml-elements with a specific class
# i.e. "div.content"; "span.left";
# and
# "div.content span a."; "form.search fieldset legend";
# sorted by the last html-element
###############################################
## "site specific" ##
## "site specific" ##
# all site specific elements
# i.e. "body#search form"; "body#stats table td.strong";
###############################################
## "other" ##
## "other" ##
# all "other" elements
# i.e. "#left"; "#myID.div";
*/
@ -675,9 +675,23 @@ img.bookmarkIcon {
/* site specific ------------------------------------*/
body#Blacklist fieldset.selectList {
float:left;
margin-top:0;
width:45%;
}
body#Blacklist fieldset.createList {
margin-top:0;
width:45%;
}
body#Blacklist fieldset.editList {
float:left;
margin-top:0;
width:45%;
}
body#Blacklist fieldset.listSettings {
margin-top:0;
width:45%;
}
body#PerformanceQueues table, body#PerformanceQueues table input, body#PerformanceMemory table, body#PerformanceMemory table input {
font-size:90%;

@ -3,5 +3,7 @@
<ul class="SubMenu">
<li><a href="/Blacklist_p.html" class="MenuItemLink lock">Blacklist Administration</a></li>
<li><a href="/BlacklistCleaner_p.html" class="MenuItemLink lock">Blacklist Cleaner</a></li>
<li><a href="/BlacklistTest_p.html" class="MenuItemLink lock">Blacklist Test</a></li>
<li><a href="/BlacklistImpExp_p.html" class="MenuItemLink lock">Import/Export</a></li>
</ul>
</div>

@ -24,6 +24,7 @@
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
#%env/templates/header.template%#
#%env/templates/submenuBlacklist.template%#
<br />
<br />
<h2>Add Items to Blacklist</h2>
@ -50,7 +51,6 @@
<form action="sharedBlacklist_p.html" method="post" enctype="multipart/form-data">
<input type="hidden" name="num" value="#[num]#" />
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
#(page)#<!-- [0] -->
<table>
<tr>
@ -59,7 +59,15 @@
</tr>
<tr>
<td><b>Blacklist target:</b></td>
<td><span class="settingsValue">#[target]#</span></td>
<td>
<select name="currentBlacklist" size="1">
#{blackLists}#
<option value="#[name]#">#[name]#</option>
#{/blackLists}#
</select>
</td>
</tr>
</table>
<table border="0" cellspacing="1" cellpadding="3" >

@ -32,9 +32,9 @@
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import de.anomic.crawler.HTTPLoader;
import de.anomic.data.listManager;
@ -74,8 +74,27 @@ public class sharedBlacklist_p {
prop.putHTML("page_target", selectedBlacklistName);
if (post != null) {
ArrayList<String> otherBlacklist = null;
// initialize the list manager
listManager.switchboard = (plasmaSwitchboard) env;
listManager.listsPath = new File(listManager.switchboard.getRootPath(),listManager.switchboard.getConfig("listManager.listsPath", "DATA/LISTS"));
// loading all blacklist files located in the directory
final List<String> dirlist = listManager.getDirListing(listManager.listsPath);
// List BlackLists
int blacklistCount = 0;
if (dirlist != null) {
for (String element : dirlist) {
prop.putXML("page_blackLists_" + blacklistCount + "_name", element);
blacklistCount++;
}
}
prop.put("page_blackLists", blacklistCount);
List<String> otherBlacklist = null;
if (post.containsKey("hash")) {
/* ======================================================
* Import blacklist from other peer
@ -86,6 +105,7 @@ public class sharedBlacklist_p {
// generate the download URL
String downloadURL = null;
String downloadURLOld = null;
if( sb.webIndex.seedDB != null ){ //no nullpointer error..
final yacySeed seed = sb.webIndex.seedDB.getConnected(Hash);
if (seed != null) {
@ -94,7 +114,8 @@ public class sharedBlacklist_p {
final String peerName = seed.get(yacySeed.NAME, "<" + IP + ":" + Port + ">");
prop.putHTML("page_source", peerName);
downloadURL = "http://" + IP + ":" + Port + "/yacy/list.html?col=black";
downloadURL = "http://" + IP + ":" + Port + "/xml/blacklists.xml";
downloadURLOld = "http://" + IP + ":" + Port + "/yacy/list.html?col=black";
} else {
prop.put("status", STATUS_PEER_UNKNOWN);//YaCy-Peer not found
prop.putHTML("status_name", Hash);
@ -106,7 +127,7 @@ public class sharedBlacklist_p {
prop.put("page", "1");
}
if (downloadURL != null) {
if (downloadURLOld != null) {
// download the blacklist
try {
final httpRequestHeader reqHeader = new httpRequestHeader();
@ -115,8 +136,9 @@ public class sharedBlacklist_p {
reqHeader.put(httpRequestHeader.USER_AGENT, HTTPLoader.yacyUserAgent);
// get List
final yacyURL u = new yacyURL(downloadURL, null);
otherBlacklist = nxTools.strings(HttpClient.wget(u.toString(), reqHeader, 1000), "UTF-8");
yacyURL u = new yacyURL(downloadURLOld, null);
otherBlacklist = nxTools.strings(HttpClient.wget(u.toString(), reqHeader, 1000), "UTF-8");
} catch (final Exception e) {
prop.put("status", STATUS_PEER_UNKNOWN);
prop.putHTML("status_name", Hash);

Loading…
Cancel
Save