📄 abstractrequesthandler.java
字号:
package freecs.external;
import java.net.InetAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;
import freecs.Server;
import freecs.content.ContentContainer;
import freecs.interfaces.IRequest;
import freecs.interfaces.IResponseHeaders;
import freecs.util.HttpAuth;
public abstract class AbstractRequestHandler implements IRequestHandler {
private String handlerName;
/**
* construct a new handler mounted to a given name
*/
public AbstractRequestHandler(String handlerName) {
this.handlerName = handlerName;
}
public void checkAccessIp(IRequest req, ContentContainer c) throws AccessForbiddenException {
SelectionKey key = req.getKey ();
InetAddress ia = null;
try {
SocketChannel sc = (SocketChannel) key.channel ();
ia = sc.socket ().getInetAddress ();
} catch (Exception e) {
Server.debug (this, "" + ia.toString (), e, Server.MSG_STATE, Server.LVL_MAJOR);
throw new AccessForbiddenException(true);
}
if (!Server.srv.isAdminHost(ia)) {
Server.log (this, "access to " + getHandlerName() + " denied for " + ia.toString (), Server.MSG_STATE, Server.LVL_MAJOR);
throw new AccessForbiddenException(true);
}
}
public void checkAccessAuth(IRequest req, ContentContainer c) throws AccessForbiddenException {
if (Server.srv.ADMIN_HTTP_USERNAME == null || Server.srv.ADMIN_HTTP_PASSWORD == null) {
Server.log (this, "authentication not properly configured in server config! access denied.", Server.MSG_CONFIG, Server.LVL_MAJOR);
// hide page if auth is not configured ok!
throw new AccessForbiddenException(true);
}
HttpAuth auth = HttpAuth.parse(req.getProperty("authorization"));
if (auth == null || auth.username == null || auth.password == null ||
!auth.username.equals(Server.srv.ADMIN_HTTP_USERNAME) ||
!auth.password.equals(Server.srv.ADMIN_HTTP_PASSWORD)) {
c.setResCode(IResponseHeaders.AUTHENTICATE_CODE);
c.wrap("Access denied.");
throw new AccessForbiddenException(false);
}
}
/**
* returns the string which this handler is mounted to
*/
public String getHandlerName() {
return handlerName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -