From cbd74700fcb72c66be5c273e8b7ea5ecec4ef429 Mon Sep 17 00:00:00 2001 From: "elly1989@rocketmail.com" Date: Tue, 17 Apr 2012 18:59:31 +0000 Subject: [PATCH] New Verb added for "Game Master"s: getruntimelog This verb can only be accessed by typing it in full in the input bar down the bottom of the gamescreen. HOW DO I LOG RUNTIMES? Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" in dreamdeamon (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). This will allow us to gather information on bugs across multiple servers simply by logging on as a player and asking any Game Master to send us the logs. Hence making maintaining our codebase for the entire community a TONNE easier :3 If you're keeping runtime logs: Thanks for your help! ~love from #coderbus git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3475 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/global.dm | 6 ++- code/modules/admin/admin_verbs.dm | 2 + code/modules/admin/verbs/getruntimelog.dm | 53 +++++++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 code/modules/admin/verbs/getruntimelog.dm 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"