mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-04 05:51:54 +00:00
* TGS3 * Fix line endings * Enable 16-bit long topics * Cleans up topic socket usage * Reduces and refines the IRC status throttle * Increase the CP status delay to a reasonable amount * Fixes the testmerge command not having a keyword * Clean up rebooting a bit * Get error codes from windows when symlinking fails * Clean up world announces * Aborting compilation will kill the DD process * Add support for changing the project name * Removes the log page * Add support for compile cancellation * Version bumps and docs * Add merge-pr repo CL command * Fixes DM cancel command's help message * Refactor command line to show better formatted help text * Corrects a typo * Multi-key game options must be manually edited * Moving of the server installation from the control panel * Fix a bug with server moving * Corrects webclient disposal syntax * Service now handles the PR Json the game uses properly * PR listing command for CL * Fixes reversed testmerge and update help entries * Windows scheduling to help avoid reboot crashes * Generalization of chat infastructure * Brings a file name in line with everything else * Shutdown exceptions no longer keep the service online * Enable provider switching on the backend. More thread safety * Support for switching, password encryption and defaults. * Removes boilerplate on log writing * Discord integration * Update the installer dependencies * Version bump * Adds support for getting the latest byond version * Fixes issue with not being able to set discord channels * Fix being able to reconnect if chat is disabled * Extra validation for interface types * Add the Chat page for the control panel * Various cleanup * Set read ACL on the data directory * Remove redundant namespace usage * Fixes some buttons not updating the server page * Future proof against upcoming removal of repo data directory * Normalize Main declaration * Update the IRC library * Enables CTCP * Removes useless hack * Logging + enable IRC private messages * Jobs config * And finally the maps config * Save the last config panel visited * Not gonna use these * Minor formatting cleanup * Fixes the chat page not refereshing after clicking reconnect * Fixes server page not initializing correctly * Repo now defaults to tgstation github when not found * Revert "Set read ACL on the data directory" This reverts commit 15b0021ec51532bca14690a884caa81e811fbc46. * Design the admin config page * Prep format the repo's admin_ranks.txt * Add a negative permissions field * IRC now RFC quits before disconnecting * Turns out that fixed the disconnect lag * Updates the admin ranks config api to work for us * Done with this config shit * @optimumtact * Fix this * Fix the .wxs * Try to get md5/sha1 working. * Add FCIV to appveyor * Generalize the command class * Revert "Generalize the command class" This reverts commit 5c61f6df58d66f0fea4170c8aee0cd5beaa99b5d. * ITS THE FUCKING SEX NUMBER!!!! * Final touches * No THESE are the final touches * Do not advertise * Revert "Do not advertise" This reverts commit f64281d486f9ca27e39f19635ab4deacb2d7e1ac. * Hopefully the last version bump for long time * Fix line endings * Fix default dbconfig.txt * Fix Discord not checking the right admin channel * Fix discord listening on ALL channels instead of configured ones * Package the discord fixes for @JamieH * Format the testmerge data a little better * Apply 7 character clamping of commit strings * Fold admin hard reboot into regular reboot list * Backward ahelp compatibility with the adminbus bot * Removes an unecessary semicolon * Fix stray merge conflict in the config * Fix Newtonsoft being included by the commandline * Improve byond update logging * Chat cleanup * Fixes some setup non-errors from being displayed * Repository no longer counts being busy as being valid * Repository no longer valid while cloning * Fixes a nudge socket change issue * Frontend cleanup * Fixes CanStart race condition * Fixes compile cancel delays * Various fixes * More fixes * Better readme * More readme * Fix a config command description * Add missing repo status command * Never delete the backups * Log the compiles * More logging * Stuff * A thing happened, but I'm not sure what * Tiny * INB4 second squash * Version bump * Shallow clones should speed things up * Regular clones * This is how it's set on travis * Fix this dupe * Add backup tag support to backend and command line * Add some missing repo commands, fix GetHead. Fix reset on branches * Remove the interfaces for commit and push * Remove that generate changelog checkbox * Yeah, that's a misunderstanding * Make changelog pushing a config, with no way to enable for now * Add Reset and Recompile option * Update readme * Repo page cleanup * Fixed NudgePort message possible repeating Fixed Reset and Recompile option always being visible * Fixed compilation copy not overwriting files Fixed compiler trying to unecessarily delete the whole A/B folder Improved game folder initialization speed * Selectively stage the html folder * Make the restriction a config * Switch to using LibGit2Sharp+SSH * WIP SSH support * Removes some success chat messages * Make repo authentication purely file based * Quick IRC fix * Should all work in theory... * More fine grained * Remove the username thing * Use the right default email for tgstation-server * Update the readme * That's worthy of a version bump * Speling * Makes it do as the readme says * Fix testmerge list not having a scrollbar * Trying out commit message based deployment [TGSDeploy] * Whoops * Testing * Better * Version Bump [TGSDeploy] * Need to set the var at parent scope [TGSDeploy] * Use the commit message * Try this [TGSDeploy] * Try just this * This maybe? [TGSDeploy] * >like [TGSDeploy] * Wildcard, bitches [TGSDeploy] * Saner title [TGSDeploy] * Readme update * This should loin ya * Fix it [TGSDeploy] * Readme, cleanup, and doc updates * Improve DD crash handling * Version bump [TGSDeploy] * TGS3 Config Changes * Line endings * Map config code change * Missed a few * Security and Visibility selectors for the Server page * Fixes OCD * Fax it * Fixes * Version bump [TGSDeploy] * eh * The word comment has lost it's meaning to me * This is a terrible name but whatever * Support config changes * This is part of the code so it belongs with the code * ExportService now has a return value * Copying of the logs dir during compile for #27674 * Version bump [TGSDeploy] * Removes some uneedful * Moves daemon config to BYOND folder, much safer * Fix a config comment translation miss * Fix project settings issue * Fix config apply button not showing up after repo clone * Fix anchoring for Backup Tags: label * Version Bump [TGSDeploy] * Nudge port only listens while server is running * Fix some instances of the control panel crashing when the service stops * Add start menu shortcuts * Remove the actual server * Remove appveyor * Fix gitignore * And this * Readd HTTPS_Get for now * Readd legacy support * Fix * Fix this stuff * Last thing * Line endings * Final touches * Dat newline * More stuff * Where'd that go? * Real final touches
80 lines
3.2 KiB
Plaintext
80 lines
3.2 KiB
Plaintext
GLOBAL_VAR_INIT(reboot_mode, REBOOT_MODE_NORMAL) //if the world should request the service to kill it at reboot
|
|
GLOBAL_PROTECT(reboot_mode)
|
|
|
|
/world/proc/RunningService()
|
|
return params[SERVICE_WORLD_PARAM]
|
|
|
|
/world/proc/ExportService(command)
|
|
return shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0
|
|
|
|
/world/proc/IRCBroadcast(msg)
|
|
ExportService("[SERVICE_REQUEST_IRC_BROADCAST] [msg]")
|
|
|
|
//called at the exact moment the world is supposed to reboot
|
|
/world/proc/ServiceReboot()
|
|
switch(GLOB.reboot_mode)
|
|
if(REBOOT_MODE_HARD)
|
|
to_chat(src, "<span class='boldannounce'>Hard reboot triggered, you will automatically reconnect...</span>")
|
|
log_world("Sending shutdown request!");
|
|
sleep(1) //flush the buffers
|
|
ExportService(SERVICE_REQUEST_KILL_PROCESS)
|
|
if(REBOOT_MODE_SHUTDOWN)
|
|
to_chat(src, "<span class='boldannounce'>The server is shutting down...</span>")
|
|
log_world("Deleting world")
|
|
qdel(src)
|
|
|
|
/world/proc/ServiceCommand(list/params)
|
|
var/sCK = RunningService()
|
|
var/their_sCK = params[SERVICE_CMD_PARAM_KEY]
|
|
|
|
if(!their_sCK || their_sCK != sCK)
|
|
return "Invalid comms key!";
|
|
|
|
var/command = params[SERVICE_CMD_PARAM_COMMAND]
|
|
if(!command)
|
|
return "No command!"
|
|
|
|
var/static/last_irc_status = 0
|
|
switch(command)
|
|
if(SERVICE_CMD_HARD_REBOOT)
|
|
if(GLOB.reboot_mode != REBOOT_MODE_HARD)
|
|
GLOB.reboot_mode = REBOOT_MODE_HARD
|
|
log_world("Hard reboot requested by service")
|
|
message_admins("The world will hard reboot at the end of the game. Requested by service.")
|
|
SSblackbox.set_val("service_hard_restart", TRUE)
|
|
if(SERVICE_CMD_GRACEFUL_SHUTDOWN)
|
|
if(GLOB.reboot_mode != REBOOT_MODE_SHUTDOWN)
|
|
GLOB.reboot_mode = REBOOT_MODE_SHUTDOWN
|
|
log_world("Shutdown requested by service")
|
|
message_admins("The world will shutdown at the end of the game. Requested by service.")
|
|
SSblackbox.set_val("service_shutdown", TRUE)
|
|
if(SERVICE_CMD_WORLD_ANNOUNCE)
|
|
var/msg = params["message"]
|
|
if(!istext(msg) || !msg)
|
|
return "No message set!"
|
|
to_chat(src, "<span class='boldannounce'>[html_encode(msg)]</span>")
|
|
return "SUCCESS"
|
|
if(SERVICE_CMD_IRC_STATUS)
|
|
var/rtod = REALTIMEOFDAY
|
|
if(rtod - last_irc_status < IRC_STATUS_THROTTLE)
|
|
return
|
|
last_irc_status = rtod
|
|
var/list/adm = get_admin_counts()
|
|
var/list/allmins = adm["total"]
|
|
var/status = "Admins: [allmins.len] (Active: [english_list(adm["present"])] AFK: [english_list(adm["afk"])] Stealth: [english_list(adm["stealth"])] Skipped: [english_list(adm["noflags"])]). "
|
|
status += "Players: [GLOB.clients.len] (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]."
|
|
return status
|
|
|
|
if(SERVICE_CMD_ADMIN_MSG)
|
|
return IrcPm(params[SERVICE_CMD_PARAM_TARGET], params[SERVICE_CMD_PARAM_MESSAGE], params[SERVICE_CMD_PARAM_SENDER])
|
|
|
|
if(SERVICE_CMD_NAME_CHECK)
|
|
log_admin("IRC Name Check: [params[SERVICE_CMD_PARAM_SENDER]] on [params[SERVICE_CMD_PARAM_TARGET]]")
|
|
message_admins("IRC name checking on [params[SERVICE_CMD_PARAM_TARGET]] from [params[SERVICE_CMD_PARAM_SENDER]]")
|
|
return keywords_lookup(params[SERVICE_CMD_PARAM_TARGET], 1)
|
|
if(SERVICE_CMD_ADMIN_WHO)
|
|
return ircadminwho()
|
|
else
|
|
return "Unknown command: [command]"
|
|
|