ogclone-engine/client/interfaceAdm/CambiarAcceso.py

53 lines
1.6 KiB
Python

import os
import sys
import subprocess
#!/usr/bin/env python3
def main():
if len(sys.argv) != 2:
print("Usage: CambiarAcceso.py <mode>")
sys.exit(1)
mode = sys.argv[1]
repo_ip = og_get_repo_ip()
if not repo_ip:
og_raise_error("OG_ERR_NOTFOUND", "repo no montado")
if og_is_repo_locked():
og_raise_error("OG_ERR_LOCKED", f"repo {repo_ip}")
proto = os.getenv("ogprotocol", "smb")
if proto not in ["nfs", "smb"]:
og_raise_error("OG_ERR_FORMAT", f"protocolo desconocido {proto}")
if mode == "admin":
mount_mode = "rw"
elif mode == "user":
mount_mode = "ro"
else:
og_raise_error("OG_ERR_FORMAT", f"modo desconocido {mode}")
ogimg = os.getenv("OGIMG", "/mnt/ogimg")
ogunit = os.getenv("ogunit", "")
if ogunit:
ogunit = f"/{ogunit}"
subprocess.run(["umount", ogimg], check=True)
og_echo("info", f"Montar repositorio {repo_ip} por {proto} en modo {mode}")
if proto == "nfs":
subprocess.run(["mount", "-t", "nfs", f"{repo_ip}:{ogimg}{ogunit}", ogimg, "-o", mount_mode], check=True)
elif proto == "smb":
with open("/scripts/ogfunctions", "r") as f:
for line in f:
if "OPTIONS=" in line:
pass_option = line.split("pass=")[1].split()[0]
break
else:
pass_option = "og"
subprocess.run(["mount.cifs", f"//{repo_ip}/ogimages{ogunit}", ogimg, "-o", f"{mount_mode},serverino,acl,username=opengnsys,password={pass_option}"], check=True)
if __name__ == "__main__":
main()