#!/bin/sh

sleep 14

# ============================================================================
# REMOVE UNUSED PACKAGES
# ============================================================================
apk del kmod-mwifiex-sdio || true

# ============================================================================
# ADGUARDHOME SETUP
# ============================================================================
chmod +x /etc/AdGuardHome/restart.sh
chmod +x /etc/init.d/adguardhome
/etc/init.d/adguardhome enable
/etc/init.d/adguardhome start

# Cron jobs for AdGuardHome
echo '0 0 * * SUN cd /etc/AdGuardHome && sh update.sh' >> /etc/crontabs/root
echo '0 6,14,22 * * * /etc/AdGuardHome/restart.sh' >> /etc/crontabs/root
echo '0 */6 * * * /bin/sync; echo 3 > /proc/sys/vm/drop_caches' >> /etc/crontabs/root

# Get WAN interface
WAN_IFACE=$(uci get network.wan.device)

# ============================================================================
# NETWORK CONFIGURATION
# ============================================================================
uci -q delete network.wan.dns
uci -q delete network.wan6.dns
uci set network.wan.peerdns='0'
uci set network.wan6.peerdns='0'
uci add_list network.wan.dns='127.0.0.1'

uci -q delete dhcp.lan.dhcp_option
uci set dhcp.lan.interface='lan'
uci set dhcp.lan.domain='lan'
uci set dhcp.lan.dhcpv4='server'
uci set dhcp.lan.dhcpv6='disabled'
uci add_list dhcp.lan.dhcp_option='6,192.168.1.1'
uci add_list dhcp.lan.dhcp_option='15,home.arpa'
uci set dhcp.lan.dns_service='0'
uci set dhcp.lan.ra_dns='0'
uci commit dhcp
/etc/init.d/dnsmasq restart

uci set network.globals.packet_steering='2'
uci set network.globals.steering_flows='256'
uci set irqbalance.irqbalance.enabled=1
uci commit network

/etc/init.d/adguardhome stop
/etc/init.d/adguardhome start

# ============================================================================
# SYSTEM CONFIGURATION
# ============================================================================
uci set system.@system[0].timezone='EST5EDT,M3.2.0,M11.1.0'
uci set system.@system[0].zonename='America/New_York'
uci set system.@system[0].cronloglevel='9'
uci set system.@system[0].conloglevel='1'
uci set system.@system[0].hostname='CoreFusion'
uci set luci.main.mediaurlbase='/luci-static/bootstrap-dark'
uci commit system

# ============================================================================
# SSH CONFIGURATION
# ============================================================================
uci set dropbear.@dropbear[0].Interface='lan'
uci commit dropbear
/etc/init.d/dropbear restart

# ============================================================================
# SQM CONFIGURATION
# ============================================================================
/etc/init.d/sqm stop
/etc/init.d/sqm disable

uci set sqm.eth1.interface="$WAN_IFACE"
uci set sqm.eth1.enabled='0'
uci set sqm.eth1.qdisc='cake'
uci set sqm.eth1.script='layer_cake.qos'

# Basic settings
uci set sqm.eth1.ingress_ecn='ECN'
uci set sqm.eth1.egress_ecn='ECN'
uci set sqm.eth1.debug_logging='0'
uci set sqm.eth1.verbosity='5'

# Advanced settings
uci set sqm.eth1.qdisc_advanced='1'
uci set sqm.eth1.squash_ingress='0'
uci set sqm.eth1.squash_dscp='0'
uci set sqm.eth1.linklayer='ethernet'
uci set sqm.eth1.overhead='18'

# Link layer advanced
uci set sqm.eth1.linklayer_advanced='1'
uci set sqm.eth1.linklayer_adaptation_mechanism='cake'
uci set sqm.eth1.tcMTU='1518'
uci set sqm.eth1.tcTSIZE='95'
uci set sqm.eth1.tcMPU='64'

# CAKE advanced options
uci set sqm.eth1.qdisc_really_really_advanced='1'
uci set sqm.eth1.ilimit='380'
uci set sqm.eth1.elimit='380'
uci set sqm.eth1.itarget='15ms'
uci set sqm.eth1.etarget='15ms'
uci set sqm.eth1.iqdisc_opts='diffserv4 dual-dsthost ingress wash no-split-gso docsis nat conservative'
uci set sqm.eth1.eqdisc_opts='diffserv4 dual-srchost egress wash split-gso docsis nat conservative'

uci commit sqm

# ============================================================================
# WIRELESS CONFIGURATION
# ============================================================================
# 5GHz Radio (radio0)
uci set wireless.radio0.disabled='0'
uci set wireless.default_radio0.disabled='0'
uci set wireless.radio0.htmode='VHT80'
uci set wireless.radio0.cell_density='0'
uci set wireless.radio0.beacon_int='200'
uci set wireless.default_radio0.ssid='CoreFusion_5G'
uci set wireless.default_radio0.dtim_period='2'
uci set wireless.default_radio0.short_preamble='1'
uci set wireless.default_radio0.max_inactivity='300'
uci set wireless.default_radio0.max_listen_interval='300'
uci set wireless.default_radio0.wpa_group_rekey='3600'

# 2.4GHz Radio (radio1)
uci set wireless.default_radio1.ssid='CoreFusion_2.4G'
uci set wireless.radio1.htmode='HT40'
uci set wireless.radio1.cell_density='0'
uci set wireless.default_radio1.dtim_period='2'
uci set wireless.radio1.beacon_int='200'
uci set wireless.default_radio1.max_inactivity='300'
uci set wireless.default_radio1.max_listen_interval='300'
uci set wireless.default_radio1.wpa_group_rekey='3600'
uci set wireless.wifinet2.short_preamble='1'
uci set wireless.default_radio0.short_preamble='1'
uci set wireless.default_radio1.short_preamble='1'

# Wifi Driver Radio Bug Fix Remove (radio2)
uci -q delete wireless.radio2
uci -q delete wireless.default_radio2

uci commit wireless
wifi reload
/etc/init.d/cron restart

exit 0