Jump to content

Native Linux server (with management scripts)


Alloc

Recommended Posts

I have a question regarding the new "Map rendering" feature. As I understand it, the map folder should be created automatically and the according map png's are palced into the map folder of the instance while players are running around? ("The map is rendered to image files as people visit the different places. "). Or is the map folder only created with the png's if and when I call the rendermap command?

 

I ask because I restarted my instance with the newest script version and the map folder is not being created :(

Link to comment
Share on other sites

Yup, it should create everythig automatically. But I did not yet create an updated scripts bundle, so unless you manually added the DLLs it won't be in there ;)

Created a new bundle now with the current DLLs.

 

If it still does not work check the logs for errors.

Link to comment
Share on other sites

A friend of mine is trying to set up 7dtd on a linux based dedicated server and he is having trouble keeping the telnet connection open so that he is able to restart the server without having to resort to using root commands. Any suggestions?

Link to comment
Share on other sites

As the Telnet interface is part of the engine you can't "keep it open" during a restart. So for now it really resolves to using a login on the machine and issue the command to (stop & ) start the server. If you want to allow that for non-root you might consider going with a sudoers entry that only allows running "7dtd.sh start" (and optionally "7dtd.sh stop" if you want to shutdown from within the console).

Link to comment
Share on other sites

Hi,

I am trying to compile (svn ver.140/visual studio 2012) 7dtd-server-fixes.dll from the server-fixes.sln but it is missing a file named 'src\CustomCommands\EnableRendering.cs'.

 

Many thanks for this awesome script. ^^

Link to comment
Share on other sites

As you said you could not easily use the telnetCommand function (or any other provided by the scripts) but well, as long as I don't write everything in PHP (which obviously won't happen as that language isn't made for the given tasks ;) ) there's no way around that if you want to use the functions. But you should be able to relatively easily set up a connection to the Telnet port with the PHP sockets stuff.

 

So I've been succesfully running PHP scripts in your evented .sh scripts with the #!/usr/bin/php shebang with the assistance of https://github.com/ngharo/Random-PHP-Classes/blob/master/Telnet.class.php .

 

<basedir>/hooks/playerConnect/ping.sh

#!/usr/bin/php
<?php
require_once('class-telnet.php');
....
$telnet = new Telnet('127.0.0.1','8081',10,'');
$ping = getPing($argv[6]);
$country = geoip_country_name_by_name($argv[6]);
$telnet->exec('Welcome, '.$argv[4].'. Your ping is '.$ping.'ms ('.$country.')';
?>

 

And your done, the same goes for all other hooks like responding to chat /commands and cron for timed server messages.

 

(remember cron doesn't unfortunately support incrementals so running something every 43 minutes actually only runs once an hour at 43 minutes past the hour, instead of 0:43, 1:26, 2:09, 2:52, etc... I'm not quite sure why but it sounds so retarded that there has to be a really, really, really absolute reason for it. Marvels of *nix I guess.)

Link to comment
Share on other sites

So I've been succesfully running PHP scripts in your evented .sh scripts with the #!/usr/bin/php shebang with the assistance of https://github.com/ngharo/Random-PHP-Classes/blob/master/Telnet.class.php .

That's nice =) Thanks for posting this so others can use it too =)

But could it be you're missing a "say " in your telnet->exec line?

 

(remember cron doesn't unfortunately support incrementals so running something every 43 minutes actually only runs once an hour at 43 minutes past the hour, instead of 0:43, 1:26, 2:09, 2:52, etc... I'm not quite sure why but it sounds so retarded that there has to be a really, really, really absolute reason for it. Marvels of *nix I guess.)

No way for such value, but you can do things like "every 20 minutes":

*/20 * * * * ...

See here for more details (first answer is a really good one :) ): Run Cron job every N minutes plus offset

Link to comment
Share on other sites

But could it be you're missing a "say " in your telnet->exec line?

 

True, poorly redacted code, sorry. Thanks to you we now also have "pm" so it won't flood the chat for other players.

 

No way for such value, but you can do things like "every 20 minutes"

 

This is the fundamental windmill I try to fight against =) If you have multiple servers with services that process something every 20 minutes (three times an hours, or less if more often) then it eventually causes waves in all services (simultanious execution). While if they could all randomize the timer with x minutes on every run then it would even out. I believe this will eventually play a notable role with Internet of Things where a huge amount of devices poll and process for stuff all the time (not that it wouldn't happen already).

 

I would love to know the answer why it has never been implemented, I can't imagine how hard it could be (I'm not assuming it can't be, just can't imagine why it is).

 

- - - Updated - - -

 

btw. Any possibility of getting "cm" per user only? (haven't tested yet, sorry) why is it session bound?

Link to comment
Share on other sites

But you read the stackoverflow answer? ;)

You can do stuff like 5-59/20 which would be 5, 25, 45. If you use different starting values for each instance you'll get different times within the hour :D

(That way you can even be sure that at no time they overlap whereas with some weird intervals like 43 over the whole day two events could occur at the same time if they reach a common multiple ;) )

 

btw. Any possibility of getting "cm" per user only? (haven't tested yet, sorry) why is it session bound?

Nope, not for the short term. It's the way the engine tells the clients about the server settings.

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

Actually while we're at it, it seems that the in-game TAB view shows some internal ping between the game daemon and the player (application). And since "most" players have their ICMP protocol blocked on their router or ISP NAT gateway it would be both reliable and uniform to have an additional hook event parameter of application ping (connect via UDP). http://stackoverflow.com/questions/9841635/how-to-ping-a-server-port-with-php and http://www.slashroot.in/what-tcp-ping-and-how-it-used gets quite complicated to just accomplish what has already been calculated.

 

At least my server has had a lot of issues with high ping asian and russian players laging the server. Fortunately I have the opportunity to geoip block the countries.

 

There also seems to be a charset mismatch between the internal server chat messages (Jan†sûû joined the game) supporting unicode and telnet/hooks not supporting them (Jan+s joined the game). At least I can't figure how to get it working.

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

Re:Ping: You can just use "listplayersextended" (lpe) to get the ping. I think that's better than passing more and more stuff in hooks.

 

There also seems to be a charset mismatch between the internal server chat messages (Jan†sûû joined the game) supporting unicode and telnet/hooks not supporting them (Jan+s joined the game).

Yeah, Telnet does use a different encoding ... But the hooks should receive the correct name as it's read from the log and that should be fine.

Link to comment
Share on other sites

Also

 

2014.08.29 13:21:36: GamePref.AdminFileName = admins.xml

2014.08.29 13:21:36: GamePref.AirDropFrequency = 16

2014.08.29 13:21:36: GamePref.AutopilotMode = 0

2014.08.29 13:21:36: GamePref.BlockDurabilityModifier = 100

2014.08.29 13:21:36: GamePref.BuildCreate = False

2014.08.29 13:21:36: GamePref.ConnectToServerIP = 127.0.0.1

2014.08.29 13:21:36: GamePref.ConnectToServerPort = 25000

2014.08.29 13:21:36: GamePref.ControlPanelEnabled = False

2014.08.29 13:21:36: GamePref.ControlPanelPassword = <stripped>

2014.08.29 13:21:36: GamePref.ControlPanelPort = <stripped>

2014.08.29 13:21:37: GamePref.CraftTimer = 0

2014.08.29 13:21:37: GamePref.CreateLevelDim = 6

2014.08.29 13:21:37: GamePref.CreateLevelName = My Level

2014.08.29 13:21:37: GamePref.DayCount = 3

2014.08.29 13:21:37: GamePref.DayNightLength = 45

2014.08.29 13:21:37: GamePref.DebugMenuEnabled = False

2014.08.29 13:21:37: GamePref.DebugMenuShowTasks = False

2014.08.29 13:21:37: GamePref.DebugStopEnemiesMoving = False

2014.08.29 13:21:37: GamePref.DedicatedServer = True

2014.08.29 13:21:37: GamePref.DisableNAT = True

2014.08.29 13:21:37: GamePref.DropOnDeath = 1

2014.08.29 13:21:37: GamePref.DropOnQuit = 0

2014.08.29 13:21:37: GamePref.DynamicSpawner =

2014.08.29 13:21:37: GamePref.EnemyDifficulty = 0

2014.08.29 13:21:37: GamePref.EnemySenseMemory = 60

2014.08.29 13:21:37: GamePref.EnemySpawning = True

2014.08.29 13:21:37: GamePref.EnemySpawnMode = 3

2014.08.29 13:21:37: GamePref.FavoriteServersList =

2014.08.29 13:21:37: GamePref.FragLimit = 5

2014.08.29 13:21:37: GamePref.FriendlyFire = False

2014.08.29 13:21:37: GamePref.GameDifficulty = 2

2014.08.29 13:21:37: GamePref.GameMode = GameModeSurvivalMP

2014.08.29 13:21:37: GamePref.GameName = <stripped>

2014.08.29 13:21:37: GamePref.GameVersion = Alpha 9.1

2014.08.29 13:21:37: GamePref.GameWorld = Random Gen

2014.08.29 13:21:37: GamePref.JoiningOptions = True

2014.08.29 13:21:37: GamePref.LandClaimDeadZone = 15

2014.08.29 13:21:37: GamePref.LandClaimDecayMode = 0

2014.08.29 13:21:37: GamePref.LandClaimExpiryTime = 5

2014.08.29 13:21:37: GamePref.LandClaimOfflineDurabilityModifier = 128

2014.08.29 13:21:37: GamePref.LandClaimOnlineDurabilityModifier = 128

2014.08.29 13:21:37: GamePref.LandClaimSize = 15

2014.08.29 13:21:37: GamePref.LootAbundance = 150

2014.08.29 13:21:37: GamePref.LootRespawnDays = 3

2014.08.29 13:21:37: GamePref.LootTimer = 0

2014.08.29 13:21:37: GamePref.MatchLength = 15

2014.08.29 13:21:37: GamePref.MaxSpawnedZombies = 100

2014.08.29 13:21:37: GamePref.NightPercentage = 32

2014.08.29 13:21:37: GamePref.OptionsAA = 1

2014.08.29 13:21:37: GamePref.OptionsAmbientVolumeLevel = 0.2

2014.08.29 13:21:37: GamePref.OptionsDeferredLighting = True

2014.08.29 13:21:37: GamePref.OptionsFieldOfView = 60

2014.08.29 13:21:37: GamePref.OptionsImageEffects = False

2014.08.29 13:21:37: GamePref.OptionsInvertMouse = False

2014.08.29 13:21:37: GamePref.OptionsLODDistance = 0.6

2014.08.29 13:21:37: GamePref.OptionsMicVolumeLevel = 0.75

2014.08.29 13:21:37: GamePref.OptionsMouseSensitivity = 6

2014.08.29 13:21:37: GamePref.OptionsMusicVolumeLevel = 0.1

2014.08.29 13:21:37: GamePref.OptionsOverallAudioVolumeLevel = 1

2014.08.29 13:21:37: GamePref.OptionsPlayerModel = playerMale

2014.08.29 13:21:37: GamePref.OptionsPlayerModelTexture = Player/Male/Player_male

2014.08.29 13:21:37: GamePref.OptionsReflectiveWater = True

2014.08.29 13:21:37: GamePref.OptionsShadowDistance = 2

2014.08.29 13:21:37: GamePref.OptionsViewDistance = 9

2014.08.29 13:21:37: GamePref.OptionsVoiceChatEnabled = False

2014.08.29 13:21:37: GamePref.OptionsVoiceVolumeLevel = 0.75

2014.08.29 13:21:37: GamePref.PlayerAutologin = False

2014.08.29 13:21:37: GamePref.PlayerDamageGiven = 2

2014.08.29 13:21:37: GamePref.PlayerDamageRecieved = 2

2014.08.29 13:21:37: GamePref.PlayerId =

2014.08.29 13:21:37: GamePref.PlayerName = Player

2014.08.29 13:21:37: GamePref.PlayerPassword =

2014.08.29 13:21:37: GamePref.PlayerToken =

2014.08.29 13:21:37: GamePref.RebuildMap = False

2014.08.29 13:21:37: GamePref.SaveGameFolder = /home/sdtd/instances/Zone

2014.08.29 13:21:37: GamePref.SelectionContextMode = 0

2014.08.29 13:21:37: GamePref.SelectionOperationMode = 0

2014.08.29 13:21:37: GamePref.ServerIP =

2014.08.29 13:21:37: GamePref.ServerIsPublic = True

2014.08.29 13:21:37: GamePref.ServerMaxPlayerCount = 12

2014.08.29 13:21:37: GamePref.ServerName = <stripped>

2014.08.29 13:21:37: GamePref.ServerPassword =

2014.08.29 13:21:37: GamePref.ServerPasswordCache =

2014.08.29 13:21:37: GamePref.ServerPort = 25000

2014.08.29 13:21:37: GamePref.ShowFriendPlayerOnMap = True

2014.08.29 13:21:37: GamePref.TelnetEnabled = True

2014.08.29 13:21:37: GamePref.TelnetPassword = <stripped>

2014.08.29 13:21:37: GamePref.TelnetPort = <stripped>

2014.08.29 13:21:37: GamePref.VACEnabled = True

2014.08.29 13:21:37: GamePref.ZombiePlayers = True

2014.08.29 13:21:37: GamePref.ZombiesRun = 0

2014.08.29 13:21:37: GameStat.AirDropFrequency = 0

2014.08.29 13:21:37: GameStat.BlockDurabilityModifier = 1

2014.08.29 13:21:37: GameStat.CraftTimer = 1

2014.08.29 13:21:37: GameStat.CurrentRoundIx = 0

2014.08.29 13:21:37: GameStat.DayLimitActive = False

2014.08.29 13:21:37: GameStat.DayLimitThisRound = 0

2014.08.29 13:21:37: GameStat.Difficulty = 2

2014.08.29 13:21:37: GameStat.DropOnDeath = 1

2014.08.29 13:21:37: GameStat.DropOnQuit = 0

2014.08.29 13:21:37: GameStat.EnemyCount = 0

2014.08.29 13:21:37: GameStat.EnemyDifficulty = Normal

2014.08.29 13:21:37: GameStat.EnemySenseMemory = 60

2014.08.29 13:21:37: GameStat.EnemySpawnMode = 3

2014.08.29 13:21:37: GameStat.FragLimitActive = False

2014.08.29 13:21:37: GameStat.FragLimitThisRound = 0

2014.08.29 13:21:37: GameStat.GameModeId = 0

2014.08.29 13:21:37: GameStat.GameState = 0

2014.08.29 13:21:37: GameStat.GlobalMessageToShow =

2014.08.29 13:21:37: GameStat.IsCreativeMenuEnabled = False

2014.08.29 13:21:37: GameStat.IsFlyingEnabled = False

2014.08.29 13:21:37: GameStat.IsFriendlyFire = True

2014.08.29 13:21:37: GameStat.IsPlayerCheckDone = False

2014.08.29 13:21:37: GameStat.IsPlayerCollisionEnabled = True

2014.08.29 13:21:37: GameStat.IsPlayerDamageEnabled = True

2014.08.29 13:21:37: GameStat.IsResetMapOnRestart = False

2014.08.29 13:21:37: GameStat.IsSaveSupplyCrates = True

2014.08.29 13:21:37: GameStat.IsSpawnEnemies = True

2014.08.29 13:21:37: GameStat.IsSpawnNearOtherPlayer = False

2014.08.29 13:21:37: GameStat.IsTeleportEnabled = False

2014.08.29 13:21:37: GameStat.IsVersionCheckDone = False

2014.08.29 13:21:37: GameStat.LandClaimDeadZone = 30

2014.08.29 13:21:37: GameStat.LandClaimDecayMode = 0

2014.08.29 13:21:37: GameStat.LandClaimExpiryTime = 3

2014.08.29 13:21:37: GameStat.LandClaimOfflineDurabilityModifier = 32

2014.08.29 13:21:37: GameStat.LandClaimOnlineDurabilityModifier = 32

2014.08.29 13:21:37: GameStat.LandClaimSize = 7

2014.08.29 13:21:37: GameStat.LoadScene =

2014.08.29 13:21:37: GameStat.LootTimer = 1

2014.08.29 13:21:37: GameStat.NightPercentage = 50

2014.08.29 13:21:37: GameStat.PlayerDamageGiven = 2

2014.08.29 13:21:37: GameStat.PlayerDamageRecieved = 2

2014.08.29 13:21:37: GameStat.ScoreDiedMultiplier = -5

2014.08.29 13:21:37: GameStat.ScorePlayerKillMultiplier = 1

2014.08.29 13:21:37: GameStat.ScoreZombieKillMultiplier = 1

2014.08.29 13:21:37: GameStat.ShowAllPlayersOnMap = False

2014.08.29 13:21:37: GameStat.ShowFriendPlayerOnMap = True

2014.08.29 13:21:37: GameStat.ShowSpawnWindow = False

2014.08.29 13:21:37: GameStat.ShowWindow =

2014.08.29 13:21:37: GameStat.ShowZombieCounter = False

2014.08.29 13:21:37: GameStat.TimeLimitActive = False

2014.08.29 13:21:37: GameStat.TimeLimitThisRound = 0

2014.08.29 13:21:37: GameStat.TimeOfDayIncPerSec = 20

2014.08.29 13:21:38: GameStat.ZombieHordeMeter = False

 

I noticed : GameStat.LandClaimOnlineDurabilityModifier are being set again to 32?

 

and all these other options that are not listed in the config.. are there not some that can be?

Link to comment
Share on other sites

Could you send me the full log?

 

GamePrefs/GameStats in log: At least the latter seem not to represent the correct values from the config when they are written to the log. Just ignore them ;)

If you want to check if your values are loaded correctly you might run "gg", it will show you the current values for each setting.

Link to comment
Share on other sites

can connect againt o the server.. very weird

 

looking at the logs some dodgy ♥♥♥♥

 

2014.08.29 13:15:16: Awake done

2014.08.29 13:15:16: Unloading 5 Unused Serialized files (Serialized files now loaded: 1 / Dirty serialized files: 0)

2014.08.29 13:15:16: Unloading 149 unused Assets to reduce memory usage. Loaded Objects now: 94076.

2014.08.29 13:15:16: Total: 100.690002 ms (FindLiveObjects: 4.526000 ms CreateObjectMapping: 0.525000 ms MarkObjects: 95.339996 ms DeleteObjects: 0.233000 ms)

2014.08.29 13:15:16: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:16: Platform assembly: /home/sdtd/engine/7DaysToDie_Data/Managed/Mono.Security.dll (this message is harmless)

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:17: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:18: Telnet connection from: 94.23.154.133:38060

2014.08.29 13:15:18: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

2014.08.29 13:15:18: Fallback handler could not load library /home/sdtd/engine/7DaysToDie_Data/Mono/x86/SteamworksNative

 

telnet connection from who the eff knows

 

 

pretty sure my server is whitelisted and this tool isn't on the list..

2014.08.29 11:40:09: OnPlayerConnected 11

2014.08.29 11:40:09: PlayerLogin: 729583140152119048/AllocatedID: 0/猪猪 zhuzhu/Alpha 9.1

2014.08.29 11:40:09: Token: FAAAAO93IkJJ37Z6jmUiCgEAEAF0SQBUGAAAAAEAAAACAAAAlSF9ewAAAADnCgQAAwAAALIAAAAyAAAABAAAAI5lIgoBABABstYDALeyeGpkAajAAAAAAGkN91PpvBJUAQDxkQAAAAAAAGPZEx5jC3Do5D2Ss2fmbLsDqtXJttJQAl5wCard6d9M2K5Wy/QuxSoMw0jR7OWxaxo4ZOrNNOm+VHL1sU5E8ZgQ5x3Y5vCNT1dwN4jduEPRf/OoGZrcJ3cXqXc0qTHSm0xhVpbIn9gLDsMkir7JUCiwGmq1+Bbopl8R+wWIs/UfAADAdoc44CvoBJgkzgfIvdADMbZ2Z4gFemewilkFSAx6Z8AD7ARIDHpn5L3QAzG2dmdIDHpngAfsBAYANADAA+wEBQAzAIAH7AQnAAAA/L/QA7qpdmeAB+wE0P95Z4AH7AQMI84HgAfsBJ4iAQDgIVwFML7QAwkAAADW7AFYNMLQA9I9ODgBAAAAAAAAAOAhXAVg/QAAOL7QA1C+0ANwy6ZnOQAAABjB0APYvtADAAAAAOH////kx9AD+MDQA/PJpmcDyNADHwAAABjB0APYvtADAAAAADjB0AOcwdADgMqmZz0EADkAAAAAoOvmB/hy1QcoxqhnuDEsAAA0ywQBAAAAQILlBwAAAAAINMsEAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAGMHQA7C23gf/////HwAAAEQAAACYwdADAAAAAKg5IgCY42w4AL/QA2SrdmfgENcE4BDXBDQJ7AQYwNAD6NAKOIAH7AQYwNADNwN3Zz0AAAA9AAAAAAAAACzA0AP///9/CQAAAAkAAACwBHpnyNqoZ0i/0AOIm3ZnIAAAAND/eWdcv9ADXLR2ZyAAAAAelUUBIAAAAHS/0AO/onZnIAAAAAgAAAAUR94EAAAAAJy/0APqkjc4IAAAAHSscjg5AQAAAAAAAAAAAAAAAAAAFEfeBNBUdmfgxXA4AAAAAHwAUP2eIgEA+Qu7DwAAAAB5olMQAAAAAAAkzgfYv9ADfABQ/Z4iAQD/////4CvoAPy/0AM7LEA4AwAAAAcAAAAEAAAA4CvoBHwAUP2eIgEACQoDAAIAAAAgwNADK+8/OOAr6ATgK+gEuIEKOOAr6ARt7j84AAAAAAAAAQA0wNADJDKlZ+Ar6AQAAAEAmCTOB+jA0QNGOqVnmCTOBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

2014.08.29 11:40:09: Authenticating player: 猪猪 zhuzhu SteamId: 76561198130292110 TicketLen: 1024 Result: OK

2014.08.29 11:40:09: Freeing user 猪猪 zhuzhu

2014.08.29 11:40:09: Started thread_CommReader: cl=11, ch=1

2014.08.29 11:40:09: Started thread_CommReader: cl=11, ch=2

2014.08.29 11:40:09: Allowing player with id 11

2014.08.29 11:40:09: Started thread_CommWriter: cl=11, ch=2

2014.08.29 11:40:09: Couldn't send RPC function 'RPC_PlayerAllowed'

2014.08.29 11:40:09: Started thread_CommWriter: cl=11, ch=1

2014.08.29 11:40:09: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:10: Couldn't send RPC function 'RPC_TEAccessClient'

2014.08.29 11:40:10: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:11: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:12: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:13: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:13: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_TEAccessClient'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:14: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:15: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:15: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:16: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:16: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:16: Couldn't send RPC function 'RPC_SpawnParticleEffect'

2014.08.29 11:40:16: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_SpawnParticleEffect'

2014.08.29 11:40:17: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:18: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:18: Saving playerData for entity id: 28550

2014.08.29 11:40:18: Couldn't send RPC function 'RPC_SetWorldTime'

2014.08.29 11:40:19: Couldn't send RPC function 'RPC_SpawnParticleEffect'

2014.08.29 11:40:19: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:20: Couldn't send RPC function 'RPC_SpawnParticleEffect'

2014.08.29 11:40:20: Couldn't send RPC function 'RPC_RawData_Ch1'

2014.08.29 11:40:20: OnPlayerDisconnected 11

2014.08.29 11:40:20: No objects for the given player ID were deleted 11

2014.08.29 11:40:20: Exited thread_CommWriter: cl=11, ch=2

2014.08.29 11:40:20: Exited thread_CommWriter: cl=11, ch=1

2014.08.29 11:40:20: Exited thread_CommReader: cl=11, ch=2

 

more of these

2014.08.29 00:45:11: Telnet connection from: 94.23.154.133:34808

2014.08.29 04:44:53: Telnet connection from: 50.62.74.68:60968

 

 

how secure is this telnet ... you removed the option to disable it so I assume the server managing scripts need it, I've changed my password for it but still does it look like i need to get iptable rules out to block the port for these try hards.

Link to comment
Share on other sites

well after i changed the telnet port and password I was able to connect to the server.. so its good now, i'll just iptable the ports so its only my ip and localhost

Do you have a static IP that you connect from? If you only wanted connections to Telnet to be allowed from the server itself (i.e. scripts or when you want to access remote through e.g. SSH tunnel or VPN) you could just remove the password. That way the server will only listen on the loopback device.

 

for future which log file do you need?

current_output.log

 

 

 

Oh, and the "fallback handler" lines don't matter. And I think the other errors were because the player was disconnected right after connecting.

Link to comment
Share on other sites

"you could just remove the password."

 

You can understand why not many would assume that right, because that does not make any logical sense, remove password means remote connections are blocked, who would have thought :D I've left the password on and just done the iptables as I have tried remote telnet directly.

 

So I've been succesfully running PHP scripts in your evented .sh scripts with the #!/usr/bin/php shebang with the assistance of https://github.com/ngharo/Random-PHP-Classes/blob/master/Telnet.class.php .

 

<basedir>/hooks/playerConnect/ping.sh

#!/usr/bin/php
<?php
require_once('class-telnet.php');
....
$telnet = new Telnet('127.0.0.1','8081',10,'');
$ping = getPing($argv[6]);
$country = geoip_country_name_by_name($argv[6]);
$telnet->exec('Welcome, '.$argv[4].'. Your ping is '.$ping.'ms ('.$country.')';
?>

 

And your done, the same goes for all other hooks like responding to chat /commands and cron for timed server messages.

 

(remember cron doesn't unfortunately support incrementals so running something every 43 minutes actually only runs once an hour at 43 minutes past the hour, instead of 0:43, 1:26, 2:09, 2:52, etc... I'm not quite sure why but it sounds so retarded that there has to be a really, really, really absolute reason for it. Marvels of *nix I guess.)

 

I been waiting for something like this, gonna try it out :D

 

does the server need to be restarted for new hooks to be used, and if the file is changed on the fly its updated without restart?

 

also basedir as in /home/sdtd/hooks/playerConnect/ping.sh ? or can the basedir be from the instance? /home/sdtd/instances/<Name>/

Link to comment
Share on other sites

"you could just remove the password."

 

You can understand why not many would assume that right, because that does not make any logical sense, remove password means remote connections are blocked, who would have thought :D

Well, if you use the instance editor it tells you about this ;)

 

 

does the server need to be restarted for new hooks to be used, and if the file is changed on the fly its updated without restart?

No need to restart, hooks are read when an event is occuring.

 

also basedir as in /home/sdtd/hooks/playerConnect/ping.sh ? or can the basedir be from the instance? /home/sdtd/instances/<Name>/

The former one. You get the instance name passed as parameter so if you want to have different actions you can check based on this param.

Link to comment
Share on other sites

so I got the php script working with class-telnet.php.... ie it sends to the server as .php file from the webserver..

 

but can't seem to get the .sh version of it working (/home/sdtd/hooks/playerConnect/ping.sh)

class-telnet.php is in the same folder aswel...

 

there any error logs? where would i find them

 

"No need to restart, hooks are read when an event is occuring."

 

I haven't restart the server instance either... but its like the ping.sh file isn't being read at all someone joins the server.

 

like i don't see any php errors for it in apache log folder where I would if I was running the script as .php

 

even tried adding

#!/usr/bin/php

<?php

ini_set("log_errors", 1);

error_reporting(E_ALL);

ini_set('error_log','/home/sdtd/hooks/playerConnect/errors.log');

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...