t2server/usr/local/bin/t2fixer
2024-02-18 18:38:17 -05:00

113 lines
3.3 KiB
Python
Executable file

#!/usr/bin/env -S python3 -B
from os import geteuid, chmod, walk
from os.path import isdir, islink, join
from shutil import chown
from sys import exit as bail
from t2support import *
if geteuid() != 0:
bail("This script must be run with sudo or as root.\n")
def setperm(file):
if islink(file):
pass
elif isdir(file):
log.write(f"Setting mode 775 on directory {file}")
try:
chmod(file,0o775)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
elif file.endswith("t2support.py"):
log.write(f"Setting mode 664 on file {file}")
try:
chmod(file,0o664)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
elif file.startswith(bin_dir):
log.write(f"Setting mode 775 on script {file}")
try:
chmod(file,0o775)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
elif file.endswith(".exe"):
log.write(f"Setting mode 775 on exe {file}")
try:
chmod(file,0o775)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
elif file == f"{etc_dir}/release":
log.write(f"Setting mode 444 on {file}")
try:
chmod(file,0o444)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
else:
log.write(f"Setting mode 664 on file {file}")
try:
chmod(file,0o664)
log.write(f"\n")
except:
pwarn(f"Failed to set permissions on {file}")
log.write(f"... FAILED!\n")
pass
if islink(file):
pass
else:
try:
log.write(f"Setting owner/group on {file}")
chown(file, "t2server", "t2server")
log.write(f"\n")
except:
pwarn(f"Failed to set owner/group on {file}")
log.write(f"... FAILED!\n")
pass
with open(f'{log_dir}/t2fixer.log', 'w') as log:
setperm(install_dir)
setperm(etc_dir)
for r, d, f in walk(f"{install_dir}/GameData"):
for file in d:
setperm(join(r, file))
for file in f:
setperm(join(r, file))
for r, d, f in walk(etc_dir):
for file in d:
setperm(join(r, file))
for file in f:
setperm(join(r, file))
for r, d, f in walk(log_dir):
for file in d:
setperm(join(r, file))
for file in f:
setperm(join(r, file))
setperm(f"{unit_dir}/t2server.service")
setperm(f"{unit_dir}/t2bouncer.service")
setperm(f"{unit_dir}/t2bouncer.timer")
setperm(f"{bin_dir}/t2server")
setperm(f"{bin_dir}/t2bouncer")
setperm(f"{bin_dir}/t2remove")
setperm(f"{bin_dir}/t2fixer")
setperm(f"{bin_dir}/t2help")
setperm(f"{bin_dir}/t2support.py")
setperm(f"{etc_dir}/release")