Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prevent catbomb triggered by poor networking #1904

Open
Javran opened this issue Mar 19, 2017 · 7 comments
Open

prevent catbomb triggered by poor networking #1904

Javran opened this issue Mar 19, 2017 · 7 comments

Comments

@Javran
Copy link
Member

Javran commented Mar 19, 2017

could be a really weird idea.

say when a player is playing the game, have some background services that keeps pinging to some common sites (could be DMM itself, google, whatever, or other means of keep detecting whether the network is fine), if there are consecutive disconnection detected, we pop up a alert or confirm, it will completely freeze the game, which is the purpose: user will have a chance to troubleshot the problem before dismissing the dialog instead of waiting for the ultimate catbomb to come (especially when user are in battle animations).

@richarddoge8079
Copy link

One way to do it is to create a script to send short burst ping to dmm/KC server, short enough to get an immediate response. When the ping doesn't get any response then it will proceed to freeze the flash process and notify the player whether the connection is being interrupted. Of course I'm not sure if it's possible to freeze the flash process.

@gensuihime
Copy link

@richarddoge8079
Pinging a server from multiple ends constantly is, in essence, a Ping Flood, as written and explained here in https://www.incapsula.com/ddos/attack-glossary/ping-icmp-flood.html

Which could result in an IP ban from DMM's end. There's no way to retroactively check the network connection without active intervention in the connection itself with DMM's servers, from multiple users, which could be mistaken for Denial of Service attacks.

I'm not even sure you can freeze the flash object anyway. Especially if you're on DMM's website. You'd probably have to manually stop the page like The Great Suspender extension.

@richarddoge8079
Copy link

While researching on this particular feature, I think we can use AJAX call request to detect connection to the internet, which sounds a bit similar to the ping server method but I'll have to determine if multiple players doing AJAX call would cause request flooding to the server and if that would risk the player being banned. I'm still figuring the failsafe to prevent that from happening.

For flash object freezing, I'm figuring out a more subtle solution to it, like a warning or a pop up notification of sorts if freezing it is impossible.

P/S: Get me assigned to this task so I wouldn't forget it later

@ethrundr
Copy link
Member

@richarddoge8079 I'm trying to assign you, but it seems that your name isn't appearing in the list.

@Javran
Copy link
Member Author

Javran commented Apr 4, 2017

I just want to point out that target site doesn't have to be DMM itself, the purpose is just to have a quick way of detecting connectivity. so you can even ping 8.8.8.8 instead. besides, if it's really the case that DMM is down, there's nothing we can do anyways.
also, one might consider to make target site configurable, in some countries google or DMM is banned, even proxys don't do a very good job, which might cause this feature to generate false alarms.

@chronomeister
Copy link

Just passing through and I see this. I see its a bit old but there's a point I feel the need to make.

Just want to bring up that I very strongly discourage using anything DMM as your test endpoint. There is direct evidence of the devs banning regular pings to the server that the game client did not make. My mind is a little fuzzy but believe it was KanColleTool but whatever the app was it had a feature that pinged the server every 60 minutes for something. The devs handed out a banwave and everything pointed to anyone using this feature was hit with a ban.

@ethrundr
Copy link
Member

As for the ping target, I suggest to use Google DNS (8.8.8.8 and 8.8.4.4), since Google themselves encourage Internet users to ping them in order to test the connection. So in this case, flooding Google DNS with Pings won't bear much problems.

However, keep in mind regarding the freezing of flash or stopping the page from loading.
Kancolle is bit sensitive with dataflow and persistent connection, so if you handled this improperly, rather than giving warning to the user, you verdict them with auto-cat instead due to data transmission failure.
Keep in mind that under no circumstances, data transmission may be halted during playing KC. If it is halted mid-way, it'll counted as failure upon timeout, and guarantee a catbomb (or at least, eternal loading) in few seconds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants