Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Benutzerinformationen überspringen
Administrator
Wohnort: Hagen
Beruf: Mechatroniker (didaktische Systeme)
Rootserver vorhanden: Nein
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
#!/usr/bin/python # # Autor: DeaD_EyE # E-Mail: gbs.deadeye@gmail.com # URL: http://sourceserver.info # Version: 0.1.0 # # Lizenz: http://creativecommons.org/licenses/by-sa/3.0/ #------------------------------------------------------- # Beschreibung: # # Es findet eine Ueberpruefung der Version des Servers # ueber die Web-SteamAPI statt. # Sobald der server veraltet ist, wird er aktualisiert. # # Anstelle der steam.sh fuer Updates, wird steamcmd # direkt aufgerufen # # Dieses Script hat den Vorteil, dass es den Server im # Installationsverzeichnis updatet. Es ist somit fuer Teklab # und andere WIs geeignet, die eine Singleserverinstallation nutzen. # # Um das Script zu integrieren wird es als steam.sh im Serververzeichnis # gespeichert. Folgende Daten muessen dem Script uebergeben werden: # # steamdir: Das Verzeichnis in dem sich die steamcmd befindet z.B. steam/linux32 (relativ zum Serververzeichnis) # steambin: Name der steamcmd. Sofern Valve nicht alles ueber den Haufen wirft -> steamcmd # login: Login des Steamaccounts # password: Passwort des Steamaccounts # # Um die Informationen dem Script zu uebergeben, kann eine Configdatei verwendet werden # Nicht jeder Kunde muss den Login des Hosters kennen, auch wenn auf diesem Account # keine Spiele registriert sind use_cfgfile = True configfile = '/home/irgendwo/updater' # Das Script erweitert auch Userverzeichnisse, # Angaben wie ~ oder ~user sind moeglich # Die Configdatei muss so aufgebaut sein (ohne Raute): #[steamcmd] #steamdir=steamcmd #steambin=steamcmd #login=DeinAccount #password=DeinPasswort ############################################################## # Die Variablen werden ueberschrieben, wenn use_cfgfile = True # Wenn die Variablen direkt im Script verwendet werden sollen, # dann muss use_cfgfile = False sein ############################################################## steamdir = "steamcmd" steambin = "steamcmd" login = "DeaD_EyE" password = "sourceserver.info" ############################################################### #Code ############################################################### import re, subprocess, shlex, os, urllib, json, ConfigParser, shutil #get serverbasedirectory installdir = os.getcwd() #function for reading the config values from the txt file def readcfg(cfgfile): config = ConfigParser.ConfigParser() config.readfp(open(cfgfile)) return config.get('steamcmd', 'steamdir'), config.get('steamcmd', 'steambin'), config.get('steamcmd', 'login'), config.get('steamcmd', 'password') #if use_cfgfile is True, all values are taken from the txt file if use_cfgfile: steamdir, steambin, login, password = readcfg(os.path.expanduser(configfile)) ### Create path for steamdir: steamdir = installdir + os.path.sep + steamdir 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 class steamcmd: def __init__(self,steamdir,steambin,login,password,installdir,appid,validate=False): self.steamdir = steamdir self.steambin = steambin self.login = login self.password = password self.installdir = installdir self.arch = 'linux32' if appid == 730: self.appid = 740 else: self.appid = appid self.validate = validate def cmdargs(self): if self.validate: self.cmd = "%s%s +login %s %s +force_install_dir %s +app_update %d validate +quit" % (self.arch, os.path.sep + self.steambin, self.login, self.password, self.installdir, self.appid) else: self.cmd = "%s%s +login %s %s +force_install_dir %s +app_update %d +quit" % (self.arch, os.path.sep + self.steambin, self.login, self.password, self.installdir, self.appid) return shlex.split(self.cmd) def update(self): os.putenv('LD_LIBRARY_PATH', self.arch) os.chdir(self.steamdir) self.p = subprocess.Popen(self.cmdargs(), shell=False, stderr=None) self.p.wait() os.chdir(self.installdir) server = steaminf('csgo/steam.inf') if server.checkVersion()[0] is not True: print('Der Server ist nicht aktuell') print('Installierte Version: %s') % server.version[0] print('Aktuelle Version: %s') % server.status[1] print('Starte das Updatetool...') print('Aktualisiere Server: %s') % installdir cmd = steamcmd(steamdir, steambin, login, password, installdir, int(server.getAppId()), validate=True) cmd.update() #removing Update-Directory print('TMP-Update-Verzeichnis wird geloescht') for dir in os.listdir('.'): if re.match(r'[a-z0-9]{40}',dir): shutil.rmtree(dir) else: print('Der Server ist aktuell') print('Installierte Version: %s') % server.version[0] |
Quellcode |
|
1 |
-autoupdate -steam_dir . -steamcmd_script . |