Launcher/LaunchServer/src/main/java/pro/gravit/launchserver/components/AuthLimiterComponent.java
2019-10-19 23:46:16 +07:00

40 lines
1.1 KiB
Java

package pro.gravit.launchserver.components;
import pro.gravit.launcher.NeedGarbageCollection;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.socket.Client;
import pro.gravit.launchserver.socket.response.auth.AuthResponse;
import pro.gravit.utils.HookException;
public class AuthLimiterComponent extends IPLimiter implements NeedGarbageCollection, AutoCloseable {
private transient LaunchServer srv;
@Override
public void preInit(LaunchServer launchServer) {
srv = launchServer;
}
@Override
public void init(LaunchServer launchServer) {
launchServer.authHookManager.preHook.registerHook(this::preAuthHook);
}
@Override
public void postInit(LaunchServer launchServer) {
}
public boolean preAuthHook(AuthResponse.AuthContext context, Client client) {
if (!check(context.ip)) {
throw new HookException(message);
}
return false;
}
public String message;
@Override
public void close() {
srv.authHookManager.preHook.unregisterHook(this::preAuthHook);
}
}