Giter VIP home page Giter VIP logo

anchor's Introduction

Anchor

Anchor is a bancho server designed for older osu! clients. It supports every client from b282 up to the latest version that is currently available.

Please view this repository for setup instructions!

Pretty much everything has been completed now. The only things missing would probably be the irc server. You can view the todo's here.

anchor's People

Contributors

dependabot[bot] avatar how-to-do-frontend avatar kanaarima avatar lekuruu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

anchor's Issues

`!mp start` command without args doesn't work?

I've noticed while testing, that the !mp start command doesn't work when not providing any arguments.
The client will just kinda... uhh... exit out of the match and teleport back to the menu, with the text There was an error while loading this beatmap....

Remove discord-webhook-logging

This was probably not as useful as I hoped it would be...
I will probably replace it with a separate logging file, that only stores errors and warnings.

Add client version limit

I am planning to host a http to tcp bancho proxy for osu.py bots to use. However, I don't want to have other people connect using e.g. 2023 clients.

Add login history

There should be a table for every login attempt, including client hash, ip address, and so on. The user should also get an email when a user logs in from another device.

Add chat message rate limits

There should be a rate limit for chat messages to prevent spam. Automatic chat moderation of some kind would be nice as well.

Refactor beatmap info reply

The beatmap info packets are a bit confusing to me...
First the client sends a BEATMAP_INFO_REQUEST packet, which contains beatmap filenames and ids. Then the server responds with a BEATMAP_INFO_REPLY packet that includes all of the requested beatmaps with the following attributes:

  • index
  • beatmap_id
  • beatmapset_id
  • thread_id
  • beatmap_status
  • personal_best
  • beatmap_md5

The wierd part is the index. The index should be there to identify the beatmap that was sent in the request. That all makes sense until you see that the index is only meant for the beatmap filenames? At the time of discovery I asked myself why the beatmap ids are even there in the request, because they are not used in the reply...

However, I recently discovered that the index can just be set to -1 and the client will just find the index by the beatmap id. That means that I should be able to use the beatmap ids from the request by just setting the index to -1 for every id in the request.

It is very difficult to explain, but in the end, I am the one who gets to implement it :D

Implement `!multi` command

Image

An interesting command that you could use to check if somebody was multiaccounting... This should probably only be accessible to admins.

Implement irc server

As you can probably tell, this issue has been on my todo list for a long time. The IRC server will be necessary for clients below b282 and tourney matches that could happen in the future.

Add mutliplayer match history

I want to add a table for multiplayer match history. This could look something like this on the frontend part:

example

Or view the link here.

Implement tourney clients

This has been on my list for quite some time. The tourney client was actually already implemented back then and could be accessed by supporters just like nowadays.
That also means I have to implement them :D

What currently happens is that only one client can connect to bancho, which is obvious. The other ones will just time out, just like normal clients do.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.