1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Replace rc_static_data with general CDN implementation

This commit is contained in:
NG (Graham)
2025-05-24 13:42:53 -04:00
parent 4f0bcde7d8
commit e7de53929d
16 changed files with 553 additions and 141 deletions

443
Cargo.lock generated
View File

@@ -2,6 +2,212 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 4 version = 4
[[package]]
name = "actix-codec"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
dependencies = [
"bitflags 2.8.0",
"bytes",
"futures-core",
"futures-sink",
"memchr",
"pin-project-lite",
"tokio",
"tokio-util",
"tracing",
]
[[package]]
name = "actix-files"
version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0773d59061dedb49a8aed04c67291b9d8cf2fe0b60130a381aab53c6dd86e9be"
dependencies = [
"actix-http",
"actix-service",
"actix-utils",
"actix-web",
"bitflags 2.8.0",
"bytes",
"derive_more 0.99.20",
"futures-core",
"http-range",
"log",
"mime",
"mime_guess",
"percent-encoding",
"pin-project-lite",
"v_htmlescape",
]
[[package]]
name = "actix-http"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2"
dependencies = [
"actix-codec",
"actix-rt",
"actix-service",
"actix-utils",
"base64 0.22.1",
"bitflags 2.8.0",
"brotli",
"bytes",
"bytestring",
"derive_more 2.0.1",
"encoding_rs",
"flate2",
"foldhash",
"futures-core",
"h2",
"http 0.2.12",
"httparse",
"httpdate",
"itoa",
"language-tags",
"local-channel",
"mime",
"percent-encoding",
"pin-project-lite",
"rand 0.9.0",
"sha1",
"smallvec",
"tokio",
"tokio-util",
"tracing",
"zstd",
]
[[package]]
name = "actix-macros"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
dependencies = [
"quote",
"syn 2.0.96",
]
[[package]]
name = "actix-router"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8"
dependencies = [
"bytestring",
"cfg-if",
"http 0.2.12",
"regex",
"regex-lite",
"serde",
"tracing",
]
[[package]]
name = "actix-rt"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208"
dependencies = [
"futures-core",
"tokio",
]
[[package]]
name = "actix-server"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6398974fd4284f4768af07965701efbbb5fdc0616bff20cade1bb14b77675e24"
dependencies = [
"actix-rt",
"actix-service",
"actix-utils",
"futures-core",
"futures-util",
"mio 1.0.3",
"socket2",
"tokio",
"tracing",
]
[[package]]
name = "actix-service"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f"
dependencies = [
"futures-core",
"pin-project-lite",
]
[[package]]
name = "actix-utils"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8"
dependencies = [
"local-waker",
"pin-project-lite",
]
[[package]]
name = "actix-web"
version = "4.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2e3b15b3dc6c6ed996e4032389e9849d4ab002b1e92fbfe85b5f307d1479b4d"
dependencies = [
"actix-codec",
"actix-http",
"actix-macros",
"actix-router",
"actix-rt",
"actix-server",
"actix-service",
"actix-utils",
"actix-web-codegen",
"bytes",
"bytestring",
"cfg-if",
"cookie 0.16.2",
"derive_more 2.0.1",
"encoding_rs",
"foldhash",
"futures-core",
"futures-util",
"impl-more",
"itoa",
"language-tags",
"log",
"mime",
"once_cell",
"pin-project-lite",
"regex",
"regex-lite",
"serde",
"serde_json",
"serde_urlencoded",
"smallvec",
"socket2",
"time",
"tracing",
"url",
]
[[package]]
name = "actix-web-codegen"
version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8"
dependencies = [
"actix-router",
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]] [[package]]
name = "addr2line" name = "addr2line"
version = "0.24.2" version = "0.24.2"
@@ -43,6 +249,21 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
[[package]]
name = "alloc-no-stdlib"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
[[package]]
name = "alloc-stdlib"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
dependencies = [
"alloc-no-stdlib",
]
[[package]] [[package]]
name = "allocator-api2" name = "allocator-api2"
version = "0.2.21" version = "0.2.21"
@@ -349,6 +570,27 @@ dependencies = [
"syn 2.0.96", "syn 2.0.96",
] ]
[[package]]
name = "brotli"
version = "8.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
"brotli-decompressor",
]
[[package]]
name = "brotli-decompressor"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
]
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.16.0" version = "3.16.0"
@@ -395,15 +637,35 @@ version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
[[package]]
name = "bytestring"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f"
dependencies = [
"bytes",
]
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.10" version = "1.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229"
dependencies = [ dependencies = [
"jobserver",
"libc",
"shlex", "shlex",
] ]
[[package]]
name = "cdn"
version = "0.2.0"
dependencies = [
"actix-files",
"actix-web",
"clap",
]
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.0" version = "1.0.0"
@@ -514,6 +776,23 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]]
name = "convert_case"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "cookie"
version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
dependencies = [
"percent-encoding",
"time",
"version_check",
]
[[package]] [[package]]
name = "cookie" name = "cookie"
version = "0.18.1" version = "0.18.1"
@@ -659,6 +938,40 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "derive_more"
version = "0.99.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
dependencies = [
"convert_case",
"proc-macro2",
"quote",
"rustc_version",
"syn 2.0.96",
]
[[package]]
name = "derive_more"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
"derive_more-impl",
]
[[package]]
name = "derive_more-impl"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.96",
"unicode-xid",
]
[[package]] [[package]]
name = "devise" name = "devise"
version = "0.4.2" version = "0.4.2"
@@ -1243,6 +1556,12 @@ dependencies = [
"pin-project-lite", "pin-project-lite",
] ]
[[package]]
name = "http-range"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
[[package]] [[package]]
name = "httparse" name = "httparse"
version = "1.9.5" version = "1.9.5"
@@ -1509,6 +1828,12 @@ dependencies = [
"icu_properties", "icu_properties",
] ]
[[package]]
name = "impl-more"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2"
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.7.1" version = "2.7.1"
@@ -1595,6 +1920,15 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jobserver"
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.77" version = "0.3.77"
@@ -1640,6 +1974,12 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "language-tags"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.5.0" version = "1.5.0"
@@ -1726,6 +2066,23 @@ version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
[[package]]
name = "local-channel"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8"
dependencies = [
"futures-core",
"futures-sink",
"local-waker",
]
[[package]]
name = "local-waker"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487"
[[package]] [[package]]
name = "lock_api" name = "lock_api"
version = "0.4.12" version = "0.4.12"
@@ -1788,6 +2145,16 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "mime_guess"
version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
dependencies = [
"mime",
"unicase",
]
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.8.3" version = "0.8.3"
@@ -1822,6 +2189,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
dependencies = [ dependencies = [
"libc", "libc",
"log",
"wasi 0.11.0+wasi-snapshot-preview1", "wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
@@ -2718,17 +3086,6 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "rc_static_data"
version = "0.2.0"
dependencies = [
"clap",
"env_logger",
"libfj",
"log",
"rocket",
]
[[package]] [[package]]
name = "rdrand" name = "rdrand"
version = "0.4.0" version = "0.4.0"
@@ -2799,6 +3156,12 @@ dependencies = [
"regex-syntax 0.8.5", "regex-syntax 0.8.5",
] ]
[[package]]
name = "regex-lite"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
[[package]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.6.29" version = "0.6.29"
@@ -2981,7 +3344,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9" checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9"
dependencies = [ dependencies = [
"cookie", "cookie 0.18.1",
"either", "either",
"futures", "futures",
"http 0.2.12", "http 0.2.12",
@@ -3050,6 +3413,15 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
[[package]]
name = "rustc_version"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
"semver",
]
[[package]] [[package]]
name = "rustix" name = "rustix"
version = "0.38.44" version = "0.38.44"
@@ -3305,6 +3677,12 @@ version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
[[package]]
name = "semver"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.217" version = "1.0.217"
@@ -3954,6 +4332,7 @@ dependencies = [
"bytes", "bytes",
"libc", "libc",
"mio 1.0.3", "mio 1.0.3",
"parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2", "socket2",
@@ -4177,6 +4556,12 @@ dependencies = [
"version_check", "version_check",
] ]
[[package]]
name = "unicase"
version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
version = "0.3.18" version = "0.3.18"
@@ -4274,6 +4659,12 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "v_htmlescape"
version = "0.15.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c"
[[package]] [[package]]
name = "valuable" name = "valuable"
version = "0.1.1" version = "0.1.1"
@@ -4839,3 +5230,31 @@ dependencies = [
"quote", "quote",
"syn 2.0.96", "syn 2.0.96",
] ]
[[package]]
name = "zstd"
version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "7.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
dependencies = [
"zstd-sys",
]
[[package]]
name = "zstd-sys"
version = "2.0.15+zstd.1.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
dependencies = [
"cc",
"pkg-config",
]

View File

@@ -13,10 +13,10 @@ readme = "README.md"
[workspace] [workspace]
members = [ members = [
"auth", "auth", "cdn",
"polariton_auth", "polariton_auth",
"rc_services", "rc_services_room", "rc_services", "rc_services_room",
"rc_static_data", "rc_microtransactions", "rc_microtransactions",
"rc_social", "rc_social_room", "rc_social", "rc_social_room",
"rc_chat", "rc_chat_room", "rc_chat", "rc_chat_room",
"rc_singleplayer", "rc_singleplayer_room", "rc_singleplayer", "rc_singleplayer_room",
@@ -25,6 +25,8 @@ members = [
[workspace.dependencies] [workspace.dependencies]
rocket = { version = "0.5.1", features = [ "json" ] } rocket = { version = "0.5.1", features = [ "json" ] }
actix-web = { version = "4" }
actix-files = "0.6"
libfj = { version = "0.7.5", path = "../libfj" } libfj = { version = "0.7.5", path = "../libfj" }
log = "0.4" log = "0.4"
env_logger = "0.11" env_logger = "0.11"

View File

@@ -0,0 +1,47 @@
{
"MaintenanceMode": "false",
"MaintenanceRegex": "",
"EacEnabled": "true",
"MinimumVersion": "2855",
"PhotonSocialServer": "rc-backend.servers.robocraftgame.com:4534",
"PhotonServicesServer": "rc-backend.servers.robocraftgame.com:4532",
"PhotonChatServer": "rc-backend.servers.robocraftgame.com:4530",
"PhotonSinglePlayerServer": "rc-backend.servers.robocraftgame.com:4536",
"GameplayServerServiceAddress": "rc-backend.servers.robocraftgame.com:4538",
"PhotonLobbyServer": "rc-backend.servers.robocraftgame.com:4540",
"ErrorLogAddress": "logs.freejamgames.com:4561",
"ServerErrorLogAddress": "logs.freejamgames.com:4562",
"authUrl": "http://127.0.0.1:8001/",
"paymentUrl": "http://127.0.0.1:8011/",
"enterBattleLogGenerationTimeout": "60",
"GameServerConnectionTestTimeout": 10,
"AvatarCdnUrl": "https://rc-cdn-images.robocraftgame.com/customavatar/Live/",
"ClanAvatarCdnUrl": "https://rc-cdn-images.robocraftgame.com/clanavatar/Live/",
"FeatureThrottlerOnPercent": "100",
"EmailCaptureEnabled": "true",
"UnreliableMessages": "true",
"MessageQueueEnabled": "true",
"BrawlDataUrl": "https://rc-cdn-images.robocraftgame.com/brawldata/Live/",
"CampaignDataUrl": "https://rc-cdn-images.robocraftgame.com/campaigndata/Live/",
"LeaderboardsUrl": "https://leaderboards.robocraftgame.com",
"NetworkChannelTypes": "3113",
"MaxSentMessageQueueSize": 64,
"IsAcksLong": 1,
"NetworkDropThreshold": 80,
"PacketSize": 1200,
"MaxPacketSize": 5888,
"MaxCombinedReliableMessageCount": 20,
"MaxCombinedReliableMessageSize": 200,
"MaxDelay": 1,
"OverflowThreshold": 10,
"MinUpdateTimeout": 1,
"DevMessageRefresh": 60,
"MaintenanceRefresh": 30,
"SaveRequestOnPhoton": "false",
"UseS3System": "true",
"authMigrationUrl": "http://88.150.159.132:3000/auth-migration",
"xsollaEnabled": "true",
"MaintenanceMessage": "Robocraft is currently undergoing server maintenance. ",
"DevMessage": "NGnius says hello",
"DevMessageDisplayTime": "10"
}

View File

@@ -25,7 +25,7 @@
<setting name="SinglePlayerServerAddress__note__forwardedTo">:4539</setting> <setting name="SinglePlayerServerAddress__note__forwardedTo">:4539</setting>
<setting name="authUrl">https://live-auth.rc.ngram.ca/</setting> <setting name="authUrl">https://live-auth.rc.ngram.ca/</setting>
<setting name="S3URL">https://static.rc.ngram.ca/live/data.json</setting> <setting name="S3URL">https://static.rc.ngram.ca/live/data.json</setting>
<setting name="Payment__note__notUsedHere">https://pay.rc.ngram.ca/live/data.json</setting> <setting name="Payment__note__notUsedHere">https://pay.rc.ngram.ca/</setting>
</ngram> </ngram>
</robocraft> </robocraft>
</servers> </servers>

View File

@@ -1,15 +1,13 @@
[package] [package]
name = "rc_static_data" name = "cdn"
version.workspace = true version.workspace = true
edition.workspace = true edition.workspace = true
readme.workspace = true
license.workspace = true
repository.workspace = true repository.workspace = true
license.workspace = true
authors.workspace = true authors.workspace = true
readme.workspace = true
[dependencies] [dependencies]
rocket.workspace = true actix-web.workspace = true
libfj.workspace = true actix-files.workspace = true
log.workspace = true
env_logger.workspace = true
clap.workspace = true clap.workspace = true

View File

@@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
#cargo build
RUST_LOG=debug cargo run RUST_LOG=debug cargo run

27
cdn/src/cli.rs Normal file
View File

@@ -0,0 +1,27 @@
use clap::Parser;
#[derive(Parser, Debug, Clone)]
#[command(version, about, long_about = None)]
pub struct CliArgs {
/// TCP port on which to accept connections
#[arg(short, long, default_value_t = 8010)]
pub port: u16,
/// IP Address on which to accept connections
#[arg(long, default_value_t = {"127.0.0.1".to_string()})]
pub ip: String,
/// Assets root
#[arg(long, default_value_t = {"../assets/robocraft".to_string()})]
pub assets_robocraft: String,
/// User data root
#[arg(long, default_value_t = {"../data/robocraft".to_string()})]
pub data_robocraft: String,
}
impl CliArgs {
pub fn get() -> Self {
Self::parse()
}
}

29
cdn/src/main.rs Normal file
View File

@@ -0,0 +1,29 @@
mod cli;
mod robocraft;
use actix_web::{App, HttpServer, Responder};
#[actix_web::get("/")]
async fn index() -> impl Responder {
let name = env!("CARGO_PKG_NAME");
let version = env!("CARGO_PKG_VERSION");
let authors = env!("CARGO_PKG_AUTHORS");
let license = env!("CARGO_PKG_LICENSE");
let repo = env!("CARGO_PKG_REPOSITORY");
format!("{} {} by [{}]\n{}\n{}", name, version, authors, license, repo)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let cli_args = cli::CliArgs::get();
let cli_args2 = cli_args.clone();
HttpServer::new(move || {
App::new()
.app_data(actix_web::web::Data::new(cli_args2.clone()))
.service(index)
.service(robocraft::live_data::live_data_json)
})
.bind((cli_args.ip, cli_args.port))?
.run()
.await
}

View File

@@ -0,0 +1,7 @@
use actix_web::{get, Responder, web::Data};
#[get("/live/data.json")]
pub async fn live_data_json(cli: Data<crate::cli::CliArgs>) -> impl Responder {
let path = std::path::PathBuf::from(&cli.assets_robocraft).join("live_data.json");
actix_files::NamedFile::open_async(path).await
}

1
cdn/src/robocraft/mod.rs Normal file
View File

@@ -0,0 +1 @@
pub mod live_data;

View File

@@ -1,12 +0,0 @@
## defaults for _all_ profiles
[default]
address = "127.0.0.1"
port = 8010
## set only when compiled in debug mode, i.e, `cargo build`
[debug]
port = 8010
## set only when compiled in release mode, i.e, `cargo build --release`
[release]
address = "0.0.0.0"

View File

@@ -1,18 +0,0 @@
use clap::Parser;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct CliArgs {
/// URL of authentication web server
#[arg(long, default_value_t = {"http://127.0.0.1:8001/".to_string()})]
pub auth: String,
/// URL of microtransactions web server
#[arg(long, default_value_t = {"http://127.0.0.1:8011/".to_string()})]
pub pay: String,
}
impl CliArgs {
pub fn get() -> Self {
Self::parse()
}
}

View File

@@ -1,23 +0,0 @@
#![forbid(unsafe_code)]
mod robocraft;
mod cli;
#[rocket::get("/")]
fn index() -> String {
let name = env!("CARGO_PKG_NAME");
let version = env!("CARGO_PKG_VERSION");
let authors = env!("CARGO_PKG_AUTHORS");
let license = env!("CARGO_PKG_LICENSE");
let repo = env!("CARGO_PKG_REPOSITORY");
format!("{} {} by [{}]\n{}\n{}", name, version, authors, license, repo)
}
#[rocket::launch]
fn rocket() -> _ {
env_logger::init();
let args = cli::CliArgs::get();
rocket::build().mount("/", rocket::routes![index])
.attach(robocraft::stage())
.manage(args)
}

View File

@@ -1,58 +0,0 @@
use rocket::{get, routes, serde::json::Json, State};
#[get("/live/data.json")]
pub fn static_live_data(cli: &State<crate::cli::CliArgs>) -> Json<libfj::robocraft::StaticDataRaw> {
Json(libfj::robocraft::StaticDataRaw {
MaintenanceMode: "false".into(),
MaintenanceRegex: "".into(),
EacEnabled: "true".into(),
MinimumVersion: "2855".into(),
PhotonSocialServer: "rc-backend.servers.robocraftgame.com:4534".into(),
PhotonServicesServer: "rc-backend.servers.robocraftgame.com:4532".into(),
PhotonChatServer: "rc-backend.servers.robocraftgame.com:4530".into(),
PhotonSinglePlayerServer: "rc-backend.servers.robocraftgame.com:4536".into(),
GameplayServerServiceAddress: "rc-backend.servers.robocraftgame.com:4538".into(),
PhotonLobbyServer: "rc-backend.servers.robocraftgame.com:4540".into(),
ErrorLogAddress: "logs.freejamgames.com:4561".into(),
ServerErrorLogAddress: "logs.freejamgames.com:4562".into(),
authUrl: cli.auth.clone(), // originally "https://auth-backend.freejamgames.com/"
paymentUrl: cli.pay.clone(),
enterBattleLogGenerationTimeout: "60".into(),
GameServerConnectionTestTimeout: 10,
AvatarCdnUrl: "https://rc-cdn-images.robocraftgame.com/customavatar/Live/".into(),
ClanAvatarCdnUrl: "https://rc-cdn-images.robocraftgame.com/clanavatar/Live/".into(),
FeatureThrottlerOnPercent: "100".into(),
EmailCaptureEnabled: "true".into(),
UnreliableMessages: "true".into(),
MessageQueueEnabled: "true".into(),
BrawlDataUrl: "https://rc-cdn-images.robocraftgame.com/brawldata/Live/".into(),
CampaignDataUrl: "https://rc-cdn-images.robocraftgame.com/campaigndata/Live/".into(),
LeaderboardsUrl: "https://leaderboards.robocraftgame.com".into(),
NetworkChannelTypes: "3113".into(),
MaxSentMessageQueueSize: 64,
IsAcksLong: 1,
NetworkDropThreshold: 80,
PacketSize: 1200,
MaxPacketSize: 5888,
MaxCombinedReliableMessageCount: 20,
MaxCombinedReliableMessageSize: 200,
MaxDelay: 1,
OverflowThreshold: 10,
MinUpdateTimeout: 1,
DevMessageRefresh: 60,
MaintenanceRefresh: 30,
SaveRequestOnPhoton: "false".into(),
UseS3System: "true".into(),
authMigrationUrl: "http://88.150.159.132:3000/auth-migration".into(),
xsollaEnabled: "true".into(),
MaintenanceMessage: "Robocraft is currently undergoing server maintenance. ".into(),
DevMessage: "NGnius says hello".into(),
DevMessageDisplayTime: "10".into(),
})
}
pub fn stage() -> rocket::fairing::AdHoc {
rocket::fairing::AdHoc::on_ignite("Robocraft live data.json", |rocket| async {
rocket.mount("/", routes![static_live_data])
})
}

View File

@@ -1,7 +0,0 @@
mod live_data;
pub fn stage() -> rocket::fairing::AdHoc {
rocket::fairing::AdHoc::on_ignite("JSON", |rocket| async {
rocket.attach(live_data::stage())
})
}