Search in sources :

Example 1 with User

use of de.dytanic.cloudnet.lib.user.User in project CloudNet by Dytanic.

the class WebsiteUtils method get.

@Override
public FullHttpResponse get(ChannelHandlerContext channelHandlerContext, QueryDecoder queryDecoder, PathProvider path, HttpRequest httpRequest) throws Exception {
    FullHttpResponse fullHttpResponse = new DefaultFullHttpResponse(httpRequest.getProtocolVersion(), HttpResponseStatus.UNAUTHORIZED);
    fullHttpResponse.headers().set("Content-Type", "application/json");
    Document dataDocument = new Document("success", false).append("reason", new ArrayList<>()).append("response", new Document());
    if (!httpRequest.headers().contains("-Xcloudnet-user") || (!httpRequest.headers().contains("-Xcloudnet-token") && !httpRequest.headers().contains("-Xcloudnet-password")) || !httpRequest.headers().contains("-Xmessage")) {
        dataDocument.append("reason", Arrays.asList("-Xcloudnet-user, -Xcloudnet-token or -Xmessage not found!"));
        fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
        return fullHttpResponse;
    }
    if (httpRequest.headers().contains("-Xcloudnet-token") ? !CloudNet.getInstance().authorization(httpRequest.headers().get("-Xcloudnet-user"), httpRequest.headers().get("-Xcloudnet-token")) : !CloudNet.getInstance().authorizationPassword(httpRequest.headers().get("-Xcloudnet-user"), httpRequest.headers().get("-Xcloudnet-password"))) {
        dataDocument.append("reason", Arrays.asList("failed authorization!"));
        fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
        return fullHttpResponse;
    }
    User user = CloudNet.getInstance().getUser(httpRequest.headers().get("-Xcloudnet-user"));
    switch(httpRequest.headers().get("-Xmessage").toLowerCase()) {
        case "serverinfos":
            {
                if (!user.getPermissions().contains("cloudnet.web.serverinfos") && !user.getPermissions().contains("*")) {
                    dataDocument.append("reason", Arrays.asList("permission denied!"));
                    fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                    fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                    return fullHttpResponse;
                }
                dataDocument.append("success", true);
                Document response = new Document();
                for (MinecraftServer minecraftServer : CloudNet.getInstance().getServers().values()) {
                    response.append(minecraftServer.getServiceId().getServerId(), minecraftServer.getServerInfo());
                }
                dataDocument.append("response", response);
                fullHttpResponse.setStatus(HttpResponseStatus.OK);
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                return fullHttpResponse;
            }
        case "proxyinfos":
            {
                if (!user.getPermissions().contains("cloudnet.web.proxyinfos") && !user.getPermissions().contains("*")) {
                    dataDocument.append("reason", Arrays.asList("permission denied!"));
                    fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                    fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                    return fullHttpResponse;
                }
                dataDocument.append("success", true);
                Document response = new Document();
                for (ProxyServer minecraftServer : CloudNet.getInstance().getProxys().values()) {
                    response.append(minecraftServer.getServiceId().getServerId(), minecraftServer.getProxyInfo());
                }
                dataDocument.append("response", response);
                fullHttpResponse.setStatus(HttpResponseStatus.OK);
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                return fullHttpResponse;
            }
        case "onlinePlayers":
            if (!user.getPermissions().contains("cloudnet.web.onlineplayers") && !user.getPermissions().contains("*")) {
                dataDocument.append("reason", Arrays.asList("permission denied!"));
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                return fullHttpResponse;
            }
            dataDocument.append("success", true);
            Document response = new Document();
            for (CloudPlayer cloudPlayer : CloudNet.getInstance().getNetworkManager().getOnlinePlayers().values()) {
                response.append(cloudPlayer.getUniqueId().toString(), cloudPlayer);
            }
            dataDocument.append("response", response);
            fullHttpResponse.setStatus(HttpResponseStatus.OK);
            fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
            return fullHttpResponse;
        case "statistic":
            if (!user.getPermissions().contains("cloudnet.web.statistic") && !user.getPermissions().contains("*")) {
                dataDocument.append("reason", Arrays.asList("permission denied!"));
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                return fullHttpResponse;
            }
            dataDocument.append("success", true).append("response", StatisticManager.getInstance().getStatistics());
            fullHttpResponse.setStatus(HttpResponseStatus.OK);
            fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
            return fullHttpResponse;
        case "cloudnetwork":
            if (!user.getPermissions().contains("cloudnet.web.cloudnetwork") && !user.getPermissions().contains("*")) {
                dataDocument.append("reason", Arrays.asList("permission denied!"));
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                return fullHttpResponse;
            }
            dataDocument.append("success", true).append("response", CloudNet.getInstance().getNetworkManager().newCloudNetwork());
            fullHttpResponse.setStatus(HttpResponseStatus.OK);
            fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
            return fullHttpResponse;
        case "startServer":
            if (!user.getPermissions().contains("cloudnet.web.startserver") && !user.getPermissions().contains("*")) {
                dataDocument.append("reason", Arrays.asList("permission denied!"));
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                return fullHttpResponse;
            }
            dataDocument.append("success", true);
            fullHttpResponse.setStatus(HttpResponseStatus.OK);
            fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
            if (httpRequest.headers().contains("-Xvalue")) {
                String group = httpRequest.headers().get("-Xvalue");
                CloudNet.getInstance().getScheduler().runTaskSync(new Runnable() {

                    @Override
                    public void run() {
                        CloudNet.getInstance().startGameServer(CloudNet.getInstance().getServerGroup(group));
                    }
                });
            }
            return fullHttpResponse;
        case "startProxy":
            if (!user.getPermissions().contains("cloudnet.web.startproxy") && !user.getPermissions().contains("*")) {
                dataDocument.append("reason", Arrays.asList("permission denied!"));
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                fullHttpResponse.setStatus(HttpResponseStatus.FORBIDDEN);
                return fullHttpResponse;
            }
            dataDocument.append("success", true);
            fullHttpResponse.setStatus(HttpResponseStatus.OK);
            fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
            if (httpRequest.headers().contains("-Xvalue")) {
                String group = httpRequest.headers().get("-Xvalue");
                CloudNet.getInstance().getScheduler().runTaskSync(new Runnable() {

                    @Override
                    public void run() {
                        CloudNet.getInstance().startProxy(CloudNet.getInstance().getProxyGroup(group));
                    }
                });
            }
            return fullHttpResponse;
        default:
            {
                dataDocument.append("success", true).append("reason", Arrays.asList("No available -Xmessage command found!"));
                fullHttpResponse.setStatus(HttpResponseStatus.OK);
                fullHttpResponse.content().writeBytes(dataDocument.convertToJsonString().getBytes(StandardCharsets.UTF_8));
                return fullHttpResponse;
            }
    }
}
Also used : User(de.dytanic.cloudnet.lib.user.User) ArrayList(java.util.ArrayList) CloudPlayer(de.dytanic.cloudnet.lib.player.CloudPlayer) Document(de.dytanic.cloudnet.lib.utility.document.Document) MinecraftServer(de.dytanic.cloudnetcore.network.components.MinecraftServer) ProxyServer(de.dytanic.cloudnetcore.network.components.ProxyServer)

Example 2 with User

use of de.dytanic.cloudnet.lib.user.User in project CloudNet by Dytanic.

the class Wrapper method updateWrapper.

public Wrapper updateWrapper() {
    if (getChannel() == null)
        return this;
    java.util.Map<String, ServerGroup> groups = NetworkUtils.newConcurrentHashMap();
    for (ServerGroup serverGroup : CloudNet.getInstance().getServerGroups().values()) if (serverGroup.getWrapper().contains(networkInfo.getId())) {
        groups.put(serverGroup.getName(), serverGroup);
        sendPacket(new PacketOutCreateTemplate(serverGroup));
    }
    java.util.Map<String, ProxyGroup> proxyGroups = NetworkUtils.newConcurrentHashMap();
    for (ProxyGroup serverGroup : CloudNet.getInstance().getProxyGroups().values()) if (serverGroup.getWrapper().contains(networkInfo.getId())) {
        proxyGroups.put(serverGroup.getName(), serverGroup);
        sendPacket(new PacketOutCreateTemplate(serverGroup));
    }
    SimpledUser simpledUser = null;
    User user = CollectionWrapper.filter(CloudNet.getInstance().getUsers(), new Acceptable<User>() {

        @Override
        public boolean isAccepted(User value) {
            return networkInfo.getUser().equals(value.getName());
        }
    });
    if (user != null) {
        simpledUser = user.toSimple();
    }
    WrapperExternal wrapperExternal = new WrapperExternal(CloudNet.getInstance().getNetworkManager().newCloudNetwork(), simpledUser, groups, proxyGroups);
    sendPacket(new PacketOutWrapperInfo(wrapperExternal));
    return this;
}
Also used : ProxyGroup(de.dytanic.cloudnet.lib.server.ProxyGroup) ServerGroup(de.dytanic.cloudnet.lib.server.ServerGroup) SimpledUser(de.dytanic.cloudnet.lib.user.SimpledUser) User(de.dytanic.cloudnet.lib.user.User) SimpledUser(de.dytanic.cloudnet.lib.user.SimpledUser) WrapperExternal(de.dytanic.cloudnet.lib.network.WrapperExternal)

Example 3 with User

use of de.dytanic.cloudnet.lib.user.User in project CloudNet by Dytanic.

the class CommandCreate method onExecuteCommand.

@Override
public void onExecuteCommand(CommandSender sender, String[] args) {
    if (args.length > 2) {
        if (args[0].equalsIgnoreCase("dispatchCommand")) {
            // create dispatchCommand name create
            StringBuilder builder = new StringBuilder();
            for (short i = 2; i < args.length; i++) {
                builder.append(args[i]);
            }
            CloudNet.getInstance().getDbHandlers().getCommandDispatcherDatabase().appendCommand(args[1], builder.substring(0, (builder.substring(0).endsWith(" ") ? builder.length() - 1 : builder.length())));
            sender.sendMessage("A dispatcher was created \"" + args[1] + "\": \"" + builder.substring(0) + "\"");
            return;
        }
    }
    switch(args.length) {
        case 2:
            if (args[0].equalsIgnoreCase("proxy") || args[0].equalsIgnoreCase("-p")) {
                if (CloudNet.getInstance().getProxyGroups().containsKey(args[1])) {
                    CloudNet.getInstance().startProxy(CloudNet.getInstance().getProxyGroups().get(args[1]));
                    sender.sendMessage("Trying to startup a proxy server...");
                } else {
                    sender.sendMessage("The proxy group doesn't exist");
                }
                return;
            }
            if (args[0].equalsIgnoreCase("server") || args[0].equalsIgnoreCase("-s")) {
                if (CloudNet.getInstance().getServerGroups().containsKey(args[1])) {
                    CloudNet.getInstance().startGameServer(CloudNet.getInstance().getServerGroups().get(args[1]));
                    sender.sendMessage("Trying to startup a game server...");
                } else {
                    sender.sendMessage("The server group doesn't exists");
                }
                return;
            }
            if (args[0].equalsIgnoreCase("wrapper") && !CloudNet.getInstance().getWrappers().containsKey(args[1])) {
                new SetupWrapper(sender, args[1]);
                return;
            }
            if (args[0].equalsIgnoreCase("serverGroup")) {
                new SetupServerGroup(sender, args[1]);
                return;
            }
            if (args[0].equalsIgnoreCase("proxyGroup")) {
                new SetupProxyGroup(sender, args[1]);
                return;
            }
            break;
        case 3:
            if ((args[0].equalsIgnoreCase("proxy") || args[0].equalsIgnoreCase("-p")) && NetworkUtils.checkIsNumber(args[2])) {
                if (CloudNet.getInstance().getProxyGroups().containsKey(args[1])) {
                    for (short i = 0; i < Integer.parseInt(args[2]); i++) {
                        CloudNet.getInstance().startProxy(CloudNet.getInstance().getProxyGroups().get(args[1]));
                        NetworkUtils.sleepUninterruptedly(2000L);
                    }
                    sender.sendMessage("Trying to startup a proxy server...");
                } else {
                    sender.sendMessage("The proxy group doesn't exists");
                }
                return;
            }
            if ((args[0].equalsIgnoreCase("server") || args[0].equalsIgnoreCase("-s")) && NetworkUtils.checkIsNumber(args[2])) {
                if (CloudNet.getInstance().getServerGroups().containsKey(args[1])) {
                    for (short i = 0; i < Integer.parseInt(args[2]); i++) {
                        CloudNet.getInstance().startGameServer(CloudNet.getInstance().getServerGroups().get(args[1]));
                        NetworkUtils.sleepUninterruptedly(2000L);
                    }
                    sender.sendMessage("Trying to startup a game server...");
                } else {
                    sender.sendMessage("The server group doesn't exists");
                }
                return;
            }
            if (args[0].equalsIgnoreCase("user")) {
                if (!CloudNet.getInstance().getUsers().contains(args[1])) {
                    User user = new BasicUser(args[1], args[2], Arrays.asList());
                    CloudNet.getInstance().getUsers().add(user);
                    CloudNet.getInstance().getConfig().save(CloudNet.getInstance().getUsers());
                    sender.sendMessage("The user was created!");
                } else {
                    sender.sendMessage("The user already exists!");
                }
            }
            break;
        case 4:
            if (args[0].equalsIgnoreCase("cloudserver") || args[0].equalsIgnoreCase("cs")) {
                if (NetworkUtils.checkIsNumber(args[2])) {
                    CloudNet.getInstance().startCloudServer(args[1], Integer.parseInt(args[2]), args[3].equalsIgnoreCase("true"));
                    sender.sendMessage("Trying to startup a cloud server...");
                } else {
                    sender.sendMessage("Invalid argument!");
                }
                return;
            }
            if (args[0].equalsIgnoreCase("TEMPLATE")) {
                if (CloudNet.getInstance().getServerGroups().containsKey(args[2])) {
                    if (args[3].equalsIgnoreCase("LOCAL")) {
                        ServerGroup serverGroup = CloudNet.getInstance().getServerGroups().get(args[2]);
                        serverGroup.getTemplates().add(new Template(args[1], TemplateResource.LOCAL, null, new String[] {}, Arrays.asList()));
                        CloudNet.getInstance().getConfig().createGroup(serverGroup);
                        NetworkUtils.addAll(CloudNet.getInstance().getServerGroups(), CloudNet.getInstance().getConfig().getServerGroups(), new Acceptable<ServerGroup>() {

                            @Override
                            public boolean isAccepted(ServerGroup value) {
                                return true;
                            }
                        });
                        NetworkUtils.addAll(CloudNet.getInstance().getProxyGroups(), CloudNet.getInstance().getConfig().getProxyGroups(), new Acceptable<ProxyGroup>() {

                            @Override
                            public boolean isAccepted(ProxyGroup value) {
                                return true;
                            }
                        });
                        CloudNet.getInstance().getWrappers().values().forEach(new Consumer<Wrapper>() {

                            @Override
                            public void accept(Wrapper wrapper) {
                                wrapper.updateWrapper();
                            }
                        });
                        sender.sendMessage("The template was created and all wrappers were updated!");
                    }
                    if (args[3].equalsIgnoreCase("MASTER")) {
                        ServerGroup serverGroup = CloudNet.getInstance().getServerGroups().get(args[2]);
                        serverGroup.getTemplates().add(new Template(args[1], TemplateResource.MASTER, null, new String[] {}, Arrays.asList()));
                        CloudNet.getInstance().getConfig().createGroup(serverGroup);
                        NetworkUtils.addAll(CloudNet.getInstance().getServerGroups(), CloudNet.getInstance().getConfig().getServerGroups(), new Acceptable<ServerGroup>() {

                            @Override
                            public boolean isAccepted(ServerGroup value) {
                                return true;
                            }
                        });
                        NetworkUtils.addAll(CloudNet.getInstance().getProxyGroups(), CloudNet.getInstance().getConfig().getProxyGroups(), new Acceptable<ProxyGroup>() {

                            @Override
                            public boolean isAccepted(ProxyGroup value) {
                                return true;
                            }
                        });
                        CloudNet.getInstance().getWrappers().values().forEach(new Consumer<Wrapper>() {

                            @Override
                            public void accept(Wrapper wrapper) {
                                wrapper.updateWrapper();
                            }
                        });
                        sender.sendMessage("The template was created and all wrappers were updated!");
                    }
                } else {
                    sender.sendMessage("The server group doesn't exist");
                }
            }
            break;
        case 5:
            if (args[0].equalsIgnoreCase("TEMPLATE")) {
                if (CloudNet.getInstance().getServerGroups().containsKey(args[2])) {
                    if (args[3].equalsIgnoreCase("URL")) {
                        ServerGroup serverGroup = CloudNet.getInstance().getServerGroups().get(args[2]);
                        serverGroup.getTemplates().add(new Template(args[1], TemplateResource.URL, args[4], new String[] { ("-Dtest=true") }, Arrays.asList()));
                        CloudNet.getInstance().getConfig().createGroup(serverGroup);
                        NetworkUtils.addAll(CloudNet.getInstance().getServerGroups(), CloudNet.getInstance().getConfig().getServerGroups(), new Acceptable<ServerGroup>() {

                            @Override
                            public boolean isAccepted(ServerGroup value) {
                                return true;
                            }
                        });
                        NetworkUtils.addAll(CloudNet.getInstance().getProxyGroups(), CloudNet.getInstance().getConfig().getProxyGroups(), new Acceptable<ProxyGroup>() {

                            @Override
                            public boolean isAccepted(ProxyGroup value) {
                                return true;
                            }
                        });
                        CloudNet.getInstance().getWrappers().values().forEach(new Consumer<Wrapper>() {

                            @Override
                            public void accept(Wrapper wrapper) {
                                wrapper.updateWrapper();
                            }
                        });
                        sender.sendMessage("The template was created and all wrappers were updated!");
                    }
                } else {
                    sender.sendMessage("The server group doesn't exists");
                }
            }
            break;
        default:
            sender.sendMessage("create PROXY <proxyGroup> <count> | Creates a proxy server of a proxy group. <count> is not mandatory", "create SERVER <serverGroup> <count> | Creates a game server of a server group. <count> is not mandatory", "create CLOUDSERVER <name> <memory> <priorityStop>", "create USER <name> <password> | Creates a new user with specified name and password", "create PROXYGROUP <name> | Creates a completely new proxy group for BungeeCord with its own configurations, etc.", "create SERVERGROUP <name> | Creates a completely new server group for Minecraft servers with its own configurations, etc.", "create DISPATCHCOMMAND <main-command> <command> | Creates a simple command alias", "create WRAPPER <name> | Creates and whitelists a new wrapper. The wrapper can also have the same IP of a previous wrapper", "create TEMPLATE <name> <group> LOCAL | Creates a new locale (Wrapper locales) template for a server group", "create TEMPLATE <name> <group> MASTER | Creates a new master backend (Master locales) template for a server group", "create TEMPLATE <name> <group> URL <url> | Creates a new template of a server group via url");
            break;
    }
}
Also used : SetupWrapper(de.dytanic.cloudnetcore.setup.SetupWrapper) SetupWrapper(de.dytanic.cloudnetcore.setup.SetupWrapper) Wrapper(de.dytanic.cloudnetcore.network.components.Wrapper) SetupProxyGroup(de.dytanic.cloudnetcore.setup.SetupProxyGroup) ProxyGroup(de.dytanic.cloudnet.lib.server.ProxyGroup) User(de.dytanic.cloudnet.lib.user.User) BasicUser(de.dytanic.cloudnet.lib.user.BasicUser) SetupServerGroup(de.dytanic.cloudnetcore.setup.SetupServerGroup) SetupServerGroup(de.dytanic.cloudnetcore.setup.SetupServerGroup) Template(de.dytanic.cloudnet.lib.server.template.Template) BasicUser(de.dytanic.cloudnet.lib.user.BasicUser) SetupProxyGroup(de.dytanic.cloudnetcore.setup.SetupProxyGroup)

Aggregations

User (de.dytanic.cloudnet.lib.user.User)3 ProxyGroup (de.dytanic.cloudnet.lib.server.ProxyGroup)2 WrapperExternal (de.dytanic.cloudnet.lib.network.WrapperExternal)1 CloudPlayer (de.dytanic.cloudnet.lib.player.CloudPlayer)1 ServerGroup (de.dytanic.cloudnet.lib.server.ServerGroup)1 Template (de.dytanic.cloudnet.lib.server.template.Template)1 BasicUser (de.dytanic.cloudnet.lib.user.BasicUser)1 SimpledUser (de.dytanic.cloudnet.lib.user.SimpledUser)1 Document (de.dytanic.cloudnet.lib.utility.document.Document)1 MinecraftServer (de.dytanic.cloudnetcore.network.components.MinecraftServer)1 ProxyServer (de.dytanic.cloudnetcore.network.components.ProxyServer)1 Wrapper (de.dytanic.cloudnetcore.network.components.Wrapper)1 SetupProxyGroup (de.dytanic.cloudnetcore.setup.SetupProxyGroup)1 SetupServerGroup (de.dytanic.cloudnetcore.setup.SetupServerGroup)1 SetupWrapper (de.dytanic.cloudnetcore.setup.SetupWrapper)1 ArrayList (java.util.ArrayList)1