Giter VIP home page Giter VIP logo

pavlovrconwebserver's People

Contributors

devinspitz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pavlovrconwebserver's Issues

Switch Map not working

Switching the Map is not working (SwitchMap).
Only Rotate Map is working.
And great work man!
(Using Windows Build v0.0.2)

Users / Servers

Add servers to users so they can only send commands to server who are in there list.

Team aliases and matchsetup

By far the most useful feature of pavlov-bot is the SND ;matchsetup command. This requires your system to know about players and in particular teams. That is you need to have way to pre-define all of the players on a team regardless if they are currently playing. Once you have defined a pair of teams, the ;matchsetup command pushes the two teams to the correct sides requested using SwitchTeam then runs ResetSnd. There is no problem with issuing SwtichTeam for players who are already on the right team or aren't actually playing in that match.

Your team setup system needs to be able to quickly accommodate adding Ringers to a team. These are players who are only playing for a match and don't become permanent team members.

Again feel free to steal from pavlov-bot

Parse the itemlist from maps

Add a feature to parse the itemlist for any custom weapons and add them to a seperate tab in the giveitem menu each time a new map is loaded.

new default maps

The new list of maps are like this:

datacenter

sand

bridge

containeryard

prisonbreak (Siberia)

hospital (Zombies map)

killhouse

range

tutorial

stalingrad (PC only)

santorini

ogcontainers

station (PC BETA only)

industry (PC BETA only)

haguenau (Shack RC only)

DNS with port ?

        so i know if i am to set a DNS , A Record for a IP you would typically use a default port  like :80 or :443 so i was going to set my DNS on my domain  with an A Record with the name of cloud but i get     **bad request**   i think there used to be more in the instructions about this and i cant seem to find them now so i just change 5001 to 80 ?  the older version i used before that used nginx said it used 80 and 443 for something 

Multiple commands from bucket

Add a new button to execute multiple commands in succession. It would generate a .txt file with all of the commands u want to run then save it and add it to a list so the user can select it and run it.

API/Swagger

Add swagger so we have a API documentation.

unban

To make unbane usfull i need to know which players are banned.
Also if i just save the banned from the gui i dont have the ones directly done on the server.

bad perms :(

So i ran into this shortly after install and and i tried adjusting the perms to no luck

https://cloud.jtwp.org/index.php/s/ExKjTXy9neXKzjt

so placed into development mode and got a more detailed error report

SftpPathNotFoundException: No such file

    Renci.SshNet.Sftp.SftpSession.RequestOpen(string path, Flags flags, bool nullOnError)
    Renci.SshNet.Sftp.SftpFileStream..ctor(ISftpSession session, string path, FileMode mode, FileAccess access, int bufferSize)
    Renci.SshNet.SftpClient.Create(string path)
    PavlovRconWebserver.Services.RconService.GetFile(PavlovServer server, string path) in RconService.cs

                    sftp.Connect();
                    //check if file exist
                    if (!sftp.Exists(path))
                        try
                        {

                            sftp.Create(path);

                        }
                        catch (SftpPermissionDeniedException e)
                        {
                            sftp.Disconnect();
                            throw new CommandException(server.Name + ": Could not create file: " + path + " " + e.Message);
                        }

PavlovRconWebserver.Models.PavlovServerGameIni.ReadFromFile(PavlovServer pavlovServer, RconService rconService) in PavlovServerGameIni.cs

            public List<PavlovServerGameIniMap> MapRotation { get; set; } =
                new List<PavlovServerGameIniMap>(); // example string = (MapId="UGC1758245796", GameMode="GUN")
            public async Task<bool> ReadFromFile(PavlovServer pavlovServer, RconService rconService)
            {

                var GameIniContent = await rconService.GetFile(pavlovServer,

                    pavlovServer.ServerFolderPath + FilePaths.GameIni);
                var lines = GameIniContent.Split("\n");
                var first = true; // cause the first line is to ignore
                foreach (var line in lines)
                {
                    if (first)

PavlovRconWebserver.Controllers.PavlovServerController.EditServerSettings(int serverId) in PavlovServerController.cs

                viewModel.serverId = serverId;

Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask<IActionResult> actionResultValueTask)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

so then i tried

root@rs-zap763817-1:/home/steam/pavlovserver/Pavlov/Saved/Config/LinuxServer# chown steam /home/steam/pavlovserver1/Pavlov/Saved/Config/LinuxServer/Game.ini

still the same cannot create file tried this

no luck so then

chown -R steam:steam /home/steam/pavlovserver/Pavlov/Saved/Config/LinuxServer

no luck
i even tried

chown -R steam:steam /root/root/pavlovserver/Pavlov/Saved/Config/LinuxServer

im out of ideas lol

There are new commands and skins

implement

AddMod {UniqueID} -Adds a mod ID to the mods.txt file
RemoveMod {UniqueID} -Removes a mod ID to the mods.txt file
ItemList -Shows available items for GiveItem command

skins:
clown, prisoner, naked, farmer, russian, nato, us, soviet, german

server stuck on datacenter

The software should reset the server and save a log that the server had to be reset.

Will just check the server if datacenter is not in the rotation.

Consider a more limited map chooser

I see a few issues with the map chooser method you are using.

  1. It is slow because of need to grab all the maps
  2. It is not very VR friendly due to the need to search (favourites will help somewhat, but everyone will need to set that up)
  3. It will require a large amount of storage or a map cleanup system for cloud computing deployments where storage is $$$. The issue is that every map picked gets downloaded and never deleted... your /tmp/workshop will get huge. When you start loading datacentre everytime, this is because you have run out of space.

Suggest having a pre-defined short list of maps you are hosting. Faster to choose, less bloat over time. Then move your current map chooser a level deeper as a "request" system. Admins and mods can use directly to add to the hosted list and other users perhaps can just make requests.

Or you will need to follow Dave's official server system and clean up the maps, then re-download them (slow) later on.

Limited Shack support

Limited functions:

What will work:

  1. simple rcon commands
  2. adding mods via the GUI
  3. adding a whitelist via the GUI
  4. statistics - leaderboard
  5. history
  6. start server
  7. stop server
  8. creating a shack server via software.
  9. map selection/settings and also deleting maps.
  10. editing server settings
  11. update server

Pavlov server logs

Show the service logs of the pavlov servers so you can track issues down from there.

Time Ban problems?

ok so time bans ? they don't seem to work currently , iv also checked with another group that uses the tool exclusively and for a wile they get the same thing

it is not a typical error (we are still in dev mode )
this is the popup
{"readyState":4,"responseText":"Renci.SshNet.Common.SftpPathNotFoundException: No such file\n at Renci.SshNet.Sftp.SftpSession.RequestOpen(String path, Flags flags, Boolean nullOnError)\n at Renci.SshNet.Sftp.SftpFileStream..ctor(ISftpSession session, String path, FileMode mode, FileAccess access, Int32 bufferSize)\n at Renci.SshNet.SftpClient.Create(String path)\n at PavlovRconWebserver.Services.RconService.GetFile(PavlovServer server, AuthType type, String path, SshServer sshServer) in /root/pavlovSource/PavlovRconWebserver/Services/RconService.cs:line 217\n at PavlovRconWebserver.Services.RconService.SendCommand(PavlovServer server, String command, Boolean deleteUnusedMaps, Boolean getFile, String writeContent, Boolean writeFile) in /root/pavlovSource/PavlovRconWebserver/Services/RconService.cs:line 501\n at PavlovRconWebserver.Services.RconService.GetServerBansFromBlackList(PavlovServer server, List1 banlist) in /root/pavlovSource/PavlovRconWebserver/Services/RconService.cs:line 324\n at PavlovRconWebserver.Controllers.RconController.RemoveBanPlayer(Int32 serverId, String steamId) in /root/pavlovSource/PavlovRconWebserver/Controllers/RconController.cs:line 202\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n--- End of stack trace from previous location where exception was thrown ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()\n--- End of stack trace from previous location where exception was thrown ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context)\n at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\n at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\n at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)\n\nHEADERS\n=======\nConnection: keep-alive\nContent-Type: application/x-www-form-urlencoded; charset=UTF-8\nAccept: */*\nAccept-Encoding: gzip, deflate\nAccept-Language: en-US,en;q=0.5\nCookie: .AspNetCore.Antiforgery.N_7Mmx87XUM=CfDJ8AlysNExmKVGuB10wue04O-oMXYZCfQSzwoXRMuJOAGKxoBRij5klUz63i3VPITyxvxKkx73oLXysqzeFpnhp0XNwObAplQMMM0MS9nW74bU3mt7J-H4g2AOlZP3LKtssb0BIgghlFbgvmRDOW0KJDg; .AspNetCore.Antiforgery.hmGEr0CMAUQ=CfDJ8BYbFs7wBu5PgTQiG_rX0JeX9GrkxM1Du78qMqrguJVudlazWlg6VSEpRsJQiV_ir7Mksm_bym57GZxvJXS6lliLFlSIL6c1bCD6woOWvgYRk9fwfljYpBBeJILtQUMcknMRvZ6nhBxtuzkfcz838Jg; .AspNetCore.Identity.Application=CfDJ8BYbFs7wBu5PgTQiG_rX0JeUPqXFJBsfWUuQA7Hrk0xVr4Rqvjn9-HVJj2-mtmtEJqTop--uAcRLJsNeThysXPX7LcoZUmyBQTC-njvg-tp4EJOuQFRCb-AxBx5ofZYq_p4azdyHZ5ldTizq6rrKAWar8Ag1gBeuopgB2KDhwnn0ihUC_nHQii9Mi__dghlq7lRYHwwP1gWXU5VQOInX4G_2ORE-x5l5IgSny_o61_X7Ct9_mC933Cpk5wa-ClMHw023qmztXaJD0Wkbd10iGU2y0bC3Qg-lfS_YBrCRkFTVze8lv-K7jiIlZU0hEVobJyZ6CZECrB5ccowYZntQCftDa4kUQxQB6itLE8ZELfHV8Ff-WUNpxGVnvnrlSIWNLPwHMp2PDsm92_6ZW3JeZaoTKwCgeGc5-gY3egDBPKtC29LUIsGsl6mejzpRe-Cr75NP6EtoGgcp932ykLE8lRD4bFjXBJs2vlhM63_PCtIOEFqEmxMlx7NHLm3e3x1RVjkx90gOlZ7bftFmOwAJ5xdbLXvAx4GmqlET0fq0VeMVquSYSguxh5wdCb63yoppY6hfOcfPGb0oPh1t7TsaC8PUI7Urb8TVI06Xmwi_6WLCcm18hJizvp8d2NR6Oh1bUlzE8wsJvScYAsdUx8sZtasB9XzXqIsrG0J1bm6n0wwAyN1tqSrwLY-CSiyixZW6kMFuKOYv6SqNLm77z2ISWJkQITq8tr8UsHLIBL6j_eWIGSx2e0ql-UHYyqzttJH4jgpx8eFUlR_ZUTPcoONeogFmGMIEhKQHB_79rGS6m-mRQg8sA7emyfl0viGvN5yCLb1Ke1VAZSkh3UCNKQH1LsCQv2hoAwp3b4wY8CpuZeR6\nHost: 147.189.173.79:5001\nReferer: http://147.189.173.79:5001/Rcon\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0\nDNT: 1\nOrigin: http://147.189.173.79:5001\nContent-Length: 36\nX-Requested-With: XMLHttpRequest\n","status":500,"statusText":"Internal Server Error"}

Originally posted by @oneSALTycracker in #42 (comment)

logged in STEAM:ID to make commands

Pull the user that is logged in STEAM:ID to make the giveitem button or execute command button apply to the local-player instead of having to select every time

Give the player the possibility to report persons.

Give the player the possibility to abuse persons on the gui.
Show them the players they played with etc. so they can choose which one was a cheater.

Do not do anything just collect it for the admins so they can react.

Permissions structure for users

Currently it seems that all users can run all commands. This is way too powerful. Suggest stealing User/Captain/Mod/Admin user structure from pavlov-bot.

Suggestions for improvement

Hello dear devinSpitz,

my suggestion for improvement would be a ban list and time management, for example. 1 minute ban, 5 min, 10 min, 30 min, 1 hour, maybe you write in yourself how long a ban should go and make the player list bigger or simpler

a player list with info about the stats Kill Death how many hours someone has been playing.

Multi server commands

There should be an option for multiserver commands.
Like:

restart
stop
start
changeMap
resetSND
rotateMap
give team cash

It would be better for tournaments and stuff where you want to start at the same time on multiple server etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.