mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
27ab733685
This is a fix for mantis 766 ( http://mantis.tokeek.de/view.php?id=766 ) Since the upgrade to Digest authentication, access to protected search features was indeed disabled once the Digest nonce timed out. After Digest auth timeout the browser no more sent authentication information and as the search results page is not private, protected features were simply be hidden without asking browser again for authentication. Adding a supplementary parameter when accessing the search results as authenticated fixes this.
66 lines
3.5 KiB
Java
66 lines
3.5 KiB
Java
import net.yacy.cora.protocol.RequestHeader;
|
|
import net.yacy.data.UserDB;
|
|
import net.yacy.http.servlets.TemplateMissingParameterException;
|
|
import net.yacy.kelondro.util.Formatter;
|
|
import net.yacy.search.Switchboard;
|
|
import net.yacy.search.query.QueryParams;
|
|
import net.yacy.search.query.SearchEvent;
|
|
import net.yacy.search.query.SearchEventCache;
|
|
import net.yacy.server.serverObjects;
|
|
import net.yacy.server.serverSwitch;
|
|
|
|
|
|
public class yacysearchlatestinfo {
|
|
|
|
public static serverObjects respond(@SuppressWarnings("unused") final RequestHeader header, final serverObjects post, @SuppressWarnings("unused") final serverSwitch env) {
|
|
if (post == null) {
|
|
throw new TemplateMissingParameterException("The eventID parameter is required");
|
|
}
|
|
|
|
final serverObjects prop = new serverObjects();
|
|
Switchboard sb = (Switchboard) env;
|
|
|
|
final boolean adminAuthenticated = sb.verifyAuthentication(header);
|
|
final UserDB.Entry user = sb.userDB != null ? sb.userDB.getUser(header) : null;
|
|
final boolean userAuthenticated = (user != null && user.hasRight(UserDB.AccessRight.EXTENDED_SEARCH_RIGHT));
|
|
final boolean authenticated = adminAuthenticated || userAuthenticated;
|
|
|
|
// find search event
|
|
final String eventID = post.get("eventID", "");
|
|
final SearchEvent theSearch = SearchEventCache.getEvent(eventID);
|
|
if (theSearch == null) {
|
|
// the event does not exist.
|
|
// to avoid missing patterns, we return dummy values
|
|
prop.put("offset", 0);
|
|
prop.put("itemscount", 0);
|
|
prop.put("itemsperpage", 10);
|
|
prop.put("totalcount", 0);
|
|
prop.put("localResourceSize", 0);
|
|
prop.put("localIndexCount", 0);
|
|
prop.put("remoteResourceSize", 0);
|
|
prop.put("remoteIndexCount", 0);
|
|
prop.put("remotePeerCount", 0);
|
|
prop.putJSON("navurlBase", "#");
|
|
prop.put("feedRunning", Boolean.FALSE.toString());
|
|
return prop;
|
|
}
|
|
|
|
// dynamically update count values
|
|
final int offset = theSearch.query.neededResults() - theSearch.query.itemsPerPage() + 1;
|
|
prop.put("offset", offset);
|
|
prop.put("itemscount",Formatter.number(offset + theSearch.query.itemsPerPage >= theSearch.getResultCount() ? offset + theSearch.getResultCount() % theSearch.query.itemsPerPage - 1 : offset + theSearch.query.itemsPerPage - 1));
|
|
prop.put("itemsperpage", theSearch.query.itemsPerPage);
|
|
prop.put("totalcount", Formatter.number(theSearch.getResultCount(), true));
|
|
prop.put("localResourceSize", Formatter.number(theSearch.local_rwi_stored.get() + theSearch.local_solr_stored.get(), true));
|
|
prop.put("localIndexCount", Formatter.number(theSearch.local_rwi_available.get() + theSearch.local_solr_stored.get() - theSearch.local_solr_evicted.get(), true));
|
|
prop.put("remoteResourceSize", Formatter.number(theSearch.remote_rwi_stored.get() + theSearch.remote_solr_stored.get(), true));
|
|
prop.put("remoteIndexCount", Formatter.number(theSearch.remote_rwi_available.get() + theSearch.remote_solr_available.get(), true));
|
|
prop.put("remotePeerCount", Formatter.number(theSearch.remote_rwi_peerCount.get() + theSearch.remote_solr_peerCount.get(), true));
|
|
prop.putJSON("navurlBase", QueryParams.navurlBase(RequestHeader.FileType.HTML, theSearch.query, null, false, authenticated).toString());
|
|
prop.put("feedRunning", Boolean.toString(!theSearch.isFeedingFinished()));
|
|
|
|
return prop;
|
|
}
|
|
|
|
}
|