#!/usr/bin/env python
# PowerShell Remoting Protocol Client

import os
import sys

from pypsrp.client import Client

import cmk.password_store


def from_environment(env):
    user = os.environ.get("PARAMETER_RUNAS")
    password = os.environ.get("PARAMETER_PASSWORD")
    command = os.environ.get("PARAMETER_COMMAND")
    address = os.environ.get("ALERT_HOSTADDRESS")

    if not user or not command or not password:
        sys.stdout.write("Need user, password and command as arguments")
        sys.exit(3)

    if not address:
        sys.stdout.write("Environment ALERT_HOSTADDRESS is missing\n")
        sys.exit(3)

    return user, password, command, address


def main(argv=None):
    if argv is None:
        argv = sys.argv

    user, password, command, address = from_environment(os.environ)

    if password.startswith("store\t"):
        password_id = password.split("\t", 1)[1]
        try:
            password = cmk.password_store.load().get(password_id)
        except KeyError:
            raise Exception("pwstore: Password '%s' does not exist" % password_id)
    elif password.startswith("password\t"):
        password = password.split("\t", 1)[1]

    client = Client(address, username=user, password=password, cert_validation=False)
    stdout, stderr, rc = client.execute_cmd(command)

    return rc


if __name__ == '__main__':
    sys.exit(main())
