fix for channel authorization

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7803 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 14 years ago
parent 267290a821
commit 9ebc75db4b

@ -5,14 +5,13 @@ import java.util.Date;
import net.yacy.cora.document.RSSFeed; import net.yacy.cora.document.RSSFeed;
import net.yacy.cora.document.RSSMessage; import net.yacy.cora.document.RSSMessage;
import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.protocol.RequestHeader;
import de.anomic.search.Switchboard; import de.anomic.search.Switchboard;
import de.anomic.server.serverObjects; import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch; import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyChannel; import de.anomic.yacy.yacyChannel;
public class feed { public class feed {
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
final Switchboard sb = (Switchboard) env; final Switchboard sb = (Switchboard) env;
@ -32,17 +31,21 @@ public class feed {
int messageCount = 0; int messageCount = 0;
int messageMaxCount = Math.min(post.getInt("count", 100), 1000); int messageMaxCount = Math.min(post.getInt("count", 100), 1000);
channelIteration: for (final String channel: channels) { channelIteration: for (final String channelName: channels) {
// prevent that unauthorized access to this servlet get results from private data // prevent that unauthorized access to this servlet get results from private data
if ((!authorized) && (yacyChannel.privateChannels.contains(channel))) continue channelIteration; // allow only public channels if not authorized
if ("TEST".equals(channel)) { final yacyChannel channel = yacyChannel.valueOf(channelName);
if (channel == null) continue channelIteration;
if (!authorized && yacyChannel.privateChannels.contains(channel)) continue channelIteration; // allow only public channels if not authorized
if ("TEST".equals(channelName)) {
// for interface testing return at least one single result // for interface testing return at least one single result
prop.putXML("channel_title", "YaCy News Testchannel"); prop.putXML("channel_title", "YaCy News Testchannel");
prop.putXML("channel_description", ""); prop.putXML("channel_description", "");
prop.put("channel_pubDate", (new Date()).toString()); prop.put("channel_pubDate", (new Date()).toString());
prop.putXML("item_" + messageCount + "_title", channel + ": " + "YaCy Test Entry " + (new Date()).toString()); prop.putXML("item_" + messageCount + "_title", channelName + ": " + "YaCy Test Entry " + (new Date()).toString());
prop.putXML("item_" + messageCount + "_description", "abcdefg"); prop.putXML("item_" + messageCount + "_description", "abcdefg");
prop.putXML("item_" + messageCount + "_link", "http://yacy.net"); prop.putXML("item_" + messageCount + "_link", "http://yacy.net");
prop.put("item_" + messageCount + "_pubDate", (new Date()).toString()); prop.put("item_" + messageCount + "_pubDate", (new Date()).toString());
@ -51,7 +54,7 @@ public class feed {
messageMaxCount--; messageMaxCount--;
continue channelIteration; continue channelIteration;
} }
// read the channel // read the channel
final RSSFeed feed = yacyChannel.channels(channel); final RSSFeed feed = yacyChannel.channels(channel);
if (feed == null || feed.isEmpty()) continue channelIteration; if (feed == null || feed.isEmpty()) continue channelIteration;
@ -67,7 +70,7 @@ public class feed {
if (message == null) continue; if (message == null) continue;
// create RSS entry // create RSS entry
prop.putXML("item_" + messageCount + "_title", channel + ": " + message.getTitle()); prop.putXML("item_" + messageCount + "_title", channelName + ": " + message.getTitle());
prop.putXML("item_" + messageCount + "_description", message.getDescription()); prop.putXML("item_" + messageCount + "_description", message.getDescription());
prop.putXML("item_" + messageCount + "_link", message.getLink()); prop.putXML("item_" + messageCount + "_link", message.getLink());
prop.put("item_" + messageCount + "_pubDate", message.getPubDate()); prop.put("item_" + messageCount + "_pubDate", message.getPubDate());
@ -82,5 +85,5 @@ public class feed {
// return rewrite properties // return rewrite properties
return prop; return prop;
} }
} }

@ -57,12 +57,6 @@ public enum yacyChannel {
* the following static channels object is used to organize a storage array for RSS feeds * the following static channels object is used to organize a storage array for RSS feeds
*/ */
private static final ConcurrentMap<yacyChannel, RSSFeed> channels = new ConcurrentHashMap<yacyChannel, RSSFeed>(); private static final ConcurrentMap<yacyChannel, RSSFeed> channels = new ConcurrentHashMap<yacyChannel, RSSFeed>();
public static RSSFeed channels(final String channelName) {
for (final yacyChannel channel : yacyChannel.values()) {
if (channel.name().equals(channelName)) return channels(channel);
}
return null;
}
public static RSSFeed channels(final yacyChannel channel) { public static RSSFeed channels(final yacyChannel channel) {
RSSFeed feed = channels.get(channel); RSSFeed feed = channels.get(channel);

Loading…
Cancel
Save