HEX
Server: Apache/2.4.65 (Unix) OpenSSL/1.1.1k
System: Linux vps109042.inmotionhosting.com 4.18.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
User: cisa (1010)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //opt/cwprads/cwp_terminal_setup
#!/usr/lib/cwprads/venv/bin/python3
import subprocess
import os
from sys import exit


def is_rhel8():
    try:
        with open('/etc/redhat-release') as release_file:
            release_info = release_file.read().strip()
            if "release" in release_info:
                version = int(
                    release_info.split("release")[1].strip().split(".")[0]
                )
            return version <= 8
    except ValueError as e:
        print(f"Error determining OS version: {e}")


def install_python38():
    if os.path.exists('/usr/bin/python3.8'):
        return
    subprocess.run(["yum", "install", "python38", "-y"])


def update_install_script(oldtext, newtext):
    if not os.path.isfile('/scripts/install_terminal'):
        print("unable to find /scripts/install_terminal for patching")
        exit(1)
    with open('/scripts/install_terminal') as f:
        lines = f.readlines()
    updated_lines = []
    for line in lines:
        if "express pty.js" in line:
            continue
        if oldtext in line and newtext not in line:
            line = line.replace(oldtext, newtext)
        updated_lines.append(line)

    # patched_installer = contents.replace(oldtext, newtext)

    with open('/scripts/install_terminal', 'w') as f:
        f.writelines(updated_lines)


def run_installer():
    subprocess.run(['/scripts/install_terminal'], cwd='/root', check=True)


def main():
    oldtext = "--production"
    newtext = "--production --python=/usr/bin/python3.8"

    if is_rhel8():
        install_python38()
        update_install_script(oldtext, newtext)
    run_installer()


if __name__ == "__main__":
    main()