mirror of
https://git.zavage.net/Zavage-Software/smileyface.git
synced 2024-12-22 04:39:21 -07:00
first re-impl of python, still linux dependent because of rsync
This commit is contained in:
parent
a81e2d4c46
commit
01c87f40af
@ -1,9 +1,10 @@
|
||||
import hashlib
|
||||
import functools
|
||||
|
||||
def md5sum_file(filename):
|
||||
with open(filename, mode='rb') as f:
|
||||
d = hashlib.md5()
|
||||
for buf in iter(partial(f.read, 128), b''):
|
||||
for buf in iter(functools.partial(f.read, 128), b''):
|
||||
d.update(buf)
|
||||
h = d.hexdigest()
|
||||
return h
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
remote_game_host = string(max=255, default='')
|
||||
|
||||
remote_game_directory = string(max=255, default='')
|
||||
remote_game_dir = string(max=255, default='')
|
||||
|
||||
remote_redirect_host = string(max=255, default='')
|
||||
|
||||
|
@ -1,14 +1,11 @@
|
||||
from .config_editor import UnrealIniFile, GameIniSpecial
|
||||
from . import config_editor
|
||||
from . import _util
|
||||
from ._util import md5sum_file
|
||||
|
||||
from app_skellington import _util
|
||||
from functools import partial
|
||||
import collections
|
||||
import configobj
|
||||
import configparser
|
||||
import glob
|
||||
import hashlib
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
@ -168,7 +165,71 @@ ssh {remote_game_host} {remote_game_dir}/stop-server.sh
|
||||
Upload paks to redirect server.
|
||||
"""
|
||||
self.ctx.log['ut4'].info('Uploading redirects (maps, mutators, etc.) to target hub.')
|
||||
pass
|
||||
|
||||
project_dir = self.ctx.config['app']['project_dir']
|
||||
# paks_dir = os.path.join(project_dir, 'instance/LinuxServer/UnrealTournament/Content/Paks/')
|
||||
paks_dir = os.path.join(project_dir, 'files/') # trailing slash required
|
||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||
cwd = project_dir
|
||||
cmd = '''
|
||||
rsync -rvz \
|
||||
--delete \
|
||||
--exclude "*.md5" \
|
||||
--exclude 'unused' \
|
||||
--exclude ".KEEP" \
|
||||
--exclude Mods.db \
|
||||
{paks_dir} {remote_redirect_host}
|
||||
|
||||
'''\
|
||||
.format(**{
|
||||
'paks_dir': paks_dir,
|
||||
'remote_redirect_host': remote_redirect_host,
|
||||
})
|
||||
# subprocess.run(cmd, cwd=cwd) # should be invoke_command? no because gui will need subprocess.run
|
||||
self._invoke_command(cmd)
|
||||
|
||||
self._redirect_hide_passwords()
|
||||
self._redirect_upload_script()
|
||||
self._redirect_chown()
|
||||
|
||||
def _redirect_hide_passwords(self):
|
||||
project_dir = self.ctx.config['app']['project_dir']
|
||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||
# (on the server):
|
||||
gameini="/srv/ut4-redirect.zavage.net/config/Game.ini"
|
||||
engineini="/srv/ut4-redirect.zavage.net/config/Engine.ini"
|
||||
|
||||
cmd = '''
|
||||
ssh mathewguest.com sed -i /ServerInstanceID=/c\ServerInstanceID=Hidden {gameini}
|
||||
'''.format(gameini=gameini)
|
||||
self._invoke_command(cmd)
|
||||
|
||||
cmd = '''
|
||||
ssh mathewguest.com sed -i /RconPassword=/c\RconPassword=Hidden {engineini}
|
||||
'''.format(engineini=engineini)
|
||||
self._invoke_command(cmd)
|
||||
|
||||
def _redirect_upload_script(self):
|
||||
project_dir = self.ctx.config['app']['project_dir']
|
||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||
cmd = '''
|
||||
rsync -vz {project_dir}/ut4-server-ctl.sh {remote_redirect_host}
|
||||
'''\
|
||||
.format(**{
|
||||
'project_dir': project_dir,
|
||||
'remote_redirect_host': remote_redirect_host,
|
||||
})
|
||||
# subprocess.run(cmd, cwd=cwd) # should be invoke_command? no because gui will need subprocess.run
|
||||
self._invoke_command(cmd)
|
||||
|
||||
def _redirect_chown(self):
|
||||
project_dir = self.ctx.config['app']['project_dir']
|
||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||
|
||||
cmd = '''
|
||||
ssh mathewguest.com 'chown http.http /srv/ut4-redirect.zavage.net -R'
|
||||
'''
|
||||
self._invoke_command(cmd)
|
||||
|
||||
def upload_server(self):
|
||||
"""
|
||||
@ -193,32 +254,52 @@ rsync -ravzp \
|
||||
--exclude "Saved/Crashes/*" \
|
||||
--exclude "Saved/Logs/*" \
|
||||
{project_dir}/instance/ \
|
||||
{remote_game_host}:{remote_game_dir}"
|
||||
{remote_game_host}:{remote_game_dir}
|
||||
'''\
|
||||
.format(**{
|
||||
'project_dir': project_dir,
|
||||
'remote_game_host': remote_game_host,
|
||||
'remote_game_dir': remote_game_dir
|
||||
})
|
||||
subprocess.run(cmd, cwd=cwd) # should be invoke_command?
|
||||
cmd = cmd.replace(' ', '')
|
||||
# subprocess.run(cmd, cwd=cwd) # should be invoke_command? no because gui will need subprocess.run
|
||||
|
||||
self._invoke_command(cmd)
|
||||
|
||||
# transfer #2
|
||||
cmd = '''
|
||||
rsync -avzp {project_dir}/ut4-server-ctl.sh {remote_game_host}:{remote_game_dir}
|
||||
'''
|
||||
subprocess.run(cmd, cwd=cwd)
|
||||
'''\
|
||||
.format(**{
|
||||
'project_dir': project_dir,
|
||||
'remote_game_host': remote_game_host,
|
||||
'remote_game_dir': remote_game_dir
|
||||
})
|
||||
# subprocess.run(cmd, cwd=cwd)
|
||||
self._invoke_command(cmd)
|
||||
|
||||
# transfer #3
|
||||
cmd = '''
|
||||
scp {project_dir}/instance/ut4-server.service {remote_game_host}:/etc/systemd/system/
|
||||
'''
|
||||
subprocess.run(cmd, cwd=cwd)
|
||||
'''\
|
||||
.format(**{
|
||||
'project_dir': project_dir,
|
||||
'remote_game_host': remote_game_host,
|
||||
'remote_game_dir': remote_game_dir
|
||||
})
|
||||
# subprocess.run(cmd, cwd=cwd)
|
||||
self._invoke_command(cmd)
|
||||
|
||||
# transfer #4
|
||||
cmd = '''
|
||||
ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
||||
'''
|
||||
subprocess.run(cmd, cwd=cwd)
|
||||
'''.format(**{
|
||||
'remote_game_host': remote_game_host,
|
||||
'remote_game_dir': remote_game_dir
|
||||
|
||||
})
|
||||
# subprocess.run(cmd, cwd=cwd)
|
||||
self._invoke_command(cmd)
|
||||
|
||||
def _first_run(self):
|
||||
self.ctx.log['ut4'].info('Starting instance once to get UID.')
|
||||
@ -280,14 +361,14 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
||||
|
||||
self.ctx.log['ut4'].info('Installing maps...')
|
||||
cmd = 'rsync -ravzp {src} {dst}'.format(**{
|
||||
'src': '/'.join([project_dir, 'files/maps']),
|
||||
'src': '/'.join([project_dir, 'files/maps/']),
|
||||
'dst': '/'.join([project_dir, 'instance/LinuxServer/UnrealTournament/Content/Paks/'])
|
||||
})
|
||||
self._invoke_command(cmd)
|
||||
|
||||
self.ctx.log['ut4'].info('Installing mutators...')
|
||||
cmd = 'rsync -ravzp {src} {dst}'.format(**{
|
||||
'src': '/'.join([project_dir, 'files/mutators']),
|
||||
'src': '/'.join([project_dir, 'files/mutators/']),
|
||||
'dst': '/'.join([project_dir, 'instance/LinuxServer/UnrealTournament/Content/Paks/'])
|
||||
})
|
||||
self._invoke_command(cmd)
|
||||
@ -309,7 +390,7 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
||||
for idx, filename in enumerate(files):
|
||||
# if idx > 5:
|
||||
# break
|
||||
md5sum = _util.md5sum_file(filename)
|
||||
md5sum = md5sum_file(filename)
|
||||
p = pathlib.Path(filename)
|
||||
relative_path = p.relative_to(mod_dir)
|
||||
pkg_basename = p.name
|
||||
@ -380,7 +461,7 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
||||
'redirect_protocol',
|
||||
'redirect_url',
|
||||
'remote_game_host',
|
||||
'remote_game_directory',
|
||||
'remote_game_dir',
|
||||
'remote_redirect_host'
|
||||
)
|
||||
for name in variable_names:
|
||||
|
Loading…
Reference in New Issue
Block a user