Jump to content

Improvements for the dedicated server


Alloc

Recommended Posts

Hi. I have request if possible. I'm sure we are all familiar with the OutOfMemory error that locks up servers. Would it be possible to make an option to watch the log file for this error and automatically save and restart the server when this happens? I'm running a Linux server and am an amateur when it comes to anything in linux.

Link to comment
Share on other sites

Does your API have any console command functionality? Can I send a command to the API with the correct tokens, that will issue a command to the server?

If you're talking about a WebAPI for console commands: Not yet.

 

If not, is it possible to run PHP code in the mono webserver that could then respond to ajax requests (cross-domain) from my webhost?

Hell NO :D

Wouldn't want to get that kind of PITA in to the game ;)

If you want code to handle your own requests you'll have to write .NET code for the mod.

 

I have toyed with the idea of CURL-POST to the included webcontrol panel, but the connection on that page is too flakey to be a reliable method of issuing commands.

If you're talking about the game's original control panel: Yeah, it's not very fault tolerant. Based on a OTP for the next request received on each prior request. As long as you keep a strict order of issuing things this should work (at least one server manager used to support this interface) though.

 

If you wanted to issue commands from a remotely hosted website with only the standard ports available, how would you do it using PHP/JS?

If you can't connect to remote ports with PHP (open a simple outgoing TCP socket) you'll either have to wait until I add the command API or code something yourself ;) But it should be possible to open connections at least to some ports, did you try changing the "Telnet" port on your game server to something like 80?

 

 

 

Hi. I have request if possible. I'm sure we are all familiar with the OutOfMemory error that locks up servers. Would it be possible to make an option to watch the log file for this error and automatically save and restart the server when this happens? I'm running a Linux server and am an amateur when it comes to anything in linux.

How should that work? If a program has run out of memory there's no way to catch that anymore, it's already crashed.

Link to comment
Share on other sites

If you're talking about a WebAPI for console commands: Not yet.

But you have it in the pipeline? That is great news, if it can return data also, it will mean I never have to faf around with PHP telent wrappers again!

 

Hell NO :D

Wouldn't want to get that kind of PITA in to the game ;)

Haha, point taken :p

 

If you're talking about the game's original control panel: Yeah, it's not very fault tolerant. Based on a OTP for the next request received on each prior request. As long as you keep a strict order of issuing things this should work (at least one server manager used to support this interface) though.

I've managed to get a PHP telent wrapper to issue commands for now, I look forward to when I can bin it and use the web API :D

 

If you can't connect to remote ports with PHP (open a simple outgoing TCP socket) you'll either have to wait until I add the command API or code something yourself ;) But it should be possible to open connections at least to some ports, did you try changing the "Telnet" port on your game server to something like 80?

I was very surprised when my webhost opened a few outbound ports to my server address without any fuss! This means I can issue commands from my webhost, but I seem unable to return any data from the connection. It works fine on my home dev machine, but as soon as I upload it, the commands are issued but there is no return. I haven't gone deep into it yet, but out of interest, it seems that Telnet uses random ports to send data back to the client. Is that right, and if so, is it possible to specify outgoing ports?

 

Once I realised that the highping kicker mod (Server Tools) did not make the server fall under the modified category, I installed that and shelved the once a minute cron spamming the telnet console for a player list for the pings. I'm using the same system with your webapi however to get the IP address for some GEO filtering, but a once a minute spam to a web address falls over far less than the same with a telnet connection. PHP has it's own geoplugin (:p) that makes the job really easy, but then the Telnet requirement raises it's ugly head and mocks me: commands via WebAPI will be a real boon, can I be cheeky and ask if you have a rough estimation of the time of release for this functionality?

 

Mr Alloc, the server map and the server fixes are an indispensable tool to me now, kudos for all the time and effort you put in, I hope those Pimps are paying you!

Keep surviving!

Zig.

Edited by zigstum (see edit history)
Link to comment
Share on other sites

But you have it in the pipeline?

Yep.

 

 

I haven't gone deep into it yet, but out of interest, it seems that Telnet uses random ports to send data back to the client. Is that right, and if so, is it possible to specify outgoing ports?

Yes and no ;)

The connection is a simple TCP connection, there's no "random" ports for outbound vs inbound traffic. Of course any TCP connection (at least normally) does use a random client side port but that doesn't impact anything.

 

 

... can I be cheeky and ask if you have a rough estimation of the time of release for this functionality?

No estimate. Hope to get dev speed up a bit in the upcoming weeks though as I can dedicate more time to it.

Link to comment
Share on other sites

...can I be cheeky and ask if you have a rough estimation of the time of release for this functionality?

 

No estimate. Hope to get dev speed up a bit in the upcoming weeks though as I can dedicate more time to it.

 

Can I also be cheeky and ask what your top 3 priorities/fixes/additions will be when you do get time? There is quite the pile of tickets to go through.

Link to comment
Share on other sites

Alloc, I have a request. Can you please reduce the number of failed login attempts on the telnet server to 3? Or give us a command to set number of allowed failed attempts?

 

And if it's possible, an IP whitelist (for telnet) would go a very long way to help securing the servers.

Edited by Soylent (see edit history)
Link to comment
Share on other sites

Was digging around on your website for this, and found your 'Active ticket list' - https://7dtd.illy.bz/report/1

 

Is this still relevant? (most look quite old now). One in particular caught my eye - https://7dtd.illy.bz/ticket/60 - this ticket relating to a hook for player deaths.

 

I'm looking implement a sort of 'hardcore' mode (details outlined here - https://7daystodie.com/forums/showthread.php?38582-Delete-character-on-death), and I think that proposed hook would definitely come in handy!

Link to comment
Share on other sites

Can I also be cheeky and ask what your top 3 priorities/fixes/additions will be when you do get time? There is quite the pile of tickets to go through.

Nah, no real plan. Most likely the first thing would be finally fixing the log tab ;)

 

 

 

Alloc, I have a request. Can you please reduce the number of failed login attempts on the telnet server to 3? Or give us a command to set number of allowed failed attempts?

 

And if it's possible, an IP whitelist (for telnet) would go a very long way to help securing the servers.

No reason why not, just gotta find a place to save this stuff ;)

Also it's core game so will take longer to hit public anyway.

 

 

 

 

Is this still relevant? (most look quite old now).

Kinda ... I want to do them but especially the scripts have quite low priority currently as they worked as required mostly.

 

One in particular caught my eye - https://7dtd.illy.bz/ticket/60 - this ticket relating to a hook for player deaths.

Like some of the other "chat" things I wanted to delay it until I reworked the chat system / logging in game so it's easier to parse that stuff from the log.

Link to comment
Share on other sites

Cheers Alloc.

 

Going to try and customise the build myself to add that in. Just wondering how you debug these libs in Visual Studio? I've got a local 7DTD server running via SteamCMD, and I've done a DEBUG build of the .dll's and added them (and associated PDB's) to the /mods dir of the server. The mod is definitely working (checked the server log and tested some commands in-game), but when I try and attach VS to the 7DaysToDieServer process, the mod .dll's never seem to appear in the modules list so I can't stick breakpoints anywhere in the code. It's weird because to sanity check this, I used ProcessExplorer and the 7DaysToDieServer process definitely has a handle on the mod's server-fixes .dll.

 

Any tips?

Link to comment
Share on other sites

Going to try and customise the build myself to add that in.

Ticket 60 is referring to the Linux scripts though, no relation to the mod ;)

 

Just wondering how you debug these libs in Visual Studio?

I don't. I don't even use VS. I doubt that it's possible to attach a .NET debugger to a non-development build of the game though.

 

For me it's typically writing code and if something does not work adding a few log prints where applicable.

Link to comment
Share on other sites

will it in future eventually give an command that you can say the server it should pre calculate the complete map so you can start with all rendered?

Navezgane: Possibly. RWG: Possibly one to specify an area (infinite world can't be "all" rendered).

Link to comment
Share on other sites

  • 2 weeks later...

Greetings all:

 

Does the web map work with Navezgane? Superficially at least I can't see any reason for it not working, but on my test server with Navezgane the web map listener never fires up. It appears it is trying to but fails:

 

2016-03-11T13:20:59 5.407 INF Error in Web.ctor: System.Net.Sockets.SocketException: Address already in use
 at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00000] in <filename unknown>:0 
 at System.Net.EndPointListener..ctor (System.Net.IPAddress addr, Int32 port, Boolean secure) [0x00000] in <filename unknown>:0 
 at System.Net.EndPointManager.GetEPListener (System.Net.IPAddress addr, Int32 port, System.Net.HttpListener listener, Boolean secure) [0x00000] in <filename unknown>:0 
 at System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) [0x00000] in <filename unknown>:0 
 at System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) [0x00000] in <filename unknown>:0 

 

I have a RW on the same server and its web map is working fine. The telnet ports are configured differently (RW on 8081, Navezgane on 8061), so I thought the web map would use <telnet port> + 1 for the web listener, or 8062.

 

If this is working as designed is there any reason why the web map could not be made to work with Navezgane?

Edited by blotavious (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...
It would be possible to modify the online map to show the place of the dead backpacks players?

Theoretically: Sure. Currently I don't have the required data at hand though and it's thus also not possible to query it from the web page.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...