Jump to content

Dateranoth

Administrator
  • Posts

    11,211
  • Joined

  • Last visited

Posts posted by Dateranoth

  1. Removing it from the startup command should take it out.(make sure you do both places)

    I always left validate in just to be sure everything was ok even if there wasn't an update, but I could make it a configuration option. 

  2. 8 hours ago, upperking said:

    Could you put info in the cmd title bar like Players connected      "Players 20-50"

    maybe also a new update in the title when there is s a new update found from the checker.

    and anyother server info that could be handy?  

     

    I think this might be more of the utility you are looking for. Wanted to give you a heads up in case you hadn't seen it.

    http://www.jffgaming.com/resources/cat-conan-admin-tool.5/

  3. 43 minutes ago, ConanBoneMan said:

    i guess the most simple and straight forward would be to give a notification to choose to start with a fresh server download or use already downloaded server files path

    think it would be harder to make it look for the file since alot of people might set custom folder/drive paths for their server but im not to sure about it :P 

    I believe it will only be an issue if the SteamCMD directory already has the appmanifest in the default location.  Otherwise it should use the appmanifest  from wherever you tell it the install path is.  I might just look for it in the SteamCMD and pop up a small warning when the script first opens. Just have it time out after 5 or 10 seconds if no response and run like normal.

     

    This will probably work. I have some other updates that I need to push this week so I'll push this change with it.

    zGcXURw.png

     

    	Local $sManifestExists = FileExists($steamcmddir &"\steamapps\appmanifest_443030.acf")
    		If $sManifestExists = 1 Then
    			Local $manifestound = MsgBox (4100, "Warning", "Install manifest found at "& $steamcmddir &"\steamapps\appmanifest_443030.acf"& @CRLF & @CRLF &"Suggest moving file to "& _
    			$serverdir &"\steamapps\appmanifest_443030.acf before running SteamCMD"& @CRLF & @CRLF &"Would you like to Exit Now?",20)
    			If $manifestound = 6 Then
    				Exit
    			EndIf
    		EndIf

     

  4. 23 minutes ago, ConanBoneMan said:

    No problem all good :D glad we got the reason for the problem 

    thats how ya get things improved

    and thank you for the reply's and taking your time helping and creating this awesome script.

     

    You're welcome. I'm glad you are enjoying the script, and I'm glad you pointed out the issue. I could have the script look for the file in the default directory and move it if it finds it. Or maybe I could just put up a Message Box to notify you it's a possible conflict. Not sure which would be best.

  5. @ConanBoneMan

    The +force_install_dir causes it to put the server files directly where you want it to go.

    So, by default lets say I have a folder C:\SteamCMD . If I run steamcmd with these options:

    steamcmd.exe +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +app_update 443030 validate +quit

    It will install the conan server to the default location. C:\SteamCMD\steamapps\common\Conan Exiles Dedicated Server (Just tested it to be sure)

     

    Log of the install:

    Spoiler
    
    [2017-02-07 21:01:37] Loaded 1 apps from install folder "D:\SteamCMD\steamapps\appmanifest_*.acf".
    [2017-02-07 21:01:40] Scheduler update appID 443030: Priority First, legacy=no, restore="", timeSinceLastPlayed=1486519300, appDisableSecondsRemaining=0
    [2017-02-07 21:01:40] AppID 443030 state changed : Update Required,Update Running,Update Started,
    [2017-02-07 21:01:40] AppID 443030 update changed : Running,
    [2017-02-07 21:01:40] AppID 443030 update changed : Running,Reconfiguring,
    [2017-02-07 21:01:40] AppID 443030 update changed : Running,
    [2017-02-07 21:01:40] AppID 443030 update started : download 215187632/10728038320, store 0/0, reuse 0/0, stage 391956270/13808759587
    [2017-02-07 21:01:40] AppID 443030 update changed : Running,Downloading,
    [2017-02-07 21:01:40] AppID 443030 update changed : Running,Downloading,Staging,
    [2017-02-07 21:01:40] Got 20 download sources via "/serverlist/50/20/" from 162.254.192.18:80
    [2017-02-07 21:01:40] Created download interface of type 'CS' (1) to host valve305.steampipe.steamcontent.com (valve305.steamcontent.com)
    [2017-02-07 21:01:40] Created download interface of type 'CS' (1) to host valve303.steampipe.steamcontent.com (valve303.steamcontent.com)
    [2017-02-07 21:01:40] Created download interface of type 'CS' (1) to host valve806.steampipe.steamcontent.com (valve806.steamcontent.com)
    [2017-02-07 21:01:41] HTTP (CS,305) - valve305.steampipe.steamcontent.com (valve305.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:01:41] HTTP (CS,303) - valve303.steampipe.steamcontent.com (valve303.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:01:41] HTTP (CS,806) - valve806.steampipe.steamcontent.com (valve806.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:01:53] Increasing target number of download connections to 4 (rate was 0.000, now 34.173)
    [2017-02-07 21:01:53] Created download interface of type 'CS' (1) to host valve801.steampipe.steamcontent.com (valve801.steamcontent.com)
    [2017-02-07 21:01:58] HTTP (CS,801) - valve801.steampipe.steamcontent.com (valve801.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:02:05] Increasing target number of download connections to 5 (rate was 34.173, now 74.708)
    [2017-02-07 21:02:05] Created download interface of type 'CS' (1) to host valve808.steampipe.steamcontent.com (valve808.steamcontent.com)
    [2017-02-07 21:02:07] HTTP (CS,808) - valve808.steampipe.steamcontent.com (valve808.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:02:17] Increasing target number of download connections to 6 (rate was 74.708, now 134.662)
    [2017-02-07 21:02:17] Created download interface of type 'CS' (1) to host valve803.steampipe.steamcontent.com (valve803.steamcontent.com)
    [2017-02-07 21:02:17] HTTP (CS,803) - valve803.steampipe.steamcontent.com (valve803.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:02:29] Increasing target number of download connections to 7 (rate was 134.662, now 172.107)
    [2017-02-07 21:02:29] Created download interface of type 'CS' (1) to host valve308.steampipe.steamcontent.com (valve308.steamcontent.com)
    [2017-02-07 21:02:29] HTTP (CS,308) - valve308.steampipe.steamcontent.com (valve308.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:02:54] Current download rate: 198.136 Mbps
    [2017-02-07 21:03:54] Current download rate: 190.093 Mbps
    [2017-02-07 21:04:55] Current download rate: 192.929 Mbps
    [2017-02-07 21:05:55] Current download rate: 195.906 Mbps
    [2017-02-07 21:05:59] HTTP (CS,305) - valve305.steampipe.steamcontent.com (valve305.steamcontent.com): Received 0 (Invalid) HTTP response for depot 443031
    [2017-02-07 21:05:59] Created download interface of type 'CS' (1) to host valve301.steampipe.steamcontent.com (valve301.steamcontent.com)
    [2017-02-07 21:05:59] HTTP (CS,305) - valve305.steampipe.steamcontent.com (valve305.steamcontent.com): Closing connection
    [2017-02-07 21:05:59] HTTP (CS,301) - valve301.steampipe.steamcontent.com (valve301.steamcontent.com): AuthenticateDepotID (443031) - Success!
    [2017-02-07 21:06:56] Current download rate: 194.163 Mbps
    [2017-02-07 21:07:57] Current download rate: 192.018 Mbps
    [2017-02-07 21:08:57] Current download rate: 176.111 Mbps
    [2017-02-07 21:09:58] Current download rate: 0.000 Mbps
    [2017-02-07 21:10:34] HTTP (CS,303) - valve303.steampipe.steamcontent.com (valve303.steamcontent.com): Closing connection
    [2017-02-07 21:10:34] HTTP (CS,308) - valve308.steampipe.steamcontent.com (valve308.steamcontent.com): Closing connection
    [2017-02-07 21:10:34] HTTP (CS,803) - valve803.steampipe.steamcontent.com (valve803.steamcontent.com): Closing connection
    [2017-02-07 21:10:34] HTTP (CS,806) - valve806.steampipe.steamcontent.com (valve806.steamcontent.com): Closing connection
    [2017-02-07 21:10:34] HTTP (CS,301) - valve301.steampipe.steamcontent.com (valve301.steamcontent.com): Closing connection
    [2017-02-07 21:10:35] HTTP (CS,808) - valve808.steampipe.steamcontent.com (valve808.steamcontent.com): Closing connection
    [2017-02-07 21:10:35] HTTP (CS,801) - valve801.steampipe.steamcontent.com (valve801.steamcontent.com): Closing connection
    [2017-02-07 21:12:19] AppID 443030 update changed : Running,
    [2017-02-07 21:12:19] AppID 443030 update changed : Running,Committing,
    [2017-02-07 21:12:19] AppID 443030 file commit : 23755 updated, 0 moved, 0 deleted
    [2017-02-07 21:14:30] AppID 443030 state changed : Fully Installed,Update Running,
    [2017-02-07 21:14:30] Finished update AppID 443030, mounted depots (BuildID 1613510): 1004 (1332262456809661417),228985 (5758075142805954616),228986 (1499878012993136397),228990 (1829726630299308803),443031 (9147467968662663915),
    [2017-02-07 21:14:30] AppID 443030 update changed : Running,
    [2017-02-07 21:14:30] AppID 443030 update changed : None
    [2017-02-07 21:14:30] AppID 443030 state changed : Fully Installed,
    [2017-02-07 21:14:30] AppID 443030 scheduler finished : removed from schedule

     

     

    Validated again after install:

    Spoiler
    
    [2017-02-07 21:16:21] Loaded 1 apps from install folder "D:\SteamCMD\steamapps\appmanifest_*.acf".
    [2017-02-07 21:16:23] Start validating appID 443030
    [2017-02-07 21:16:23] Scheduler update appID 443030: Priority First, legacy=no, restore="", timeSinceLastPlayed=1486520183, appDisableSecondsRemaining=0
    [2017-02-07 21:16:23] AppID 443030 state changed : Fully Installed,Update Running,
    [2017-02-07 21:16:23] AppID 443030 update changed : Running,
    [2017-02-07 21:16:23] AppID 443030 update changed : Running,Reconfiguring,
    [2017-02-07 21:16:24] AppID 443030 update changed : Running,
    [2017-02-07 21:16:24] AppID 443030 update changed : Running,Validating,
    [2017-02-07 21:16:24] Validating files (all active,full) ...
    [2017-02-07 21:17:36] File validation finished: 22253 files (13808759587 bytes) total, 0 files (0 bytes) mismatched (71929 msec).
    [2017-02-07 21:17:36] AppID 443030 update changed : Running,
    [2017-02-07 21:17:36] AppID 443030 update changed : None
    [2017-02-07 21:17:36] AppID 443030 state changed : Fully Installed,
    [2017-02-07 21:17:36] AppID 443030 scheduler finished : removed from schedule

     

     

    Now, if I use the +force_install_dir command.

    Spoiler
    
    steamcmd.exe +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir "D:\SteamCMD\steamapps\common\Conan Exiles Dedicated Server" +app_update 443030 validate +quit

     

    It forces it to install into the directed folder. In this case, the same as the default folder.

     

    [2017-02-07 21:18:47] Loaded 1 apps from install folder "D:\SteamCMD\steamapps\appmanifest_*.acf".
    [2017-02-07 21:18:48] Loaded 0 apps from install folder "d:\steamcmd\steamapps\common\conan exiles dedicated server\steamapps\appmanifest_*.acf".
    [2017-02-07 21:18:49] AppID 443030 state changed : Update Required,
    [2017-02-07 21:18:49] Scheduler update appID 443030: Priority First, legacy=no, restore="", timeSinceLastPlayed=1486520329, appDisableSecondsRemaining=0
    [2017-02-07 21:18:49] Scheduler update appID 443030: Priority First, legacy=no, restore="", timeSinceLastPlayed=1486520329, appDisableSecondsRemaining=0
    [2017-02-07 21:18:49] AppID 443030 state changed : Update Required,Update Running,
    [2017-02-07 21:18:49] AppID 443030 update changed : Running,
    [2017-02-07 21:18:49] AppID 443030 update changed : Running,Reconfiguring,
    [2017-02-07 21:18:49] AppID 443030 update changed : Running,
    [2017-02-07 21:18:49] AppID 443030 update changed : Running,Validating,
    [2017-02-07 21:18:49] Validating files (new target,full) ...
    [2017-02-07 21:19:58] File validation finished: 22253 files (13808759587 bytes) total, 0 files (0 bytes) mismatched (68352 msec).
    [2017-02-07 21:19:58] AppID 443030 update changed : Running,
    [2017-02-07 21:19:58] AppID 443030 update changed : Running,Preallocating,
    [2017-02-07 21:19:58] Found 6 pre-existing matching files for depot 1004 (24737760 bytes)
    [2017-02-07 21:19:58] Found 3 pre-existing matching files for depot 228985 (13699209 bytes)
    [2017-02-07 21:19:58] Found 3 pre-existing matching files for depot 228986 (29748833 bytes)
    [2017-02-07 21:19:59] Found 158 pre-existing matching files for depot 228990 (102931551 bytes)

    This is where I finally found out what was wrong.  Because you had already used SteamCMD without the force install directory command it creates a file "appmanifest_443030.acf" under SteamCMD\steamapps  .  When the force install directory is used, it creates that same file in the folder Conan Exiles Dedicated Server\steamapps  .  I'm a bit late to tell you know, but it looks like what you could have done was move the file from the SteamCMD\steamapps location to Conan Exiles Dedicated Server\steamapps and it would have worked properly. 

     

    It appears the file can be in both locations at the same time too, but probably best to only use one. After moving the file and running the command again, it simply validated like it should.

     

    Spoiler
    
    [2017-02-07 21:36:40] Loaded 0 apps from install folder "D:\SteamCMD\steamapps\appmanifest_*.acf".
    [2017-02-07 21:36:41] Loaded 1 apps from install folder "d:\steamcmd\steamapps\common\conan exiles dedicated server\steamapps\appmanifest_*.acf".
    [2017-02-07 21:36:42] Start validating appID 443030
    [2017-02-07 21:36:42] Scheduler update appID 443030: Priority First, legacy=no, restore="", timeSinceLastPlayed=1486521402, appDisableSecondsRemaining=0
    [2017-02-07 21:36:42] AppID 443030 state changed : Fully Installed,Update Running,
    [2017-02-07 21:36:42] AppID 443030 update changed : Running,
    [2017-02-07 21:36:42] AppID 443030 update changed : Running,Reconfiguring,
    [2017-02-07 21:36:42] AppID 443030 update changed : Running,
    [2017-02-07 21:36:42] AppID 443030 update changed : Running,Validating,
    [2017-02-07 21:36:42] Validating files (all active,full) ...
    [2017-02-07 21:37:56] File validation finished: 22253 files (13808759587 bytes) total, 0 files (0 bytes) mismatched (73030 msec).
    [2017-02-07 21:37:56] AppID 443030 update changed : Running,
    [2017-02-07 21:37:56] AppID 443030 update changed : None
    [2017-02-07 21:37:56] AppID 443030 state changed : Fully Installed,
    [2017-02-07 21:37:56] AppID 443030 scheduler finished : removed from schedule

     

     

    This appears to only be an issue if you've previously installed an app without the force install directory.  I have it enabled so people can choose exactly where they want their server installed.  Anyhow, long winded response. Sorry I wasn't able to give you an answer before you downloaded it again.

  6. 5 minutes ago, ConanBoneMan said:

    weird even tho i change it it still starts downloading it tried multiple folders and it still starts downloading the full server again  after checking

    this time it even overwritten the server files that where already created

    Not really sure why it would be doing that unless it's not a dedicated server that's already installed. It is different than the server files downloaded with the game through steam. 

    Sorry. Might just have to point it to a new folder and let it download again. 

  7. 13 minutes ago, ConanBoneMan said:

    its deff going to download what exact folder in Common\ConanExiles\ do i need to link it to?

    It should point to the directory with the ConanSandbox folder with no \ at the end. Basically the top level of the Conan server install. 

  8. Just now, ConanBoneMan said:

    i tried using this utility but after setting it up and running the program,

    in steamcmd it starts allocating memory to download the server while the server is already downloaded,

    instead of checking for updates,

    and i am pretty sure i linked the ini to the right path.

    What does it say in the SteamCMD window? If it says Update State Validating then it's because I have it set to validate every time. Just to be sure you always have the most current version of every file. If it's not validating and actually downloading, you might want to check the path.

  9. @verser

    Are you running the latest version? If so you need to backup your INI file, delete it, and let the script create a new one. 

     

    The latest version differentiates between GamePort and QueryPort. Also, if you're trying to connect from the same local network you might try setting the IP to the local network IP the server is on and MULTIHOME to yes

  10. Just now, upperking said:

    It updates and starts it and also backs it up

    ot also manages the game.ini files for server options

    Yeah, I'll be honest, I don't have any plans for more server options except the server name and server password if it's ever possible from the command line. 

     

    Anyone is welcome to use my code to make something like that, but I believe it would be better to use something other than AutoIt to write it in. 

     

    I could possibly add backup function, but the game already does that.

     

    I will look through it more when I'm home. I'm sure someone will eventually make a much more robust tool than mine. This is more hobby than trade for me. So I'm not very good at it. 

     

    If the Ark tool code is open source it might be possible to modify it for Conan

  11. That looks like it's for managing the server not running it and updating it. 

     

    If I were to create something like that I would probably not do it in the scope of this project. I'm not sure if it's even possible right now without being able to access rcon or a console on the server. 

  12. 2 hours ago, Lyas said:

    thank you

    [Check for Update Every Hour? yes/no]
    CheckForUpdate=yes

    Can you add parametr UpdateTime=60 in minutes if its possible?

    Thanks for good Job, wery Good tool.

     

     

     

    I'm not sure what you are asking? You want to be able to check for updates every X minutes instead of once per hour?

  13. 3 minutes ago, Lyas said:

    Hi, nice tool.

    [Daily Restart Hours? 00-23]
    HotHour1=03
    HotHour2=09
    HotHour3=15
    HotHour4=21

     

    I use only 4 HotHour, in default ini there is 6 HotHour,but tool restart server in 00, default value of HotHour5, HotHour6, can you fix this?

    i think we all wait Global chat Messages before server restart.

     

    Just set the last two to the same as any of the other times you use. 

    HotHour5=21

    HotHour6=21

     

    I will add a global message to notify of restarting with timed notifications as soon as they add a way for me to do that from the server side. Hopefully they add access to the console or rcon  soon. Until then there is no way to provide notification.

     

    If anyone finds a way before the official announcement let me know and I'll see what I can do.

     

  14. V2.2.2.1 Update!

    Differentiated between Server Port and Steam Query Port. You can now modify both from script. Be sure to delete your INI and let the script generate a new one.

     

    V2.2.2.1 Downloads

    Complete Version 2.2.2.1 including Source

    Conan Server Utility V2.2.2.1

    Conan Server Remote Restart Utility V2.2.2.1

    Conan Server Utility V2.2.2.1 Source

    Conan Server Remote Restart Utility V2.2.2.1 Source

     

    V2.2.2.1 Server Utility Source:

    Spoiler
    
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=favicon.ico
    #AutoIt3Wrapper_Res_Comment=By Dateranoth - Feburary 6, 2017
    #AutoIt3Wrapper_Res_Description=Utility for Running Conan Server
    #AutoIt3Wrapper_Res_Fileversion=2.2.2.1
    #AutoIt3Wrapper_Res_LegalCopyright=Dateranoth @ https://gamercide.com
    #AutoIt3Wrapper_Res_Language=1033
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;By Dateranoth - Feburary 6, 2017
    ;Used by https://gamercide.com on their server
    ;Feel free to change, adapt, and distribute
    
    #include <Date.au3>
    #include <Process.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    Opt("WinTitleMatchMode", 1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    
    ;User Variables
    If FileExists("ConanServerUtility.ini") Then
       Local $BindIP = IniRead("ConanServerUtility.ini", "Use MULTIHOME to Bind IP? Disable if having connection issues (yes/no)", "BindIP", "yes")
       Local $g_IP = IniRead("ConanServerUtility.ini", "Game Server IP", "ListenIP", "127.0.0.1")
       Local $GamePort = IniRead("ConanServerUtility.ini", "Game Server Port", "GamePort", "7777")
       Local $QueryPort = IniRead("ConanServerUtility.ini", "Steam Query Port", "QueryPort", "27015")
       Local $AdminPass = IniRead("ConanServerUtility.ini", "Admin Password", "AdminPass", "yOuRpaSHeRe")
       Local $MaxPlayers = IniRead("ConanServerUtility.ini", "Max Players", "MaxPlayers", "20")
       Local $serverdir = IniRead("ConanServerUtility.ini", "Server Directory. NO TRAILING SLASH", "serverdir", "C:\Game_Servers\Conan_Exiles_Server")
       Local $UseSteamCMD = IniRead("ConanServerUtility.ini", "Use SteamCMD To Update Server? yes/no", "UseSteamCMD", "yes")
       Local $steamcmddir = IniRead("ConanServerUtility.ini", "SteamCMD Directory. NO TRAILING SLASH", "steamcmddir", "C:\Game_Servers\SteamCMD")
       Local $UseRemoteRestart = IniRead("ConanServerUtility.ini", "Use Remote Restart ?yes/no", "UseRemoteRestart", "no")
       Local $g_Port = IniRead("ConanServerUtility.ini", "Remote Restart Port", "ListenPort", "57520")
       Local $RestartCode = IniRead("ConanServerUtility.ini", "Remote Restart Password", "RestartCode", "FVtb2DXgp8SYwj7J")
       Local $RestartDaily = IniRead("ConanServerUtility.ini", "Restart Server Daily? yes/no", "RestartDaily", "no")
       Local $CheckForUpdate = IniRead("ConanServerUtility.ini", "Check for Update Every Hour? yes/no", "CheckForUpdate", "yes")
       Local $HotHour1 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour1", "00")
       Local $HotHour2 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour2", "00")
       Local $HotHour3 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour3", "00")
       Local $HotHour4 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour4", "00")
       Local $HotHour5 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour5", "00")
       Local $HotHour6 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour6", "00")
       Local $HotMin = IniRead("ConanServerUtility.ini", "Daily Restart Minute? 00-59", "HotMin", "01")
       Local $ExMem = IniRead("ConanServerUtility.ini", "Excessive Memory Amount?", "ExMem", "6000000000")
       Local $ExMemRestart = IniRead("ConanServerUtility.ini", "Restart On Excessive Memory Use? yes/no", "ExMemRestart", "no")
       Local $SteamFix = IniRead("ConanServerUtility.ini", "Running Server with Steam Open? (yes/no)", "SteamFix", "no")
    Else
       IniWrite("ConanServerUtility.ini", "Use MULTIHOME to Bind IP? Disable if having connection issues (yes/no)", "BindIP", "yes")
       IniWrite("ConanServerUtility.ini", "Game Server IP", "ListenIP", "127.0.0.1")
       IniWrite("ConanServerUtility.ini", "Game Server Port", "GamePort", "7777")
       IniWrite("ConanServerUtility.ini", "Steam Query Port", "QueryPort", "27015")
       IniWrite("ConanServerUtility.ini", "Admin Password", "AdminPass", "yOuRpaSHeRe")
       IniWrite("ConanServerUtility.ini", "Max Players", "MaxPlayers", "20")
       IniWrite("ConanServerUtility.ini", "Server Directory. NO TRAILING SLASH", "serverdir", "C:\Game_Servers\Conan_Exiles_Server")
       IniWrite("ConanServerUtility.ini", "Use SteamCMD To Update Server? yes/no", "UseSteamCMD", "yes")
       IniWrite("ConanServerUtility.ini", "SteamCMD Directory. NO TRAILING SLASH", "steamcmddir", "C:\Game_Servers\SteamCMD")
       IniWrite("ConanServerUtility.ini", "Use Remote Restart ?yes/no", "UseRemoteRestart", "no")
       IniWrite("ConanServerUtility.ini", "Remote Restart Port", "ListenPort", "57520")
       IniWrite("ConanServerUtility.ini", "Remote Restart Password", "RestartCode", "FVtb2DXgp8SYwj7J")
       IniWrite("ConanServerUtility.ini", "Restart Server Daily? yes/no", "RestartDaily", "no")
       IniWrite("ConanServerUtility.ini", "Check for Update Every Hour? yes/no", "CheckForUpdate", "yes")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour1", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour2", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour3", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour4", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour5", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour6", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Minute? 00-59", "HotMin", "01")
       IniWrite("ConanServerUtility.ini", "Excessive Memory Amount?", "ExMem", "6000000000")
       IniWrite("ConanServerUtility.ini", "Restart On Excessive Memory Use? yes/no", "ExMemRestart", "no")
       IniWrite("ConanServerUtility.ini", "Running Server with Steam Open? (yes/no)", "SteamFix", "no")
       MsgBox(4096, "Default INI File Made", "Please Modify Default Values and Restart Script")
       Exit
    EndIf
    
    OnAutoItExitRegister("Gamercide")
    
    Global $sFile = ""
    Global $Server_EXE = "ConanSandboxServer-Win64-Test.exe"
    Global $PIDFile = @ScriptDir &"\ConanServerUtility_lastpid_tmp"
    Global $hWndFile = @ScriptDir &"\ConanServerUtility_lasthwnd_tmp"
    If FileExists($PIDFile) Then
    	Global $ConanPID = FileRead($PIDFile)
    	Global $ConanhWnd = HWnd(FileRead($hWndFile))
    Else
    	Global $ConanPID = "0"
    	Global $ConanhWnd = "0"
    EndIf
    
    Func Gamercide()
    	If @exitMethod <> 1 Then
    	$Shutdown = MsgBox(4100, "Shut Down?","Do you wish to shutdown the server?",10)
    		If $Shutdown = 6 Then
    			FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" Server Shutdown by User Input from ConanServerUtility Script")
    			CloseServer()
    		EndIf
    		MsgBox(4096, "Thanks for using our Application", "Please visit us at https://gamercide.com",2)
    	EndIf
    	If $UseRemoteRestart = "yes" Then
    		TCPShutdown()
    	EndIf
    	Exit
    EndFunc
    
    Func CloseServer()
    	Local $PID = ProcessExists($ConanPID)
    	ControlSend($ConanhWnd, "", "", "I" & @CR)
    	ControlSend($ConanhWnd, "", "", "I" & @CR)
    	ControlSend($ConanhWnd, "", "", "^C")
    	WinWaitClose($ConanhWnd, "", 60)
    	If $PID Then
    		ProcessClose($PID)
        EndIf
    	FileDelete($PIDFile)
    	FileDelete($hWndFile)
    EndFunc
    
    Func GetRSS()
    	Local $oXML = ObjCreate("Microsoft.XMLHTTP")
    	$oXML.Open("GET", "http://steamcommunity.com/games/440900/rss/", 0)
    	$oXML.Send
    
    	$sFile = _TempFile(@ScriptDir, '~', '.xml')
    	FileWrite($sFile, $oXML.responseText)
    EndFunc
    
    Func ParseRSS()
    	$sXML = $sFile
    	Local $oXML = ObjCreate("Microsoft.XMLDOM")
    	$oXML.Load($sXML)
    	Local $oNames = $oXML.selectNodes("//rss/channel/item/title")
    	Local $aMyDate, $aMyTime
    	_DateTimeSplit(_NowCalc(), $aMyDate, $aMyTime)
        Local $cDate = "PATCH "& StringFormat("%02d", $aMyDate[3]) &"."& StringFormat("%02d", $aMyDate[2]) &"."& StringFormat("%04d", $aMyDate[1])
    	Local $cFile = @ScriptDir &"\ConanServerUtility_LastUpdate.txt"
    	For $oName In $oNames
    
    		If StringRegExp($oName.text,$cDate&"(?i)") Then
    				If FileRead($cFile) = $oName.text Then
    					;ConsoleWrite("No New Update" & @CRLF)
    					ExitLoop
    				Else
    					FileDelete($cFile)
    					FileWrite($cFile,$oName.text)
    					Local $PID = ProcessExists($ConanPID)
    					If $PID Then
    						FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" ["& $oName.text &"] Restart for Update Requested by ConanServerUtility Script")
    						CloseServer()
    					EndIf
    					ExitLoop
    				EndIf
    		EndIf
    	Next
    EndFunc
    
    Func UpdateCheck()
    	GetRSS()
    	ParseRSS()
    	FileDelete($sFile)
    EndFunc
    
    Func _TCP_Server_ClientIP($hSocket)
       Local $pSocketAddress, $aReturn
       $pSocketAddress = DllStructCreate("short;ushort;uint;char[8]")
       $aReturn = DllCall("ws2_32.dll", "int", "getpeername", "int", $hSocket, "ptr", DllStructGetPtr($pSocketAddress), "int*", DllStructGetSize($pSocketAddress))
       If @error Or $aReturn[0] <> 0 Then Return $hSocket
    	  $aReturn = DllCall("ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($pSocketAddress, 3))
       If @error Then Return $hSocket
    	  $pSocketAddress = 0
       Return $aReturn[0]
    EndFunc ;==>_TCP_Server_ClientIP
    
    If $UseSteamCMD = "yes" Then
    	Local $sFileExists = FileExists($steamcmddir &"\steamcmd.exe")
    	If $sFileExists = 0 Then
    		MsgBox ( 0x0, "SteamCMD Not Found", "Could not find steamcmd.exe at "& $steamcmddir)
    		Exit
    	EndIf
    
    Else
    	Local $cFileExists = FileExists($serverdir &"\ConanSandboxServer.exe")
    	If $cFileExists = 0 Then
    		MsgBox ( 0x0, "Conan Server Not Found", "Could not find ConanSandboxServer.exe at "& $serverdir)
    		Exit
    	EndIf
    Endif
    
    
    If $UseRemoteRestart = "yes" Then
    ; Start The TCP Services
    TCPStartup()
    Local $MainSocket = TCPListen($g_IP, $g_Port, 100)
    	If $MainSocket = -1 Then
    		MsgBox ( 0x0, "TCP Error", "Could not bind to [" &  $g_IP & "] Is this the correct Server IP?")
    		Exit
    		EndIf
    EndIf
    
    While True
    If $UseRemoteRestart = "yes" Then
    Local $ConnectedSocket = TCPAccept($MainSocket)
    If $ConnectedSocket >= 0 Then
    $Count = 0
    While $Count < 30
    $RECV = TCPRecv($ConnectedSocket,512)
    $PassCompare = StringCompare($RECV, $RestartCode, 1)
       If $PassCompare = 0 Then
    	  Local $PID = ProcessExists($ConanPID) ; Will return the PID or 0 if the process isn't found.
    	  If $PID Then
    		 Local $IP = _TCP_Server_ClientIP($ConnectedSocket)
    		 Local $MEM = ProcessGetStats($PID, 0)
    		 FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    		 " --Peak Memory:"& $MEM[1] &" Restart Requested by Remote Host: "& $IP)
    		 CloseServer()
    		 Sleep (10000)
    		 ExitLoop
    	  EndIf
    	  Else
    	    Local $IP = _TCP_Server_ClientIP($ConnectedSocket)
    		FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" Restart ATTEMPT by Remote Host: "& $IP &" WRONG PASSWORD: "& $RECV)
    		ExitLoop
       EndIf
    $Count += 1
    Sleep (1000)
    WEnd
    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)
    EndIf
    EndIf
    
    
    Local $PID = ProcessExists($ConanPID)
    If $PID = 0 Then
    	If $UseSteamCMD = "yes" Then
    		RunWait(""& $steamcmddir &"\steamcmd.exe +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir "& $serverdir &" +app_update 443030 validate +quit")
    	EndIf
    	If $CheckForUpdate = "yes" Then
    		UpdateCheck()
    	EndIf
    	If $BindIP = "no" Then
    		$ConanPID = Run(""& $serverdir &"\ConanSandbox\Binaries\Win64\"& $Server_EXE &" ConanSandBox?Port="& $GamePort &"?QueryPort="& $QueryPort &"?MaxPlayers="& $MaxPlayers &"?AdminPassword="& $AdminPass &"?listen -nosteamclient -game -server -log")
    	Else
    		$ConanPID = Run(""& $serverdir &"\ConanSandbox\Binaries\Win64\ConanSandboxServer-Win64-Test.exe ConanSandBox?MULTIHOME="& $g_IP &"?Port="& $GamePort &"?QueryPort="& $QueryPort &"?MaxPlayers="& $MaxPlayers &"?AdminPassword="& $AdminPass &"?listen -nosteamclient -game -server -log")
    	EndIf
    	$ConanhWnd = WinGetHandle(WinWait(""& $serverdir &"", "", 70))
    	If $SteamFix = "yes" Then
    		WinWait(""& $Server_EXE &" - Entry Point Not Found","",5)
    		If WinExists(""& $Server_EXE &" - Entry Point Not Found") Then
    			ControlSend(""& $Server_EXE &" - Entry Point Not Found", "", "", "{enter}")
    		EndIf
    		WinWait(""& $Server_EXE &" - Entry Point Not Found","",5)
    		If WinExists(""& $Server_EXE &" - Entry Point Not Found") Then
    			ControlSend(""& $Server_EXE &" - Entry Point Not Found", "", "", "{enter}")
    		EndIf
    	EndIf
    	FileDelete($PIDFile)
    	FileDelete($hWndFile)
    	FileWrite($PIDFile,$ConanPID)
    	FileWrite($hWndFile,String($ConanhWnd))
    	FileSetAttrib($PIDFile,"+HT")
    	FileSetAttrib($hWndFile,"+HT")
    Else
       Local $MEM = ProcessGetStats($PID, 0)
       If $MEM[0] > $ExMem And $ExMemRestart = "no" Then
    	  FileWriteLine(@ScriptDir & "\ConanServerUtility_ExcessiveMemoryLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
            " --Peak Memory:"& $MEM[1])
    	  Sleep (10000)
       ElseIf $MEM[0] > $ExMem And $ExMemRestart = "yes" Then
    	  FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    	  " --Peak Memory:"& $MEM[1] &" Excessive Memory Use - Restart Requested by ConanServerUtility Script")
    	  CloseServer()
    	  Sleep (10000)
       EndIf
    EndIf
    
    If ((@HOUR = $HotHour1 Or @HOUR = $HotHour2 Or @HOUR = $HotHour3 Or @HOUR = $HotHour4 Or @HOUR = $HotHour5 Or @HOUR = $HotHour6) And @MIN = $HotMin And $RestartDaily = "yes") Then
       Local $PID = ProcessExists($ConanPID)
    	  If $PID Then
    		 Local $MEM = ProcessGetStats($PID, 0)
    		 FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    		 " --Peak Memory:"& $MEM[1] &" Daily Restart Requested by ConanServerUtility Script")
    		 CloseServer()
    	  EndIf
       Sleep (10000)
    EndIf
    
    If @MIN = $HotMin And $CheckForUpdate = "yes" Then
    	UpdateCheck()
    	Sleep(70000)
    EndIf
    
    Sleep (500)
    WEnd

     

     

  15. 42 minutes ago, MrPhantomX said:

    Good to now it wasn't only me struggling getting it to work.

    Thanks, i had already modified the Engine.ini, but some how [OnlineSubsystemSteam] had become [OnlineSubsystem].  Guess it will fix the issue :) 

     

    Glad to help! Let me know if there is anything else you would like to see. 

  16. 34 minutes ago, MrPhantomX said:

    Nice script, but i With every restart the steamupdate overwrites my config ("C:\Games\exiles\ConanSandbox\Config\DefaultEngine.ini" ), so the ServerName is reset to Conan Exile Server at every restart

    I have tried to add this to the ConanServerUtilityini file.

    [YOURSERVERNAME]
    ServerName=[Test] - Test Server

    And this to the au3 filer (and of course compiled it)

    
    ;User Variables
    ..
    Local $ServerName = IniRead("ConanServerUtility.ini", "YOURSERVERNAME", "ServerName", "YOURSERVERNAME")
    ..
    $ConanPID = Run(""& $serverdir &"\ConanSandbox\Binaries\Win64\"& $Server_EXE &" ConanSandBox?ServerName="& $ServerName &"?Port="& $GamePort &"?QueryPort="& $QueryPort &"?MaxPlayers="& $MaxPlayers &"?AdminPassword="& $AdminPass &"?listen -nosteamclient -game -server -log")
    ..

    Example:

    [Test] - Test Server vil only give me [Test] and break the rest of the code.  (With or without - ).

    If i try to use only Test as name the entire config will show as servername.

    Any suggestions,? :)

     

     

     

    I have tried without success to get the server name to work in the command line. You have to put it in your config file. You just need to modify the file that is saved.  The default one is overwritten every time you do a steam update.

    Modify This Engine.ini

    C:\Games\exiles\ConanSandbox\Saved\Config\WindowsServer\Engine.ini
      
    [OnlineSubsystemSteam]
    ServerName=Your Server Name
    ServerPassword=

    FYI: Everything here C:\Games\exiles\ConanSandbox\Config\ is overwritten when SteamCMD runs because of the validate flag.

  17. V2.2.2.0 Update!

    Feature Update. You can now use this script to manage multiple servers on the same machine. Place a copy of the EXE in a different Conan_Server directory, update the INI file to make sure you have no port conflicts, and run the script.  A couple of things you might want to do to help manage two or more running at once. Change the ConanServerUtility.exe names to something Utility1 and Utility2 or something like that. Also, you probably should set the Minute about 30 minutes apart from each so they are not restarting at the same time.

     

    I also updated the Remote Restart Utility.  This version allows you to enter a server IP (x.x.x.x) or Host Name (conan.myservers.com) to help those with dynamic IPs.  The password is now case sensitive ( and blank space sensitive ) .  When the password is successfully sent, the Utility will now tell you what password you sent, how many bytes it was and the IP:Port you sent it to. This will give you some idea of if you sent the correct Restart Password. On the server side, it still logs unsuccessful password attempts to ConanServerUtility_RestartLog.txt . Plus now it will tell you what password was used while attempting to restart your server.

     

    Also, I shortened my shameless plug to visit us when closing the Utilities to 2 seconds.

     

    V2.2.2.0 Downloads

    Complete Version 2.2.2.0 including Source

    Conan Server Utility V2.2.2.0

    Conan Server Remote Restart Utility V2.2.2.0

    Conan Server Utility V2.2.2.0 Source

    Conan Server Remote Restart Utility V2.2.2.0 Source

     

    V2.2.2.0 Server Utility Source:

    Spoiler
    
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=favicon.ico
    #AutoIt3Wrapper_Res_Comment=By Dateranoth - Feburary 6, 2017
    #AutoIt3Wrapper_Res_Description=Utility for Running Conan Server
    #AutoIt3Wrapper_Res_Fileversion=2.2.2.0
    #AutoIt3Wrapper_Res_LegalCopyright=Dateranoth @ https://gamercide.com
    #AutoIt3Wrapper_Res_Language=1033
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;By Dateranoth - Feburary 6, 2017
    ;Used by https://gamercide.com on their server
    ;Feel free to change, adapt, and distribute
    
    #include <Date.au3>
    #include <Process.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    Opt("WinTitleMatchMode", 1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    
    ;User Variables
    If FileExists("ConanServerUtility.ini") Then
       Local $BindIP = IniRead("ConanServerUtility.ini", "Use MULTIHOME to Bind IP? Disable if having connection issues (yes/no)", "BindIP", "yes")
       Local $g_IP = IniRead("ConanServerUtility.ini", "Game Server IP", "ListenIP", "127.0.0.1")
       Local $GamePort = IniRead("ConanServerUtility.ini", "Game Server Port", "GamePort", "27015")
       Local $AdminPass = IniRead("ConanServerUtility.ini", "Admin Password", "AdminPass", "yOuRpaSHeRe")
       Local $MaxPlayers = IniRead("ConanServerUtility.ini", "Max Players", "MaxPlayers", "20")
       Local $serverdir = IniRead("ConanServerUtility.ini", "Server Directory. NO TRAILING SLASH", "serverdir", "C:\Game_Servers\Conan_Exiles_Server")
       Local $UseSteamCMD = IniRead("ConanServerUtility.ini", "Use SteamCMD To Update Server? yes/no", "UseSteamCMD", "yes")
       Local $steamcmddir = IniRead("ConanServerUtility.ini", "SteamCMD Directory. NO TRAILING SLASH", "steamcmddir", "C:\Game_Servers\SteamCMD")
       Local $UseRemoteRestart = IniRead("ConanServerUtility.ini", "Use Remote Restart ?yes/no", "UseRemoteRestart", "no")
       Local $g_Port = IniRead("ConanServerUtility.ini", "Remote Restart Port", "ListenPort", "57520")
       Local $RestartCode = IniRead("ConanServerUtility.ini", "Remote Restart Password", "RestartCode", "FVtb2DXgp8SYwj7J")
       Local $RestartDaily = IniRead("ConanServerUtility.ini", "Restart Server Daily? yes/no", "RestartDaily", "no")
       Local $CheckForUpdate = IniRead("ConanServerUtility.ini", "Check for Update Every Hour? yes/no", "CheckForUpdate", "yes")
       Local $HotHour1 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour1", "00")
       Local $HotHour2 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour2", "00")
       Local $HotHour3 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour3", "00")
       Local $HotHour4 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour4", "00")
       Local $HotHour5 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour5", "00")
       Local $HotHour6 = IniRead("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour6", "00")
       Local $HotMin = IniRead("ConanServerUtility.ini", "Daily Restart Minute? 00-59", "HotMin", "01")
       Local $ExMem = IniRead("ConanServerUtility.ini", "Excessive Memory Amount?", "ExMem", "6000000000")
       Local $ExMemRestart = IniRead("ConanServerUtility.ini", "Restart On Excessive Memory Use? yes/no", "ExMemRestart", "no")
       Local $SteamFix = IniRead("ConanServerUtility.ini", "Running Server with Steam Open? (yes/no)", "SteamFix", "no")
    Else
       IniWrite("ConanServerUtility.ini", "Use MULTIHOME to Bind IP? Disable if having connection issues (yes/no)", "BindIP", "yes")
       IniWrite("ConanServerUtility.ini", "Game Server IP", "ListenIP", "127.0.0.1")
       IniWrite("ConanServerUtility.ini", "Game Server Port", "GamePort", "27015")
       IniWrite("ConanServerUtility.ini", "Admin Password", "AdminPass", "yOuRpaSHeRe")
       IniWrite("ConanServerUtility.ini", "Max Players", "MaxPlayers", "20")
       IniWrite("ConanServerUtility.ini", "Server Directory. NO TRAILING SLASH", "serverdir", "C:\Game_Servers\Conan_Exiles_Server")
       IniWrite("ConanServerUtility.ini", "Use SteamCMD To Update Server? yes/no", "UseSteamCMD", "yes")
       IniWrite("ConanServerUtility.ini", "SteamCMD Directory. NO TRAILING SLASH", "steamcmddir", "C:\Game_Servers\SteamCMD")
       IniWrite("ConanServerUtility.ini", "Use Remote Restart ?yes/no", "UseRemoteRestart", "no")
       IniWrite("ConanServerUtility.ini", "Remote Restart Port", "ListenPort", "57520")
       IniWrite("ConanServerUtility.ini", "Remote Restart Password", "RestartCode", "FVtb2DXgp8SYwj7J")
       IniWrite("ConanServerUtility.ini", "Restart Server Daily? yes/no", "RestartDaily", "no")
       IniWrite("ConanServerUtility.ini", "Check for Update Every Hour? yes/no", "CheckForUpdate", "yes")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour1", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour2", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour3", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour4", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour5", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Hours? 00-23", "HotHour6", "00")
       IniWrite("ConanServerUtility.ini", "Daily Restart Minute? 00-59", "HotMin", "01")
       IniWrite("ConanServerUtility.ini", "Excessive Memory Amount?", "ExMem", "6000000000")
       IniWrite("ConanServerUtility.ini", "Restart On Excessive Memory Use? yes/no", "ExMemRestart", "no")
       IniWrite("ConanServerUtility.ini", "Running Server with Steam Open? (yes/no)", "SteamFix", "no")
       MsgBox(4096, "Default INI File Made", "Please Modify Default Values and Restart Script")
       Exit
    EndIf
    
    OnAutoItExitRegister("Gamercide")
    
    Global $sFile = ""
    Global $Server_EXE = "ConanSandboxServer-Win64-Test.exe"
    Global $PIDFile = @ScriptDir &"\ConanServerUtility_lastpid_tmp"
    Global $hWndFile = @ScriptDir &"\ConanServerUtility_lasthwnd_tmp"
    If FileExists($PIDFile) Then
    	Global $ConanPID = FileRead($PIDFile)
    	Global $ConanhWnd = HWnd(FileRead($hWndFile))
    Else
    	Global $ConanPID = "0"
    	Global $ConanhWnd = "0"
    EndIf
    
    Func Gamercide()
    	If @exitMethod <> 1 Then
    	$Shutdown = MsgBox(4100, "Shut Down?","Do you wish to shutdown the server?",10)
    		If $Shutdown = 6 Then
    			FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" Server Shutdown by User Input from ConanServerUtility Script")
    			CloseServer()
    		EndIf
    		MsgBox(4096, "Thanks for using our Application", "Please visit us at https://gamercide.com",2)
    	EndIf
    	If $UseRemoteRestart = "yes" Then
    		TCPShutdown()
    	EndIf
    	Exit
    EndFunc
    
    Func CloseServer()
    	Local $PID = ProcessExists($ConanPID)
    	ControlSend($ConanhWnd, "", "", "I" & @CR)
    	ControlSend($ConanhWnd, "", "", "I" & @CR)
    	ControlSend($ConanhWnd, "", "", "^C")
    	WinWaitClose($ConanhWnd, "", 60)
    	If $PID Then
    		ProcessClose($PID)
        EndIf
    	FileDelete($PIDFile)
    	FileDelete($hWndFile)
    EndFunc
    
    Func GetRSS()
    	Local $oXML = ObjCreate("Microsoft.XMLHTTP")
    	$oXML.Open("GET", "http://steamcommunity.com/games/440900/rss/", 0)
    	$oXML.Send
    
    	$sFile = _TempFile(@ScriptDir, '~', '.xml')
    	FileWrite($sFile, $oXML.responseText)
    EndFunc
    
    Func ParseRSS()
    	$sXML = $sFile
    	Local $oXML = ObjCreate("Microsoft.XMLDOM")
    	$oXML.Load($sXML)
    	Local $oNames = $oXML.selectNodes("//rss/channel/item/title")
    	Local $aMyDate, $aMyTime
    	_DateTimeSplit(_NowCalc(), $aMyDate, $aMyTime)
        Local $cDate = "PATCH "& StringFormat("%02d", $aMyDate[3]) &"."& StringFormat("%02d", $aMyDate[2]) &"."& StringFormat("%04d", $aMyDate[1])
    	Local $cFile = @ScriptDir &"\ConanServerUtility_LastUpdate.txt"
    	For $oName In $oNames
    
    		If StringRegExp($oName.text,$cDate&"(?i)") Then
    				If FileRead($cFile) = $oName.text Then
    					;ConsoleWrite("No New Update" & @CRLF)
    					ExitLoop
    				Else
    					FileDelete($cFile)
    					FileWrite($cFile,$oName.text)
    					Local $PID = ProcessExists($ConanPID)
    					If $PID Then
    						FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" ["& $oName.text &"] Restart for Update Requested by ConanServerUtility Script")
    						CloseServer()
    					EndIf
    					ExitLoop
    				EndIf
    		EndIf
    	Next
    EndFunc
    
    Func UpdateCheck()
    	GetRSS()
    	ParseRSS()
    	FileDelete($sFile)
    EndFunc
    
    Func _TCP_Server_ClientIP($hSocket)
       Local $pSocketAddress, $aReturn
       $pSocketAddress = DllStructCreate("short;ushort;uint;char[8]")
       $aReturn = DllCall("ws2_32.dll", "int", "getpeername", "int", $hSocket, "ptr", DllStructGetPtr($pSocketAddress), "int*", DllStructGetSize($pSocketAddress))
       If @error Or $aReturn[0] <> 0 Then Return $hSocket
    	  $aReturn = DllCall("ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($pSocketAddress, 3))
       If @error Then Return $hSocket
    	  $pSocketAddress = 0
       Return $aReturn[0]
    EndFunc ;==>_TCP_Server_ClientIP
    
    If $UseSteamCMD = "yes" Then
    	Local $sFileExists = FileExists($steamcmddir &"\steamcmd.exe")
    	If $sFileExists = 0 Then
    		MsgBox ( 0x0, "SteamCMD Not Found", "Could not find steamcmd.exe at "& $steamcmddir)
    		Exit
    	EndIf
    
    Else
    	Local $cFileExists = FileExists($serverdir &"\ConanSandboxServer.exe")
    	If $cFileExists = 0 Then
    		MsgBox ( 0x0, "Conan Server Not Found", "Could not find ConanSandboxServer.exe at "& $serverdir)
    		Exit
    	EndIf
    Endif
    
    
    If $UseRemoteRestart = "yes" Then
    ; Start The TCP Services
    TCPStartup()
    Local $MainSocket = TCPListen($g_IP, $g_Port, 100)
    	If $MainSocket = -1 Then
    		MsgBox ( 0x0, "TCP Error", "Could not bind to [" &  $g_IP & "] Is this the correct Server IP?")
    		Exit
    		EndIf
    EndIf
    
    While True
    If $UseRemoteRestart = "yes" Then
    Local $ConnectedSocket = TCPAccept($MainSocket)
    If $ConnectedSocket >= 0 Then
    $Count = 0
    While $Count < 30
    $RECV = TCPRecv($ConnectedSocket,512)
    $PassCompare = StringCompare($RECV, $RestartCode, 1)
       If $PassCompare = 0 Then
    	  Local $PID = ProcessExists($ConanPID) ; Will return the PID or 0 if the process isn't found.
    	  If $PID Then
    		 Local $IP = _TCP_Server_ClientIP($ConnectedSocket)
    		 Local $MEM = ProcessGetStats($PID, 0)
    		 FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    		 " --Peak Memory:"& $MEM[1] &" Restart Requested by Remote Host: "& $IP)
    		 CloseServer()
    		 Sleep (10000)
    		 ExitLoop
    	  EndIf
    	  Else
    	    Local $IP = _TCP_Server_ClientIP($ConnectedSocket)
    		FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" Restart ATTEMPT by Remote Host: "& $IP &" WRONG PASSWORD: "& $RECV)
    		ExitLoop
       EndIf
    $Count += 1
    Sleep (1000)
    WEnd
    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)
    EndIf
    EndIf
    
    
    Local $PID = ProcessExists($ConanPID)
    If $PID = 0 Then
    	If $UseSteamCMD = "yes" Then
    		RunWait(""& $steamcmddir &"\steamcmd.exe +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir "& $serverdir &" +app_update 443030 validate +quit")
    	EndIf
    	If $CheckForUpdate = "yes" Then
    		UpdateCheck()
    	EndIf
    	If $BindIP = "no" Then
    		$ConanPID = Run(""& $serverdir &"\ConanSandbox\Binaries\Win64\"& $Server_EXE &" ConanSandBox?QueryPort="& $GamePort &"?MaxPlayers="& $MaxPlayers &"?AdminPassword="& $AdminPass &"?listen -nosteamclient -game -server -log")
    	Else
    		$ConanPID = Run(""& $serverdir &"\ConanSandbox\Binaries\Win64\ConanSandboxServer-Win64-Test.exe ConanSandBox?MULTIHOME="& $g_IP &"?QueryPort="& $GamePort &"?MaxPlayers="& $MaxPlayers &"?AdminPassword="& $AdminPass &"?listen -nosteamclient -game -server -log")
    	EndIf
    	$ConanhWnd = WinGetHandle(WinWait(""& $serverdir &"", "", 70))
    	If $SteamFix = "yes" Then
    		WinWait(""& $Server_EXE &" - Entry Point Not Found","",5)
    		If WinExists(""& $Server_EXE &" - Entry Point Not Found") Then
    			ControlSend(""& $Server_EXE &" - Entry Point Not Found", "", "", "{enter}")
    		EndIf
    		WinWait(""& $Server_EXE &" - Entry Point Not Found","",5)
    		If WinExists(""& $Server_EXE &" - Entry Point Not Found") Then
    			ControlSend(""& $Server_EXE &" - Entry Point Not Found", "", "", "{enter}")
    		EndIf
    	EndIf
    	FileDelete($PIDFile)
    	FileDelete($hWndFile)
    	FileWrite($PIDFile,$ConanPID)
    	FileWrite($hWndFile,String($ConanhWnd))
    	FileSetAttrib($PIDFile,"+HT")
    	FileSetAttrib($hWndFile,"+HT")
    Else
       Local $MEM = ProcessGetStats($PID, 0)
       If $MEM[0] > $ExMem And $ExMemRestart = "no" Then
    	  FileWriteLine(@ScriptDir & "\ConanServerUtility_ExcessiveMemoryLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
            " --Peak Memory:"& $MEM[1])
    	  Sleep (10000)
       ElseIf $MEM[0] > $ExMem And $ExMemRestart = "yes" Then
    	  FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    	  " --Peak Memory:"& $MEM[1] &" Excessive Memory Use - Restart Requested by ConanServerUtility Script")
    	  CloseServer()
    	  Sleep (10000)
       EndIf
    EndIf
    
    If ((@HOUR = $HotHour1 Or @HOUR = $HotHour2 Or @HOUR = $HotHour3 Or @HOUR = $HotHour4 Or @HOUR = $HotHour5 Or @HOUR = $HotHour6) And @MIN = $HotMin And $RestartDaily = "yes") Then
       Local $PID = ProcessExists($ConanPID)
    	  If $PID Then
    		 Local $MEM = ProcessGetStats($PID, 0)
    		 FileWriteLine(@ScriptDir & "\ConanServerUtility_RestartLog.txt", @YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN &" --Work Memory:"& $MEM[0] & _
    		 " --Peak Memory:"& $MEM[1] &" Daily Restart Requested by ConanServerUtility Script")
    		 CloseServer()
    	  EndIf
       Sleep (10000)
    EndIf
    
    If @MIN = $HotMin And $CheckForUpdate = "yes" Then
    	UpdateCheck()
    	Sleep(70000)
    EndIf
    
    Sleep (500)
    WEnd

     

     

    V2.2.2.0 Server Utility Source:

    Spoiler
    
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=favicon.ico
    #AutoIt3Wrapper_Res_Comment=By Dateranoth - Feburary 6, 2017
    #AutoIt3Wrapper_Res_Description=Utility to Remotely Restart Conan Server
    #AutoIt3Wrapper_Res_Fileversion=2.2.2.0
    #AutoIt3Wrapper_Res_LegalCopyright=Dateranoth @ https://gamercide.com
    #AutoIt3Wrapper_Res_Language=1033
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;By Dateranoth - Feburary 6, 2017
    ;Used by https://gamercide.com on their server
    ;Feel free to change, adapt, and distribute
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    ; Start The TCP Services
        ;==============================================
        TCPStartup()
    
       ; Set Some reusable info
       ;--------------------------
       Local $ConnectedSocket, $szData
    If FileExists("ConanServerRemoteRestart.ini") Then
       Local $cIPorName = IniRead("ConanServerRemoteRestart.ini", "Use IP (x.x.x.x) or Name (myserver.com) (ip/name)", "cIPorName", "ip")
       Local $cSERVERADDRESS = IniRead("ConanServerRemoteRestart.ini", "GameServerIP (can be name or IP based on above setting)", "cSERVERADDRESS", "127.0.0.1")
       Local $cPORT = IniRead("ConanServerRemoteRestart.ini", "RestartServerPort", "cPORT", "57520")
       Local $RPassword = IniRead("ConanServerRemoteRestart.ini", "DefaultRestartPassword", "RPassword", "")
    
    Else
       IniWrite("ConanServerRemoteRestart.ini", "Use IP (x.x.x.x) or Name (myserver.com) (ip/name)", "cIPorName", "ip")
       IniWrite("ConanServerRemoteRestart.ini", "GameServerIP (can be name or IP based on above setting)", "cSERVERADDRESS", "127.0.0.1")
       IniWrite("ConanServerRemoteRestart.ini", "RestartServerPort", "cPORT", "57520")
       IniWrite("ConanServerRemoteRestart.ini", "DefaultRestartPassword", "RPassword", "")
       MsgBox(4096, "Default INI File Made", "Please Modify Default Values and Restart Script")
       TCPShutdown() ; Close the TCP service.
       Exit
    EndIf
    
    If $cIPorName = "name" Then
    	Local $cIPAddress = TCPNameToIP($cSERVERADDRESS)
    Else
    	Local $cIPAddress = $cSERVERADDRESS
    EndIf
    
    OnAutoItExitRegister("Gamercide")
    Func Gamercide()
    	TCPShutdown() ; Close the TCP service.
    	MsgBox(4096, "Thanks for using our Application", "Please visit us at https://gamercide.com",2)
    	Exit
    EndFunc
    
    Func MyTCP_Client($sIPAddress, $iPort, $iData)
        ; Assign a Local variable the socket and connect to a listening socket with the IP Address and Port specified.
        Local $iSocket = TCPConnect($sIPAddress, $iPort)
        Local $iError = 0
        Local $cData = StringToBinary($iData, 4)
    
        ; If an error occurred display the error code and return False.
        If @error Then
            ; The server is probably offline/port is not opened on the server.
            $iError = @error
            MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not connect, Error code: " & $iError)
            Return False
        EndIf
    
        ; Send Restart Code to the Server.
        Local $bytes = TCPSend($iSocket, $cData)
    
        ; If an error occurred display the error code and return False.
        If @error Then
            $iError = @error
            MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not send the data, Error code: " & $iError)
            Return False
    	Else
    		MsgBox(4096, "Success!", $iData &" Sent to "& $sIPAddress &":"& $iPort &" containing "& $bytes &" bytes of data",10)
        EndIf
    
        ; Close the socket.
        TCPCloseSocket($iSocket)
    EndFunc   ;==>MyTCP_Client
    
            ;Loop forever asking for data to send to the SERVER
            While 1
                ; InputBox for data to transmit
                $cPass = InputBox("Restart The Conan Server", @LF & @LF & "Enter the code to Restart The Conan Server within 30 seconds:",$RPassword)
    
                ; If they cancel the InputBox or leave it blank we exit our forever loop
                If @error Or $cPass = "" Then
    			   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "No Restart Sent",5)
    			   ExitLoop
    			Else
    			   MyTCP_Client($cIPAddress, $cPort, $cPass)
    			   ExitLoop
    			EndIf
            WEnd
    
    Func OnAutoItExit()
    
    EndFunc

     

     

×
×
  • Create New...