diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 41a04733945..f75e7837af0 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -40,7 +40,7 @@ if(5) api_datum = /datum/tgs_api/v5 - var/datum/tgs_version/max_api_version = TgsMaximumApiVersion(); + var/datum/tgs_version/max_api_version = TgsMaximumAPIVersion(); if(version.suite != null && version.minor != null && version.patch != null && version.deprecated_patch != null && version.deprefixed_parameter > max_api_version.deprefixed_parameter) TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.") api_datum = /datum/tgs_api/latest @@ -64,10 +64,10 @@ TGS_WRITE_GLOBAL(tgs, null) TGS_ERROR_LOG("Failed to activate API!") -/world/TgsMaximumApiVersion() +/world/TgsMaximumAPIVersion() return new /datum/tgs_version("5.x.x") -/world/TgsMinimumApiVersion() +/world/TgsMinimumAPIVersion() return new /datum/tgs_version("3.2.x") /world/TgsInitializationComplete() diff --git a/code/modules/tgs/includes.dm b/code/modules/tgs/includes.dm index 4018074f4e3..c803cf7ac26 100644 --- a/code/modules/tgs/includes.dm +++ b/code/modules/tgs/includes.dm @@ -14,4 +14,4 @@ #include "v5\_defines.dm" #include "v5\api.dm" #include "v5\commands.dm" -#include "v5\undefs.dm" +#include "v5\undef.dm" diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm index 245381b93ea..e0d00ad15d1 100644 --- a/code/modules/tgs/v3210/api.dm +++ b/code/modules/tgs/v3210/api.dm @@ -39,7 +39,7 @@ var/warned_custom_commands = FALSE /datum/tgs_api/v3210/ApiVersion() - return new /datum/tgs_version("3.2.1.3") + return new /datum/tgs_version("3.2.1.0") /datum/tgs_api/v3210/proc/trim_left(text) for (var/i = 1 to length(text)) @@ -160,7 +160,7 @@ var/datum/tgs_revision_information/test_merge/tm = new tm.number = text2num(I) var/list/entry = json[I] - tm.head_commit = entry["commit"] + tm.pull_request_commit = entry["commit"] tm.author = entry["author"] tm.title = entry["title"] . += tm @@ -180,7 +180,7 @@ ExportService(SERVICE_REQUEST_KILL_PROCESS) /datum/tgs_api/v3210/ChatChannelInfo() - return list() // :omegalul: + return list() /datum/tgs_api/v3210/ChatBroadcast(message, list/channels) if(channels) diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index 4ccfc1a8a60..a1949da444d 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -42,11 +42,5 @@ var/datum/tgs_chat_command/stc = new command_type var/datum/tgs_chat_user/user = new user.friendly_name = sender - - // Discord hack, fix the mention if it's only numbers (fuck you IRC trolls) - var/regex/discord_id_regex = regex(@"^[0-9]+$") - if(findtext(sender, discord_id_regex)) - sender = "<@[sender]>" - user.mention = sender return stc.Run(user, params) || TRUE diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index 4eb8e67d928..5e7f3c60bed 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -92,7 +92,7 @@ var/list/json = cached_json["testMerges"] for(var/entry in json) var/datum/tgs_revision_information/test_merge/tm = new - tm.timestamp = text2num(entry["timeMerged"]) + tm.time_merged = text2num(entry["timeMerged"]) var/list/revInfo = entry["revision"] if(revInfo) @@ -104,7 +104,7 @@ tm.url = entry["url"] tm.author = entry["author"] tm.number = entry["number"] - tm.head_commit = entry["pullRequestRevision"] + tm.pull_request_commit = entry["pullRequestRevision"] tm.comment = entry["comment"] cached_test_merges += tm @@ -114,6 +114,15 @@ /datum/tgs_api/v4/OnInitializationComplete() Export(TGS4_COMM_SERVER_PRIMED) + var/tgs4_secret_sleep_offline_sauce = 29051994 + var/old_sleep_offline = world.sleep_offline + world.sleep_offline = tgs4_secret_sleep_offline_sauce + sleep(1) + if(world.sleep_offline == tgs4_secret_sleep_offline_sauce) //if not someone changed it + world.sleep_offline = old_sleep_offline + else + TGS_WARNING_LOG("world.sleep_offline unexpectedly changed!") + /datum/tgs_api/v4/OnTopic(T) var/list/params = params2list(T) var/their_sCK = params[TGS4_INTEROP_ACCESS_IDENTIFIER] @@ -248,7 +257,7 @@ return instance_name /datum/tgs_api/v4/TestMerges() - return cached_test_merges.Copy() + return cached_test_merges /datum/tgs_api/v4/EndProcess() Export(TGS4_COMM_END_PROCESS) diff --git a/code/modules/tgs/v5/README.md b/code/modules/tgs/v5/README.md deleted file mode 100644 index 5b48d57a1f0..00000000000 --- a/code/modules/tgs/v5/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# DMAPI V5 - -This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no security restrictions. - -- [_defines.dm](./_defines.dm) contains constant definitions. -- [api.dm](./api.dm) contains the bulk of the API code. -- [commands.dm](./commands.dm) contains functions relating to `/datum/tgs_chat_command`s. -- [undefs.dm](./undefs.dm) Undoes the work of `_defines.dm`. diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 10bc4cbe406..8fd84e19fa3 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -79,7 +79,6 @@ #define DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES "chatResponses" #define DMAPI5_REVISION_INFORMATION_COMMIT_SHA "commitSha" -#define DMAPI5_REVISION_INFORMATION_TIMESTAMP "timestamp" #define DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA "originCommitSha" #define DMAPI5_CHAT_USER_ID "id" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 6735ed5dec5..3791cbde843 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -15,12 +15,8 @@ var/datum/tgs_revision_information/revision var/list/chat_channels - var/initialized = FALSE - /datum/tgs_api/v5/ApiVersion() - return new /datum/tgs_version( - #include "interop_version.dm" - ) + return new /datum/tgs_version("5.2.2") /datum/tgs_api/v5/OnWorldNew(minimum_required_security_level) server_port = world.params[DMAPI5_PARAM_SERVER_PORT] @@ -50,7 +46,6 @@ if(istype(revisionData)) revision = new revision.commit = revisionData[DMAPI5_REVISION_INFORMATION_COMMIT_SHA] - revision.timestamp = revisionData[DMAPI5_REVISION_INFORMATION_TIMESTAMP] revision.origin_commit = revisionData[DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA] else TGS_ERROR_LOG("Failed to decode [DMAPI5_RUNTIME_INFORMATION_REVISION] from runtime information!") @@ -66,18 +61,15 @@ if(revInfo) tm.commit = revisionData[DMAPI5_REVISION_INFORMATION_COMMIT_SHA] tm.origin_commit = revisionData[DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA] - tm.timestamp = entry[DMAPI5_REVISION_INFORMATION_TIMESTAMP] else TGS_WARNING_LOG("Failed to decode [DMAPI5_TEST_MERGE_REVISION] from test merge #[tm.number]!") - if(!tm.timestamp) - tm.timestamp = entry[DMAPI5_TEST_MERGE_TIME_MERGED] - + tm.time_merged = text2num(entry[DMAPI5_TEST_MERGE_TIME_MERGED]) tm.title = entry[DMAPI5_TEST_MERGE_TITLE_AT_MERGE] tm.body = entry[DMAPI5_TEST_MERGE_BODY_AT_MERGE] tm.url = entry[DMAPI5_TEST_MERGE_URL] tm.author = entry[DMAPI5_TEST_MERGE_AUTHOR] - tm.head_commit = entry[DMAPI5_TEST_MERGE_PULL_REQUEST_REVISION] + tm.pull_request_commit = entry[DMAPI5_TEST_MERGE_PULL_REQUEST_REVISION] tm.comment = entry[DMAPI5_TEST_MERGE_COMMENT] test_merges += tm @@ -87,7 +79,6 @@ chat_channels = list() DecodeChannels(runtime_information) - initialized = TRUE return TRUE /datum/tgs_api/v5/proc/RequireInitialBridgeResponse() @@ -97,6 +88,15 @@ /datum/tgs_api/v5/OnInitializationComplete() Bridge(DMAPI5_BRIDGE_COMMAND_PRIME) + var/tgs4_secret_sleep_offline_sauce = 29051994 + var/old_sleep_offline = world.sleep_offline + world.sleep_offline = tgs4_secret_sleep_offline_sauce + sleep(1) + if(world.sleep_offline == tgs4_secret_sleep_offline_sauce) //if not someone changed it + world.sleep_offline = old_sleep_offline + else + TGS_WARNING_LOG("world.sleep_offline unexpectedly changed!") + /datum/tgs_api/v5/proc/TopicResponse(error_message = null) var/list/response = list() response[DMAPI5_RESPONSE_ERROR_MESSAGE] = error_message @@ -107,16 +107,12 @@ var/list/params = params2list(T) var/json = params[DMAPI5_TOPIC_DATA] if(!json) - return FALSE // continue to /world/Topic + return FALSE //continue world/Topic var/list/topic_parameters = json_decode(json) if(!topic_parameters) return TopicResponse("Invalid topic parameters json!"); - if(!initialized) - TGS_WARNING_LOG("Missed topic due to not being initialized: [T]") - return TRUE // too early to handle, but it's still our responsibility - var/their_sCK = topic_parameters[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] if(their_sCK != access_identifier) return TopicResponse("Failed to decode [DMAPI5_PARAMETER_ACCESS_IDENTIFIER] from: [json]!"); @@ -288,7 +284,7 @@ /datum/tgs_api/v5/TestMerges() RequireInitialBridgeResponse() - return test_merges.Copy() + return test_merges /datum/tgs_api/v5/EndProcess() Bridge(DMAPI5_BRIDGE_COMMAND_KILL) @@ -333,7 +329,7 @@ /datum/tgs_api/v5/ChatChannelInfo() RequireInitialBridgeResponse() - return chat_channels.Copy() + return chat_channels /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] diff --git a/code/modules/tgs/v5/interop_version.dm b/code/modules/tgs/v5/interop_version.dm deleted file mode 100644 index c7bf62ecae3..00000000000 --- a/code/modules/tgs/v5/interop_version.dm +++ /dev/null @@ -1 +0,0 @@ -"5.3.0" diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm deleted file mode 100644 index 5885a60e75c..00000000000 --- a/code/modules/tgs/v5/undefs.dm +++ /dev/null @@ -1,99 +0,0 @@ -#undef DMAPI5_PARAM_SERVER_PORT -#undef DMAPI5_PARAM_ACCESS_IDENTIFIER - -#undef DMAPI5_BRIDGE_DATA -#undef DMAPI5_TOPIC_DATA - -#undef DMAPI5_BRIDGE_COMMAND_PORT_UPDATE -#undef DMAPI5_BRIDGE_COMMAND_STARTUP -#undef DMAPI5_BRIDGE_COMMAND_PRIME -#undef DMAPI5_BRIDGE_COMMAND_REBOOT -#undef DMAPI5_BRIDGE_COMMAND_KILL -#undef DMAPI5_BRIDGE_COMMAND_CHAT_SEND - -#undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER -#undef DMAPI5_PARAMETER_CUSTOM_COMMANDS - -#undef DMAPI5_RESPONSE_ERROR_MESSAGE - -#undef DMAPI5_BRIDGE_PARAMETER_COMMAND_TYPE -#undef DMAPI5_BRIDGE_PARAMETER_CURRENT_PORT -#undef DMAPI5_BRIDGE_PARAMETER_VERSION -#undef DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE -#undef DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL - -#undef DMAPI5_BRIDGE_RESPONSE_NEW_PORT -#undef DMAPI5_BRIDGE_RESPONSE_RUNTIME_INFORMATION - -#undef DMAPI5_CHAT_MESSAGE_TEXT -#undef DMAPI5_CHAT_MESSAGE_CHANNEL_IDS - -#undef DMAPI5_RUNTIME_INFORMATION_ACCESS_IDENTIFIER -#undef DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION -#undef DMAPI5_RUNTIME_INFORMATION_SERVER_PORT -#undef DMAPI5_RUNTIME_INFORMATION_API_VALIDATE_ONLY -#undef DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME -#undef DMAPI5_RUNTIME_INFORMATION_REVISION -#undef DMAPI5_RUNTIME_INFORMATION_TEST_MERGES -#undef DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL - -#undef DMAPI5_CHAT_UPDATE_CHANNELS - -#undef DMAPI5_TEST_MERGE_TIME_MERGED -#undef DMAPI5_TEST_MERGE_REVISION -#undef DMAPI5_TEST_MERGE_TITLE_AT_MERGE -#undef DMAPI5_TEST_MERGE_BODY_AT_MERGE -#undef DMAPI5_TEST_MERGE_URL -#undef DMAPI5_TEST_MERGE_AUTHOR -#undef DMAPI5_TEST_MERGE_NUMBER -#undef DMAPI5_TEST_MERGE_PULL_REQUEST_REVISION -#undef DMAPI5_TEST_MERGE_COMMENT - -#undef DMAPI5_CHAT_COMMAND_NAME -#undef DMAPI5_CHAT_COMMAND_PARAMS -#undef DMAPI5_CHAT_COMMAND_USER - -#undef DMAPI5_EVENT_NOTIFICATION_TYPE -#undef DMAPI5_EVENT_NOTIFICATION_PARAMETERS - -#undef DMAPI5_TOPIC_COMMAND_CHAT_COMMAND -#undef DMAPI5_TOPIC_COMMAND_EVENT_NOTIFICATION -#undef DMAPI5_TOPIC_COMMAND_CHANGE_PORT -#undef DMAPI5_TOPIC_COMMAND_CHANGE_REBOOT_STATE -#undef DMAPI5_TOPIC_COMMAND_INSTANCE_RENAMED -#undef DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE -#undef DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE -#undef DMAPI5_TOPIC_COMMAND_HEARTBEAT -#undef DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH - -#undef DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE -#undef DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND -#undef DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION -#undef DMAPI5_TOPIC_PARAMETER_NEW_PORT -#undef DMAPI5_TOPIC_PARAMETER_NEW_REBOOT_STATE -#undef DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME -#undef DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE -#undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION - -#undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE -#undef DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES - -#undef DMAPI5_REVISION_INFORMATION_COMMIT_SHA -#undef DMAPI5_REVISION_INFORMATION_TIMESTAMP -#undef DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA - -#undef DMAPI5_CHAT_USER_ID -#undef DMAPI5_CHAT_USER_FRIENDLY_NAME -#undef DMAPI5_CHAT_USER_MENTION -#undef DMAPI5_CHAT_USER_CHANNEL - -#undef DMAPI5_CHAT_CHANNEL_ID -#undef DMAPI5_CHAT_CHANNEL_FRIENDLY_NAME -#undef DMAPI5_CHAT_CHANNEL_CONNECTION_NAME -#undef DMAPI5_CHAT_CHANNEL_IS_ADMIN_CHANNEL -#undef DMAPI5_CHAT_CHANNEL_IS_PRIVATE_CHANNEL -#undef DMAPI5_CHAT_CHANNEL_TAG - -#undef DMAPI5_CUSTOM_CHAT_COMMAND_NAME -#undef DMAPI5_CUSTOM_CHAT_COMMAND_HELP_TEXT -#undef DMAPI5_CUSTOM_CHAT_COMMAND_ADMIN_ONLY