|
|
|
/**
|
|
|
|
* CrawlStartScanner_p
|
|
|
|
* Copyright 2010 by Michael Peter Christen, mc@yacy.net, Frankfurt am Main, Germany
|
|
|
|
* First released 12.08.2011 at http://yacy.net
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* along with this program in the file lgpl21.txt
|
|
|
|
* If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import java.net.MalformedURLException;
|
|
|
|
import java.util.ConcurrentModificationException;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import net.yacy.cora.document.encoding.ASCII;
|
|
|
|
import net.yacy.cora.document.id.DigestURL;
|
|
|
|
import net.yacy.cora.protocol.RequestHeader;
|
|
|
|
import net.yacy.cora.protocol.Scanner;
|
|
|
|
import net.yacy.cora.protocol.Scanner.Access;
|
|
|
|
import net.yacy.cora.util.ConcurrentLog;
|
|
|
|
import net.yacy.data.WorkTables;
|
|
|
|
import net.yacy.search.Switchboard;
|
|
|
|
import net.yacy.server.serverObjects;
|
|
|
|
import net.yacy.server.serverSwitch;
|
|
|
|
|
|
|
|
public class ServerScannerList {
|
|
|
|
|
|
|
|
public static serverObjects respond(@SuppressWarnings("unused") final RequestHeader header, final serverObjects post, final serverSwitch env) {
|
|
|
|
|
|
|
|
final serverObjects prop = new serverObjects();
|
|
|
|
final Switchboard sb = (Switchboard)env;
|
|
|
|
|
|
|
|
boolean edit = post != null && post.containsKey("edit");
|
|
|
|
prop.put("servertable_edit", edit ? 1 : 0);
|
|
|
|
prop.put("embedded", post == null ? 0 : post.containsKey("embedded") ? 1 : 0);
|
|
|
|
prop.put("servertable", 0);
|
|
|
|
|
|
|
|
// write scan table
|
|
|
|
if (Scanner.scancacheSize() > 0) {
|
|
|
|
// make a comment cache
|
|
|
|
final Map<byte[], String> apiCommentCache = WorkTables.commentCache(sb);
|
|
|
|
|
|
|
|
// show scancache table
|
|
|
|
prop.put("servertable", 1);
|
|
|
|
String urlString;
|
|
|
|
DigestURL u;
|
|
|
|
table: while (true) {
|
|
|
|
try {
|
|
|
|
int i = 0;
|
|
|
|
final Iterator<Map.Entry<Scanner.Service, Scanner.Access>> se = Scanner.scancacheEntries();
|
|
|
|
Map.Entry<Scanner.Service, Scanner.Access> host;
|
|
|
|
while (se.hasNext()) {
|
|
|
|
host = se.next();
|
|
|
|
try {
|
|
|
|
u = host.getKey().url();
|
|
|
|
urlString = u.toNormalform(true);
|
|
|
|
prop.put("servertable_list_" + i + "_edit", edit ? 1 : 0);
|
|
|
|
prop.put("servertable_list_" + i + "_edit_pk", ASCII.String(u.hash()));
|
|
|
|
prop.put("servertable_list_" + i + "_edit_count", i);
|
|
|
|
prop.putHTML("servertable_list_" + i + "_protocol", u.getProtocol());
|
|
|
|
prop.putHTML("servertable_list_" + i + "_ip", host.getKey().getInetAddress().getHostAddress());
|
|
|
|
prop.putHTML("servertable_list_" + i + "_url", urlString);
|
|
|
|
prop.put("servertable_list_" + i + "_accessUnknown", host.getValue() == Access.unknown ? 1 : 0);
|
|
|
|
prop.put("servertable_list_" + i + "_accessEmpty", host.getValue() == Access.empty ? 1 : 0);
|
|
|
|
prop.put("servertable_list_" + i + "_accessGranted", host.getValue() == Access.granted ? 1 : 0);
|
|
|
|
prop.put("servertable_list_" + i + "_accessDenied", host.getValue() == Access.denied ? 1 : 0);
|
|
|
|
prop.put("servertable_list_" + i + "_process", Scanner.inIndex(apiCommentCache, urlString) == null ? 0 : 1);
|
|
|
|
prop.put("servertable_list_" + i + "_edit_preselected", host.getValue() == Access.granted && Scanner.inIndex(apiCommentCache, urlString) == null ? 1 : 0);
|
|
|
|
i++;
|
|
|
|
} catch (final MalformedURLException e) {
|
|
|
|
ConcurrentLog.logException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
prop.put("servertable_list", i);
|
|
|
|
prop.put("servertable_edit_num", i);
|
|
|
|
break table;
|
|
|
|
} catch (final ConcurrentModificationException e) {
|
|
|
|
ConcurrentLog.logException(e);
|
|
|
|
continue table;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return prop;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|