From b93d52645c42a1c5fbf4d869744f562e529a54c3 Mon Sep 17 00:00:00 2001 From: Danton <43303409+khimno@users.noreply.github.com> Date: Wed, 8 Jul 2020 22:09:48 -0700 Subject: [PATCH 1/6] prototyping implementation of #1 --- log.txt | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/net.rs | 25 ++++-------------------- 2 files changed, 61 insertions(+), 21 deletions(-) diff --git a/log.txt b/log.txt index 45601c8..0f705c8 100644 --- a/log.txt +++ b/log.txt @@ -314,3 +314,60 @@ 2020-07-08 21:23:12 [INFO] - Handshake { protocol_version: MCVarInt { value: 736 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 2 } } 2020-07-08 21:23:12 [INFO] - Next state: Closed 2020-07-08 21:23:12 [INFO] - Client at 192.168.0.88:55745 closed connection +2020-07-08 21:38:26 [INFO] - Network thread started +2020-07-08 21:38:26 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 21:38:38 [INFO] - Got a client! +2020-07-08 21:38:38 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:38:38 [INFO] - Next state: Status +2020-07-08 21:38:38 [ERROR] - Error when handling client: failed to fill whole buffer +2020-07-08 21:38:38 [INFO] - Got a client! +2020-07-08 21:38:38 [INFO] - Handshake { protocol_version: MCVarInt { value: 11 }, server_address: MCString { value: "" }, server_port: MCUnsignedShort { value: 19712 }, next_state: MCVarInt { value: 67 } } +2020-07-08 21:38:38 [INFO] - Next state: Closed +2020-07-08 21:38:38 [INFO] - Client at 192.168.0.88:55778 closed connection +2020-07-08 21:39:45 [INFO] - Network thread started +2020-07-08 21:39:45 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 21:39:52 [INFO] - Got a client! +2020-07-08 21:39:52 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:39:52 [INFO] - Next state: Status +2020-07-08 21:40:01 [ERROR] - Error when handling client: Connection reset by peer (os error 54) +2020-07-08 21:40:04 [INFO] - Got a client! +2020-07-08 21:40:04 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:40:04 [INFO] - Next state: Status +2020-07-08 21:40:04 [INFO] - Ping number: MCLong { value: 1803114 } +2020-07-08 21:40:04 [INFO] - Client at 192.168.0.88:55790 closed connection +2020-07-08 21:40:16 [INFO] - Got a client! +2020-07-08 21:40:16 [INFO] - Handshake { protocol_version: MCVarInt { value: 736 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:40:16 [INFO] - Next state: Status +2020-07-08 21:40:16 [INFO] - Ping number: MCLong { value: 1815195 } +2020-07-08 21:40:16 [INFO] - Client at 192.168.0.88:55796 closed connection +2020-07-08 21:40:47 [INFO] - Network thread started +2020-07-08 21:40:47 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 21:40:59 [INFO] - Got a client! +2020-07-08 21:40:59 [INFO] - Handshake { protocol_version: MCVarInt { value: 736 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:40:59 [INFO] - Next state: Status +2020-07-08 21:41:00 [INFO] - Ping number: MCLong { value: 1858861 } +2020-07-08 21:41:00 [INFO] - Client at 192.168.0.88:55802 closed connection +2020-07-08 21:54:37 [INFO] - Network thread started +2020-07-08 21:54:37 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 21:54:45 [INFO] - Got a client! +2020-07-08 21:54:45 [INFO] - Handshake { protocol_version: MCVarInt { value: 736 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:54:45 [INFO] - Next state: Status +2020-07-08 21:54:45 [INFO] - Ping number: MCLong { value: 2684003 } +2020-07-08 21:54:45 [INFO] - Client at 192.168.0.88:55845 closed connection +2020-07-08 21:54:54 [INFO] - Got a client! +2020-07-08 21:54:54 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 21:54:54 [INFO] - Next state: Status +2020-07-08 21:54:54 [INFO] - Ping number: MCLong { value: 2693231 } +2020-07-08 21:54:54 [INFO] - Client at 192.168.0.88:55851 closed connection +2020-07-08 22:08:35 [INFO] - Network thread started +2020-07-08 22:08:35 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 22:08:42 [INFO] - Got a client! +2020-07-08 22:08:42 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:08:42 [INFO] - Next state: Status +2020-07-08 22:08:42 [INFO] - Ping number: MCLong { value: 3521389 } +2020-07-08 22:08:42 [INFO] - Client at 192.168.0.88:55885 closed connection +2020-07-08 22:08:49 [INFO] - Got a client! +2020-07-08 22:08:49 [INFO] - Handshake { protocol_version: MCVarInt { value: 736 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:08:49 [INFO] - Next state: Status +2020-07-08 22:08:49 [INFO] - Ping number: MCLong { value: 3528562 } +2020-07-08 22:08:49 [INFO] - Client at 192.168.0.88:55891 closed connection diff --git a/src/net.rs b/src/net.rs index 0e9aec3..495423f 100644 --- a/src/net.rs +++ b/src/net.rs @@ -60,27 +60,10 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { // Read the request packet. let (_request_packet_len, _request_packet_id) = read_packet_header(&mut gc.stream)?; // Send the response packet. - let response = MCString::from( - r#"{ - "version": { - "name": "Composition Alpha 1.15.2", - "protocol": 578 - }, - "players": { - "max": 420, - "online": 69, - "sample": [ - { - "name": "thinkofdeath", - "id": "4566e69f-c907-48ee-8d71-d7ba5aa00d20" - } - ] - }, - "description": { - "text": "ligma balls lol" - }, - "favicon": "data:image/png;base64,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" -}"#, + let response = MCString::from(format!( + "{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": 45000,\n\t\t\"online\": 2147483646,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"ligma balls lol\"\n\t}}, + \"favicon\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAG4CAYAAACzTBWdAAAgAElEQVR4nO3dT4hdaX7e8VNS3XOlVobxwGSycENmNEQWaqk0GuhqMeOArQKRgCRaCpQ2pULKqk0L5AFrIW1KmoXpwQSloRfXENAgOYvu1Sx6E4NnAtn0JJB2oiZxGjxlgbOQCYyFSlV1763SDc+5pZnqkurPOe/vvOd93/P9bDo45Natc5R6/J7zPr93YjQajTIAABC1fdw+AADiR6ADAJAAAh0AgAQQ6AAAJIBABwAgAQQ6AAAJINABAEgAgQ4AQAIIdAAAEkCgAwCQAAIdAIAEEOgAACSAQAcAIAEEOgAACSDQAQBIAIEOAEACCHQAABJAoAMAkAACHQCABBDoAAAkgEAHACABk5a/wu/+h4vZ0/6S02cM3uhmwwO52XcCACBEv5Mfyn79bx6afTPTFfrtt684f0ZnZZBNjEYm3wcAgFAtHL9s+s1MA/39k5eyqW9+1+kzFOYKdQAAUvW9b3wn++PfO2f625m/Q//J7/+R82d0VgfZvvUXJt8HAIDQ3Pv+NfNvZB7o//J3T2bnD//Q+XPy5VWT7wMAQEjeffOd7A++ddz8G9Wyy/0Dg1X6/uF6tn+wZvJ9AAAIRR2r86yuQP/nX/tnJhvkust9k+8DAEAItBHu24e+Vcs3qa2Hrg1yX+/+E6fPmHjxIsvZIAcASIBqatYb4TarLdAV5hYb5CZXB0WwAwAQs3unrhWhXpdaJ8XNHT1bbJJzoRobq3QAQMy0Ce7q4TO1/ga1j361eJc+2R9m+9fWTb4PAAC+LZyYrf0n1h7oWqFrpe6qs8IGOQBAfLQyr6OmtpWXw1luTc87b5BTjU0rdQAAYqF35gvH61+dZ74CXTW296cuOn9Ozpx3AEBEbhw5V1tNbStvx6eqxqZgd6Hd7p1VVukAgPApyOusqW3lLdD1yN1igpzepVNjAwCEThPh6qypbeUt0EUz3l1rbBkT5AAAgdMmOM1s98lroGdGp7Fpxjs1NgBAqOqa174T74Gu89Itamz5c05jAwCERzU1nXfu28Ro5H/b+NP+Unbs4ZXivy76hw5ka90O/5wBAEHQO/PF8z2v785f8r5CzzY2yFlMkMuX+9TYAADB0GlqTYR51lSgZ1Y1ttEo6zDnHQAQAN81ta0aC3Tpzdx0/owOp7EBAAJw//T1Rr9Eo4GuCptJjY0NcgCABqmm5mNe+04aDfTMaJWuOe/U2AAATWl6dZ6FEOjFnPeTl5w/p7vEKh0A4J/em/ua176TxgM92zgz3fU0tvGcdzbIAQD8GZ+mdjmIKx5EoCvMLSbIdTiNDQDg0b1Tfue17ySIQBdNj9MUORcK85w57wAADzQNTlPhQhFMoGdGc94n+8Ns3zo1NgBAvZqY176ToAJdFTadyOYqX2aDHACgPjpJrema2lZBBbpYnJle1NgGaybfBwCArUJbnWchBrpqbBZz3rvMeQcA1EC72kOoqW0VXKBnVnPeixrb0Ow7AQDQ9Lz2nQQZ6Kqx3Zqed/6cSea8AwAMLRyfDaamtlWQgZ5t1Nhc57wXNTZOYwMAGNAmuJBqalsFG+jZxgQ5V6qxMecdAOBq4cRs0Ncw6EDXCl0rdVedFYbNAACq08o8tJraVkEHuuhduuucd9XYtFIHAKCs8bz2sFfnWQyBXpzGNnXR+XNyamwAgApuHAnjNLXdTIxGcaTcWw/mssfPnjh9xvBgNxsczM2+EwAgbQryxQu9KH7H4FfoL1lMkNO7dGpsAIC9CnEi3HaiCXTNeHetsWUbE+QAANiNNsFpZnssogn0zOg0Ns14p8YGANhNTKvzLLZA13npGgvrKn/OaWwAgO1pvKvOO49JVIGebQybca2x6bz0zioT5AAArxrX1C5Hd2WiC3SFucUEuc7KgBobAOAVCvNQ57XvJLpAz6xOYxuNilAHAOClkE9T202UgS69mZvOn9HhNDYAwCb3T1+P9nJEG+iqsJnU2NggBwDYqKmFPq99J9EGema0Stecd2psAICYV+dZ7IGu9+gWG+S6S6zSAaDNtBEuhnntO4k60LONDXKuNTa9R8/ZIAcAraQd7bFuhNss+kBXmFtMkJtcpcYGAG1079S1KGtqW0Uf6DJ39GwxRc6FwjxnzjsAtIqmwV09fCaJXzmJQM+M5rxP9ofFFDkAQDvENq99J8kEuipsOpHNVb7MBjkAaAOdpBZzTW2rZAI92zgz3XWDnGpsWqkDANKld+Yprc6z1AJdNbb3py46f07OnHcASNqNI+eir6ltlVSgZ1Zz3l/oNDZW6QCQopjnte8kuUDXI/db0/POnzPJnHcASNLC8dkkampbJRfo2UaNzXXOe1FjY9gMACRFm+BSqaltlWSgZ4Y1Nua8A0A6UtsIt1myga5BM1qpu8o5jQ0AkqCVuQbJpGpiNEp3O/fT/lJ27OGV4r8u+ocOZGvdTtO/DgCgIr0zXzzfS/Ld+UvJrtCzjQ1yJjW25T41NgCImGpqKYd5lvoK/aW3Hsxlj589cfqM4cFuNjiYW34tAIAHqqktXuglf6mTXqG/9IHBBrnOSp8aGwBEKOWNcJu1ItA14921xiZdTmMDgKiopqaZ7W3QikCX3sxN58/YP1ijxgYAEbl/+nprbldrAr2Y837ykvPndJeosQFADDTeNbV57TtpTaDL7bevOJ/GNp7zzgQ5AAiZdrQvHL/cqnvUqkBXmCvUXXU4jQ0AgqYwT72mtlWrAj2zOo1tNCpCHQAQnlRPU9tN6wI9M9ogp8fu+9apsQFAaNq0EW6zVga6KmyqsrnKl9kgBwAhUUVNVbU2amWgZ0bDZvYP14sqGwAgDG0ZIvM6rQ10vUe32CDHsBkACIM2wrWpprZVawM929ggZ1Fjy9kgBwCN0o72Nm6E26zVga4w/4nBo/fJVWpsANCke6euta6mtlWrA13mjp7Npr75XafPUJjnPHoHgEZ87xvfya4ePtP6i9/6QBeTVXp/yJx3AGhAmzfCbTYZzldpjmpsWqn/xd/8pdN30BGr6197I+6L0QA9JrtxpN3vvgBU8+1D/7S1NbWtJkYjXv7K42dPsh98/F72tL/k9Dn9QweytW7H7Hu1xS9mfsz/pwQABzxy31CcxjZ10flzcua8V3Lts48i/NYAEA4CfROTOe/FaWxD42+Wvr97/g/ZnUcft/0yAEBlBPomqrFZTJAramwvmPNe1odffpr94+B5XF8aAAJBoG+hGe/aJOdCj9yZIFeewvxHn9+P7WsDQBAI9NewqLFpxjs1tvJ++qufZ3/968XYvjYANI5Afw0NmlGNzVX+nNPYqvjRf2eVDgBlEejb0Crddc67zkvXwBmU85//4YvsZ3//S64aAJRAoG9DYW5SY1vuU2OrQKt0NsgBwN4R6Du4PT3vXmMbjaixVaAa27//P59G970BoCkE+i56MzedP0MjYamxlacam4IdALA7An0XqrC51tikywa50vTI/e4Xn0T2rQGgGQT6Hlis0vcP16mxVaAamzbJAQB2RqDvQTHn/eQl58/pLrFKr+LuI1bpALAbAn2Pbr99xbnGNp7zPvD4rdOgFbpW6gCA7RHoe6QwV6i76nAaWyUaCUuNDQC2R6CXoMfumiLnQmGeM+e9NIU5NTYA2B6BXpLFnHdNj9MUOZRz94uPqbEBwDYI9JJUYdOJbK7yZTbIVcGcdwB4PQK9Aosz04sa22CtgW8fN814p8YGAK8i0CtQjc1igxxnpldz7bOPYvzaAFArAr0ibZCzqLHlK9TYymLOOwC8amI0okNV1V/8zV9m7/3Vnzl9xmhiIlv5+hvZaB//u1UZv5MfyhbP94r/1u3xsyfZf/zf/8n5pwwP5MX9BvB6Vw//YfbtQ9/i6lREoDv61z/7k+y//N//4fQha91O1j90IIDfJi5//Hvnsnvf/7devvMPPn4v+5//72+dPoP7DGzvD751PPvFzI+5Qg5YFjqyeJeuGhtz3svTY3dfNTbqikC9Fk7McoUdEeiOVGObO3rW+XN0xCrK87VBTvf53HepKwJ1uHr4TLFChxsC3cCt6XnnDXKqsWkFh3JUYVOVzYef/PCPuM+AMe2DWTjO6twCgW6gOI1t6qLzB+XMea/E17AZ7jNg78aRc2yEM0KgG7k9PV/8wXcxPo2N1VtZeo9+59HHXn6W6orcZ8CGgvzOictcTSMEuiGLCXJ6l64/+Cjnwy8/9XIamx656xWLq8nVAfcZrXfv+9fafglMEeiGNONdm6dcMUGuPIW5jlj1QZsgXe9zceoeQ4XQYtoE9+6b7/BPwBCBbsyi3qQZ79TYyvvpr36e/fWvF738LKsaG/cZbcXq3B6BbkznpVvU2PLn1Juq8LVBjvsMVKea2ve+8R2uoDECvQZavbnWmzSAhHpTeaqxaaXuA/cZKE81tXunWJ3XgUCvgf7IW0yQy5f71JsquPvFJ942yJnU2LjPaJGF45e9nMHQRgR6TUzqTaNR1mHjVGk+T2MzqSvqPlNjQwuopqYzGFAPAr1GvZmbzh/eod5UiWpsvua8U1cE9ub+6etcqRoR6DVStcmkxsbGqdL0yF2P3n2grgjsTjU15rXXi0CvmcUqXfO/qTeVp81x2iTng8l9pq6IhLE6rx+BXrNi/vfJS84/pLvEKr0Kr3Peuc/Aa+m9OfPa60ege6Ad7671Jr1fZbJYeRo046vGZnWftW8CSMX4NDXmtftAoHugP/Imk8VWOaWrCo2E9VVjs6grdjiNDQlR55yamh8EuieaKqbpYi6K+d9snCpNYe6rxkZdEfgtTYPTVDj4QaB7ZDX/W9PFUM7dLz72VmOzqitynxE75rX7RaB7pGqTKk6u8mU2TlVx7bOPvPwc7jOQFSepUVPzi0D3zGIISVFjG6xF9ps3TxU2XzU27jPajtW5fwS6Z3q/arFxqsv870p8rdIt7zMQG+1qp6bmH4HeAJONU0W9ifnfZfmc8677TF0RbcO89uYQ6A3QH/lb0/POP3iSOe+VaIOcrxobdUW0zcLxWWpqDSHQG6Iam+v876LGxuqttPGc94+9/Cyz+8yjd0RAm+CoqTWHQG+QxTtW1diY/12eHrtripwP3Ge0xcKJWe51gwj0BmnlphWcKx29ifJ8zXnnPqMNtDKnptYsAr1hesfqunFK9Sat4FCOKmw/+/tferlq2jPBfUaq9M5cI17RLAK9Yfoj//7URecvkVNjq8TraWwW95k57wjQjSPn2AgXAAI9ALen523mf1NjK001tjuP/GyQo66IFKmmducEp6mFgEAPhMVkMb1jpcZW3odffuqtxmZxn6krIiRMhAsHgR4Izf52rTdlTBarRGGuI1Z9sLjPehrDfUYItAlOM9sRBgI9IBZDSDT7m3pTeT/91c+9zXnnPiMVrM7DQqAHROel6z2rq/w5p3RVcffRJ15+ju6zRY2N+4wmabyrzjtHOAj0wGgIiWu9Sedo6zxtlKMVulbqPljUFXWfqbGhCdrRrgNYEBYCPTD6I28xWaxDvamSu1984m2DHHVFxEphTk0tPAR6gEzqTaqxMee9NJ+nsZnVFbnP8IjT1MJFoAeqN3PT+Yt1qDdVohqbgt0H7jNic//0de5ZoAj0QKnaZFJjY+NUaUWNzeOcd+4zYqGaGvPaw0WgB8xi9ab536o4oRzNePdVYzO7z9TYUDNW52Ej0AOm96sWG+QYQlKN1znvBnXF7hKrdNRHG+H0/hzhItADpz/0rvUmvV/N2ThVms5L91Vjs6grjue8c59hTzva2QgXPgI9cPojbzFZrJj/Tb2pNI2E9VVjo66IUOloVGpq4SPQI6CpYpou5kJ/5HMevZemML/7hb/T2LjPCI2mwV09fIb7EgECPRImq/T+sJguhnLUS/dVY+M+IzTMa48HgR4JVZtM5n8vs3GqimuffeTl5+g+60Q2V9xnWNDKnJpaPAj0iNyannfeOKV6E/O/y1OFzVeNzeLMdOqKcDWe1z7LdYwIgR6Rot5kMf+bjVOV+FqlU1dECG4cOUdNLTIEemRM5rwX9SZW6WX5nPNudZ+pK6IK5rXHiUCPjB6569G7q0nmf1eiHe++amzcZzRFj9qpqcWHQI+QNse5zv8u6k2s3kor5rx/7meCHPcZTdAmOGpqcSLQI2VVb2L+d3maHqcpcj5YvEvnPqMMamrxItAjpQEkJjU2TumqxOdpbBb3ubPCBjnsTitzDZJBnAj0iGmV7lpj0wASamzlqcKmE9l8oK4IH/TOXCNeES8CPWL6I29SY1vuU2OrwOtpbNQVUTPV1NgIFzcCPXK3p+fd602jETW2ClRju/PIz5x3k/tMXRHbUE3tzonLXJ7IEegJsJgspnes1JvK+/BLf3Peuc+oCxvh0kCgJ0Czv13rTRmTxSoZn8b2iZefxX1GHVRTe/fNd7i2CSDQE9Gbuen8i2j2N/Wm8lRj8zXn3aKuyH3GZvdPX+d6JIJAT0SxcerkJedfprtEja2Ku4/8rNKpK8KSxrsyrz0dBHpCNITEtd403jjFZLGytELXSt0Hq7oi97ndxqepsREuJQR6QvRH3mKyWId6UyV6l+5rzjv3Ga4U5tTU0kKgJ8bklC7V2Jj/XVp0p7Fxn1uL09TSRKAnyGKDnB7H6rEsytFpbL5qbFb3mRpb+7ARLk0EeoJUbVLFyVW+zMapKnzOeTepsbFBrlVUUVNVDekh0BNlMYRE879VcUI5mvHuq8ZmUlfUfabG1hoMkUkXgZ4ovV+12DjFEJJqvM55p66IPdJGOGpq6SLQE6Y/9BY1tpyNU6XpvHRfG+Ss6orc57RpRzsb4dJGoCdMf+QtJotNrlJvqkIb5HzV2LjP2I2ORqWmljYCPXGaKua6cUp/5HMevZc2nvPu5zQ23WdNkXPBfU6XNsFdPXym7ZcheQR6C1i8S5/sD9k4VYEeu/uqsZms0vtD6ooJWjgx2/ZL0AoEegtohW4x/1tHb6K8a5995OWqUVfE62hlTk2tHSZGI16atcHjZ0+yH3z8Xva0v+T02/YPHcjWup22X87SfjHzYy9/VHWf3/urP3P+HN3n0b5q//v+Pw6fF5sC0Ty9M//8X/07dra3BIHeIn/6Xx9kf/rfHjr9wvojv/L1N7LRxETbL2cp+oO6eKEX0Teu7tovP/J2UA12ppranRMcwNIWPHJvEZP538VpbMO2X8rS9B79ziM/G+Sa5PPUOeyMee3tQ6C3iOpNFhPkJpn/XcmHX37qpcbWJF/nwmN3mghHTa1dCPSW0aYpixobE+TKU5j/6HM/E+SaoJW5r5G32Jn2a2hmO9qFQG8hi3qTZrxTYytPoZfihrFx557VeSiY195OBHoLaQCJRY0t55SuSnzNeffJZ98eO1NN7Xvf+A5XqYUI9JbSKt11/rcGkGgQCcrRY2mdyJYKBbmviXjYmd6Za8Qr2olAbymF+ftTF51/eY0KZf53eVqlp7JBLsUnDrG6ceQcG+FajEBvsdvT8+41ttEo63BKV2la1fo6ja1OqT1tiJlqanTO241Ab7nezE3nC9ChxlaJamyxv3dmdR6O+6evt/0StB6B3nKqsLnW2KTLBrnSYt8ZnuqO/Rippsa8dhDoMFml7x+uU2OrINbuduqd+tiwOkdGoEP0Hl1jYV11l1ilVxHjY2vtak996l0sNN6Vw1eQEeh4SWemu9bYxnPe2SBXlh5bxzT/PJUNfSnQjnYdwAJkBDpeUpgr1F1pxzs1tvL0+DqWFa+v892xO4U5NTW8RKDjN/TYXVPkXCjMc+a8l6Ywj2HVq/f9zGsPg6bBcZoaNiPQ8RUWc941PU5T5FCO3kuHXmNjdR4O5rVjKwIdX6EKm05kc5Uvs0GuipA3yDGvPRw6SY2aGrYi0PEKizPTixrbYI2LW5KmroX4SHvcmWdeeyhYneN1CHS8QjU2iw1ynJleTYiPtWPatJc6bYSjpobXIdDxWtog5zzn/cWLLGfOe2mh1cJiq9WlTEHORjhsh0DHa6nGdmt63vniTDLnvZKQBrcwrz0cC8dnqalhWwQ6tjV39KzznPeixsYqvbRQ3lmH+k6/jbQJ7urhM22/DNgBgY4dWbxLV42NOe/lNb2rvJjXzuo8GAsnZtt+CbALAh070gpdK3VXnRU2yFXR5AY5amrh0Mqcmhp2Q6BjV3qX7jrnXTU2rdRRjh5367G3bwpyndeO5o3ntbM6x+4IdOyqOI1t6qLzhcqZ815JE4+9dU47NbUw3DjCaWrYGwIde3J7et6kxtZZZZVellbLdx752yCnpwLU1MKgIL9zgtPUsDcEOvbMYoKc3qVTYytPj799rZjvPvrEy8/B7pgIhzIIdOyZZry71tgyJshVUuw4/7z+R+9amVNTC4M2wWlmO7BXBDpKsTiNTTPeqbGVp7DV1La6+PpfGrA3rM5RFoGOUnReukWNLX/OaWxV1LlBTjU1NsKFQTU1nXcOlEGgozSt0l1rbDovvbPKBLmy6tqwpo13nKYWBtXU7p1idY7yCHSUpjC3mCDXocZWSR2VMibChUOnqTGvHVUQ6KjE5DS20agIdZRjfRpbU8Nr8CpOU4MLAh2V9WZuOl+8DqexVaIam9VYVlbn4bh/+nrbLwEcEOioTBU2kxobG+RKszo4RSv9OnfOY+9UU2NeO1wQ6HBisUrXnHdqbOW5Hm0ayhGtGGN1DlcEOpwUc95PXnK+iN0lVulVuKzSFebU1MKg9+bMa4crAh3OtOPdtcam9+g5G+RK0+PyKjU26411qG58mhrz2uGOQIczhbnFBLnJVWpsVWi6W9mVdpPnrOOr1DmnpgYLBDpMaHqcpsi5UJjnzHkvTWFeZrXt+u4ddjQNTlPhAAsEOsyYrNL7w2KKHMrR+/C91tioqYWDee2wRKDDjCpsOpHNVb7MBrkq9vIYXeeqW/XX4UYnqVFTgyUCHaY+MJjzXtTYBmvcmJL0GH2nR+l6NK+BNGheMa+d1TmMEegwVdTYpi46f6TOTGeDXHk7rdKrbJ5DPW4coaYGewQ6zJnMeX+h09iG3JyStqujVa23wR7z2lEXAh3m9Mj91vS888dOMue9ktcNjGEjXDgWjs9SU0MtCHTUQjU21znvRY2NYTOlbR3pqpU5NbUwaBMcNTXUhUBHbSzOTFeNjTnv5b08dGUc7p/E9vWTtXBitu2XADUi0FEbrdC1UnfVWWHYTBV6zK5gp6YWBq3MqamhThOjEVuJUZ+n/aXs2MMrxX9d9A8dyNa6He5USXpXy8725uk+LJ7v8e4ctWKFjlppg5xFjS2nxlYJYR4G1dQIc9SNFTq8eOvBXPb42ROnHzU82M0GB3NuGKKimtrihR43DbVjhQ4vPjCY86536dTYEBsmwsEXAh1eaMa7a40t25ggB8RCm+A0sx3wgUCHNxansWnGOzU2xILVOXwi0OGNzkvXWFhX3SVOY0P4NN5V550DvhDo8ErDZlxPYxvPeWeCHMKlHe0Lxy9zh+AVgQ6vFOYWE+Q6KwNqbAiWwpyaGnwj0OGdyWlso1ER6kBoOE0NTSHQ0YjezE3nH9vhNDYE6P7p69wWNIJARyNUYVOVzVX3ORvkEA5V1JjXjqYQ6GiMxbCZ/cP1osoGhICaGppEoKMxeo9usUGOYTMIgTbC6f050BQCHY3SBjmLGlvOBjk0SDva2QiHphHoaJTC3GKC3OQqNTY0596pa9TU0DgCHY2bO3q2mCLnQmGe8+gdDdA0uKuHz3Dp0TgCHUEwWaX3h9m+dWps8IuNcAgFgY4gqMamlbqrfJkaG/zRypyaGkJBoCMYt6bnnTfIqcamlTpQt/G89lmuM4JBoCMYqrG9P3XR+evkzHmHBzeOnKOmhqAQ6AiKyZz34jQ2VumoD/PaESICHUHRI3c9enc1yZx31EiP2qmpITQEOoKjzXHaJOeiqLExbAY10CY4amoIEYGOIFnV2PavrXODYYqaGkJFoCNIGjRjUmPjNDYY0spcg2SAEE2MRmwHRpie9peyYw+vFP910T90IFvrdrjLcKJ35ovne7w7R7BYoSNY2iBnUmNb7lNjgzPV1AhzhIwVOoL31oO57PGzJ05fc3iwmw0O5txsVKKa2uKFHhcPQWOFjuB9YLBBrrPSp8aGytgIhxgQ6Aje+cM/dK6xSZcNcqhANbV333yHS4fgEeiIQm/mpvPX1Jx3amwo6/7p61wzRIFARxSKOe8nLzl/1e4Sq3Tsnca7Mq8dsSDQEY3bb19xPo1tPOedCXLY3fg0tctcKUSDQEc0FOYKdVcdTmPDHijMqakhJgQ6oqLH7poi50Jh3mHOO3agaXCcpobYEOiIjsWcdz1237dOjQ2vR00NMSLQER1V2FRlc5Uvs0EOr1JFTVU1IDYEOqJkMWymqLEN1vgHgK9gdY5YEeiIkmpsFhvkust9/gHgN7QRjpoaYkWgI1raIGdRY8vZIIeNmhob4RAzAh3RUphbbJCbXKXGhiy7d+oaNTVEjUBH1OaOnnWe864wz3n03mraBHf18Jm2XwZEjkBH9CzepU/2h8x5b7GFE7NtvwRIAIGO6GmFrpW6Kx2xivbRypyaGlJAoCMJt6bnnTfIqcamlTraYzyvndU50kCgIwnFaWxTF51/lZw5761y4winqSEdBDqSoRqbgt3F+DQ2VultoCCnpoaUEOhIhh65W0yQ07t0BTvSpolw1NSQEgIdSdGMd9caW8YEueRpE5xmtgMpIdCRHIthM5rxTo0tXcxrR4oIdCRH56Vb1Njy55zGliLV1HTeOZCaidGILb1Iz9P+Unbs4ZXivy76hw5ka90O/0ISoXfmi+d7vDtHklihI0naIGdSY1vuU2NLiGpqhDlSxQodSXvrwVz2+NkTp19xeCDPBm90+YcSOdXUFi/02n4ZkDBW6Ehab+am86/X0Wls1Niid//09bZfAiSOQEfSVGEzqbGxQS5qqqkxrx2pI9CRPItVuua8U2OLF6tztAGBjuQVczD9Pt4AAAmjSURBVN5PXnL+NbtLrNJjpPGuzGtHGxDoaAWdme56Gtt4zvuAfzARGZ+mdrntlwEtQaCjFRTmFhPkOpzGFpV7p5jXjvYg0NEamh6nKXIuFOY5c96joGlwmgoHtAWBjlaxWKVP9ofZvnVqbKFjXjvahkBHq6jCphPZXOXLbJALmU5So6aGtiHQ0ToWZ6YXNbbBGv94AsXqHG1EoKN1VGPTrndXnJkeJu1qp6aGNiLQ0UrqpSvYXajGlq9QYwuJgly9c6CNCHS0kmpst6bnnX/1Sea8B2Xh+Cw1NbQWgY7WUo3Ndc57UWNjlR4EbYKjpoY2I9DRahbv0lVjY8578xZOzLb9EqDlCHS0mlboWqm76qywQa5JWplTU0PbEehoPb1Ld53zrhqbVurwbzyvndU5QKCj9YrT2KYuOl8GjYRlzrt/N45wmhqQjff08BcIkLcezGWPnz1xuhbDg91scDDnenqiIF+80GvF7wrshhU6sMFigpzepVNj84eJcMBvEejABs14d62xZUyQ80ab4DSzHcAYgQ5sYnEam2a8U2OrH6tz4KsIdGATnZduUWPLn3MaW51UU9N55wB+i01xwBZP+0vZsYdXiv+6GLzRzYYH2CBnTTW1xfM9RrwCW7BCB7ZQJ91iglxnZUCNrQY6TY0wB15FoAOvYXIa22hUhDrscJoasD0CHdhGb+am86XpcBqbqfunryf02wC2CHRgG6qwmdTY2CBnQjU15rUD2yPQgR1YrNI1550amztW58DOCHRgB3qPbrFBrrvEKt2FNsIxrx3YGYEO7EIb5FxPY9N79JwNcpVoRzsb4YDdEejALhTmFhPkJlepsVVx79Q1amrAHhDowB5oepymyLlQmOfMeS9F0+A0FQ7A7gh0YI9MVun9YbZvnRrbXjGvHdg7Ah3YI1XYdCKbq3yZDXJ7oZPUqKkBe0egAyXozHTXDXJFjW2wxmXfgd6ZszoHyiHQgRJUY3t/6qLzJdOZ6WyQ296NI+eoqQElEehASSZz3l+8yDqrQy79azCvHaiGQAdK0iP3W9Pzzpdtkjnvr7VwfJaaGlABgQ5UoBqb65z3osbGsJmv0CY4ampANQQ6UJHFSFjV2Jjz/lsLJ2ZD+SpAdAh0oCKt0LVSd5VzGltBK3NqakB1E6MRW22Bqp72l7JjD68U/3XRP3QgW+t2Wnsf9M588XyPd+eAA1bogANtkLOoseUtr7GppkaYA25YoQMG3nowlz1+9sTpg4YHu9ngYN6626Ga2uKFXgDfBIgbK3TAwAcGc947K/1W1tiYCAfYINABA5rx7lpjyzYmyLWJNsFpZjsAdwQ6YKQ3c9P5gzTjvU01NlbngB0CHTBSzHk/ecn5w7pL7aixabyrzjsHYINABwxp2IzraWzjOe9pT5DTjvaF45cD+CZAOgh0wJDC3GKCXGdlkHSNTWFOTQ2wRaADxkxOYxuNilBPEaepAfUg0IEaWGyQ6yR6Gtv909cD+BZAegh0oAaqsKnK5qqb2Jx3VdSY1w7Ug0AHamIxbGb/cL2osqWCmhpQHwIdqIneo1tskEtl2Iw2wun9OYB6EOhAjbRBzqLGlke+QU472tkIB9SLQAdqpDD/icGj98nVuGts905do6YG1IxAB2o2d/RsNvXN7zr9EIV5Humjd02Du3r4TADfBEgbgQ54YLJK7w+zfevx1djYCAf4QaADHqjGppW6q3w5rhqbVubU1AA/CHTAk1vT884b5FRj00o9BuN57bP88wI8IdABT4rT2KYuOv+wPJI57zeOnKOmBnhEoAMemcx5L05jC3uVzrx2wD8CHfBIj9z16N3VZOBz3vWonZoa4BeBDnimzXHaJOdCj9xDnSCnTXDU1AD/CHSgARY1Ns1437+2Htzto6YGNINABxqgQTMmNbbATmPTylyDZAD4NzEaRTxPEojY0/5SduzhleK/LvqHDmRr3U7jF0LvzBfP93h3DjSEFTrQEG2QM6mxLfeDqLGppkaYA81hhQ407K0Hc9njZ0+cvsTwYDcbHMwb+0VUU1u80Gvs5wNghQ40rjdz0/krdFb6jdbY7p++3tjPBjBGoAMNU4XNtcYm3YY2yKmmxrx2oHkEOhAAi1W65rw3UWNjdQ6EgUAHAlDMeT95yfmLdJf8rtI13pV57UAYCHQgELffvuJ8Gtt4zvvAyy80Pk3tspefBWB3BDoQCIW5Qt1Vx9NpbApzampAOAh0ICB67K4pci4U5gr1OmkaHKepAWEh0IHAWMx512P3fev11diY1w6Eh0AHAqMK2/nDP3T+UvlyPRvk3n3zHWpqQIAIdCBAH1icxqYa22DN/JdjdQ6EiUAHAqQam8UGOesz07URjpoaECYCHQiUNshZ1Nhyow1y2tHORjggXAQ6ECiFucUGucnVgcmc93unrlFTAwJGoAMBmzt61nnOu2psrqt0bYK7evgM/1SAgBHoQOAs3qVP9odOc94XTszyzwQIHIEOBE4rdK3UXemI1Sq0MqemBoSPQAcicGt63nmDnGpsWqmXMZ7XzuociAGBDkSgOI1t6qLzF81Lznm/cYTT1IBYEOhAJFRjU7C7GJ/GtrdVuoKcmhoQDwIdiIQeuVtMkNO79L3U2DQRjpoaEA8CHYiIZry71tiyPUyQ0yY4zWwHEA8CHYiMxbAZzXjfqcbGvHYgPgQ6EBmdl25RY8ufv/40NtXUdN45gLhMjEYltrwCCMLT/lJ27OGV4r8u+ocOZGvdzm8+Qe/MF8/3eHcORIgVOhAhbZCzmCCXL/e/UmPTaWqEORAnAh2IlEmNbTTKOhtz3qmpAXEj0IGI9WZuOn/5zsZpbPdPX+efAhAxAh2ImCpsFjW2s1/7F8xrByJHoAORs1il//kf/gn/DIDIEehA5Io57ycvVf4lLN7FA2getTUgAVVrbNot/7+uPHQ+yQ1A81ihAwlQIFeZIKf/N4Q5kAYCHUiEpsdpitxeWU2cAxAGAh1ISJlVusVMeADhINCBhKjCphPZdmN1ahuAcBDoQGL2cma6xbnqAMJCoAOJUQVtpznv+r+jpgakh0AHErRdt9y1sw4gXAQ6kCBV0W5Nz7/yi+l/Rk0NSBOBDiRKlbTNG9/0f6amBqSLQAcStvldusX56QDCNcm9AdK1eVVOTQ1IG7PcgcS9nO/Ou3MgbQQ6AAAJ4B06AAAJINABAEgAgQ4AQAIIdAAAEkCgAwCQAAIdAIAEEOgAACSAQAcAIAEEOgAACSDQAQBIAIEOAEACCHQAABJAoAMAkAACHQCABBDoAAAkgEAHACB2WZb9f5HWN4gjSPwhAAAAAElFTkSuQmCC\" +}}", config.protocol_version), ); let packet_id = MCVarInt::from(0x00); let packet_len = MCVarInt::from( From 9815c3d200a81bac679ee1db0f97bda4e8bce5ae Mon Sep 17 00:00:00 2001 From: Danton <43303409+khimno@users.noreply.github.com> Date: Wed, 8 Jul 2020 22:16:01 -0700 Subject: [PATCH 2/6] further prototyping of #1 --- log.txt | 7 +++++++ src/main.rs | 7 +++++++ src/net.rs | 6 +++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/log.txt b/log.txt index 0f705c8..40e4fa7 100644 --- a/log.txt +++ b/log.txt @@ -371,3 +371,10 @@ 2020-07-08 22:08:49 [INFO] - Next state: Status 2020-07-08 22:08:49 [INFO] - Ping number: MCLong { value: 3528562 } 2020-07-08 22:08:49 [INFO] - Client at 192.168.0.88:55891 closed connection +2020-07-08 22:15:19 [INFO] - Network thread started +2020-07-08 22:15:19 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 22:15:39 [INFO] - Got a client! +2020-07-08 22:15:39 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:15:39 [INFO] - Next state: Status +2020-07-08 22:15:39 [INFO] - Ping number: MCLong { value: 3938584 } +2020-07-08 22:15:39 [INFO] - Client at 192.168.0.88:55909 closed connection diff --git a/src/main.rs b/src/main.rs index 9782566..851d679 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,8 @@ +// main.rs +// authors: Garen Tyler, Danton Hou +// description: +// Main Game loop, config handler. + #![allow(non_snake_case)] #![allow(non_upper_case_globals)] @@ -31,12 +36,14 @@ fn main() { pub struct Config { pub port: u16, pub protocol_version: u16, + pub max_players: u32, } impl Config { pub fn default() -> Config { Config { port: 25565, protocol_version: 578, + max_players: 250, } } pub fn from_file(filename: &str) -> Config { diff --git a/src/net.rs b/src/net.rs index 495423f..c635354 100644 --- a/src/net.rs +++ b/src/net.rs @@ -1,5 +1,5 @@ // net.rs -// author: Garen Tyler +// authors: Garen Tyler, Danton Hou // description: // The module with everything to do with networkng. @@ -61,9 +61,9 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { let (_request_packet_len, _request_packet_id) = read_packet_header(&mut gc.stream)?; // Send the response packet. let response = MCString::from(format!( - "{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": 45000,\n\t\t\"online\": 2147483646,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"ligma balls lol\"\n\t}}, + "{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": {},\n\t\t\"online\": 2147483646,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"ligma balls lol\"\n\t}}, \"favicon\": \"data:image/png;base64,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\" -}}", config.protocol_version), +}}", config.protocol_version, config.max_players), ); let packet_id = MCVarInt::from(0x00); let packet_len = MCVarInt::from( From 8aa3a7d680e5564ae1d16e16b75de74abb5cd486 Mon Sep 17 00:00:00 2001 From: Danton <43303409+khimno@users.noreply.github.com> Date: Wed, 8 Jul 2020 22:32:00 -0700 Subject: [PATCH 3/6] update gitignore (not ignoring log properly) --- .gitignore | 2 +- log.txt | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a243711..6483c3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ target/ -log.txt .DS_Store +log.txt diff --git a/log.txt b/log.txt index 40e4fa7..42d7d67 100644 --- a/log.txt +++ b/log.txt @@ -378,3 +378,25 @@ 2020-07-08 22:15:39 [INFO] - Next state: Status 2020-07-08 22:15:39 [INFO] - Ping number: MCLong { value: 3938584 } 2020-07-08 22:15:39 [INFO] - Client at 192.168.0.88:55909 closed connection +2020-07-08 22:23:14 [INFO] - Network thread started +2020-07-08 22:23:14 [IMPORTANT] - Started server on 0.0.0.0:25565 +2020-07-08 22:23:20 [INFO] - Got a client! +2020-07-08 22:23:20 [INFO] - Handshake { protocol_version: MCVarInt { value: 498 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:23:20 [INFO] - Next state: Status +2020-07-08 22:23:20 [INFO] - Ping number: MCLong { value: 4398964 } +2020-07-08 22:23:20 [INFO] - Client at 192.168.0.88:55921 closed connection +2020-07-08 22:23:22 [INFO] - Got a client! +2020-07-08 22:23:22 [INFO] - Handshake { protocol_version: MCVarInt { value: 498 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:23:22 [INFO] - Next state: Status +2020-07-08 22:23:22 [INFO] - Ping number: MCLong { value: 4401109 } +2020-07-08 22:23:22 [INFO] - Client at 192.168.0.88:55927 closed connection +2020-07-08 22:23:41 [INFO] - Got a client! +2020-07-08 22:23:42 [INFO] - Handshake { protocol_version: MCVarInt { value: 578 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:23:42 [INFO] - Next state: Status +2020-07-08 22:23:42 [INFO] - Ping number: MCLong { value: 4420928 } +2020-07-08 22:23:42 [INFO] - Client at 192.168.0.88:55934 closed connection +2020-07-08 22:25:40 [INFO] - Got a client! +2020-07-08 22:25:40 [INFO] - Handshake { protocol_version: MCVarInt { value: 316 }, server_address: MCString { value: "192.168.0.98" }, server_port: MCUnsignedShort { value: 25565 }, next_state: MCVarInt { value: 1 } } +2020-07-08 22:25:40 [INFO] - Next state: Status +2020-07-08 22:25:40 [INFO] - Ping number: MCLong { value: 4539076 } +2020-07-08 22:25:40 [INFO] - Client at 192.168.0.88:55943 closed connection From a979cc25c67a72d66a83e8c6c3bc8e73574a9d17 Mon Sep 17 00:00:00 2001 From: ElementG9 Date: Thu, 9 Jul 2020 09:56:40 -0600 Subject: [PATCH 4/6] Make the server favicon load dynamically --- Cargo.lock | 7 +++++ Cargo.toml | 1 + composition.toml | 5 ++-- composition_icon.png | Bin 0 -> 4885 bytes src/main.rs | 4 +++ src/net.rs | 70 +++++++++++++++---------------------------- 6 files changed, 39 insertions(+), 48 deletions(-) create mode 100644 composition_icon.png diff --git a/Cargo.lock b/Cargo.lock index 97a6033..27b51bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,6 +4,7 @@ name = "Composition" version = "0.1.0" dependencies = [ + "base64", "chrono", "colorful", "lazy_static", @@ -53,6 +54,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + [[package]] name = "bitflags" version = "1.2.1" diff --git a/Cargo.toml b/Cargo.toml index b10a932..a3a7da9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,3 +13,4 @@ lazy_static = "1.4.0" ozelot = "0.9.0" # Ozelot 0.9.0 supports protocol version 578 (1.15.2) toml = "0.5.6" serde = { version = "1.0.114", features = ["serde_derive"]} +base64 = "0.12.3" diff --git a/composition.toml b/composition.toml index 88dcae0..5a14290 100644 --- a/composition.toml +++ b/composition.toml @@ -1,4 +1,5 @@ port = 25565 protocol_version = 578 -max_players = 420 -motd = "ligma balls lol" +max_players = 20 +motd = "Composition MOTD" +favicon = "composition_icon.png" diff --git a/composition_icon.png b/composition_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..01f07275a5f9c3165da22c14b8070f380421b0b5 GIT binary patch literal 4885 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 literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index 851d679..82adf61 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,6 +37,8 @@ pub struct Config { pub port: u16, pub protocol_version: u16, pub max_players: u32, + pub motd: String, + pub favicon: Option, } impl Config { pub fn default() -> Config { @@ -44,6 +46,8 @@ impl Config { port: 25565, protocol_version: 578, max_players: 250, + motd: "Hello world!".to_owned(), + favicon: None, } } pub fn from_file(filename: &str) -> Config { diff --git a/src/net.rs b/src/net.rs index c635354..00ee4bd 100644 --- a/src/net.rs +++ b/src/net.rs @@ -3,11 +3,12 @@ // description: // The module with everything to do with networkng. -use crate::{config, log}; -use std::net::{TcpListener, TcpStream}; +extern crate base64; use crate::mctypes::*; use crate::protocol::*; +use crate::{config, log}; +use std::net::{TcpListener, TcpStream}; pub fn start_listening() { let server_address: &str = &format!("0.0.0.0:{}", config.port); @@ -41,10 +42,12 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { match gc.state { GameState::Handshake => { // Read the handshake packet. - let (_packet_len, packet_id) = read_packet_header(&mut gc.stream)?; + let (_packet_len, _packet_id) = read_packet_header(&mut gc.stream)?; let handshake = Handshake::read(&mut gc.stream)?; log.info(&format!("{:?}", handshake)); - gc.state = if handshake.protocol_version.value != config.protocol_version as i32 && handshake.next_state.value == 2 { + gc.state = if handshake.protocol_version.value != config.protocol_version as i32 + && handshake.next_state.value == 2 + { GameState::Closed } else { match handshake.next_state.value { @@ -60,11 +63,22 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { // Read the request packet. let (_request_packet_len, _request_packet_id) = read_packet_header(&mut gc.stream)?; // Send the response packet. - let response = MCString::from(format!( - "{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": {},\n\t\t\"online\": 2147483646,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"ligma balls lol\"\n\t}}, - \"favicon\": \"data:image/png;base64,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\" -}}", config.protocol_version, config.max_players), - ); + let mut base64_encoded_favicon = "".to_owned(); + let a = || -> std::io::Result { + // Only call this if config.favicon is not None, or it'll panic. + use std::fs::File; + use std::io::prelude::*; + let mut file = File::open(config.favicon.as_ref().unwrap())?; + let mut favicon = String::new(); + file.read_to_string(&mut favicon)?; + Ok(favicon) + }; + if config.favicon.is_some() { + if let Ok(s) = a() { + base64_encoded_favicon = base64::encode(s); + } + } + let response = MCString::from(format!("{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": {},\n\t\t\"online\": 2147483648,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"{}\"\n\t}},\n\t\"favicon\": \"data:image/png;base64,{}\"\n}}", config.protocol_version, config.max_players, config.motd, base64_encoded_favicon)); let packet_id = MCVarInt::from(0x00); let packet_len = MCVarInt::from( packet_id.to_bytes().len() as i32 + response.to_bytes().len() as i32, @@ -98,7 +112,7 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { } GameState::Login => { // Read the login start packet. - let (_packet_len, packet_id) = read_packet_header(&mut gc.stream)?; + let (_packet_len, _packet_id) = read_packet_header(&mut gc.stream)?; let login = LoginStart::read(&mut gc.stream)?; log.info(&format!("{:?}", login)); } @@ -116,42 +130,6 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { Ok(()) } -// pub struct MCPacket { -// pub id: MCVarInt, -// pub data: Vec, -// } -// #[allow(dead_code)] -// impl MCPacket { -// pub fn read_header(t: &mut TcpStream) -> std::io::Result<(MCVarInt, MCVarInt)> { -// let length = MCVarInt::from_stream(t)?; -// let id = MCVarInt::from_stream(t)?; -// Ok((length, id)) -// } -// pub fn new(id: u8) -> MCPacket { -// MCPacket { -// id: MCVarInt::new(id as i32), -// data: Vec::new(), -// } -// } -// pub fn write(&mut self, v: Vec) { -// for b in v { -// self.data.push(b); -// } -// } -// pub fn to_bytes(&self) -> Vec { -// let mut bytes = Vec::new(); -// for b in MCVarInt::new((self.id.to_bytes().len() + self.data.len()) as i32).to_bytes() { -// bytes.push(b); -// } -// for b in self.id.to_bytes() { -// bytes.push(b); -// } -// for b in &self.data { -// bytes.push(*b); -// } -// bytes -// } -// } #[allow(dead_code)] #[derive(PartialEq, Debug)] pub enum GameState { From 600a24ea79263eb8d149472c9341d5cecdcae671 Mon Sep 17 00:00:00 2001 From: ElementG9 Date: Thu, 9 Jul 2020 10:42:10 -0600 Subject: [PATCH 5/6] attempt at fixing #4 --- Cargo.lock | 17 +++++++++++++++++ Cargo.toml | 1 + composition.toml | 2 +- server-icon.png | Bin 0 -> 11088 bytes src/net.rs | 17 ++++++++++------- 5 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 server-icon.png diff --git a/Cargo.lock b/Cargo.lock index 27b51bd..93115da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,6 +9,7 @@ dependencies = [ "colorful", "lazy_static", "ozelot", + "radix64", "serde", "toml", ] @@ -34,6 +35,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567b077b825e468cc974f0020d4082ee6e03132512f207ef1a02fd5d00d1f32d" +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + [[package]] name = "autocfg" version = "1.0.0" @@ -336,6 +343,16 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radix64" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22a338c2456e0b6ca64681985cbc1b60a50473474f224899b0ee932e244893e" +dependencies = [ + "arrayref", + "cfg-if", +] + [[package]] name = "redox_syscall" version = "0.1.56" diff --git a/Cargo.toml b/Cargo.toml index a3a7da9..229bf1f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,4 @@ ozelot = "0.9.0" # Ozelot 0.9.0 supports protocol version 578 (1.15.2) toml = "0.5.6" serde = { version = "1.0.114", features = ["serde_derive"]} base64 = "0.12.3" +radix64 = "0.3.0" diff --git a/composition.toml b/composition.toml index 5a14290..f7f123c 100644 --- a/composition.toml +++ b/composition.toml @@ -2,4 +2,4 @@ port = 25565 protocol_version = 578 max_players = 20 motd = "Composition MOTD" -favicon = "composition_icon.png" +favicon = "server-icon.png" diff --git a/server-icon.png b/server-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef7bdb6a4e2643c908c1f757414981753d890e9 GIT binary patch literal 11088 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 W@q7V{-&J-10000 std::io::Result<()> { let (_request_packet_len, _request_packet_id) = read_packet_header(&mut gc.stream)?; // Send the response packet. let mut base64_encoded_favicon = "".to_owned(); - let a = || -> std::io::Result { + let a = || -> std::io::Result> { // Only call this if config.favicon is not None, or it'll panic. use std::fs::File; use std::io::prelude::*; let mut file = File::open(config.favicon.as_ref().unwrap())?; - let mut favicon = String::new(); - file.read_to_string(&mut favicon)?; - Ok(favicon) + let mut buffer = Vec::new(); + file.read_to_end(&mut buffer)?; + Ok(buffer) }; if config.favicon.is_some() { - if let Ok(s) = a() { - base64_encoded_favicon = base64::encode(s); + let temp = a(); + if let Ok(s) = temp { + base64_encoded_favicon = radix64::STD.encode(&s); + } else { + println!("{:?}", temp); } } let response = MCString::from(format!("{{\n\t\"version\": {{\n\t\t\"name\": \"Composition 1.15.2\",\n\t\t\"protocol\": {}\n\t}},\n\t\"players\": {{\n\t\t\"max\": {},\n\t\t\"online\": 2147483648,\n\t\t\"sample\": [\n\t\t\t{{\n\t\t\t\t\"name\": \"fumolover12\",\n\t\t\t\t\"id\": \"4566e69f-c907-48ee-8d71-d7ba5aa00d20\"\n\t\t\t}}\n\t\t]\n\t}},\n\t\"description\": {{\n\t\t\"text\": \"{}\"\n\t}},\n\t\"favicon\": \"data:image/png;base64,{}\"\n}}", config.protocol_version, config.max_players, config.motd, base64_encoded_favicon)); From 2dfe62571a252f0d53e752a75fc884e5a487fb51 Mon Sep 17 00:00:00 2001 From: ElementG9 Date: Thu, 9 Jul 2020 10:59:18 -0600 Subject: [PATCH 6/6] Add a warning for server favicon --- src/net.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/net.rs b/src/net.rs index 2ed6c1c..c0b0c86 100644 --- a/src/net.rs +++ b/src/net.rs @@ -63,6 +63,7 @@ fn handle_client(t: TcpStream) -> std::io::Result<()> { // Read the request packet. let (_request_packet_len, _request_packet_id) = read_packet_header(&mut gc.stream)?; // Send the response packet. + log.warn("Server favicon not working correctly. Fix this in issue #4"); let mut base64_encoded_favicon = "".to_owned(); let a = || -> std::io::Result> { // Only call this if config.favicon is not None, or it'll panic.