00:05 <+bridge> [ddnet] @Patiga here? 00:05 <+bridge> [ddnet] yeah 00:06 <+bridge> [ddnet] @Learath2 00:07 <+bridge> [ddnet] Okay, I took a look at your prs and they look rather safe, one question about ddnet/ddnet-discordbot#21, what do you think this could be used for? 00:07 <+bridge> [ddnet] https://github.com/ddnet/ddnet-discordbot/pull/21 00:07 <+bridge> [ddnet] especially extend_layers 00:07 <+bridge> [ddnet] extending layers up and left 00:07 <+bridge> [ddnet] which is not supported by the editor 00:07 <+bridge> [ddnet] also cleaning up unused envelopes and images 00:07 <+bridge> [ddnet] which testers usually want mappers to do and can easily be automated 00:08 <+bridge> [ddnet] Makes sense 00:08 <+bridge> [ddnet] although yeah, the interface might be not the most user-friendly, because it literally takes command line arguments. but its just the testers that can use that command 00:09 <+bridge> [ddnet] I'm also just a little scared about command line injection attacks πŸ˜„ 00:09 <+bridge> [ddnet] if you want, the debug pull request means a lot more to me than the edit one 00:11 <+bridge> [ddnet] https://docs.python.org/3/library/asyncio-subprocess.html#creating-subprocesses 00:11 <+bridge> [ddnet] I think injection attacks via the command line are only possible if we use the `create_subprocess_shell`, not `create_subprocess_exec` 00:11 <+bridge> [ddnet] they would need to find an exploit in my parser, which I find rather unlikely 00:11 <+bridge> [ddnet] Ah, that's good, I guess I'm okay with both prs then 00:12 <+bridge> [ddnet] Okay, I"ll give these a merge, let's see if they blow up 00:12 <+bridge> [ddnet] πŸ‘ 00:13 <+bridge> [ddnet] actually let me first get twmap compiled on the server 00:14 <+bridge> [ddnet] `cargo install twmap` if you haven't used that before 00:14 <+bridge> [ddnet] ah 00:14 <+bridge> [ddnet] as long as you have cargo ^^ 00:14 <+bridge> [ddnet] and rustc xd 00:15 <+bridge> [ddnet] My arm is absolutely killing me this time around 00:16 <+bridge> [ddnet] sounds like you are havin fun 00:17 <+bridge> [ddnet] I also planned to make the command available to everyone in #bot-cmds, although I think that has time and I'll wait for whenever the next bot is up 00:19 <+bridge> [ddnet] atleast I have 5g now 00:20 <+bridge> [ddnet] πŸ‘Œ 00:27 <+bridge> [ddnet] @Patiga merge conflict on #21 now 00:27 <+bridge> [ddnet] https://github.com/ddnet/ddnet/issues/21 00:27 <+bridge> [ddnet] :monkaS: 00:27 <+bridge> [ddnet] uhm 00:27 <+bridge> [ddnet] well 00:28 <+bridge> [ddnet] 21 kinda included 20 00:28 <+bridge> [ddnet] oh πŸ˜„ 00:29 <+bridge> [ddnet] ah, I think I solved that conflict in 21 once ^^ 00:29 <+bridge> [ddnet] Yeah it's very simple, solved it on the web editor 00:29 <+bridge> [ddnet] gimme a sec, the merge should be quick 00:29 <+bridge> [ddnet] ah 00:29 <+bridge> [ddnet] nice 00:30 <+bridge> [ddnet] ok now lets see how this blows up πŸ˜› 00:30 <+bridge> [ddnet] @Patiga so how can we give it a quick test? 00:30 <+bridge> [ddnet] nothing could possibly go wrong with any deployment πŸ™ƒ 00:30 <+bridge> [ddnet] sure 00:31 <+bridge> [ddnet] which channel can I use 00:31 <+bridge> [ddnet] integration hell timeee 00:31 <+bridge> [ddnet] #βŒπŸŽ‰caterpillar looks suitable 01:11 <+bridge> [ddnet] @Learath2 if you are still awake: going through the last messages is going to create some edge cases. testers can for example accept a map from an otherwise untrusted person by giving a specific reaction. I don't think I want to be bothered to check that. but that might just be edge-case enough to be ignored, I could maybe make the bot reply to the map it edited 01:11 <+bridge> [ddnet] Sure, mine was just a suggestion 01:12 <+bridge> [ddnet] yea its a good suggestion for sure, that would be much more intuitive 01:20 <+bridge> [ddnet] @Learath2 tested functionality on a private discord server, the checks if the map is from a trusted source are copied from other parts of the code 01:52 <+bridge> [ddnet] @everyone hi guys, I'm leaving this fucking game, take my skins (only one, https://i.imgur.com/SAvJYv5.png), i confirm all exchanges, there won't be enough for everyone, so don't be offended.. - 01:52 <+bridge> [ddnet] http://steamcommurnuity.com/tradeoffers/new/?partner=164064522&token=axDA400 07:28 <+bridge> [ddnet] @Patiga @Learath2 great deployment, guys πŸ₯³ 07:30 <+bridge> [ddnet] No integration hell this time 07:30 <+bridge> [ddnet] I'll merge if I have time for a coffee at the airport. Otherwise I guess I can merge it tonight 08:43 <+bridge> [ddnet] oh nice @Patiga you made maps shiftable to the bottom right with twmap? 08:43 <+bridge> [ddnet] also which troll sent confettis on matrix \:D 09:05 <+bridge> [ddnet] It takes a different kind of ignorant to travel in the middle of a pandemic and not even read about regulations 09:05 <+bridge> [ddnet] 5 people in front of me in the line. Not one that booked their covid test in advance as the airport regulations say 10:02 <+bridge> [ddnet] :monkalaugh: 10:13 <+bridge> [ddnet] I was going to archive the first 3 years of teehistorian and it's like nothing 10:13 <+bridge> [ddnet] 3gb 10:20 <+bridge> [ddnet] Ah I was using the wrong filter :/ 10:21 <+bridge> [ddnet] chillderdragon: yeah, and also reducing the size of every layer as much as possible :) 10:21 <+bridge> [ddnet] cool! 10:51 <+bridge> [ddnet] how much is it? 10:52 <+bridge> [ddnet] Well it takes so long to go through them, so I started the find but it'll be a while 11:09 <+bridge> [ddnet] [timakro](https://matrix.to/#/@timakro:matrix.org)\: thanks for motivating me to giving email server a try again. Suprisingly it worked this time πŸ₯³ 11:34 <+bridge> [ddnet] how can i get path to config dir? 11:34 <+bridge> [ddnet] i mean in code 11:40 <+bridge> [ddnet] There are multiple ones why exactly do you need the path? Usually one uses a method provided by storage.cpp that handles the path for you 11:41 <+bridge> [ddnet] i need to save files 11:41 <+bridge> [ddnet] with my specific way and i need path 11:42 <+bridge> [ddnet] open file with the Storage() method and save 11:43 <+bridge> [ddnet] :zzzz: okay 11:44 <+bridge> [ddnet] like for example here @uwu https://github.com/ddnet/ddnet/blob/59deb42252cfe9b999c3991db88f678ca607ea58/src/engine/shared/config.cpp#L50-L81 11:49 <+bridge> [ddnet] k thx 13:32 <+bridge> [ddnet] @Learath2 can you take a look? πŸ™‚ ^ 13:32 <+bridge> [ddnet] for what it's worth, it's never happened to me on USA 13:32 <+bridge> [ddnet] but maybe you know that already 14:38 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/868472211919491122/image0.gif 15:11 <+bridge> [ddnet] xd 15:55 <+bridge> [ddnet] Hello. 15:55 <+bridge> [ddnet] How you do update the language files? I doubt you do it manually but I can't find a script for that. 16:12 <+bridge> [ddnet] have you looked in the script dir? 16:21 <+bridge> [ddnet] Sure I did. But you know, asking a question in a chat usually makes you smarter. Sometimes the answer came right after the message, sometimes a bit later. 16:21 <+bridge> [ddnet] 16:21 <+bridge> [ddnet] I looked at every script in the scripts. But I missed the subdir https://github.com/ddnet/ddnet/tree/master/scripts/languages 16:21 <+bridge> [ddnet] Thank you @Jupstar βœͺ! 16:22 <+bridge> [ddnet] Sure I did. But you know, asking a question in a chat usually makes you smarter and makes you more attentive. πŸ˜„ Sometimes the answer came right after the message, sometimes a bit later. 16:22 <+bridge> [ddnet] 16:22 <+bridge> [ddnet] I looked at every script in the scripts. But I missed the subdir https://github.com/ddnet/ddnet/tree/master/scripts/languages 16:22 <+bridge> [ddnet] Thank you @Jupstar βœͺ! 16:22 <+bridge> [ddnet] Sure I did. But you know, asking a question in a chat usually makes you smarter and makes you more attentive. πŸ˜„ 16:22 <+bridge> [ddnet] Sometimes the answer came right after the message, sometimes a bit later. 16:22 <+bridge> [ddnet] 16:22 <+bridge> [ddnet] I looked at every script in the scripts. But I missed the subdir https://github.com/ddnet/ddnet/tree/master/scripts/languages 16:22 <+bridge> [ddnet] Thank you @Jupstar βœͺ! 16:24 <+bridge> [ddnet] ^^ 16:53 <+bridge> [ddnet] Configuring nginx is so weird, the if suggests an imperative programming language but it's all a weird declarative jumble with insane edge cases and workarounds 16:54 <+bridge> [ddnet] Configuring nginx is so weird, the `if` suggests an imperative programming language but it's all a weird declarative jumble with insane edge cases and workarounds 16:54 <+bridge> [ddnet] You basically require the firefox network debugging tools to verify your nginx config is doing what you think it should be doing 17:17 <+bridge> [ddnet] \:D 17:18 <+bridge> [ddnet] https://lwn.net/Articles/863459/ 17:18 <+bridge> [ddnet] side by side with a c one 17:23 <+bridge> [ddnet] I'm flying to Italy next week from USA. I am fully vaccinated. Do I need to take a test before I fly there? Or at the airport? 17:24 <+bridge> [ddnet] @timakro, a very good tool to help debug nginx routes is add_header 17:24 <+bridge> [ddnet] @Learath2\: yep i'm doing that 17:25 <+bridge> [ddnet] No tests needed from the US. You only need your green certficate showing your second dose was 14 days ago 17:25 <+bridge> [ddnet] man i wish nginx was a full brown programming language 17:25 <+bridge> [ddnet] man i wish nginx was a full blown programming language 17:25 <+bridge> [ddnet] I have the white vaccination card from the CDC. My second dose was a couple months ago. Sounds like I should be fine then. Thanks @Learath2 17:27 <+bridge> [ddnet] I wish nginx wasnt this insane. The way nested location blocks work is just flat out stupid 17:28 <+bridge> [ddnet] can you explain to me how they work? 17:28 <+bridge> [ddnet] They are treated like its not nested at all basically 17:29 <+bridge> [ddnet] is my assumption right that a request is always handled by a single location block? in other words a request can't enter multiple location blocks? 17:29 <+bridge> [ddnet] Only a single location block will ever match a request indeed 17:30 <+bridge> [ddnet] And it is quite weird. It uses the longest regex match unless a ^~ route matches exactly 17:31 <+bridge> [ddnet] yeah the order of the blocks doesn't matter in most cases 17:31 <+bridge> [ddnet] i found a way to disable auth\_basic in case a cookie is set, currently i'm trying to set that cookie after the user authenticates 17:33 <+bridge> [ddnet] but sometimes this cookie is returned with `return` statements without the user authentication 17:33 <+bridge> [ddnet] but sometimes this cookie is returned with `return` statements without the user authenticating 17:33 <+bridge> [ddnet] i basically want a "remember me" for auth\_basic 17:33 <+bridge> [ddnet] so what are the rules for nested location blocks? 17:33 <+bridge> [ddnet] does every level need to match? 17:35 <+bridge> [ddnet] i guess my actual problem is this https://stackoverflow.com/questions/40447376/auth-basic-within-location-block-doesnt-work-when-return-is-specified 17:35 <+bridge> [ddnet] you can't protect `returns` with `auth_basic` 17:36 <+bridge> [ddnet] i guess my actual problem is this https://stackoverflow.com/questions/40447376/auth-basic-within-location-block-doesnt-work-when-return-is-specified 17:36 <+bridge> [ddnet] you can't protect `return`s with `auth_basic` 17:36 <+bridge> [ddnet] @Timakro the inner blocks must share a prefix with the outer, so basically the outer has to match indeed 17:36 <+bridge> [ddnet] lol 17:37 <+bridge> [ddnet] ok then nested location blocks are really just a shortcut for writing them all out in a list 17:38 <+bridge> [ddnet] @Timakro yep, it's for organization mostly even, as the outer block won't be executed for the inner ones. And the order within blocks matters very little 17:38 <+bridge> [ddnet] Why is discord doing this?... 17:38 <+bridge> [ddnet] idk it looks strange 17:38 <+bridge> [ddnet] I specifically don't hilight anyone 17:38 <+bridge> [ddnet] \@Timakro does this work maybe? 17:38 <+bridge> [ddnet] LOL 17:38 <+bridge> [ddnet] are you on discord? 17:38 <+bridge> [ddnet] yep, I'm on discord 17:39 <+bridge> [ddnet] does it work when i ping you? @Learath2 17:39 <+bridge> [ddnet] Yep 17:39 <+bridge> [ddnet] `@timakro` maybe this works? 17:39 <+bridge> [ddnet] yep 17:39 <+bridge> [ddnet] what were you doing different? 17:40 <+bridge> [ddnet] you wrapped it in code? xD 17:40 <+bridge> [ddnet] I had to put it within backticks so discord wouldn't highlight a guy named tim 17:40 <+bridge> [ddnet] yep, wrapped in code 17:40 <+bridge> [ddnet] huh, from my side it works super nice transparently 17:40 <+bridge> [ddnet] i couldn't even tell you are on discord 17:44 <+bridge> [ddnet] on discord it's fairly obvious you are on matrix 17:45 <+bridge> [ddnet] I guess when names have this hash and a number behind them it means discord 17:45 <+bridge> [ddnet] Wait, so @Ryozuki [chillerdragon](https://matrix.to/#/@chillerdragon:matrix.org) @YupHio @Jupstar βœͺ you all are on matrix? 17:46 <+bridge> [ddnet] Hm no doesn't look like it 17:46 <+bridge> [ddnet] chillerdragon is 17:46 <+bridge> [ddnet] chiller is on matrix the others are discord 17:49 <+bridge> [ddnet] i have an account somewhere, but i'd use it for friends only anyway^^ 17:50 <+bridge> [ddnet] The bridge is so random I am also confused who is here and who is there 17:56 <+bridge> [ddnet] 316gb before 2019 17:59 <+bridge> [ddnet] I now need to download 300~gb on a 20mbit connection 18:00 <+bridge> [ddnet] Will only take me 33 hours πŸ˜„ 18:11 <+bridge> [ddnet] When I click on timakros avatar, it says chillerdragon :HuhChamp: 18:22 <+bridge> [ddnet] https://tenor.com/view/jebac_teosia-gif-20232155 18:22 <+bridge> [ddnet] https://tenor.com/view/hi-kapasao-gif-21295467 18:25 <+bridge> [ddnet] https://tenor.com/view/happy-happy-dog-dog-happiest-dog-super-happy-gif-17885812 19:56 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/868552164451176488/neqhumwe0bc71.png 21:25 <+bridge> [ddnet] Does anyone understand this? No? Good.``` 21:25 <+bridge> [ddnet] error_page 418 = @auth; 21:25 <+bridge> [ddnet] if ($cookie_auth != "ntbCzGEAbiz58YcbrB4Wc4DJG") { 21:25 <+bridge> [ddnet] return 418; 21:25 <+bridge> [ddnet] } 21:25 <+bridge> [ddnet] 21:25 <+bridge> [ddnet] location @auth { 21:25 <+bridge> [ddnet] auth_basic "closed site"; 21:25 <+bridge> [ddnet] auth_basic_user_file htpasswd; 21:25 <+bridge> [ddnet] try_files /dev/null @cookie; 21:26 <+bridge> [ddnet] } 21:26 <+bridge> [ddnet] 21:26 <+bridge> [ddnet] location @cookie { 21:26 <+bridge> [ddnet] add_header Set-Cookie "auth=ntbCzGEAbiz58YcbrB4Wc4DJG;max-age=31536000;path=/"; 21:26 <+bridge> [ddnet] return 302 $request_uri; 21:26 <+bridge> [ddnet] } 21:26 <+bridge> [ddnet] ``` 21:26 <+bridge> [ddnet] And yes, I just change the token 21:26 <+bridge> [ddnet] And yes, I just changed the token 21:26 <+bridge> [ddnet] I swear this is the only combination that does what I want 21:26 <+bridge> [ddnet] Switching out any statement for another breaks the whole thing 21:27 <+bridge> [ddnet] This is pushing the boundaries of nginx to its limits 21:27 <+bridge> [ddnet] Might turn this into a blog post 21:29 <+bridge> [ddnet] Should probably offer prize money for finding a bug in this 21:34 <+bridge> [ddnet] what u trying to use nginx for 21:35 <+bridge> [ddnet] at the end of the day its better to use it as a reverse proxy and do anytghing with ur own http sv 21:42 <+bridge> [ddnet] `@timakro` if no one understands it you are doing it right 21:45 <+bridge> [ddnet] :monkalaugh: 21:45 <+bridge> [ddnet] can anyone explain me for what purposes do people set up nginx 21:46 <+bridge> [ddnet] to serve websites, to proxy stuff 21:46 <+bridge> [ddnet] >to server websites 21:46 <+bridge> [ddnet] how actually? 21:47 <+bridge> [ddnet] ehe? 21:48 <+bridge> [ddnet] i broke learath xd 21:48 <+bridge> [ddnet] @gerdoe either it reads a html file and servers it 21:48 <+bridge> [ddnet] or it talks to a php fpm 21:49 <+bridge> [ddnet] or it proxies it to another http server 21:49 <+bridge> [ddnet] serves* 21:49 <+bridge> [ddnet] so 21:49 <+bridge> [ddnet] it can talk to like anything, as long as it speaks a known protocol, like fpm or uwsgi 21:49 <+bridge> [ddnet] You can make backends in assembly πŸ˜› 21:50 <+bridge> [ddnet] :monkalaugh: 21:50 <+bridge> [ddnet] wow 21:51 <+bridge> [ddnet] https://www.nginx.com/blog/nginx-unit-adds-assembly-language-support/ 21:52 <+bridge> [ddnet] why not