diff --git a/code/defines/global.dm b/code/defines/global.dm index 77bcf63a7ee..39a5b5d98f7 100644 --- a/code/defines/global.dm +++ b/code/defines/global.dm @@ -198,4 +198,8 @@ var forumsqllogin = "root" forumsqlpass = "" forum_activated_group = "2" - forum_authenticated_group = "10" \ No newline at end of file + forum_authenticated_group = "10" + + // For FTP requests. (i.e. downloading runtime logs.) + // However it'd be ok to use for accessing attack logs and such too, which are even laggier. + fileaccess_timer = 600 //Cannot access files by ftp until the game is finished setting up and stuff. \ No newline at end of file diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 87c97f8bef3..4c6dd736025 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -271,6 +271,7 @@ verbs += /client/proc/everyone_random verbs += /client/proc/only_one verbs += /client/proc/deadmin_self + verbs += /client/proc/getruntimelog //used by coders to retrieve runtime logs else return return @@ -395,6 +396,7 @@ verbs -= /client/proc/jumptocoord verbs -= /client/proc/everyone_random verbs -= /client/proc/Set_Holiday + verbs -= /client/proc/getruntimelog //used by coders to retrieve runtime logs verbs -= /proc/possess verbs -= /proc/release //verbs -= /client/proc/give_spell --Merged with view variables diff --git a/code/modules/admin/verbs/getruntimelog.dm b/code/modules/admin/verbs/getruntimelog.dm new file mode 100644 index 00000000000..695327376b5 --- /dev/null +++ b/code/modules/admin/verbs/getruntimelog.dm @@ -0,0 +1,53 @@ +/* + HOW DO I LOG RUNTIMES? + Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" (or press the F3 key) + navigate the popup window to the log/runtime/ folder from where your tgstation .dmb is located. + + OPTIONAL: you can select the little checkbox down the bottom to make dreamdeamon save the log everytime you + start a world. Just remember to repeat these steps with a new name when you update to a new revision! + + Save it with the name of the revision your server uses (e.g. r3459.txt). + Coders with the Game Master rank will now be able to access any runtime logs you have archived this way! + This will allow us to gather information on bugs across multiple servers and make maintaining the TG + codebase for the entire /TG/station commuity a TONNE easier :3 Thanks for your help! +*/ +#define FTPDELAY 200 //20 second delay to prevent spam + +//This proc allows GameMasters to download txt files saved to the log/runtime/ folder on the server. +//In effect this means the server owner can log game sessions through DreamDeamon to that folder and +//Coders (with access) can download logs (old and current). +//To make life easier on everyone please name logfiles according to the revision number in use! + +//This proc has a failsafe built in to prevent spamming of ftp requests. As such it can only be used once every +//20 seconds. This can be changed by modifying FTPDELAY's value. + +//PLEASE USE RESPONSIBLY, only download from the server if the log isn't already available elsewhere! +//Bandwidth is expensive and lags are lame. Although txt files of a few kB shouldn't cause problems really ~Carn + +/client/proc/getruntimelog() + set name = "getruntimelog" + set desc = "Retrieve any session logfiles saved by dreamdeamon" + set category = "Debug" + set hidden = 1 + + if( !src.holder || holder.rank != "Game Master" ) + src << "Only Game Masters may use this command." + return + + var/time_to_wait = fileaccess_timer - world.time + if(time_to_wait > 0) + src << "Error: getruntimelog(): FTP-request spam prevention. Please wait [round(time_to_wait/10)] seconds." + return + fileaccess_timer = world.time + FTPDELAY + + var/list/list_of_runtimelogs = flist("log/runtime/") + var/choice = input(src,"Choose a runtime-log to download:","Download",null) in list_of_runtimelogs + + if(!choice || !fexists("log/runtime/[choice]")) + src << "Error: getruntimelog(): Files not found/Invalid file([choice])." + return + + src << ftp("log/runtime/[choice]") + + return + diff --git a/tgstation.dme b/tgstation.dme index a230f7860c4..53e04703a63 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -751,6 +751,7 @@ #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\getruntimelog.dm" #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\massmodvar.dm" #include "code\modules\admin\verbs\MC.dm"