#!/bin/bash

action=$1
target=$2
args=$@

BASE_DIR=/var/lib/1p
ORIGINAL_PORT=8888
ORIGINAL_VERSION=v1.10.26-lts
ORIGINAL_ENTRANCE=entrance
ORIGINAL_USERNAME=username
ORIGINAL_PASSWORD=password
LANGUAGE=en

if [ -f "/usr/local/bin/lang/$LANGUAGE.sh" ]; then
    source "/usr/local/bin/lang/$LANGUAGE.sh"
else
    LANGUAGE=en
fi

function usage() {
    echo "$PANEL_CONTROL_SCRIPT"
    echo
    echo "Usage: "
    echo "  ./1pctl-agent [COMMAND] [ARGS...]"
    echo "  ./1pctl-agent --help"
    echo
    echo "Commands: "
    echo "  status              $TXT_PANEL_SERVICE_STATUS"
    echo "  start               $TXT_PANEL_SERVICE_START"
    echo "  stop                $TXT_PANEL_SERVICE_STOP"
    echo "  restart             $TXT_PANEL_SERVICE_RESTART"
    echo "  uninstall           $TXT_PANEL_SERVICE_UNINSTALL"
    echo "  user-info           $TXT_PANEL_SERVICE_USER_INFO"
    echo "  listen-ip           $TXT_PANEL_SERVICE_LISTEN_IP"
    echo "  version             $TXT_PANEL_SERVICE_VERSION"
    echo "  update              $TXT_PANEL_SERVICE_UPDATE"
    echo "  reset               $TXT_PANEL_SERVICE_RESET"
    echo "  restore             $TXT_PANEL_SERVICE_RESTORE"
}

function status() {
    systemctl status 1panel-agent.service
}

function start() {
    systemctl start 1panel-agent.service
    status
}

function stop() {
    systemctl stop 1panel-agent.service
    status
}

function restart() {
    systemctl restart 1panel-agent.service
    status
}

function uninstall() {
    read -p "$TXT_PANEL_SERVICE_UNINSTALL_NOTICE : " yn
    if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo -e "$TXT_PANEL_SERVICE_UNINSTALL_START"
        systemctl stop 1panel-agent.service
        systemctl disable 1panel-agent.service >/dev/null 2>&1
        echo -e "$TXT_PANEL_SERVICE_UNINSTALL_REMOVE"
        rm -rf $BASE_DIR/1panel-agent /usr/local/bin/{1pctl-agent,1panel-agent} /etc/systemd/system/1panel-agent.service
        systemctl daemon-reload
        systemctl reset-failed
        echo -e "$TXT_PANEL_SERVICE_UNINSTALL_SUCCESS"
    else
        exit 0
    fi
}

function user-info() {
    1panel-agent -l $LANGUAGE user-info
}

function listen-ip() {
    case "${target}" in
    ipv4)
        1panel-agent -l $LANGUAGE listen-ip ipv4
        restart
        ;;
    ipv6)
        1panel-agent -l $LANGUAGE listen-ip ipv6
        restart
        ;;
    *)
        1panel-agent -l $LANGUAGE listen-ip
        ;;
    esac
}

function restore() {
    read -p "$TXT_PANEL_SERVICE_RESTORE_NOTICE : " yn
    if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        1panel-agent -l $LANGUAGE restore
        systemctl daemon-reload
        restart
        1panel-agent -l $LANGUAGE version
    else
        exit 0
    fi
}

function version() {
    1panel-agent -l $LANGUAGE version
}

function reset() {
    case "${target}" in
    domain)
        1panel-agent -l $LANGUAGE reset domain
        ;;
    entrance)
        1panel-agent -l $LANGUAGE reset entrance
        ;;
    https)
        1panel-agent -l $LANGUAGE reset https
        restart
        ;;
    ips)
        1panel-agent -l $LANGUAGE reset ips
        ;;
    mfa)
        1panel-agent -l $LANGUAGE reset mfa
        ;;
    *)
        1panel-agent -l $LANGUAGE reset
        ;;
    esac
}

function update() {
    case "${target}" in
    username)
        1panel-agent -l $LANGUAGE update username
        ;;
    password)
        1panel-agent -l $LANGUAGE update password
        ;;
    port)
        1panel-agent -l $LANGUAGE update port
        ;;
    *)
        1panel-agent -l $LANGUAGE update
        ;;
    esac
}

function main() {
    case "${action}" in
    status)
        status
        ;;
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    restore)
        restore
        ;;
    uninstall)
        uninstall
        ;;
    user-info)
        user-info
        ;;
    listen-ip)
        listen-ip
        ;;
    version)
        version
        ;;
    reset)
        reset
        ;;
    update)
        update
        ;;
    help)
        usage
        ;;
    --help)
        usage
        ;;
    "")
        usage
        ;;
    *)
        echo "$TXT_PANEL_SERVICE_UNSUPPORTED_PARAMETER"
        ;;
    esac
}

main
