| 1: | <?php declare(strict_types=1); |
| 2: | |
| 3: | |
| 4: | |
| 5: | |
| 6: | |
| 7: | |
| 8: | |
| 9: | |
| 10: | |
| 11: | |
| 12: | |
| 13: | namespace Clansuite\ServerQuery; |
| 14: | |
| 15: | use function array_keys; |
| 16: | use Clansuite\ServerQuery\ServerProtocols\AgeOfTime; |
| 17: | use Clansuite\ServerQuery\ServerProtocols\ArkSurvivalEvolved; |
| 18: | use Clansuite\ServerQuery\ServerProtocols\Arma; |
| 19: | use Clansuite\ServerQuery\ServerProtocols\Arma3; |
| 20: | use Clansuite\ServerQuery\ServerProtocols\ArmaReforger; |
| 21: | use Clansuite\ServerQuery\ServerProtocols\Battlefield4; |
| 22: | use Clansuite\ServerQuery\ServerProtocols\Bc2; |
| 23: | use Clansuite\ServerQuery\ServerProtocols\Bf1942; |
| 24: | use Clansuite\ServerQuery\ServerProtocols\Bf2; |
| 25: | use Clansuite\ServerQuery\ServerProtocols\Bf3; |
| 26: | use Clansuite\ServerQuery\ServerProtocols\Blackops; |
| 27: | use Clansuite\ServerQuery\ServerProtocols\Blackopsmac; |
| 28: | use Clansuite\ServerQuery\ServerProtocols\Blockland; |
| 29: | use Clansuite\ServerQuery\ServerProtocols\Brink; |
| 30: | use Clansuite\ServerQuery\ServerProtocols\Bt; |
| 31: | use Clansuite\ServerQuery\ServerProtocols\Cod4; |
| 32: | use Clansuite\ServerQuery\ServerProtocols\Conan; |
| 33: | use Clansuite\ServerQuery\ServerProtocols\CounterStrike16; |
| 34: | use Clansuite\ServerQuery\ServerProtocols\CounterStrikeSource; |
| 35: | use Clansuite\ServerQuery\ServerProtocols\Cs2; |
| 36: | use Clansuite\ServerQuery\ServerProtocols\Csgo; |
| 37: | use Clansuite\ServerQuery\ServerProtocols\Cube; |
| 38: | use Clansuite\ServerQuery\ServerProtocols\DayOfDefeatSource; |
| 39: | use Clansuite\ServerQuery\ServerProtocols\Dayz; |
| 40: | use Clansuite\ServerQuery\ServerProtocols\Dayzmod; |
| 41: | use Clansuite\ServerQuery\ServerProtocols\Ddnet; |
| 42: | use Clansuite\ServerQuery\ServerProtocols\Deadside; |
| 43: | use Clansuite\ServerQuery\ServerProtocols\DontStarveTogether; |
| 44: | use Clansuite\ServerQuery\ServerProtocols\Doom3; |
| 45: | use Clansuite\ServerQuery\ServerProtocols\Eco; |
| 46: | use Clansuite\ServerQuery\ServerProtocols\Et; |
| 47: | use Clansuite\ServerQuery\ServerProtocols\Etqw; |
| 48: | use Clansuite\ServerQuery\ServerProtocols\Factorio; |
| 49: | use Clansuite\ServerQuery\ServerProtocols\FarmingSimulator; |
| 50: | use Clansuite\ServerQuery\ServerProtocols\Fear; |
| 51: | use Clansuite\ServerQuery\ServerProtocols\Ffow; |
| 52: | use Clansuite\ServerQuery\ServerProtocols\Gamespy2; |
| 53: | use Clansuite\ServerQuery\ServerProtocols\Gmod; |
| 54: | use Clansuite\ServerQuery\ServerProtocols\GtaMta; |
| 55: | use Clansuite\ServerQuery\ServerProtocols\Halflife; |
| 56: | use Clansuite\ServerQuery\ServerProtocols\Halflife2; |
| 57: | use Clansuite\ServerQuery\ServerProtocols\Halo; |
| 58: | use Clansuite\ServerQuery\ServerProtocols\Hl2zp; |
| 59: | use Clansuite\ServerQuery\ServerProtocols\Homefront; |
| 60: | use Clansuite\ServerQuery\ServerProtocols\Ins; |
| 61: | use Clansuite\ServerQuery\ServerProtocols\Jc2; |
| 62: | use Clansuite\ServerQuery\ServerProtocols\Kf2; |
| 63: | use Clansuite\ServerQuery\ServerProtocols\KillingFloor; |
| 64: | use Clansuite\ServerQuery\ServerProtocols\L4d; |
| 65: | use Clansuite\ServerQuery\ServerProtocols\L4d2; |
| 66: | use Clansuite\ServerQuery\ServerProtocols\Lifyo; |
| 67: | use Clansuite\ServerQuery\ServerProtocols\Minecraft; |
| 68: | use Clansuite\ServerQuery\ServerProtocols\Minecraftpe; |
| 69: | use Clansuite\ServerQuery\ServerProtocols\Miscreated; |
| 70: | use Clansuite\ServerQuery\ServerProtocols\Moh; |
| 71: | use Clansuite\ServerQuery\ServerProtocols\Mohw; |
| 72: | use Clansuite\ServerQuery\ServerProtocols\Ns2; |
| 73: | use Clansuite\ServerQuery\ServerProtocols\Pixark; |
| 74: | use Clansuite\ServerQuery\ServerProtocols\Quake; |
| 75: | use Clansuite\ServerQuery\ServerProtocols\Quake2; |
| 76: | use Clansuite\ServerQuery\ServerProtocols\Quake3Arena; |
| 77: | use Clansuite\ServerQuery\ServerProtocols\Quake4; |
| 78: | use Clansuite\ServerQuery\ServerProtocols\QuakeLive; |
| 79: | use Clansuite\ServerQuery\ServerProtocols\Ravaged; |
| 80: | use Clansuite\ServerQuery\ServerProtocols\Ro2; |
| 81: | use Clansuite\ServerQuery\ServerProtocols\Ror; |
| 82: | use Clansuite\ServerQuery\ServerProtocols\Rordh; |
| 83: | use Clansuite\ServerQuery\ServerProtocols\Rust; |
| 84: | use Clansuite\ServerQuery\ServerProtocols\Samp; |
| 85: | use Clansuite\ServerQuery\ServerProtocols\ScpSecretLaboratory; |
| 86: | use Clansuite\ServerQuery\ServerProtocols\Scum; |
| 87: | use Clansuite\ServerQuery\ServerProtocols\Skulltag; |
| 88: | use Clansuite\ServerQuery\ServerProtocols\SniperElite2; |
| 89: | use Clansuite\ServerQuery\ServerProtocols\Squad; |
| 90: | use Clansuite\ServerQuery\ServerProtocols\Starbound; |
| 91: | use Clansuite\ServerQuery\ServerProtocols\StarWarsJK; |
| 92: | use Clansuite\ServerQuery\ServerProtocols\Steam; |
| 93: | use Clansuite\ServerQuery\ServerProtocols\Swat4; |
| 94: | use Clansuite\ServerQuery\ServerProtocols\Swbf2; |
| 95: | use Clansuite\ServerQuery\ServerProtocols\Teamspeak3; |
| 96: | use Clansuite\ServerQuery\ServerProtocols\Terraria; |
| 97: | use Clansuite\ServerQuery\ServerProtocols\Tf2; |
| 98: | use Clansuite\ServerQuery\ServerProtocols\Tibia; |
| 99: | use Clansuite\ServerQuery\ServerProtocols\Tribes2; |
| 100: | use Clansuite\ServerQuery\ServerProtocols\Unreal2; |
| 101: | use Clansuite\ServerQuery\ServerProtocols\UrbanTerror; |
| 102: | use Clansuite\ServerQuery\ServerProtocols\Ut; |
| 103: | use Clansuite\ServerQuery\ServerProtocols\Warhead; |
| 104: | use Clansuite\ServerQuery\ServerProtocols\Wolf; |
| 105: | use Clansuite\ServerQuery\ServerProtocols\Zandronum; |
| 106: | |
| 107: | |
| 108: | |
| 109: | |
| 110: | |
| 111: | |
| 112: | class ServerProtocols |
| 113: | { |
| 114: | |
| 115: | |
| 116: | |
| 117: | |
| 118: | |
| 119: | public static function getProtocolsMap(): array |
| 120: | { |
| 121: | return [ |
| 122: | 'Steam' => Steam::class, |
| 123: | 'Halflife' => Halflife::class, |
| 124: | 'Halflife2' => Halflife2::class, |
| 125: | 'Halo' => Halo::class, |
| 126: | 'Homefront' => Homefront::class, |
| 127: | |
| 128: | 'Hl2zp' => Hl2zp::class, |
| 129: | 'hl2zp' => Hl2zp::class, |
| 130: | |
| 131: | 'Ins' => Ins::class, |
| 132: | 'ins' => Ins::class, |
| 133: | |
| 134: | 'Jc2' => Jc2::class, |
| 135: | |
| 136: | 'Doom3' => Doom3::class, |
| 137: | 'Etqw' => Etqw::class, |
| 138: | 'Fear' => Fear::class, |
| 139: | 'Ffow' => Ffow::class, |
| 140: | |
| 141: | 'Quake' => Quake::class, |
| 142: | 'Quake2' => Quake2::class, |
| 143: | 'Quake3a' => Quake3Arena::class, |
| 144: | 'Quake4' => Quake4::class, |
| 145: | |
| 146: | 'ut2k4' => Unreal2::class, |
| 147: | |
| 148: | 'Cs16' => CounterStrike16::class, |
| 149: | 'CounterStrike16' => CounterStrike16::class, |
| 150: | 'CounterStrikeSource' => CounterStrikeSource::class, |
| 151: | |
| 152: | 'Bf4' => Battlefield4::class, |
| 153: | |
| 154: | 'bfhl' => Battlefield4::class, |
| 155: | |
| 156: | 'Bf1942' => Bf1942::class, |
| 157: | |
| 158: | 'bfv' => Bf1942::class, |
| 159: | |
| 160: | 'Bf2' => Bf2::class, |
| 161: | |
| 162: | 'Bf3' => Bf3::class, |
| 163: | 'ArkSurvivalEvolved' => ArkSurvivalEvolved::class, |
| 164: | |
| 165: | 'Arkse' => ArkSurvivalEvolved::class, |
| 166: | |
| 167: | 'Pixark' => Pixark::class, |
| 168: | 'pixark' => Pixark::class, |
| 169: | |
| 170: | 'Csgo' => Csgo::class, |
| 171: | |
| 172: | 'CounterStrike2' => Cs2::class, |
| 173: | 'counterstrike2' => Cs2::class, |
| 174: | 'cs2' => Cs2::class, |
| 175: | 'Arma3' => Arma3::class, |
| 176: | 'ArmaReforger' => ArmaReforger::class, |
| 177: | |
| 178: | 'Czero' => CounterStrike16::class, |
| 179: | |
| 180: | 'czero' => CounterStrike16::class, |
| 181: | 'Rust' => Rust::class, |
| 182: | 'Gmod' => Gmod::class, |
| 183: | |
| 184: | 'Tf2' => Tf2::class, |
| 185: | |
| 186: | 'L4d2' => L4d2::class, |
| 187: | 'L4d' => L4d::class, |
| 188: | |
| 189: | 'Kf2' => Kf2::class, |
| 190: | 'Dayz' => Dayz::class, |
| 191: | |
| 192: | 'Cod' => Quake3Arena::class, |
| 193: | 'cod' => Quake3Arena::class, |
| 194: | |
| 195: | 'Cod2' => Quake3Arena::class, |
| 196: | 'cod2' => Quake3Arena::class, |
| 197: | |
| 198: | 'Cod4' => Cod4::class, |
| 199: | |
| 200: | 'blackops' => Blackops::class, |
| 201: | |
| 202: | 'codww' => Quake3Arena::class, |
| 203: | |
| 204: | 'uo' => Quake3Arena::class, |
| 205: | |
| 206: | 'mohaa' => Quake3Arena::class, |
| 207: | |
| 208: | 'sh' => Quake3Arena::class, |
| 209: | |
| 210: | 'Bc2' => Bc2::class, |
| 211: | |
| 212: | 'Cube' => Cube::class, |
| 213: | 'cube' => Cube::class, |
| 214: | 'Cube1' => Cube::class, |
| 215: | |
| 216: | 'AssaultCube' => Cube::class, |
| 217: | |
| 218: | 'Sauerbraten' => Cube::class, |
| 219: | |
| 220: | 'BloodFrontier' => Cube::class, |
| 221: | 'Minecraft' => Minecraft::class, |
| 222: | 'DayOfDefeatSource' => DayOfDefeatSource::class, |
| 223: | |
| 224: | 'dods' => DayOfDefeatSource::class, |
| 225: | |
| 226: | '7daystodie' => Steam::class, |
| 227: | |
| 228: | 'Alienswarm' => Steam::class, |
| 229: | 'alienswarm' => Steam::class, |
| 230: | |
| 231: | 'Tfc' => Steam::class, |
| 232: | 'tfc' => Steam::class, |
| 233: | |
| 234: | 'Dod' => Steam::class, |
| 235: | 'dod' => Steam::class, |
| 236: | |
| 237: | 'InsSandstorm' => Steam::class, |
| 238: | 'ins_sandstorm' => Steam::class, |
| 239: | |
| 240: | 'Contagion' => Steam::class, |
| 241: | 'contagion' => Steam::class, |
| 242: | |
| 243: | 'Aa3' => Steam::class, |
| 244: | 'aa3' => Steam::class, |
| 245: | |
| 246: | 'aa' => Gamespy2::class, |
| 247: | |
| 248: | 'Arma2' => Steam::class, |
| 249: | 'arma2' => Steam::class, |
| 250: | |
| 251: | 'Battalion1944' => Steam::class, |
| 252: | 'battalion1944' => Steam::class, |
| 253: | |
| 254: | 'FortressForever' => Steam::class, |
| 255: | 'ff' => Steam::class, |
| 256: | |
| 257: | 'Insurgency2014' => Steam::class, |
| 258: | 'insurgency2014' => Steam::class, |
| 259: | |
| 260: | 'NaturalSelection' => Steam::class, |
| 261: | 'hlns' => Steam::class, |
| 262: | |
| 263: | 'MondayNightCombat' => Steam::class, |
| 264: | 'mnc' => Steam::class, |
| 265: | |
| 266: | 'Hurtworld' => Steam::class, |
| 267: | 'hurtworld' => Steam::class, |
| 268: | |
| 269: | 'SpaceEngineers' => Steam::class, |
| 270: | 'spaceengi' => Steam::class, |
| 271: | |
| 272: | 'Dota2' => Steam::class, |
| 273: | 'dota2' => Steam::class, |
| 274: | |
| 275: | 'Avorion' => Steam::class, |
| 276: | 'avorion' => Steam::class, |
| 277: | |
| 278: | 'BlackMesa' => Steam::class, |
| 279: | 'blackmesa' => Steam::class, |
| 280: | |
| 281: | 'BladeSymphony' => Steam::class, |
| 282: | 'bladesymphony' => Steam::class, |
| 283: | |
| 284: | 'BaseDefense' => Steam::class, |
| 285: | 'basedefense' => Steam::class, |
| 286: | |
| 287: | 'ActionHalfLife' => Steam::class, |
| 288: | 'ahl' => Steam::class, |
| 289: | |
| 290: | 'AgeOfChivalry' => Steam::class, |
| 291: | 'aoc' => Steam::class, |
| 292: | |
| 293: | 'AvP2010' => Steam::class, |
| 294: | 'avp2010' => Steam::class, |
| 295: | |
| 296: | 'TheShip' => Steam::class, |
| 297: | 'theship' => Steam::class, |
| 298: | |
| 299: | 'TowerUnite' => Steam::class, |
| 300: | 'towerunite' => Steam::class, |
| 301: | |
| 302: | 'BallisticOverkill' => Steam::class, |
| 303: | 'ballisticoverkill' => Steam::class, |
| 304: | |
| 305: | 'Barotrauma' => Steam::class, |
| 306: | 'barotrauma' => Steam::class, |
| 307: | |
| 308: | 'AbioticFactor' => Steam::class, |
| 309: | 'abioticfactor' => Steam::class, |
| 310: | |
| 311: | 'Atlas' => Steam::class, |
| 312: | 'atlas' => Steam::class, |
| 313: | |
| 314: | 'BrainBread' => Steam::class, |
| 315: | 'brainbread' => Steam::class, |
| 316: | |
| 317: | 'BrainBread2' => Steam::class, |
| 318: | 'brainbread2' => Steam::class, |
| 319: | |
| 320: | 'Breach' => Steam::class, |
| 321: | 'breach' => Steam::class, |
| 322: | |
| 323: | 'Chivalry' => Steam::class, |
| 324: | 'cmw' => Steam::class, |
| 325: | |
| 326: | 'ColonySurvival' => Steam::class, |
| 327: | 'colonysurvival' => Steam::class, |
| 328: | |
| 329: | 'CoreKeeper' => Steam::class, |
| 330: | 'corekeeper' => Steam::class, |
| 331: | |
| 332: | 'Creativerse' => Steam::class, |
| 333: | 'creativverse' => Steam::class, |
| 334: | |
| 335: | 'TheForest' => Steam::class, |
| 336: | |
| 337: | 'theforest' => Steam::class, |
| 338: | 'Unturned' => Steam::class, |
| 339: | 'unturned' => Steam::class, |
| 340: | 'Valheim' => Steam::class, |
| 341: | 'valheim' => Steam::class, |
| 342: | 'VRising' => Steam::class, |
| 343: | 'vrising' => Steam::class, |
| 344: | 'ZombiePanicSource' => Steam::class, |
| 345: | 'zps' => Steam::class, |
| 346: | 'Scum' => Scum::class, |
| 347: | 'scum' => Scum::class, |
| 348: | 'Terraria' => Terraria::class, |
| 349: | 'terraria' => Terraria::class, |
| 350: | |
| 351: | 'Tibia' => Tibia::class, |
| 352: | 'tibia' => Tibia::class, |
| 353: | |
| 354: | 'Skulltag' => Skulltag::class, |
| 355: | 'skulltag' => Skulltag::class, |
| 356: | |
| 357: | 'mta' => GtaMta::class, |
| 358: | |
| 359: | 'Zandronum' => Zandronum::class, |
| 360: | 'zandronum' => Zandronum::class, |
| 361: | |
| 362: | 'Ddnet' => Ddnet::class, |
| 363: | 'ddnet' => Ddnet::class, |
| 364: | |
| 365: | 'Eco' => Eco::class, |
| 366: | 'eco' => Eco::class, |
| 367: | |
| 368: | 'Factorio' => Factorio::class, |
| 369: | 'factorio' => Factorio::class, |
| 370: | |
| 371: | 'FarmingSimulator' => FarmingSimulator::class, |
| 372: | 'farmingsimulator' => FarmingSimulator::class, |
| 373: | |
| 374: | 'Citadel' => Steam::class, |
| 375: | 'citadel' => Steam::class, |
| 376: | |
| 377: | 'Conan' => Conan::class, |
| 378: | 'conan' => Conan::class, |
| 379: | |
| 380: | 'conanexiles' => Steam::class, |
| 381: | |
| 382: | 'Miscreated' => Miscreated::class, |
| 383: | 'miscreated' => Miscreated::class, |
| 384: | |
| 385: | 'Zomboid' => Steam::class, |
| 386: | 'zomboid' => Steam::class, |
| 387: | |
| 388: | 'Wurm' => Steam::class, |
| 389: | 'wurm' => Steam::class, |
| 390: | 'source' => Steam::class, |
| 391: | 'quake3' => Quake3Arena::class, |
| 392: | 'doom3' => Doom3::class, |
| 393: | 'etqw' => Etqw::class, |
| 394: | 'fear' => Fear::class, |
| 395: | 'ffow' => Ffow::class, |
| 396: | 'halo' => Homefront::class, |
| 397: | 'homefront' => Homefront::class, |
| 398: | 'bf1942' => Bf1942::class, |
| 399: | 'bf2' => Bf2::class, |
| 400: | 'bf3' => Bf3::class, |
| 401: | 'bc2' => Bc2::class, |
| 402: | 'brink' => Brink::class, |
| 403: | 'minecraft' => Minecraft::class, |
| 404: | 'minecraftpe' => Minecraftpe::class, |
| 405: | 'dayz' => Dayz::class, |
| 406: | 'dayzmod' => Dayzmod::class, |
| 407: | 'l4d' => L4d::class, |
| 408: | 'lifyo' => Lifyo::class, |
| 409: | 'jc2' => Jc2::class, |
| 410: | 'killingfloor' => KillingFloor::class, |
| 411: | 'mw3' => Steam::class, |
| 412: | 'bt' => Bt::class, |
| 413: | 'cod4' => Cod4::class, |
| 414: | 'blackopsmac' => Blackopsmac::class, |
| 415: | 'moh' => Moh::class, |
| 416: | 'mohw' => Mohw::class, |
| 417: | 'unreal2' => Unreal2::class, |
| 418: | 'arma' => Arma::class, |
| 419: | 'starbound' => Starbound::class, |
| 420: | 'swat4' => Swat4::class, |
| 421: | 'ut' => Ut::class, |
| 422: | 'teamspeak3' => Teamspeak3::class, |
| 423: | 'et' => Et::class, |
| 424: | 'urbanterror' => UrbanTerror::class, |
| 425: | 'ql' => QuakeLive::class, |
| 426: | 'wolf' => Wolf::class, |
| 427: | 'StarWarsJK' => StarWarsJK::class, |
| 428: | 'ravaged' => Ravaged::class, |
| 429: | 'ro2' => Ro2::class, |
| 430: | 'ror' => Ror::class, |
| 431: | 'rordh' => Rordh::class, |
| 432: | 'sniperelite2' => SniperElite2::class, |
| 433: | 'armareforger' => ArmaReforger::class, |
| 434: | 'deadside' => Deadside::class, |
| 435: | 'dontstarvetogether' => DontStarveTogether::class, |
| 436: | 'samp' => Samp::class, |
| 437: | 'scpsecretlaboratory' => ScpSecretLaboratory::class, |
| 438: | 'ns2' => Ns2::class, |
| 439: | 'warhead' => Warhead::class, |
| 440: | 'swbf2' => Swbf2::class, |
| 441: | 'swjk' => StarWarsJK::class, |
| 442: | 'tribes2' => Tribes2::class, |
| 443: | 'ageoftime' => AgeOfTime::class, |
| 444: | 'blockland' => Blockland::class, |
| 445: | 'squad' => Squad::class, |
| 446: | ]; |
| 447: | } |
| 448: | |
| 449: | |
| 450: | |
| 451: | |
| 452: | |
| 453: | |
| 454: | public static function getSupportedProtocols(): array |
| 455: | { |
| 456: | $protocolMap = self::getProtocolsMap(); |
| 457: | |
| 458: | return array_keys($protocolMap); |
| 459: | } |
| 460: | |
| 461: | |
| 462: | |
| 463: | |
| 464: | |
| 465: | |
| 466: | |
| 467: | |
| 468: | public static function getProtocolClass(string $protocolClassname): mixed |
| 469: | { |
| 470: | $protocolMap = self::getProtocolsMap(); |
| 471: | |
| 472: | return $className = $protocolMap[$protocolClassname] ?? $protocolClassname; |
| 473: | } |
| 474: | } |
| 475: | |