space-wizards / SS14.Launcher

Launcher for Space Station 14.
https://spacestation14.io
MIT License
36 stars 61 forks source link

Need system to prompt server privacy policy approval before connect #194

Open PJB3005 opened 1 week ago

PJB3005 commented 1 week ago

This would enable us to update Wizden's privacy policy and prompt on rejoin nicely. I'm sure other legally-conscious codebases would like it too.

Necessary for https://github.com/space-wizards/space-station-14/pull/33339 to get deployed on WizDen.

Not sure how this would work right now. Maybe just allow servers to provide a "revision" and "link" property in their info data, then the launcher would just permanently store the "Revision" field in a table if you press accept. This requires servers to not be cunts and re-use privacy policy configs from other servers. Anything more complicated would probably be hella complicated?

sleepyyapril commented 1 week ago

I think using something similar to a "git diff" wouldn't be too difficult, especially if it was quite literally just a git diff. A "changes since last viewed" is also maybe legally required anyway?

PJB3005 commented 1 week ago

I think using something similar to a "git diff" wouldn't be too difficult, especially if it was quite literally just a git diff. A "changes since last viewed" is also maybe legally required anyway?

That would require the launcher to fetch the privacy policy on every connection attempt. Not to mention having to be able diff, and display HTML... Let's not.

0x6273 commented 1 week ago

I think using something similar to a "git diff" wouldn't be too difficult, especially if it was quite literally just a git diff. A "changes since last viewed" is also maybe legally required anyway?

That would require the launcher to fetch the privacy policy on every connection attempt. Not to mention having to be able diff, and display HTML... Let's not.

You could just send the hash of the text, and only send the full text if it differs from the last accepted policy.

PJB3005 commented 1 week ago

I think using something similar to a "git diff" wouldn't be too difficult, especially if it was quite literally just a git diff. A "changes since last viewed" is also maybe legally required anyway?

That would require the launcher to fetch the privacy policy on every connection attempt. Not to mention having to be able diff, and display HTML... Let's not.

You could just send the hash of the text, and only send the full text if it differs from the last accepted policy.

Now you need a system that is robust to any differences in minor formatting that may occur as part of a site revamp, without changing the actual contents of the ToS. And again, HTML. Not happening.

0x6273 commented 1 week ago

You could just send the hash of the text, and only send the full text if it differs from the last accepted policy.

Now you need a system that is robust to any differences in minor formatting that may occur as part of a site revamp, without changing the actual contents of the ToS. And again, HTML. Not happening.

Do you want like a button that opens a web page with the ToS in an external web browser? I imagined the ToS would just be shown directly in the launcher, inside a scrollable textbox.

PJB3005 commented 1 week ago

You could just send the hash of the text, and only send the full text if it differs from the last accepted policy.

Now you need a system that is robust to any differences in minor formatting that may occur as part of a site revamp, without changing the actual contents of the ToS. And again, HTML. Not happening.

Do you want like a button that opens a web page with the ToS in an external web browser? I imagined the ToS would just be shown directly in the launcher, inside a scrollable textbox.

External browser, yes. I'm not interested in formatting the minimum amount of rich text needed, not to mention the format that would take if it wasn't HTML.

VasilisThePikachu commented 6 days ago

So basically the launcher stores the last accepted tos version (which will be on the /info server api) and trust the server to up the value when they update their TOS significantly?

Thats the easiest way to do it, no need for fancy hash checks or diffing imo. Although it would suck in the case of a server updating their policy without upping this "tos version" but idk how else to do it.