#!/bin/bash

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

BASE_DIR=directory
ORIGINAL_PORT=port
ORIGINAL_VERSION=v1.10.24-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 [COMMAND] [ARGS...]"
    echo "  ./1pctl --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.service
}

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

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

function restart() {
    systemctl restart 1panel.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.service
        systemctl disable 1panel.service >/dev/null 2>&1
        echo -e "$TXT_PANEL_SERVICE_UNINSTALL_REMOVE"
        rm -rf $BASE_DIR/1panel /usr/local/bin/{1pctl,1panel} /etc/systemd/system/1panel.service
        systemctl daemon-reload
        systemctl reset-failed
        echo -e "$TXT_PANEL_SERVICE_UNINSTALL_SUCCESS"
    else
        exit 0
    fi
}

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

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

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

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

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

function update() {
    case "${target}" in
        username)
            1panel -l $LANGUAGE update username
            ;;
        password)
            1panel -l $LANGUAGE update password
            ;;
        port)
            1panel -l $LANGUAGE update port
            ;;
        *)
            1panel -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
