00:03 <+bridge_> [ddnet] If I take the laptop I have to take my ugly bag :/ 00:20 <+bridge_> [ddnet] well depends where u going and how long 00:21 <+bridge_> [ddnet] sweden, a week 00:22 <+bridge_> [ddnet] who u going with 00:22 <+bridge_> [ddnet] flipping a coin and realizing how much you dislike the outcome is more useful for decision making than the actual result of the flip 00:23 <+bridge_> [ddnet] if u going with ur gf, then no. if u going with mates, then no, if u going to see family, then yes. if u going by urself then go to the club instead 00:26 <+bridge_> [ddnet] what is this gf thing you are talking about? 😛 00:26 <+bridge_> [ddnet] unless you do this which i approve @Learath2 https://www.youtube.com/watch?v=4lNaATnghJE 00:26 <+bridge_> [ddnet] Going to visit a friend 00:27 <+bridge_> [ddnet] lmao 00:27 <+bridge_> [ddnet] u get work and pleasure in one! easy solution 00:28 <+bridge_> [ddnet] let me try 00:29 <+bridge_> [ddnet] you know what, I'll take it, just incase ddnet decides to blow up while I'm away 00:31 <+bridge_> [ddnet] Sounds like we need a DR scenario when @Learath2 not here 00:31 <+bridge_> [ddnet] If you give me the password, I'll keep it safe 😉 01:52 <+bridge_> [ddnet] @murpi still awake and can review? ^ 01:57 <+bridge_> [ddnet] ah @louis, maybe you're from a better time zone and can proofread this? ^ 02:19 <+bridge_> [ddnet] hi 02:20 <+bridge_> [ddnet] ```On Thursday, September 30 DDNet reached its ten millionth finish. It was by [MaKaBaKa](https://ddnet.tw/players/MaKaBaKa/) on the map [Cool](https://ddnet.tw/maps/Cool/) on 2021-09-30 14:26:48 UTC+2.``` 02:20 <+bridge_> [ddnet] add a comma after 30 i think 02:21 <+bridge_> [ddnet] maybe change `on 2021-09-30 14:26:48 UTC+2.` to `at 14:26:48 UTC+2.` since you already mentioned the date 02:22 <+bridge_> [ddnet] everything else is good imo 02:22 <+bridge_> [ddnet] @heinrich5991 02:24 <+bridge_> [ddnet] thanks 🙂 08:17 <+bridge_> [ddnet] its hacktoberfest 08:18 <+bridge_> [ddnet] https://hacktoberfest.digitalocean.com/ 09:25 <+bridge_> [ddnet] finally 11:27 <+bridge_> [ddnet] cool \o/ 12:50 <+bridge_> [ddnet] https://twitter.com/Sinoc229/status/1445639261974261766?t=FNtw7hqUe_Z2bo-cxXKGzA&s=19 12:50 <+bridge_> [ddnet] wild 12:51 <+bridge_> [ddnet] use a password manager and randomly generated passwords! 12:56 <+bridge_> [ddnet] that's crazy 13:16 <+bridge_> [ddnet] That's the Price for allowing hot tub and hypersexual content :feelspepoman: 13:17 <+bridge_> [ddnet] That's the Price for allowing hot tub and hypersexual content :feelspepoman:, killing the platform 13:57 <+bridge_> [ddnet] https://keepassxc.org/ 14:01 <+bridge_> [ddnet] bitwarden 14:33 <+bridge_> [ddnet] That is what makes money :) 14:34 <+bridge_> [ddnet] I migrated to bitwarden when lastpass went full capitalist. Fairly happy with it 14:54 <+bridge_> [ddnet] notebook irl 15:19 <+bridge_> [ddnet] @gerdoe u cant copy paste lengthy passwords that way 15:26 <+bridge_> [ddnet] use 1234 15:26 <+bridge_> [ddnet] :monkalaugh: 15:29 <+bridge_> [ddnet] i switched to keepassxc 15:29 <+bridge_> [ddnet] i wasnt using any password manager xd 15:29 <+bridge_> [ddnet] now im using 60+ length passwords :monkalaugh: 15:29 <+bridge_> [ddnet] :justatest: 15:50 <+bridge_> [ddnet] the big brain thing to do is using password the letter on your keyboard like qwertyuiop etc 16:01 <+bridge_> [ddnet] @Ryozuki I'm using bitwarden 16:04 <+bridge_> [ddnet] Since I started using bitwarden I've been shocked by how many sites forbid long password or special characters in passwords 16:04 <+bridge_> [ddnet] At least they don't just remove those chars and shorten the pw without warning you, my bank used to do that 😄 16:05 <+bridge_> [ddnet] agreed 16:06 <+bridge_> [ddnet] a 22 character alphanumeric password gives you 128 bit security, which is enough 16:06 <+bridge_> [ddnet] Sure, but if you do anything other than hashing a pw you're probably doing something wrong 16:06 <+bridge_> [ddnet] and for hashing special chars and length don't matter much 16:07 <+bridge_> [ddnet] md5 uses 128 bit and there's nothing wrong with md5 :monkaS: 16:07 <+bridge_> [ddnet] length yes (outside of protection against DoS by really long passwords >1kb), special chars might be a customer help issue when people try to type their passwords on different keyboards 16:07 <+bridge_> [ddnet] hitler was vegetarian 16:07 <+bridge_> [ddnet] could've been worse 16:08 <+bridge_> [ddnet] Max upload size is limited in PHP by default. 16:10 <+bridge_> [ddnet] @Fän django had a DoS vulnerability with password length. max upload size sounds like something in the range of >10mb, so maybe that wouldn't help with intentionally slow password hashing algorithms 16:10 <+bridge_> [ddnet] PHP usually instantly dies if max upload size is hit 16:10 <+bridge_> [ddnet] (>2Mb by default iirc) 16:12 <+bridge_> [ddnet] > By default, the maximum upload file size for PHP scripts is set to 128 megabytes. 16:12 <+bridge_> [ddnet] It's set to 2MB with Plesk. 16:12 <+bridge_> [ddnet] django restricted password length to 4KB following the DoS vulnerability 16:13 <+bridge_> [ddnet] sounds like the max upload size wouldn't really help in that case 16:13 <+bridge_> [ddnet] (also, django is a python framework, not php) 16:13 <+bridge_> [ddnet] I don't know django at all 16:13 <+bridge_> [ddnet] so makes sense 16:13 <+bridge_> [ddnet] We use Laravel for anything custom 16:21 <+bridge_> [ddnet] im not gonna remember a 22 char pw so why not just use a 60 char one 16:22 <+bridge_> [ddnet] I see no advantage of a 60 character password over a 22 character password 16:23 <+bridge_> [ddnet] a little advantage of shorter passwords, an advantage that I used before, is: you can copy them more easily by typing them (into a not-fully-trusted computer) 16:24 <+bridge_> [ddnet] some services can't keep 60 length password kekw 16:24 <+bridge_> [ddnet] none that i use cant 16:24 <+bridge_> [ddnet] also i dont share passwords so i would just use a shorter for that 17:49 <+bridge_> [ddnet] I saw you typing! 17:49 <+bridge_> [ddnet] 😛 17:49 <+bridge_> [ddnet] oh ma gawd 17:57 <+bridge_> [ddnet] Keep forgetting this is a thing in europe... ofc there is free wifi, even in busses 17:57 <+bridge_> [ddnet] in europe as opposed to? 17:57 <+bridge_> [ddnet] Turkey 17:57 <+bridge_> [ddnet] Free wifi is non-existant there. Even in places where it exists its like dialup speeds 17:59 <+bridge_> [ddnet] Its everywhere in italy too but italy also decided 1mbps is enough 18:08 <+bridge_> [ddnet] i think there is free wifi here in barcelona too 18:09 <+bridge_> [ddnet] but idk for sure i have 50gb data i never use :monkalaugh: 18:09 <+bridge_> [ddnet] so many prs 18:09 <+bridge_> [ddnet] when next version 18:11 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/compare/15.5.4...master 18:11 <+bridge_> [ddnet] its already double size 18:11 <+bridge_> [ddnet] double commit size* 18:11 <+bridge_> [ddnet] than this https://github.com/ddnet/ddnet/compare/15.4...15.5.4 18:11 <+bridge_> [ddnet] 433 vs 210 :poggers: 18:18 <+bridge_> [ddnet] `"address":"tw-0.6+udp://connecting-address.invalid:8303"` 18:19 <+bridge_> [ddnet] is that too overkill? allows the server to specify the connection URL with only the IP address missing, because it might not know its own IP address 18:19 <+bridge_> [ddnet] (for the register API) 18:19 <+bridge_> [ddnet] alternative would be something like "port":"8303", would make it harder to add query parameters etc. though 18:20 <+bridge_> [ddnet] `"port":8303`, I mean 18:20 <+bridge_> [ddnet] huge release, epic 18:20 <+bridge_> [ddnet] i mean 18:20 <+bridge_> [ddnet] @Learath2 @Ryozuki you sure have an opiion on the above? 18:20 <+bridge_> [ddnet] why make address be so cluttered, maybe just put "twprotocol: "0.6", "protocol": "udp" address: "ip or null", port: "" 18:21 <+bridge_> [ddnet] this seems more machine friendly 18:21 <+bridge_> [ddnet] no need to parse 18:21 <+bridge_> [ddnet] Above as in the statefulness pr or the protocol stuff? 18:21 <+bridge_> [ddnet] protocol 18:21 <+bridge_> [ddnet] whats the exact format for tw-0.6 18:21 <+bridge_> [ddnet] I think you can omit the protocol 18:22 <+bridge_> [ddnet] the idea of making the connection a URL at all is that you can copy-paste it into the client 18:22 <+bridge_> [ddnet] what if someone makes their format dd+0.7 18:22 <+bridge_> [ddnet] ah 18:22 <+bridge_> [ddnet] 0.6 will never run over quic 18:22 <+bridge_> [ddnet] Nor will ddnet15 e.g. 18:22 <+bridge_> [ddnet] ddnet runs over w(eb)s(ockets) though 18:23 <+bridge_> [ddnet] Hm that is an issue :/ 18:23 <+bridge_> [ddnet] Do we need to let ws servers register? 18:23 <+bridge_> [ddnet] anyway, the scheme isn't really up for debate, it's already locked in stone 😅 18:23 <+bridge_> [ddnet] well its ok 18:23 <+bridge_> [ddnet] as in it's used in the server info 18:24 <+bridge_> [ddnet] I was more wondering how to to the registration 18:24 <+bridge_> [ddnet] Ah, I see what you mean 18:24 <+bridge_> [ddnet] Well I think sending it in pieces is easier, no? I don't like string paraing to figure out where to insert the ip 18:26 <+bridge_> [ddnet] it's probably not easier, there are URL parsing libraries for rust (which the master server was going to be written in, or not?) 18:26 <+bridge_> [ddnet] I currently have: 18:26 <+bridge_> [ddnet] yes 18:27 <+bridge_> [ddnet] a url parsing lib made by mozilla 18:27 <+bridge_> [ddnet] fully compliant 18:27 <+bridge_> [ddnet] Wym not easier? Separate fields would just be combined with a format! 18:27 <+bridge_> [ddnet] https://docs.rs/url/2.2.2/url/ 18:27 <+bridge_> [ddnet] ```rs 18:27 <+bridge_> [ddnet] if register.address.scheme() != "tw-0.6+udp" { 18:27 <+bridge_> [ddnet] return Err("register address must start with tw-0.6+udp://".into()); 18:27 <+bridge_> [ddnet] } 18:27 <+bridge_> [ddnet] if register.address.host_str() != Some("connecting-address.invalid") { 18:27 <+bridge_> [ddnet] return Err("register address must have domain connecting-address.invalid".into()); 18:27 <+bridge_> [ddnet] } 18:27 <+bridge_> [ddnet] // [...] 18:27 <+bridge_> [ddnet] let mut address = register.address.clone(); 18:27 <+bridge_> [ddnet] address.set_ip_host(remote_address).unwrap(); 18:27 <+bridge_> [ddnet] ``` 18:27 <+bridge_> [ddnet] 🤓 18:28 <+bridge_> [ddnet] not easier if you want to ensure that it results in a well-formed URL. mh. maybe, since IP addresses are always well-formed in the URL 18:28 <+bridge_> [ddnet] Ah with a lib I can see how it's not hard 18:28 <+bridge_> [ddnet] what about ipv6 18:29 <+bridge_> [ddnet] it'll™ be supported by making the game server connect via IPv4 and IPv6 to the master server alternatingly 18:33 <+bridge_> [ddnet] I think you have a token to merge the two registrations or sth, right? 18:33 <+bridge_> [ddnet] that's the current plan, a secret token by the game server 18:33 <+bridge_> [ddnet] Proxy support, when? 18:34 <+bridge_> [ddnet] wdym, proxy support? for client <-> game server connections? 18:34 <+bridge_> [ddnet] client <-> proxy <-> game server 18:35 <+bridge_> [ddnet] reverse proxy or forward proxy? probably reverse? 18:35 <+bridge_> [ddnet] reverse 18:35 <+bridge_> [ddnet] basically just add "real ip header" support 18:35 <+bridge_> [ddnet] in udp app 18:35 <+bridge_> [ddnet] yea 18:35 <+bridge_> [ddnet] that would do tbh 18:35 <+bridge_> [ddnet] plus write a proxy 18:35 <+bridge_> [ddnet] We already have an XDP proxy for FiveM 18:35 <+bridge_> [ddnet] 🤷 18:35 <+bridge_> [ddnet] I can likely release one publicly for ddnet 18:36 <+bridge_> [ddnet] Idea is to basically offer proxies just using ip:port 18:36 <+bridge_> [ddnet] without any setup on the actual machine running the game server 18:38 <+bridge_> [ddnet] is there some standard UDP reverse proxy format we could emulate? 18:38 <+bridge_> [ddnet] doesn't sound too hard otherwise 18:38 <+bridge_> [ddnet] I'm not aware of any 18:38 <+bridge_> [ddnet] maybe just add an "ip" field in the handshake packet? 18:39 <+bridge_> [ddnet] not to all packets? 18:39 <+bridge_> [ddnet] no, just to the handshake. 18:39 <+bridge_> [ddnet] ok, that sounds a bit more complicated then, but still not too much 18:39 <+bridge_> [ddnet] this would likely not be required at all, depending on if bans are IP based or not 18:39 <+bridge_> [ddnet] bans are IP based 18:39 <+bridge_> [ddnet] Well yeah, there's the issue then 18:39 <+bridge_> [ddnet] Check handshake packet for ip field, if it's not-set, use connection ip 18:40 <+bridge_> [ddnet] otherwise, register using IP in handshake 18:40 <+bridge_> [ddnet] *if* reverse proxy mode is on 18:40 <+bridge_> [ddnet] smiliar to X-Forwarded-For in nginx 18:40 <+bridge_> [ddnet] otherwise you're opening up yourself to be spoofed for all non-reverse-proxied servers 18:40 <+bridge_> [ddnet] Obviously you would set the proxy ranges 18:41 <+bridge_> [ddnet] Obviously you would set the proxy ranges to be whitelisted, everything else trying to act as a proxy would be dropped 18:41 <+bridge_> [ddnet] Obviously you would set the proxy ranges to be whitelisted, everything else trying to act as a proxy would be dropped / not acked 18:42 <+bridge_> [ddnet] but there are servers without reverse proxy, these must not accept the IP in the handshake header. so it must be a config option to enable the use of that header 18:42 <+bridge_> [ddnet] I'm not saying it should be a required header 18:42 <+bridge_> [ddnet] simply check packet length 18:42 <+bridge_> [ddnet] simply check packet length, that way you can determine if the header is there or not 18:42 <+bridge_> [ddnet] and of course add a toggle for proxy support 19:33 <+bridge_> [ddnet] GER1 just died 19:44 <+bridge_> [ddnet] @heinrich5991 Why does my server does not show up in the master in DDNet? 19:44 <+bridge_> [ddnet] `45.144.246.102:8303` 19:48 <+bridge_> [ddnet] it doesnt register 19:53 <+bridge_> [ddnet] now it is there for some reason, did i implement something incorrectly regarding the 0.6 register? 19:53 <+bridge_> [ddnet] it was like this before already, i never understood why because a manual request using Leak IP worked always 20:06 <+bridge_> [ddnet] what does "it doesn't register" mean? 20:06 <+bridge_> [ddnet] is it registered to the old masterservers? 20:07 <+bridge_> [ddnet] hm, it shows up now 21:01 <+bridge_> [ddnet] @nuborn\: did you plan to finish #4176 any time soon? 21:32 <+bridge_> [ddnet] #4176 21:32 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/pull/4176 21:43 <+bridge_> [ddnet] yes, think I can finish it soon, since I have most of the code done (not commited yet) 21:45 <+bridge_> [ddnet] awesome, makes the next release even better