#!/bin/sh

cat > /usr/bin/bananawrt-banner << 'EOF'
#!/bin/sh

C_RESET="\033[0m"
C_RED="\033[1;31m"
C_GREEN="\033[1;32m"
C_YELLOW="\033[1;33m"
C_BLUE="\033[1;34m"
C_PURPLE="\033[1;35m"
C_CYAN="\033[1;36m"
C_WHITE="\033[1;37m"
C_GOLD="\033[38;5;220m"
C_ORANGE="\033[38;5;208m"

BOLD="\033[1m"
DIM="\033[2m"

TIMEOUT_CMD=3

run_with_timeout() {
    CMD="$1"
    TIMEOUT="$2"
    
    ( eval "$CMD" ) &
    PID=$!
    
    ( sleep $TIMEOUT && kill -9 $PID 2>/dev/null ) &
    KILLER=$!
    
    wait $PID 2>/dev/null
    RESULT=$?
    
    kill -9 $KILLER 2>/dev/null
    wait $KILLER 2>/dev/null
    
    return $RESULT
}

print_banner() {
    echo
    echo -e "${C_GOLD}${BOLD}    ____                               ${C_ORANGE}_       ______  ______${C_RESET}"
    echo -e "${C_GOLD}${BOLD}   / __ )____ _____  ____ _____  ____ ${C_ORANGE}| |     / / __ \/_  __/${C_RESET}"
    echo -e "${C_GOLD}${BOLD}  / __  / __ \`/ __ \/ __ \`/ __ \/ __ \`${C_ORANGE}/ | /| / / /_/ / / /   ${C_RESET}"
    echo -e "${C_GOLD}${BOLD} / /_/ / /_/ / / / / /_/ / / / / /_/ /${C_ORANGE}| |/ |/ / _, _/ / /    ${C_RESET}"
    echo -e "${C_GOLD}${BOLD}/_____/\__,_/_/ /_/\__,_/_/ /_/\__,_/ ${C_ORANGE}|__/|__/_/ |_| /_/     ${C_RESET}"
    echo
}

get_system_info() {
    FW_VERSION=$(grep "DISTRIB_RELEASE=" /etc/openwrt_release 2>/dev/null | sed "s/DISTRIB_RELEASE='\(.*\)'/\1/" || echo "Unknown")
    HOSTNAME=$(uci -q get system.@system[0].hostname 2>/dev/null || echo "LinkUP")
    UPTIME=$(uptime 2>/dev/null | sed 's/.*up //; s/,.*//' || echo "Unknown")
    
    WAN_PROTO=$(uci -q get network.wan.proto 2>/dev/null)
    IP_WAN=""
    
    if [ "$WAN_PROTO" = "atc" ]; then
        for IFACE in wwan0 usb0 eth1; do
            IP_CHECK=$(timeout 1 ip -4 addr show dev $IFACE 2>/dev/null | grep inet | head -n1 | awk '{print $2}' | cut -d/ -f1)
            if [ -n "$IP_CHECK" ]; then
                IP_WAN=$IP_CHECK
                break
            fi
        done
    else
        WAN_DEVICE=$(uci -q get network.wan.device 2>/dev/null)
        if [ -n "$WAN_DEVICE" ]; then
            IP_WAN=$(timeout 1 ip -4 addr show dev $WAN_DEVICE 2>/dev/null | grep inet | head -n1 | awk '{print $2}' | cut -d/ -f1)
        fi
    fi
    
    if [ -z "$IP_WAN" ]; then
        DEFAULT_IFACE=$(timeout 1 ip route 2>/dev/null | grep default | awk '{print $5}' | head -n1)
        if [ -n "$DEFAULT_IFACE" ]; then
            IP_WAN=$(timeout 1 ip -4 addr show dev $DEFAULT_IFACE 2>/dev/null | grep inet | head -n1 | awk '{print $2}' | cut -d/ -f1)
        fi
    fi
    
    SIGNAL_INFO=""
    OPERATOR_INFO=""
    BANDS_INFO=""
    
    if [ -f "/usr/share/3ginfo-lite/3ginfo.sh" ] && [ -x "/usr/share/3ginfo-lite/3ginfo.sh" ]; then
        TEMP_FILE="/tmp/modem_info_$$"
        
        if run_with_timeout "/usr/share/3ginfo-lite/3ginfo.sh > $TEMP_FILE 2>/dev/null" $TIMEOUT_CMD; then
            if [ -f "$TEMP_FILE" ] && [ -s "$TEMP_FILE" ]; then
                MODEM_INFO=$(cat "$TEMP_FILE" 2>/dev/null)
                
                if [ -n "$MODEM_INFO" ]; then
                    SIGNAL_PERCENT=$(echo "$MODEM_INFO" | grep -o '"signal":"[^"]*"' | cut -d'"' -f4)
                    
                    OPERATOR_NAME=$(echo "$MODEM_INFO" | grep -o '"operator_name":"[^"]*"' | cut -d'"' -f4)
                    if [ -z "$OPERATOR_NAME" ]; then
                        OPERATOR_NAME=$(echo "$MODEM_INFO" | grep -o '"operator":"[^"]*"' | cut -d'"' -f4)
                    fi
                    
                    MODE=$(echo "$MODEM_INFO" | grep -o '"mode":"[^"]*"' | cut -d'"' -f4)
                    BAND_INFO=$(echo "$MODEM_INFO" | grep -o '"band":"[^"]*"' | cut -d'"' -f4)
                    
                    if [ -n "$SIGNAL_PERCENT" ]; then
                        if [ "$SIGNAL_PERCENT" -ge 70 ]; then
                            QUALITY="Excellent"
                            SIGNAL_COLOR=$C_GREEN
                        elif [ "$SIGNAL_PERCENT" -ge 40 ]; then
                            QUALITY="Good"
                            SIGNAL_COLOR=$C_GREEN
                        elif [ "$SIGNAL_PERCENT" -ge 20 ]; then
                            QUALITY="Fair"
                            SIGNAL_COLOR=$C_YELLOW
                        else
                            QUALITY="Poor"
                            SIGNAL_COLOR=$C_RED
                        fi
                        
                        SIGNAL_INFO="${SIGNAL_COLOR}${SIGNAL_PERCENT}%${C_RESET} (${SIGNAL_COLOR}${QUALITY}${C_RESET})"
                    fi
                    
                    if [ -n "$OPERATOR_NAME" ]; then
                        OPERATOR_INFO="${C_CYAN}${OPERATOR_NAME}${C_RESET}"
                    fi
                    
                    if [ -n "$MODE" ] || [ -n "$BAND_INFO" ]; then
                        BANDS_PARTS=""
                        
                        if [ -n "$MODE" ]; then
                            BANDS_PARTS="${MODE}"
                        fi
                        
                        if [ -n "$BAND_INFO" ]; then
                            if [ -n "$BANDS_PARTS" ]; then
                                BANDS_PARTS="${BANDS_PARTS} | ${BAND_INFO}"
                            else
                                BANDS_PARTS="${BAND_INFO}"
                            fi
                        fi
                        
                        if [ -n "$BANDS_PARTS" ]; then
                            BANDS_INFO="${C_CYAN}${BANDS_PARTS}${C_RESET}"
                        fi
                    fi
                fi
            fi
        fi
        
        rm -f "$TEMP_FILE" 2>/dev/null
    fi
}

print_info() {
    echo -e "${C_CYAN}${BOLD}BananaWRT${C_RESET} - Custom Firmware for Banana Pi R3 Mini ${C_PURPLE}v${FW_VERSION}${C_RESET}"
    echo -e "${DIM}──────────────────────────────────────────────────────────${C_RESET}"
    echo
    echo -e "${C_CYAN}${BOLD}Hostname:${C_RESET}  ${C_GREEN}${HOSTNAME}${C_RESET}"
    echo -e "${C_CYAN}${BOLD}Uptime:${C_RESET}    ${C_GREEN}${UPTIME}${C_RESET}"
    
    if [ -n "$OPERATOR_INFO" ]; then
        echo -e "${C_CYAN}${BOLD}Operator:${C_RESET}  ${OPERATOR_INFO}"
    fi
    
    if [ -n "$SIGNAL_INFO" ]; then
        echo -e "${C_CYAN}${BOLD}Signal:${C_RESET}    ${SIGNAL_INFO}"
    fi
    
    if [ -n "$BANDS_INFO" ]; then
        echo -e "${C_CYAN}${BOLD}Bands:${C_RESET}     ${BANDS_INFO}"
    fi
    
    if [ -n "$IP_WAN" ]; then
        echo -e "${C_CYAN}${BOLD}WAN IP:${C_RESET}    ${C_GREEN}${IP_WAN}${C_RESET}"
    else
        echo -e "${C_CYAN}${BOLD}WAN IP:${C_RESET}    ${C_RED}Not connected${C_RESET}"
    fi
    
    echo
}

print_banner
get_system_info
print_info
EOF

chmod +x /usr/bin/bananawrt-banner

cat > /etc/banner << 'EOF'
EOF

cat > /etc/motd << 'EOF'
EOF

if [ ! -f /root/.profile ]; then
    cat > /root/.profile << 'EOF'
if [ -t 0 ] && [ -x /usr/bin/bananawrt-banner ]; then
    /usr/bin/bananawrt-banner
fi
EOF
else
    if ! grep -q "bananawrt-banner" /root/.profile; then
        echo 'if [ -t 0 ] && [ -x /usr/bin/bananawrt-banner ]; then' >> /root/.profile
        echo '    /usr/bin/bananawrt-banner' >> /root/.profile
        echo 'fi' >> /root/.profile
    fi
fi

exit 0