{"id":26679913,"url":"https://github.com/nekomimiofficial/nekoconnect","last_synced_at":"2025-03-26T06:18:56.724Z","repository":{"id":283239289,"uuid":"951109938","full_name":"NekoMimiOfficial/NekoConnect","owner":"NekoMimiOfficial","description":"Platform for creating a unified server solution to all web apps, \"NekoConnect, Serving servers\"","archived":false,"fork":false,"pushed_at":"2025-03-19T07:23:21.000Z","size":4855,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-19T08:26:58.316Z","etag":null,"topics":["server","socket","sockets","webapp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NekoMimiOfficial.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-19T07:10:20.000Z","updated_at":"2025-03-19T07:27:05.000Z","dependencies_parsed_at":"2025-03-19T08:37:49.719Z","dependency_job_id":null,"html_url":"https://github.com/NekoMimiOfficial/NekoConnect","commit_stats":null,"previous_names":["nekomimiofficial/nekoconnect"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NekoMimiOfficial%2FNekoConnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NekoMimiOfficial%2FNekoConnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NekoMimiOfficial%2FNekoConnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NekoMimiOfficial%2FNekoConnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NekoMimiOfficial","download_url":"https://codeload.github.com/NekoMimiOfficial/NekoConnect/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245598222,"owners_count":20641884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["server","socket","sockets","webapp"],"created_at":"2025-03-26T06:18:55.592Z","updated_at":"2025-03-26T06:18:56.668Z","avatar_url":"https://github.com/NekoMimiOfficial.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NekoConnect  \nAll your networking needs into one simple server, extensible with plugins  \nNekoConnect makes running and deploying services much easier, connect to the NC socket and have it send packets to plugins you create, the packets are sent via a context object that extends methods for a custom socket connection and connecting to the log GUI  \nAlso features a small database for mini applications that require a small data storage like planners and todo apps  \nWith NekoConnect the sky is the limit, from chat apps to full game servers, \"you think it, you code it\"  \n  \n# Specs  \nCustom API with crappy authentication (as always :3)  \nPacket Spec:  \n```cpp\n[4b: packet len][1b: op code len][1b: greeter len][2b: data len][1b: hash len][1b: next random string len][greeter][op code][random string][data][hash]\n```\neach plugin has its own greeter so that packets can be routed to the correct plugin  \nthe op code is up to the plugin developer to use, its useful so why not, integer values only  \nthe random string sent is hashed and sent in the next packet to check the authentication  \nop codes are also used for status returns, e.g. 200 for an ok response, 400 for an auth error and so on  \nExample packet from the server:  \n```cpp\n[len][len][len][len][len][len][\"nekoconnect-server\"][200][8b23$c][data, in case of server status messages its the same as the op code][hash, in case of server responses its always \"server\"]\n```\nExample packet from a client:  \n```cpp\n[len][len][len][len][len][len][\"plugin\"][op code, up to the plugin creator to decide][echos the random string from the last server response, \"connect\" if its the first][data, pretty much up to the devs][hash, in case of first packet it will hash \"connect\"]\n```\nAuthentication sequence:  \nclient sends {greet: \"auth\", op_code: 200, random: \"connect\", data: 200, hash: \"XXXXXX\"}  \nserver sends {greet: \"nekoconnect-server\", op_code: 200, random: \"RANDOM_STRING\", data: 200, hash: \"server\"}  \nthen the client sends any packet in any form the plugin developers create and as long as the hash is valid the response stays authorized else it disconnects with an op_code 400  \n  \n# Plugins  \nDevelopers! developers! developers! developers! developers! developers! developers!  \nWe do the heavy lifting and you do the rest  \nYou can copy and import the `context.py` file and use it as a typeset when writing your plugins  \neach plugin consists of 2 files, the spec sheet and the logic file  \nthe spec sheet contains info like the version, name, greeter and the logic filename  \nthe logic file is the python script that contains a `Logic` class with a `recv` method, this method gets called when a packet is routed to the plugin, accepts 1 argument being the context  \nExamples are here at `plugins/`  \notherwise you can write anything custom that comes to mind and uses the data/recv/send methods from the context object  \n  \n# Installation  \nSetup a virtual environment.  \nInstall the requirements.  \nRun.  \n  \n# Neko and Connect :3  \nas funny as it might be to create a plugin on a self hosted NekoConnect server and have people who wanna \"connect\" use that but it aint practical :3  \nbut the contact information are always found at my [github personal repo](https://github.com/NekoMimiOfficial/NekoMimiOfficial) just scroll to the bottom :3   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnekomimiofficial%2Fnekoconnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnekomimiofficial%2Fnekoconnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnekomimiofficial%2Fnekoconnect/lists"}