3 Commits

Author SHA1 Message Date
uprightbass360
251b5d8f9f update port display for clarity 2025-11-26 15:37:41 -05:00
uprightbass360
5620fbae91 fix size computing for nested container 2025-11-26 15:19:41 -05:00
uprightbass360
319da1a553 remove test config 2025-11-26 15:00:08 -05:00
2 changed files with 49 additions and 272 deletions

View File

@@ -1,261 +0,0 @@
# Generated by azerothcore-rm/setup.sh
# Compose overrides (set to 1 to include matching file under compose-overrides/)
# mysql-expose.yml -> exposes MySQL externally via COMPOSE_OVERRIDE_MYSQL_EXPOSE_ENABLED
# worldserver-debug-logging.yml -> raises log verbosity via COMPOSE_OVERRIDE_WORLDSERVER_DEBUG_LOGGING_ENABLED
COMPOSE_OVERRIDE_MYSQL_EXPOSE_ENABLED=0
COMPOSE_OVERRIDE_WORLDSERVER_DEBUG_LOGGING_ENABLED=0
COMPOSE_PROJECT_NAME=azerothcore-stack
STORAGE_PATH=/nfs/azerothcore
STORAGE_PATH_LOCAL=./local-storage
BACKUP_PATH=${STORAGE_PATH}/backups
TZ=America/New_York
# Database
MYSQL_IMAGE=mysql:8.0
MYSQL_ROOT_PASSWORD=azerothcore123
MYSQL_ROOT_HOST=%
MYSQL_USER=root
MYSQL_PORT=3306
MYSQL_EXTERNAL_PORT=64306
MYSQL_DISABLE_BINLOG=1
MYSQL_CONFIG_DIR=${STORAGE_PATH}/config/mysql/conf.d
MYSQL_CHARACTER_SET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci
MYSQL_MAX_CONNECTIONS=1000
MYSQL_INNODB_BUFFER_POOL_SIZE=256M
MYSQL_INNODB_LOG_FILE_SIZE=64M
MYSQL_INNODB_REDO_LOG_CAPACITY=512M
MYSQL_RUNTIME_TMPFS_SIZE=8G
MYSQL_HOST=ac-mysql
DB_WAIT_RETRIES=60
DB_WAIT_SLEEP=10
DB_AUTH_NAME=acore_auth
DB_WORLD_NAME=acore_world
DB_CHARACTERS_NAME=acore_characters
DB_PLAYERBOTS_NAME=acore_playerbots
AC_DB_IMPORT_IMAGE=azerothcore-stack:db-import-playerbots
# Services (images)
AC_AUTHSERVER_IMAGE=acore/ac-wotlk-authserver:master
AC_WORLDSERVER_IMAGE=acore/ac-wotlk-worldserver:master
AC_AUTHSERVER_IMAGE_PLAYERBOTS=azerothcore-stack:authserver-playerbots
AC_WORLDSERVER_IMAGE_PLAYERBOTS=azerothcore-stack:worldserver-playerbots
AC_AUTHSERVER_IMAGE_MODULES=azerothcore-stack:authserver-modules-latest
AC_WORLDSERVER_IMAGE_MODULES=azerothcore-stack:worldserver-modules-latest
# Client data images
AC_CLIENT_DATA_IMAGE=acore/ac-wotlk-client-data:master
AC_CLIENT_DATA_IMAGE_PLAYERBOTS=azerothcore-stack:client-data-playerbots
CLIENT_DATA_CACHE_PATH=${STORAGE_PATH_LOCAL}/client-data-cache
CLIENT_DATA_PATH=${STORAGE_PATH}/client-data
# Build artifacts
DOCKER_IMAGE_TAG=master
AC_AUTHSERVER_IMAGE_BASE=acore/ac-wotlk-authserver
AC_WORLDSERVER_IMAGE_BASE=acore/ac-wotlk-worldserver
AC_DB_IMPORT_IMAGE_BASE=acore/ac-wotlk-db-import
AC_CLIENT_DATA_IMAGE_BASE=acore/ac-wotlk-client-data
# Container user
CONTAINER_USER=1001:1000
# Containers
CONTAINER_MYSQL=ac-mysql
CONTAINER_DB_IMPORT=ac-db-import
CONTAINER_DB_INIT=ac-db-init
CONTAINER_BACKUP=ac-backup
CONTAINER_MODULES=ac-modules
CONTAINER_POST_INSTALL=ac-post-install
# Ports
AUTH_EXTERNAL_PORT=3784
AUTH_PORT=3724
WORLD_EXTERNAL_PORT=8215
WORLD_PORT=8085
SOAP_EXTERNAL_PORT=7778
SOAP_PORT=7878
# Realm
SERVER_ADDRESS=192.168.0.179
REALM_PORT=8215
# Backups
BACKUP_RETENTION_DAYS=3
BACKUP_RETENTION_HOURS=6
BACKUP_DAILY_TIME=09
BACKUP_HEALTHCHECK_MAX_MINUTES=1440
BACKUP_HEALTHCHECK_GRACE_SECONDS=4500
# Modules
MODULE_PLAYERBOTS=1
MODULE_AOE_LOOT=0
MODULE_LEARN_SPELLS=1
MODULE_FIREWORKS=1
MODULE_INDIVIDUAL_PROGRESSION=0
MODULE_AHBOT=0
MODULE_AUTOBALANCE=0
MODULE_TRANSMOG=1
MODULE_NPC_BUFFER=1
MODULE_DYNAMIC_XP=0
MODULE_SOLO_LFG=1
MODULE_1V1_ARENA=1
MODULE_PHASED_DUELS=0
MODULE_BREAKING_NEWS=1
MODULE_BOSS_ANNOUNCER=1
MODULE_ACCOUNT_ACHIEVEMENTS=1
MODULE_AUTO_REVIVE=1
MODULE_GAIN_HONOR_GUARD=1
MODULE_ELUNA=1
MODULE_TIME_IS_TIME=1
MODULE_POCKET_PORTAL=0
MODULE_RANDOM_ENCHANTS=1
MODULE_SOLOCRAFT=1
MODULE_PVP_TITLES=0
MODULE_NPC_BEASTMASTER=1
MODULE_NPC_ENCHANTER=1
MODULE_INSTANCE_RESET=1
MODULE_LEVEL_GRANT=0
MODULE_ARAC=1
MODULE_ASSISTANT=1
MODULE_REAGENT_BANK=1
MODULE_BLACK_MARKET_AUCTION_HOUSE=1
MODULE_CHALLENGE_MODES=0
MODULE_OLLAMA_CHAT=0
MODULE_PLAYER_BOT_LEVEL_BRACKETS=0
MODULE_STATBOOSTER=0
MODULE_DUNGEON_RESPAWN=0
MODULE_SKELETON_MODULE=0
MODULE_BG_SLAVERYVALLEY=0
MODULE_AZEROTHSHARD=0
MODULE_WORGOBLIN=0
MODULE_ELUNA_TS=1
MODULE_AIO=1
MODULE_ELUNA_SCRIPTS=1
MODULE_TRANSMOG_AIO=0
MODULE_EVENT_SCRIPTS=1
MODULE_LEVEL_UP_REWARD=0
MODULE_ACCOUNTWIDE_SYSTEMS=0
MODULE_EXCHANGE_NPC=0
MODULE_RECRUIT_A_FRIEND=0
MODULE_PRESTIGE_DRAFT_MODE=0
MODULE_LUA_AH_BOT=0
MODULE_HARDCORE_MODE=0
MODULE_NPCBOT_EXTENDED_COMMANDS=0
MODULE_MULTIVENDOR=0
MODULE_TREASURE_CHEST_SYSTEM=0
MODULE_ACTIVE_CHAT=1
MODULE_ULTIMATE_FULL_LOOT_PVP=0
MODULE_HORADRIC_CUBE=0
MODULE_CARBON_COPY=0
MODULE_TEMP_ANNOUNCEMENTS=0
MODULE_ZONE_CHECK=0
MODULE_AIO_BLACKJACK=0
MODULE_SEND_AND_BIND=0
MODULE_DYNAMIC_TRADER=0
MODULE_LOTTERY_LUA=0
MODULE_DISCORD_NOTIFIER=0
MODULE_GLOBAL_MAIL_BANKING_AUCTIONS=0
MODULE_GUILDHOUSE=1
MODULE_PROGRESSION_SYSTEM=0
MODULE_NPC_FREE_PROFESSIONS=1
MODULE_DUEL_RESET=0
MODULE_ZONE_DIFFICULTY=0
MODULE_MORPHSUMMON=1
MODULE_SPELL_REGULATOR=0
MODULE_WEEKEND_XP=0
MODULE_REWARD_PLAYED_TIME=0
MODULE_RESURRECTION_SCROLL=0
MODULE_ITEM_LEVEL_UP=1
MODULE_NPC_TALENT_TEMPLATE=0
MODULE_GLOBAL_CHAT=1
MODULE_PREMIUM=0
MODULE_SYSTEM_VIP=0
MODULE_ACORE_SUBSCRIPTIONS=0
MODULE_KEEP_OUT=0
MODULE_SERVER_AUTO_SHUTDOWN=0
MODULE_WHO_LOGGED=0
MODULE_ACCOUNT_MOUNTS=0
MODULE_ANTIFARMING=0
MODULE_ARENA_REPLAY=0
MODULE_TIC_TAC_TOE=0
MODULE_WAR_EFFORT=0
MODULE_PROMOTION_AZEROTHCORE=0
# Client data
CLIENT_DATA_VERSION=
# Server configuration
SERVER_CONFIG_PRESET=none
# Playerbot runtime
PLAYERBOT_ENABLED=1
PLAYERBOT_MIN_BOTS=2000
PLAYERBOT_MAX_BOTS=4000
STACK_IMAGE_MODE=playerbots
STACK_SOURCE_VARIANT=playerbots
MODULES_ENABLED_LIST=MODULE_PLAYERBOTS,MODULE_LEARN_SPELLS,MODULE_FIREWORKS,MODULE_TRANSMOG,MODULE_NPC_BUFFER,MODULE_SOLO_LFG,MODULE_1V1_ARENA,MODULE_BREAKING_NEWS,MODULE_BOSS_ANNOUNCER,MODULE_ACCOUNT_ACHIEVEMENTS,MODULE_AUTO_REVIVE,MODULE_GAIN_HONOR_GUARD,MODULE_ELUNA,MODULE_TIME_IS_TIME,MODULE_RANDOM_ENCHANTS,MODULE_SOLOCRAFT,MODULE_NPC_BEASTMASTER,MODULE_NPC_ENCHANTER,MODULE_INSTANCE_RESET,MODULE_ARAC,MODULE_ASSISTANT,MODULE_REAGENT_BANK,MODULE_BLACK_MARKET_AUCTION_HOUSE,MODULE_STATBOOSTER,MODULE_ELUNA_TS,MODULE_AIO,MODULE_ELUNA_SCRIPTS,MODULE_EVENT_SCRIPTS,MODULE_ACTIVE_CHAT,MODULE_GUILDHOUSE,MODULE_NPC_FREE_PROFESSIONS,MODULE_MORPHSUMMON,MODULE_ITEM_LEVEL_UP,MODULE_GLOBAL_CHAT
MODULES_CPP_LIST=MODULE_LEARN_SPELLS,MODULE_FIREWORKS,MODULE_TRANSMOG,MODULE_NPC_BUFFER,MODULE_SOLO_LFG,MODULE_1V1_ARENA,MODULE_BREAKING_NEWS,MODULE_BOSS_ANNOUNCER,MODULE_ACCOUNT_ACHIEVEMENTS,MODULE_AUTO_REVIVE,MODULE_GAIN_HONOR_GUARD,MODULE_ELUNA,MODULE_TIME_IS_TIME,MODULE_RANDOM_ENCHANTS,MODULE_SOLOCRAFT,MODULE_NPC_BEASTMASTER,MODULE_NPC_ENCHANTER,MODULE_INSTANCE_RESET,MODULE_ARAC,MODULE_ASSISTANT,MODULE_REAGENT_BANK,MODULE_STATBOOSTER,MODULE_AIO,MODULE_GUILDHOUSE,MODULE_NPC_FREE_PROFESSIONS,MODULE_MORPHSUMMON,MODULE_ITEM_LEVEL_UP,MODULE_GLOBAL_CHAT
MODULES_REQUIRES_CUSTOM_BUILD=1
MODULES_REQUIRES_PLAYERBOT_SOURCE=1
# Rebuild automation
AUTO_REBUILD_ON_DEPLOY=0
MODULES_REBUILD_SOURCE_PATH=./local-storage/source/azerothcore-playerbots
# Eluna
AC_ELUNA_ENABLED=1 # Power users may set to 0 to turn off bundled Eluna runtime
AC_ELUNA_TRACE_BACK=1
AC_ELUNA_AUTO_RELOAD=1
AC_ELUNA_BYTECODE_CACHE=1
AC_ELUNA_SCRIPT_PATH=lua_scripts
AC_ELUNA_REQUIRE_PATHS=
AC_ELUNA_REQUIRE_CPATHS=
AC_ELUNA_AUTO_RELOAD_INTERVAL=1
# Tools
PMA_HOST=ac-mysql
PMA_PORT=3306
PMA_USER=root
PMA_EXTERNAL_PORT=8081
PMA_ARBITRARY=1
PMA_ABSOLUTE_URI=
PMA_UPLOAD_LIMIT=300M
PMA_MEMORY_LIMIT=512M
PMA_MAX_EXECUTION_TIME=600
KEIRA3_EXTERNAL_PORT=4201
KEIRA_DATABASE_HOST=ac-mysql
KEIRA_DATABASE_PORT=3306
# Health checks
MYSQL_HEALTHCHECK_INTERVAL=20s
MYSQL_HEALTHCHECK_TIMEOUT=15s
MYSQL_HEALTHCHECK_RETRIES=25
MYSQL_HEALTHCHECK_START_PERIOD=120s
AUTH_HEALTHCHECK_INTERVAL=30s
AUTH_HEALTHCHECK_TIMEOUT=10s
AUTH_HEALTHCHECK_RETRIES=3
AUTH_HEALTHCHECK_START_PERIOD=60s
WORLD_HEALTHCHECK_INTERVAL=30s
WORLD_HEALTHCHECK_TIMEOUT=10s
WORLD_HEALTHCHECK_RETRIES=3
WORLD_HEALTHCHECK_START_PERIOD=120s
BACKUP_HEALTHCHECK_INTERVAL=60s
BACKUP_HEALTHCHECK_TIMEOUT=30s
BACKUP_HEALTHCHECK_RETRIES=3
BACKUP_HEALTHCHECK_START_PERIOD=120s
# Networking
NETWORK_NAME=azerothcore
NETWORK_SUBNET=172.20.0.0/16
NETWORK_GATEWAY=172.20.0.1
# Storage helpers
HOST_ZONEINFO_PATH=/usr/share/zoneinfo
# Helper images
ALPINE_GIT_IMAGE=alpine/git:latest
ALPINE_IMAGE=alpine:latest

View File

@@ -263,9 +263,9 @@ func buildPortsTable(s *Snapshot) *TableNoCol {
table := NewTableNoCol()
rows := [][]string{{"Port", "Number", "Reachable"}}
for _, p := range s.Ports {
state := "down"
state := "Closed"
if p.Reachable {
state = "up"
state = "Open"
}
rows = append(rows, []string{p.Name, p.Port, state})
}
@@ -413,10 +413,10 @@ func renderSnapshot(s *Snapshot, selectedModule int) (*widgets.List, *ui.Grid) {
if portsTable.RowStyles == nil {
portsTable.RowStyles = make(map[int]ui.Style)
}
if portsTable.Rows[i][2] == "up" {
if portsTable.Rows[i][2] == "Open" {
portsTable.RowStyles[i] = ui.NewStyle(ui.ColorGreen)
} else {
portsTable.RowStyles[i] = ui.NewStyle(ui.ColorRed)
portsTable.RowStyles[i] = ui.NewStyle(ui.ColorYellow)
}
}
modulesList := buildModulesList(s)
@@ -453,30 +453,68 @@ func renderSnapshot(s *Snapshot, selectedModule int) (*widgets.List, *ui.Grid) {
usersPar.Text = fmt.Sprintf(" Online: %d\n Accounts: %d\n Characters: %d\n Active 7d: %d", s.Users.Online, s.Users.Accounts, s.Users.Characters, s.Users.Active7d)
usersPar.Border = true
const headerRowFrac = 0.18
const middleRowFrac = 0.43
const bottomRowFrac = 0.39
// Derive inner row ratios from the computed bottom row height so that
// internal containers tile their parent with the same spacing behavior
// as top-level rows.
grid := ui.NewGrid()
termWidth, termHeight := ui.TerminalDimensions()
headerHeight := int(float64(termHeight) * headerRowFrac)
middleHeight := int(float64(termHeight) * middleRowFrac)
bottomHeight := termHeight - headerHeight - middleHeight
if bottomHeight <= 0 {
bottomHeight = int(float64(termHeight) * bottomRowFrac)
}
helpHeight := int(float64(bottomHeight) * 0.32)
if helpHeight < 1 {
helpHeight = 1
}
moduleInfoHeight := bottomHeight - helpHeight
if moduleInfoHeight < 1 {
moduleInfoHeight = 1
}
storageHeight := int(float64(bottomHeight) * 0.513)
if storageHeight < 1 {
storageHeight = 1
}
volumesHeight := bottomHeight - storageHeight
if volumesHeight < 1 {
volumesHeight = 1
}
helpRatio := float64(helpHeight) / float64(bottomHeight)
moduleInfoRatio := float64(moduleInfoHeight) / float64(bottomHeight)
storageRatio := float64(storageHeight) / float64(bottomHeight)
volumesRatio := float64(volumesHeight) / float64(bottomHeight)
grid.SetRect(0, 0, termWidth, termHeight)
grid.Set(
ui.NewRow(0.18,
ui.NewRow(headerRowFrac,
ui.NewCol(0.34, header),
ui.NewCol(0.33, buildPar),
ui.NewCol(0.33, usersPar),
),
ui.NewRow(0.43,
ui.NewRow(middleRowFrac,
ui.NewCol(0.6, servicesTable),
ui.NewCol(0.4, portsTable),
),
ui.NewRow(0.39,
ui.NewRow(bottomRowFrac,
ui.NewCol(0.25, modulesList),
ui.NewCol(0.15,
ui.NewRow(0.32, helpPar),
ui.NewRow(0.68, moduleInfoPar),
ui.NewRow(helpRatio, helpPar),
ui.NewRow(moduleInfoRatio, moduleInfoPar),
),
ui.NewCol(0.6,
ui.NewRow(0.513,
ui.NewRow(storageRatio,
ui.NewCol(1.0, storagePar),
),
ui.NewRow(0.487,
ui.NewRow(volumesRatio,
ui.NewCol(1.0, volumesPar),
),
),