Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import shlex, os, sys, subprocess, re, json, urllib
- servercmd = 'srcds.exe -game csgo -console +map de_dust2 -usercon -port 27015'
- steamcmdpath = 'E:/serverfiles/'
- login = 'testuser123'
- password = 'testpw123'
- serverpath = 'E:/serverfiles/csgo/'
- game = 4
- games = { 1 : ['Counter--Strike Source', 'css/cstrike/steam.inf', 'steam', 'Counter-Strike Source'],
- 2 : ['Team Fortress 2', 'orangebox/tf/steam.inf', 'steam', 'tf'],
- 3 : ['Day of Defeat Source', 'orangebox/dod/steam.inf', 'steam', 'dods'],
- 4 : ['Counter-Strike Global Offense', 'csgo/steam.inf', 'steamcmd', '740'],
- }
- class steamInstall():
- def __init__(self, games, id, serverbasedir, SteamPath=None, SteamCmdPath=None, login=None, password=None):
- self.gameinfo = games[id]
- self.serverbasedir = serverbasedir
- if not os.path.isdir(self.serverbasedir):
- print('Serverbasedirectory does not exist')
- self.login = login
- self.password = password
- def getCommand(self):
- self.updatename = self.getID()
- if self.getInstaller() is 'steam':
- self.args = '-command update -game %s -dir %s -retry' % (self.updatename, self.serverbasedir)
- if sys.platform == 'linux':
- self.runcmd = './steam ' + self.args
- if sys.platform == 'win32':
- self.runcmd = 'hldsupdatetool.exe ' + self.args
- if self.getInstaller() is 'steamcmd':
- self.args = '+login %s %s +force_install_dir %s +app_update %s validate +quit' % (self.login, self.password, self.serverbasedir, self.updatename)
- if sys.platform == 'linux':
- self.runcmd = './steamcmd ' + self.args
- if sys.platform == 'win32':
- self.runcmd = 'steamcmd.exe ' + self.args
- return shlex.split(self.runcmd)
- def getName(self):
- return self.gameinfo[0]
- def getSteamInf(self):
- return self.gameinfo[1]
- def getInstaller(self):
- return self.gameinfo[2]
- def getID(self):
- return self.gameinfo[3]
- class steaminf:
- def __init__(self, steamfile):
- self.steamfile = open(steamfile)
- self.steaminfo = self.steamfile.read()
- self.steaminfo = self.steaminfo.replace('\r','')
- self.steamfile.close()
- self.status = [ ]
- def getVersion(self):
- self.version = re.findall(r'PatchVersion=(.+)',self.steaminfo)
- return self.version[0]
- def getProductName(self):
- self.productname = re.findall(r'ProductName=(.+)',self.steaminfo)
- return self.productname[0]
- def getAppId(self):
- self.appid = re.findall(r'appID=(.+)',self.steaminfo)
- return self.appid[0]
- def checkVersion(self):
- self.requrl = 'http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%s&version=%s&format=json' % (self.getAppId(), self.getVersion())
- try:
- self.response = urllib.urlopen(self.requrl)
- except:
- pass
- self.response = json.load(self.response)
- self.status.append(self.response['response']['up_to_date'])
- if self.response['response'].has_key('required_version'):
- self.status.append( self.response['response']['required_version'] )
- return self.status
- while True:
- os.chdir(steamcmdpath)
- server = steamInstall(games, 4, serverpath, SteamCmdPath=steamcmdpath, login=login, password=password)
- needupdate = steaminf(serverpath + os.path.sep + server.getSteamInf())
- if not needupdate.checkVersion()[0]:
- print("Updating to Version %s") % needupdate.status[1]
- updating = subprocess.Popen(server.getCommand(), shell=False, stderr=None)
- updating.wait()
- os.chdir(serverpath)
- srcds_run = subprocess.Popen(shlex.split(servercmd), shell=False, stderr=None)
- srcds_run.wait()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement