Advertisement
Guest User

srcds_py

a guest
Sep 18th, 2012
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.72 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import shlex, os, sys, subprocess, re, json, urllib
  3.  
  4. servercmd = 'srcds.exe -game csgo -console +map de_dust2 -usercon -port 27015'
  5. steamcmdpath = 'E:/serverfiles/'
  6. login = 'testuser123'
  7. password = 'testpw123'
  8. serverpath = 'E:/serverfiles/csgo/'
  9. game = 4
  10.  
  11.  
  12. games = { 1 : ['Counter--Strike Source', 'css/cstrike/steam.inf', 'steam', 'Counter-Strike Source'],
  13.           2 : ['Team Fortress 2', 'orangebox/tf/steam.inf', 'steam', 'tf'],
  14.           3 : ['Day of Defeat Source', 'orangebox/dod/steam.inf', 'steam', 'dods'],
  15.           4 : ['Counter-Strike Global Offense', 'csgo/steam.inf', 'steamcmd', '740'],
  16.           }
  17.  
  18. class steamInstall():
  19.     def __init__(self, games, id, serverbasedir, SteamPath=None, SteamCmdPath=None, login=None, password=None):
  20.         self.gameinfo = games[id]
  21.         self.serverbasedir = serverbasedir
  22.         if not os.path.isdir(self.serverbasedir):
  23.             print('Serverbasedirectory does not exist')
  24.         self.login = login
  25.         self.password = password
  26.     def getCommand(self):
  27.         self.updatename = self.getID()
  28.         if self.getInstaller() is 'steam':
  29.             self.args = '-command update -game %s -dir %s -retry' % (self.updatename, self.serverbasedir)
  30.             if sys.platform == 'linux':
  31.                 self.runcmd = './steam ' + self.args
  32.             if sys.platform == 'win32':
  33.                 self.runcmd = 'hldsupdatetool.exe ' + self.args
  34.         if self.getInstaller() is 'steamcmd':
  35.             self.args = '+login %s %s +force_install_dir %s +app_update %s validate +quit' % (self.login, self.password, self.serverbasedir, self.updatename)
  36.             if sys.platform == 'linux':
  37.                 self.runcmd = './steamcmd ' + self.args
  38.             if sys.platform == 'win32':
  39.                 self.runcmd = 'steamcmd.exe ' + self.args
  40.         return shlex.split(self.runcmd)
  41.     def getName(self):
  42.         return self.gameinfo[0]
  43.     def getSteamInf(self):
  44.         return self.gameinfo[1]
  45.     def getInstaller(self):
  46.         return self.gameinfo[2]
  47.     def getID(self):
  48.         return self.gameinfo[3]
  49.  
  50.  
  51. class steaminf:
  52.     def __init__(self, steamfile):
  53.         self.steamfile = open(steamfile)
  54.         self.steaminfo = self.steamfile.read()
  55.         self.steaminfo = self.steaminfo.replace('\r','')
  56.         self.steamfile.close()
  57.         self.status = [ ]
  58.     def getVersion(self):
  59.         self.version = re.findall(r'PatchVersion=(.+)',self.steaminfo)
  60.         return self.version[0]
  61.     def getProductName(self):
  62.         self.productname = re.findall(r'ProductName=(.+)',self.steaminfo)
  63.         return self.productname[0]
  64.     def getAppId(self):
  65.         self.appid = re.findall(r'appID=(.+)',self.steaminfo)
  66.         return self.appid[0]
  67.     def checkVersion(self):
  68.         self.requrl  = 'http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%s&version=%s&format=json' % (self.getAppId(), self.getVersion())
  69.         try:
  70.             self.response = urllib.urlopen(self.requrl)
  71.         except:
  72.             pass
  73.         self.response = json.load(self.response)
  74.         self.status.append(self.response['response']['up_to_date'])
  75.         if self.response['response'].has_key('required_version'):
  76.             self.status.append( self.response['response']['required_version'] )
  77.         return self.status
  78.  
  79.  
  80. while True:
  81.     os.chdir(steamcmdpath)
  82.     server = steamInstall(games, 4, serverpath, SteamCmdPath=steamcmdpath, login=login, password=password)
  83.     needupdate = steaminf(serverpath + os.path.sep + server.getSteamInf())
  84.     if not needupdate.checkVersion()[0]:
  85.         print("Updating to Version %s") % needupdate.status[1]
  86.         updating = subprocess.Popen(server.getCommand(), shell=False, stderr=None)
  87.         updating.wait()
  88.     os.chdir(serverpath)
  89.     srcds_run = subprocess.Popen(shlex.split(servercmd), shell=False, stderr=None)
  90.     srcds_run.wait()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement