From 859714bfe66f45fa36d9031f0955e1d6421e0a06 Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Sat, 16 Apr 2016 07:56:41 -0700 Subject: [PATCH 1/2] Adds a config for client versions --- code/controllers/configuration.dm | 14 ++++++++++++++ code/modules/client/client procs.dm | 21 +++++++++++++++++---- config/config.txt | 11 ++++++++++- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 9d5364feac5..743d1328a13 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -197,6 +197,11 @@ // The object used for the clickable stat() button. var/obj/effect/statclick/statclick + var/client_warn_version = 0 + var/client_warn_message = "Your version of byond may have issues or be blocked from accessing this server in the future." + var/client_error_version = 0 + var/client_error_message = "Your version of byond is too old, may have issues, and is blocked from accessing this server." + /datum/configuration/New() var/list/L = subtypesof(/datum/game_mode) @@ -401,6 +406,15 @@ protected_config.autoadmin_rank = ckeyEx(value) if("generate_minimaps") config.generate_minimaps = 1 + if("client_warn_version") + config.client_warn_version = text2num(value) + if("client_warn_message") + config.client_warn_message = value + if("client_error_version") + config.client_error_version = text2num(value) + if("client_error_message") + config.client_error_message = value + else diary << "Unknown setting in configuration: '[name]'" diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 6c4d4bb2fce..9b2151039a4 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -2,8 +2,7 @@ //SECURITY// //////////// #define UPLOAD_LIMIT 1048576 //Restricts client uploads to the server to 1MB //Could probably do with being lower. -#define MIN_CLIENT_VERSION 0 //Just an ambiguously low version for now, I don't want to suddenly stop people playing. - //I would just like the code ready should it ever need to be used. + /* When somebody clicks a link in game, this Topic is called first. It does the stuff in this proc and then is redirected to the Topic() proc for the src=[0xWhatever] @@ -103,8 +102,6 @@ var/next_external_rsc = 0 if(connection != "seeker" && connection != "web")//Invalid connection type. return null - if(byond_version < MIN_CLIENT_VERSION) //Out of date client. - return null #if (PRELOAD_RSC == 0) if(external_rsc_urls && external_rsc_urls.len) @@ -143,6 +140,22 @@ var/next_external_rsc = 0 . = ..() //calls mob.Login() + if (byond_version < config.client_error_version) //Out of date client. + src << "Your version of byond is too old:" + src << config.client_error_message + src << "Your version: [byond_version]" + src << "Required version: [config.client_error_version] or later" + if (holder) + src << "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade" + else + del(src) + return 0 + else if (byond_version < config.client_warn_version) //We have words for this client. + src << "Your version of byond may be getting out of date:" + src << config.client_warn_message + src << "Your version: [byond_version]" + src << "Required version to remove this message: [config.client_warn_version] or later" + if (connection == "web") if (!config.allowwebclient) src << "Web client is disabled" diff --git a/config/config.txt b/config/config.txt index 955ab657256..2bab69b8652 100644 --- a/config/config.txt +++ b/config/config.txt @@ -235,4 +235,13 @@ ANNOUNCE_ADMIN_LOGOUT ## GENERATE_MINIMAPS ## Generating minimaps(For crew monitor) is slow and bogs down testing, so its disabled by default and must be enabled by uncommenting this config if you are running a production server. -#GENERATE_MINIMAPS \ No newline at end of file +#GENERATE_MINIMAPS + +## CLIENT VERSION CONTROL +## This allows you to configure the minimum required client version, as well as a warning version, and message for both. +## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower. +## These messages will be followed by one stating the clients current version and the required version for clarity. +#CLIENT_WARN_VERSION 510 +#CLIENT_WARN_MESSAGE Byond is really close to releasing 510 beta as the stable release, please take this time to try it out. Reports are that the client preforms better then the version you are using, and also handles network lag better. Shortly after it's release we will end up using 510 client features and you will be forced to update. +#CLIENT_ERROR_VERSION 509 +#CLIENT_ERROR_MESSAGE Your version of byond is not supported. Please upgrade. \ No newline at end of file From c3bcf0adfc480a273fca2bf3e54f36b2be975cff Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Tue, 26 Apr 2016 01:43:48 -0700 Subject: [PATCH 2/2] Adds a download link. --- code/modules/client/client procs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 9b2151039a4..0abe489df35 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -145,6 +145,7 @@ var/next_external_rsc = 0 src << config.client_error_message src << "Your version: [byond_version]" src << "Required version: [config.client_error_version] or later" + src << "Visit http://www.byond.com/download/ to get the latest version of byond." if (holder) src << "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade" else @@ -155,6 +156,7 @@ var/next_external_rsc = 0 src << config.client_warn_message src << "Your version: [byond_version]" src << "Required version to remove this message: [config.client_warn_version] or later" + src << "Visit http://www.byond.com/download/ to get the latest version of byond." if (connection == "web") if (!config.allowwebclient)