[FEATURE] Удаление permissionsHandler

This commit is contained in:
Gravit 2020-01-19 12:22:35 +07:00
parent 93436de104
commit f81cdf6440
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
23 changed files with 21 additions and 456 deletions

View file

@ -7,7 +7,6 @@
import pro.gravit.launcher.request.auth.AuthRequest; import pro.gravit.launcher.request.auth.AuthRequest;
import pro.gravit.launchserver.auth.handler.AuthHandler; import pro.gravit.launchserver.auth.handler.AuthHandler;
import pro.gravit.launchserver.auth.hwid.HWIDHandler; import pro.gravit.launchserver.auth.hwid.HWIDHandler;
import pro.gravit.launchserver.auth.permissions.PermissionsHandler;
import pro.gravit.launchserver.auth.protect.ProtectHandler; import pro.gravit.launchserver.auth.protect.ProtectHandler;
import pro.gravit.launchserver.auth.provider.AuthProvider; import pro.gravit.launchserver.auth.provider.AuthProvider;
import pro.gravit.launchserver.auth.texture.TextureProvider; import pro.gravit.launchserver.auth.texture.TextureProvider;
@ -211,7 +210,6 @@ public static void registerAll() {
AuthProvider.registerProviders(); AuthProvider.registerProviders();
TextureProvider.registerProviders(); TextureProvider.registerProviders();
HWIDHandler.registerHandlers(); HWIDHandler.registerHandlers();
PermissionsHandler.registerHandlers();
Component.registerComponents(); Component.registerComponents();
ProtectHandler.registerHandlers(); ProtectHandler.registerHandlers();
WebSocketService.registerResponses(); WebSocketService.registerResponses();

View file

@ -2,6 +2,7 @@
import pro.gravit.launchserver.LaunchServer; import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.auth.handler.AuthHandler; import pro.gravit.launchserver.auth.handler.AuthHandler;
import pro.gravit.launchserver.auth.hwid.HWIDHandler;
import pro.gravit.launchserver.auth.provider.AuthProvider; import pro.gravit.launchserver.auth.provider.AuthProvider;
import pro.gravit.launchserver.auth.texture.TextureProvider; import pro.gravit.launchserver.auth.texture.TextureProvider;
@ -11,20 +12,23 @@ public class AuthProviderPair {
public final AuthProvider provider; public final AuthProvider provider;
public final AuthHandler handler; public final AuthHandler handler;
public final TextureProvider textureProvider; public final TextureProvider textureProvider;
public final HWIDHandler hwid;
public final String name; public final String name;
public String displayName; public String displayName;
public final boolean isDefault = true; public final boolean isDefault = true;
public AuthProviderPair(AuthProvider provider, AuthHandler handler, TextureProvider textureProvider, String name) { public AuthProviderPair(AuthProvider provider, AuthHandler handler, TextureProvider textureProvider, HWIDHandler hwid, String name) {
this.provider = provider; this.provider = provider;
this.handler = handler; this.handler = handler;
this.textureProvider = textureProvider; this.textureProvider = textureProvider;
this.hwid = hwid;
this.name = name; this.name = name;
} }
public void init(LaunchServer srv) { public void init(LaunchServer srv) {
provider.init(srv); provider.init(srv);
handler.init(srv); handler.init(srv);
hwid.init();
} }
public void close() throws IOException { public void close() throws IOException {

View file

@ -1,26 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import pro.gravit.launcher.ClientPermissions;
public class ConfigPermissionsHandler extends PermissionsHandler {
public final boolean isAdmin = false;
public final boolean isServer = false;
@Override
public ClientPermissions getPermissions(String username) {
ClientPermissions permissions = new ClientPermissions();
permissions.canServer = isServer;
permissions.canAdmin = isAdmin;
return permissions;
}
@Override
public void setPermissions(String username, ClientPermissions permissions) {
//Unsupported
}
@Override
public void close() {
}
}

View file

@ -1,21 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import pro.gravit.launcher.ClientPermissions;
public class DefaultPermissionsHandler extends PermissionsHandler {
@Override
public ClientPermissions getPermissions(String username) {
return ClientPermissions.DEFAULT;
}
@Override
public void setPermissions(String username, ClientPermissions permissions) {
//Unsupported
}
@Override
public void close() {
}
}

View file

@ -1,27 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launchserver.dao.User;
public class HibernatePermissionsHandler extends PermissionsHandler {
@Override
public ClientPermissions getPermissions(String username) {
User user = srv.config.dao.userDAO.findByUsername(username);
if (user == null) return ClientPermissions.DEFAULT;
return user.getPermissions();
}
@Override
public void setPermissions(String username, ClientPermissions permissions) {
User user = srv.config.dao.userDAO.findByUsername(username);
if (user == null) return;
user.setPermissions(permissions);
srv.config.dao.userDAO.update(user);
}
@Override
public void close() {
}
}

View file

@ -1,109 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import com.google.gson.reflect.TypeToken;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launcher.Launcher;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.Reconfigurable;
import pro.gravit.utils.command.Command;
import pro.gravit.utils.command.SubCommand;
import pro.gravit.utils.helper.IOHelper;
import pro.gravit.utils.helper.LogHelper;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.Type;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
public class JsonFilePermissionsHandler extends PermissionsHandler implements Reconfigurable {
public final String filename = "permissions.json";
public static Map<String, ClientPermissions> map;
public void reload() {
map.clear();
Path path = Paths.get(filename);
Type type = new TypeToken<Map<String, ClientPermissions>>() {
}.getType();
try (Reader reader = IOHelper.newReader(path)) {
map = Launcher.gsonManager.gson.fromJson(reader, type);
} catch (IOException e) {
LogHelper.error(e);
}
}
@Override
public void close() {
}
@Override
public Map<String, Command> getCommands() {
Map<String, Command> commands = new HashMap<>();
SubCommand reload = new SubCommand() {
@Override
public void invoke(String... args) {
reload();
}
};
commands.put("reload", reload);
commands.put("save", new SubCommand() {
@Override
public void invoke(String... args) {
Path path = Paths.get(filename);
if (!IOHelper.exists(path)) {
try (Writer writer = IOHelper.newWriter(path)) {
Launcher.gsonManager.gson.toJson(map, writer);
} catch (IOException e) {
LogHelper.error(e);
}
}
}
});
return commands;
}
public static class Enity {
public String username;
public ClientPermissions permissions;
}
@Override
public void init(LaunchServer server) {
super.init(server);
Type type = new TypeToken<Map<String, ClientPermissions>>() {
}.getType();
Path path = Paths.get(filename);
if (!IOHelper.exists(path)) {
map = new HashMap<>();
try (Writer writer = IOHelper.newWriter(path)) {
Launcher.gsonManager.gson.toJson(map, writer);
} catch (IOException e) {
LogHelper.error(e);
}
}
try (Reader reader = IOHelper.newReader(path)) {
map = Launcher.gsonManager.gson.fromJson(reader, type);
} catch (IOException e) {
LogHelper.error(e);
}
}
@Override
public ClientPermissions getPermissions(String username) {
return map.getOrDefault(username, ClientPermissions.DEFAULT);
}
@Override
public void setPermissions(String username, ClientPermissions permissions) {
map.put(username, permissions);
}
public JsonFilePermissionsHandler() {
}
}

View file

@ -1,110 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import com.google.gson.reflect.TypeToken;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launcher.Launcher;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.Reconfigurable;
import pro.gravit.utils.command.Command;
import pro.gravit.utils.command.SubCommand;
import pro.gravit.utils.helper.IOHelper;
import pro.gravit.utils.helper.LogHelper;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.Type;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
public class JsonLongFilePermissionsHandler extends PermissionsHandler implements Reconfigurable {
public final String filename = "permissions.json";
public final long defaultPerms = 0L;
public static Map<String, Long> map;
public void reload() {
map.clear();
Path path = Paths.get(filename);
Type type = new TypeToken<Map<String, Long>>() {
}.getType();
try (Reader reader = IOHelper.newReader(path)) {
map = Launcher.gsonManager.gson.fromJson(reader, type);
} catch (IOException e) {
LogHelper.error(e);
}
}
@Override
public void close() {
}
@Override
public Map<String, Command> getCommands() {
Map<String, Command> commands = new HashMap<>();
SubCommand reload = new SubCommand() {
@Override
public void invoke(String... args) {
reload();
}
};
commands.put("reload", reload);
commands.put("save", new SubCommand() {
@Override
public void invoke(String... args) {
Path path = Paths.get(filename);
if (!IOHelper.exists(path)) {
try (Writer writer = IOHelper.newWriter(path)) {
Launcher.gsonManager.gson.toJson(map, writer);
} catch (IOException e) {
LogHelper.error(e);
}
}
}
});
return commands;
}
public static class Enity {
public String username;
public ClientPermissions permissions;
}
@Override
public void init(LaunchServer server) {
super.init(server);
Type type = new TypeToken<Map<String, ClientPermissions>>() {
}.getType();
Path path = Paths.get(filename);
if (!IOHelper.exists(path)) {
map = new HashMap<>();
try (Writer writer = IOHelper.newWriter(path)) {
Launcher.gsonManager.gson.toJson(map, writer);
} catch (IOException e) {
LogHelper.error(e);
}
}
try (Reader reader = IOHelper.newReader(path)) {
map = Launcher.gsonManager.gson.fromJson(reader, type);
} catch (IOException e) {
LogHelper.error(e);
}
}
@Override
public ClientPermissions getPermissions(String username) {
return new ClientPermissions(map.getOrDefault(username, defaultPerms));
}
@Override
public void setPermissions(String username, ClientPermissions permissions) {
map.put(username, permissions.toLong());
}
public JsonLongFilePermissionsHandler() {
}
}

View file

@ -1,30 +0,0 @@
package pro.gravit.launchserver.auth.permissions;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.utils.ProviderMap;
public abstract class PermissionsHandler implements AutoCloseable {
public static final ProviderMap<PermissionsHandler> providers = new ProviderMap<>("PermissionsHandler");
protected transient LaunchServer srv;
private static boolean registredHandl = false;
public static void registerHandlers() {
if (!registredHandl) {
providers.register("json", JsonFilePermissionsHandler.class);
providers.register("json-long", JsonLongFilePermissionsHandler.class);
providers.register("config", ConfigPermissionsHandler.class);
providers.register("default", DefaultPermissionsHandler.class);
providers.register("hibernate", HibernatePermissionsHandler.class);
registredHandl = true;
}
}
public void init(LaunchServer server) {
this.srv = server;
}
public abstract ClientPermissions getPermissions(String username);
public abstract void setPermissions(String username, ClientPermissions permissions);
}

View file

@ -1,5 +1,6 @@
package pro.gravit.launchserver.auth.provider; package pro.gravit.launchserver.auth.provider;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launcher.request.auth.AuthRequest; import pro.gravit.launcher.request.auth.AuthRequest;
import pro.gravit.utils.helper.SecurityHelper; import pro.gravit.utils.helper.SecurityHelper;
@ -7,7 +8,7 @@ public final class AcceptAuthProvider extends AuthProvider {
@Override @Override
public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface password, String ip) { public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface password, String ip) {
return new AuthProviderResult(login, SecurityHelper.randomStringToken(), srv); // Same as login return new AuthProviderResult(login, SecurityHelper.randomStringToken(), ClientPermissions.DEFAULT); // Same as login
} }
@Override @Override

View file

@ -1,7 +1,6 @@
package pro.gravit.launchserver.auth.provider; package pro.gravit.launchserver.auth.provider;
import pro.gravit.launcher.ClientPermissions; import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launchserver.LaunchServer;
public class AuthProviderResult { public class AuthProviderResult {
@ -9,10 +8,10 @@ public class AuthProviderResult {
public final String accessToken; public final String accessToken;
public final ClientPermissions permissions; public final ClientPermissions permissions;
public AuthProviderResult(String username, String accessToken, LaunchServer server) { public AuthProviderResult(String username, String accessToken) {
this.username = username; this.username = username;
this.accessToken = accessToken; this.accessToken = accessToken;
permissions = server.config.permissionsHandler.getPermissions(username); permissions = ClientPermissions.DEFAULT;
} }
public AuthProviderResult(String username, String accessToken, ClientPermissions permissions) { public AuthProviderResult(String username, String accessToken, ClientPermissions permissions) {

View file

@ -26,7 +26,7 @@ public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface p
if (user == null) throw new AuthException("Username incorrect"); if (user == null) throw new AuthException("Username incorrect");
else throw new AuthException("Username or password incorrect"); else throw new AuthException("Username or password incorrect");
} }
return new AuthProviderResult(login, SecurityHelper.randomStringToken(), srv); return new AuthProviderResult(login, SecurityHelper.randomStringToken(), user.getPermissions());
} }
@Override @Override

View file

@ -20,7 +20,6 @@ public final class MySQLAuthProvider extends AuthProvider {
private String query; private String query;
private String message; private String message;
private String[] queryParams; private String[] queryParams;
private boolean usePermission;
@Override @Override
public void init(LaunchServer srv) { public void init(LaunchServer srv) {
@ -42,7 +41,7 @@ public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface p
// Execute SQL query // Execute SQL query
s.setQueryTimeout(MySQLSourceConfig.TIMEOUT); s.setQueryTimeout(MySQLSourceConfig.TIMEOUT);
try (ResultSet set = s.executeQuery()) { try (ResultSet set = s.executeQuery()) {
return set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken(), usePermission ? new ClientPermissions(set.getLong(2)) : srv.config.permissionsHandler.getPermissions(set.getString(1))) : authError(message); return set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken(), new ClientPermissions(set.getLong(2))) : authError(message);
} }
} }

View file

@ -33,7 +33,7 @@ public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface p
// Execute SQL query // Execute SQL query
s.setQueryTimeout(PostgreSQLSourceConfig.TIMEOUT); s.setQueryTimeout(PostgreSQLSourceConfig.TIMEOUT);
try (ResultSet set = s.executeQuery()) { try (ResultSet set = s.executeQuery()) {
return set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken(), usePermission ? new ClientPermissions(set.getLong(2)) : srv.config.permissionsHandler.getPermissions(set.getString(1))) : authError(message); return set.next() ? new AuthProviderResult(set.getString(1), SecurityHelper.randomStringToken(), new ClientPermissions(set.getLong(2))) : authError(message);
} }
} }
} }

View file

@ -1,5 +1,6 @@
package pro.gravit.launchserver.auth.provider; package pro.gravit.launchserver.auth.provider;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launcher.request.auth.AuthRequest; import pro.gravit.launcher.request.auth.AuthRequest;
import pro.gravit.launchserver.Reconfigurable; import pro.gravit.launchserver.Reconfigurable;
import pro.gravit.launchserver.auth.AuthException; import pro.gravit.launchserver.auth.AuthException;
@ -28,7 +29,7 @@ public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface p
if (whitelist != null) { if (whitelist != null) {
for (String username : whitelist) { for (String username : whitelist) {
if (login.equals(username)) { if (login.equals(username)) {
return new AuthProviderResult(login, SecurityHelper.randomStringToken(), srv); return new AuthProviderResult(login, SecurityHelper.randomStringToken(), ClientPermissions.DEFAULT);
} }
} }
} }

View file

@ -19,7 +19,6 @@ public final class RequestAuthProvider extends AuthProvider {
private String url; private String url;
private transient Pattern pattern; private transient Pattern pattern;
private String response; private String response;
private boolean usePermission;
@Override @Override
public void init(LaunchServer srv) { public void init(LaunchServer srv) {
@ -37,7 +36,7 @@ public AuthProviderResult auth(String login, AuthRequest.AuthPasswordInterface p
// Match username // Match username
Matcher matcher = pattern.matcher(currentResponse); Matcher matcher = pattern.matcher(currentResponse);
return matcher.matches() && matcher.groupCount() >= 1 ? return matcher.matches() && matcher.groupCount() >= 1 ?
new AuthProviderResult(matcher.group("username"), SecurityHelper.randomStringToken(), usePermission ? new ClientPermissions(Long.parseLong(matcher.group("permission"))) : srv.config.permissionsHandler.getPermissions(login)) : new AuthProviderResult(matcher.group("username"), SecurityHelper.randomStringToken(), new ClientPermissions(Long.parseLong(matcher.group("permission")))) :
authError(currentResponse); authError(currentResponse);
} }

View file

@ -86,8 +86,6 @@ public static void registerCommands(pro.gravit.utils.command.CommandHandler hand
service.registerCommand("multi", new MultiCommand(server)); service.registerCommand("multi", new MultiCommand(server));
service.registerCommand("notify", new NotifyCommand(server)); service.registerCommand("notify", new NotifyCommand(server));
service.registerCommand("component", new ComponentCommand(server)); service.registerCommand("component", new ComponentCommand(server));
service.registerCommand("givePermission", new GivePermissionsCommand(server));
service.registerCommand("getPermissions", new GetPermissionsCommand(server));
service.registerCommand("clients", new ClientsCommand(server)); service.registerCommand("clients", new ClientsCommand(server));
service.registerCommand("signJar", new SignJarCommand(server)); service.registerCommand("signJar", new SignJarCommand(server));
service.registerCommand("signDir", new SignDirCommand(server)); service.registerCommand("signDir", new SignDirCommand(server));

View file

@ -1,30 +0,0 @@
package pro.gravit.launchserver.command.service;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.command.Command;
import pro.gravit.utils.helper.LogHelper;
public class GetPermissionsCommand extends Command {
public GetPermissionsCommand(LaunchServer server) {
super(server);
}
@Override
public String getArgsDescription() {
return "[username]";
}
@Override
public String getUsageDescription() {
return "print username permissions";
}
@Override
public void invoke(String... args) throws Exception {
verifyArgs(args, 1);
String username = args[0];
ClientPermissions permissions = server.config.permissionsHandler.getPermissions(username);
LogHelper.info("Permissions %s: %s (long: %d)", username, permissions.toString(), permissions.toLong());
}
}

View file

@ -1,51 +0,0 @@
package pro.gravit.launchserver.command.service;
import pro.gravit.launcher.ClientPermissions;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.command.Command;
import pro.gravit.utils.helper.LogHelper;
public class GivePermissionsCommand extends Command {
public GivePermissionsCommand(LaunchServer server) {
super(server);
}
@Override
public String getArgsDescription() {
return "[username] [permission] [true/false]";
}
@Override
public String getUsageDescription() {
return "give permissions";
}
@Override
public void invoke(String... args) throws Exception {
verifyArgs(args, 3);
String username = args[0];
ClientPermissions permissions = server.config.permissionsHandler.getPermissions(username);
String permission = args[1];
boolean isEnabled = Boolean.parseBoolean(args[2]);
switch (permission) {
case "admin": {
permissions.canAdmin = isEnabled;
break;
}
case "server": {
permissions.canServer = isEnabled;
break;
}
case "bot": {
permissions.canBot = isEnabled;
break;
}
default: {
LogHelper.error("Unknown permission: %s", permission);
return;
}
}
LogHelper.info("Write new permissions for %s", username);
server.config.permissionsHandler.setPermissions(username, permissions);
}
}

View file

@ -8,10 +8,6 @@
import pro.gravit.launchserver.auth.AuthProviderPair; import pro.gravit.launchserver.auth.AuthProviderPair;
import pro.gravit.launchserver.auth.handler.MemoryAuthHandler; import pro.gravit.launchserver.auth.handler.MemoryAuthHandler;
import pro.gravit.launchserver.auth.hwid.AcceptHWIDHandler; import pro.gravit.launchserver.auth.hwid.AcceptHWIDHandler;
import pro.gravit.launchserver.auth.hwid.HWIDHandler;
import pro.gravit.launchserver.auth.permissions.DefaultPermissionsHandler;
import pro.gravit.launchserver.auth.permissions.JsonFilePermissionsHandler;
import pro.gravit.launchserver.auth.permissions.PermissionsHandler;
import pro.gravit.launchserver.auth.protect.ProtectHandler; import pro.gravit.launchserver.auth.protect.ProtectHandler;
import pro.gravit.launchserver.auth.protect.StdProtectHandler; import pro.gravit.launchserver.auth.protect.StdProtectHandler;
import pro.gravit.launchserver.auth.provider.RejectAuthProvider; import pro.gravit.launchserver.auth.provider.RejectAuthProvider;
@ -66,8 +62,6 @@ public AuthProviderPair getAuthProviderPair(String name) {
public ProtectHandler protectHandler; public ProtectHandler protectHandler;
public PermissionsHandler permissionsHandler;
public AuthProviderPair getAuthProviderPair() { public AuthProviderPair getAuthProviderPair() {
if (authDefault != null) return authDefault; if (authDefault != null) return authDefault;
for (AuthProviderPair pair : auth) { for (AuthProviderPair pair : auth) {
@ -79,8 +73,6 @@ public AuthProviderPair getAuthProviderPair() {
throw new IllegalStateException("Default AuthProviderPair not found"); throw new IllegalStateException("Default AuthProviderPair not found");
} }
public HWIDHandler hwidHandler;
public Map<String, Component> components; public Map<String, Component> components;
public ExeConf launch4j; public ExeConf launch4j;
@ -123,9 +115,6 @@ public void verify() {
if (!isOneDefault) { if (!isOneDefault) {
throw new IllegalStateException("No auth pairs declared by default."); throw new IllegalStateException("No auth pairs declared by default.");
} }
if (permissionsHandler == null) {
throw new NullPointerException("PermissionsHandler must not be null");
}
if (env == null) { if (env == null) {
throw new NullPointerException("Env must not be null"); throw new NullPointerException("Env must not be null");
} }
@ -139,8 +128,6 @@ public void init(LaunchServer.ReloadType type) {
for (AuthProviderPair provider : auth) { for (AuthProviderPair provider : auth) {
provider.init(server); provider.init(server);
} }
permissionsHandler.init(server);
hwidHandler.init();
if (dao != null) if (dao != null)
dao.init(server); dao.init(server);
if (protectHandler != null) { if (protectHandler != null) {
@ -149,13 +136,12 @@ public void init(LaunchServer.ReloadType type) {
if (components != null) { if (components != null) {
components.forEach((k, v) -> server.registerObject("component.".concat(k), v)); components.forEach((k, v) -> server.registerObject("component.".concat(k), v));
} }
server.registerObject("permissionsHandler", permissionsHandler);
server.registerObject("hwidHandler", hwidHandler);
if (!type.equals(LaunchServer.ReloadType.NO_AUTH)) { if (!type.equals(LaunchServer.ReloadType.NO_AUTH)) {
for (AuthProviderPair pair : auth) { for (AuthProviderPair pair : auth) {
server.registerObject("auth.".concat(pair.name).concat(".provider"), pair.provider); server.registerObject("auth.".concat(pair.name).concat(".provider"), pair.provider);
server.registerObject("auth.".concat(pair.name).concat(".handler"), pair.handler); server.registerObject("auth.".concat(pair.name).concat(".handler"), pair.handler);
server.registerObject("auth.".concat(pair.name).concat(".texture"), pair.textureProvider); server.registerObject("auth.".concat(pair.name).concat(".texture"), pair.textureProvider);
server.registerObject("auth.".concat(pair.name).concat(".hwid"), pair.hwid);
} }
} }
@ -165,13 +151,12 @@ public void init(LaunchServer.ReloadType type) {
public void close(LaunchServer.ReloadType type) { public void close(LaunchServer.ReloadType type) {
try { try {
server.unregisterObject("permissionsHandler", permissionsHandler);
server.unregisterObject("hwidHandler", hwidHandler);
if (!type.equals(LaunchServer.ReloadType.NO_AUTH)) { if (!type.equals(LaunchServer.ReloadType.NO_AUTH)) {
for (AuthProviderPair pair : auth) { for (AuthProviderPair pair : auth) {
server.unregisterObject("auth.".concat(pair.name).concat(".provider"), pair.provider); server.unregisterObject("auth.".concat(pair.name).concat(".provider"), pair.provider);
server.unregisterObject("auth.".concat(pair.name).concat(".handler"), pair.handler); server.unregisterObject("auth.".concat(pair.name).concat(".handler"), pair.handler);
server.unregisterObject("auth.".concat(pair.name).concat(".texture"), pair.textureProvider); server.unregisterObject("auth.".concat(pair.name).concat(".texture"), pair.textureProvider);
server.unregisterObject("auth.".concat(pair.name).concat(".hwid"), pair.hwid);
} }
} }
if (type.equals(LaunchServer.ReloadType.FULL)) { if (type.equals(LaunchServer.ReloadType.FULL)) {
@ -194,16 +179,6 @@ public void close(LaunchServer.ReloadType type) {
} catch (IOException e) { } catch (IOException e) {
LogHelper.error(e); LogHelper.error(e);
} }
try {
hwidHandler.close();
} catch (Exception e) {
LogHelper.error(e);
}
try {
permissionsHandler.close();
} catch (Exception e) {
LogHelper.error(e);
}
} }
public static class ExeConf { public static class ExeConf {
@ -305,17 +280,13 @@ public static LaunchServerConfig getDefault(LaunchServer.LaunchServerEnv env) {
newConfig.launch4j.maxVersion = "1.8.999"; newConfig.launch4j.maxVersion = "1.8.999";
newConfig.env = LauncherConfig.LauncherEnvironment.STD; newConfig.env = LauncherConfig.LauncherEnvironment.STD;
newConfig.startScript = JVMHelper.OS_TYPE.equals(JVMHelper.OS.MUSTDIE) ? "." + File.separator + "start.bat" : "." + File.separator + "start.sh"; newConfig.startScript = JVMHelper.OS_TYPE.equals(JVMHelper.OS.MUSTDIE) ? "." + File.separator + "start.bat" : "." + File.separator + "start.sh";
newConfig.hwidHandler = new AcceptHWIDHandler();
newConfig.auth = new AuthProviderPair[]{new AuthProviderPair(new RejectAuthProvider("Настройте authProvider"), newConfig.auth = new AuthProviderPair[]{new AuthProviderPair(new RejectAuthProvider("Настройте authProvider"),
new MemoryAuthHandler(), new MemoryAuthHandler(),
new RequestTextureProvider("http://example.com/skins/%username%.png", "http://example.com/cloaks/%username%.png") new RequestTextureProvider("http://example.com/skins/%username%.png", "http://example.com/cloaks/%username%.png")
, "std")}; , new AcceptHWIDHandler(), "std")};
newConfig.auth[0].displayName = "Default"; newConfig.auth[0].displayName = "Default";
newConfig.protectHandler = new StdProtectHandler(); newConfig.protectHandler = new StdProtectHandler();
if (env.equals(LaunchServer.LaunchServerEnv.TEST)) if (env.equals(LaunchServer.LaunchServerEnv.TEST))
newConfig.permissionsHandler = new DefaultPermissionsHandler();
else
newConfig.permissionsHandler = new JsonFilePermissionsHandler();
newConfig.binaryName = "Launcher"; newConfig.binaryName = "Launcher";
newConfig.whitelistRejectString = "Вас нет в белом списке"; newConfig.whitelistRejectString = "Вас нет в белом списке";

View file

@ -10,7 +10,6 @@
import pro.gravit.launcher.request.auth.AuthRequest; import pro.gravit.launcher.request.auth.AuthRequest;
import pro.gravit.launchserver.auth.handler.AuthHandler; import pro.gravit.launchserver.auth.handler.AuthHandler;
import pro.gravit.launchserver.auth.hwid.HWIDHandler; import pro.gravit.launchserver.auth.hwid.HWIDHandler;
import pro.gravit.launchserver.auth.permissions.PermissionsHandler;
import pro.gravit.launchserver.auth.protect.ProtectHandler; import pro.gravit.launchserver.auth.protect.ProtectHandler;
import pro.gravit.launchserver.auth.provider.AuthProvider; import pro.gravit.launchserver.auth.provider.AuthProvider;
import pro.gravit.launchserver.auth.texture.TextureProvider; import pro.gravit.launchserver.auth.texture.TextureProvider;
@ -34,7 +33,6 @@ public void registerAdapters(GsonBuilder builder) {
builder.registerTypeAdapter(AuthProvider.class, new UniversalJsonAdapter<>(AuthProvider.providers)); builder.registerTypeAdapter(AuthProvider.class, new UniversalJsonAdapter<>(AuthProvider.providers));
builder.registerTypeAdapter(TextureProvider.class, new UniversalJsonAdapter<>(TextureProvider.providers)); builder.registerTypeAdapter(TextureProvider.class, new UniversalJsonAdapter<>(TextureProvider.providers));
builder.registerTypeAdapter(AuthHandler.class, new UniversalJsonAdapter<>(AuthHandler.providers)); builder.registerTypeAdapter(AuthHandler.class, new UniversalJsonAdapter<>(AuthHandler.providers));
builder.registerTypeAdapter(PermissionsHandler.class, new UniversalJsonAdapter<>(PermissionsHandler.providers));
builder.registerTypeAdapter(HWIDHandler.class, new UniversalJsonAdapter<>(HWIDHandler.providers)); builder.registerTypeAdapter(HWIDHandler.class, new UniversalJsonAdapter<>(HWIDHandler.providers));
builder.registerTypeAdapter(Component.class, new UniversalJsonAdapter<>(Component.providers)); builder.registerTypeAdapter(Component.class, new UniversalJsonAdapter<>(Component.providers));
builder.registerTypeAdapter(ProtectHandler.class, new UniversalJsonAdapter<>(ProtectHandler.providers)); builder.registerTypeAdapter(ProtectHandler.class, new UniversalJsonAdapter<>(ProtectHandler.providers));

View file

@ -97,7 +97,7 @@ public void execute(ChannelHandlerContext ctx, Client clientData) throws Excepti
// throw new AuthException("You profile not found"); // throw new AuthException("You profile not found");
//} //}
if (authType == ConnectTypes.CLIENT) if (authType == ConnectTypes.CLIENT)
server.config.hwidHandler.check(hwid, aresult.username); pair.hwid.check(hwid, aresult.username);
server.authHookManager.postHook.hook(context, clientData); server.authHookManager.postHook.hook(context, clientData);
clientData.isAuth = true; clientData.isAuth = true;
clientData.permissions = aresult.permissions; clientData.permissions = aresult.permissions;

View file

@ -10,4 +10,5 @@
@Target(FIELD) @Target(FIELD)
public @interface LauncherInject { public @interface LauncherInject {
public String value(); // target of inject public String value(); // target of inject
} }

@ -1 +1 @@
Subproject commit 5f6dc8312dcb91b92ee96040830a914d6038773d Subproject commit e84f2b9f96aab1036cf38c466d2ef3c797a2acfe