01:31 <+bridge> [ddnet] has anyone a invite link to the tw data discord? 09:55 <+bridge> [ddnet] https://discord.gg/pBZGAWVC 10:28 <+ChillerDragon> o.O whats a tw data discord 10:28 <+bridge> [ddnet] it has gameskins and skins and stuff 10:28 <+ChillerDragon> nice 10:28 <+ChillerDragon> irc bridge when? 10:28 <+bridge> [ddnet] never 10:28 <+ChillerDragon> who runs the discord? and who made the gameskins? 10:29 <+bridge> [ddnet] the one who runs that discord doesnt even know what irc is bro 10:29 <+ChillerDragon> do i know him? 10:29 <+bridge> [ddnet] idk they put all gameskins they find 10:29 <+bridge> [ddnet] u find him finding him 10:29 <+ChillerDragon> sounds good 10:29 <+bridge> [ddnet] :greenthing: 11:04 <+bridge> [ddnet] idea for a new game mode: CatchTheTee (CTT) 11:04 <+bridge> [ddnet] - one tee trying to escape the others, let's call this tee a rabbit 11:04 <+bridge> [ddnet] - one or more tees trying to catch the rabbit, let's call them wolves 11:04 <+bridge> [ddnet] - to win as wolves, you have to hit the rabbit with a hammer 11:04 <+bridge> [ddnet] - to win as a rabbit, you have to avoid the wolves and reach a certain point on the map 11:04 <+bridge> [ddnet] - wolves are delayed at start by a few seconds 11:04 <+bridge> [ddnet] - rabbit can be chosen randomly at round begin 11:04 <+bridge> [ddnet] - some special maps are needed probably 11:04 <+bridge> [ddnet] 11:04 <+bridge> [ddnet] what do you think? 11:09 <+bridge> [ddnet] Isnt that like **xPanic** ? 11:10 <+bridge> [ddnet] there were some zombie escape type mods already 11:16 <+bridge> [ddnet] i've never played that one 11:27 <+ChillerDragon> does someone know a fast ftp tool to upload a lot of files at once? 11:28 <+bridge> [ddnet] put the files into zip/tar archive, upload and extract 11:29 <+ChillerDragon> thats not an option 11:29 <+ChillerDragon> i only have ftp access 11:29 <+ChillerDragon> or can i extract using ftp? 11:30 <+bridge> [ddnet] probably no 11:39 <+ChillerDragon> since i have multiple directorys i wonder if running multiple ftps uploads at the same time is dangerous 11:52 <+Ryozuki> ChillerDragon rsync? 11:52 <+ChillerDragon> it cant be run over ftp :/ 11:52 <+ChillerDragon> i wish rsync is so nice and fast 11:52 <+Ryozuki> ftp nobo 11:52 <+ChillerDragon> yea irk 11:52 <+Ryozuki> u live in the 2000s 11:52 <+Ryozuki> or wut 11:52 <+ChillerDragon> my hoster does 11:52 <+ChillerDragon> i picked it because it offers unlimited diskspace :D 11:52 <+ChillerDragon> lifetime 11:52 <+ChillerDragon> pay one 11:52 <+Ryozuki> doesnt ssh have sftp or smth 11:53 <+ChillerDragon> i dont have sftp nor ssh 11:53 <+ChillerDragon> only ftp 11:53 <+Ryozuki> omg 11:53 <+Ryozuki> switch hoster 11:53 <+Ryozuki> why u dont have full control 11:53 <+ChillerDragon> other hosters are too expensive 11:53 <+Ryozuki> ??? 11:53 <+Ryozuki> hetzner vps can go as low as 3€ 11:53 <+Ryozuki> ur getting scammed wiht ftp stuff 11:53 <+ChillerDragon> but that wont run my stuff 11:53 <+Ryozuki> what stuff 11:53 <+ChillerDragon> mc server 11:54 <+Ryozuki> howmuch u pay 11:54 <+Ryozuki> for ur ftp 11:54 <+ChillerDragon> nothing 11:54 <+Ryozuki> xd 11:54 <+ChillerDragon> well i paid once 11:54 <+ChillerDragon> its lifetime server xd 12:01 <+bridge> [ddnet] lifetime doesn't mean your lifetime, but the lifetime of the company, which can be dissolved when it's not making money anymore. 12:16 <+ChillerDragon> yea ik 12:20 <+ChillerDragon> i still expect the lifetime of the company to be long enought that its the cheapest option for a server with strong cpu ram and infinite disk 12:22 <+bridge> [ddnet] infinite disk? what's that? 😄 12:38 <+bridge> [ddnet] Time to write a teehistorian to mc map converter 12:39 <+ChillerDragon> xd 16:27 <+bridge> [ddnet] @ChillerDragon 17:16 <+bridge> [ddnet] @heinrich5991 hi, do you happen to know if there is a reliable way to know if after a server info request, there may be "more" packets? 17:17 <+bridge> [ddnet] without having to do another recv obviously 17:19 <+bridge> [ddnet] Yes 17:19 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/802935532232638534/unknown.png 17:19 <+bridge> [ddnet] im using this magic number 17:19 <+bridge> [ddnet] @Learath2 how 17:19 <+bridge> [ddnet] If you don’t have all the players yet 17:19 <+bridge> [ddnet] oh 17:19 <+bridge> [ddnet] The extra packets only contain players 17:19 <+bridge> [ddnet] i see that works 17:20 <+bridge> [ddnet] Tho the server can always send more or less 17:20 <+bridge> [ddnet] damn 17:20 <+bridge> [ddnet] I mean in an adverserial situation 17:20 <+bridge> [ddnet] u mean there may be a case where serrver will never send all players? 17:21 <+bridge> [ddnet] Proper servers send either no players or all the players 17:21 <+bridge> [ddnet] I mean a server with malicious intention can send more or less. You should account for that too 17:22 <+bridge> [ddnet] What do you need this for? 17:22 <+bridge> [ddnet] im making a server info requester in rust 17:22 <+bridge> [ddnet] i know libtw may have it or not 17:23 <+bridge> [ddnet] but i want to do my own 17:23 <+bridge> [ddnet] xd 17:23 <+bridge> [ddnet] i also been inspired by status.tw 17:23 <+bridge> [ddnet] i think i want to do my own teeworlds spider/crawler 17:29 <+bridge> [ddnet] Well why does it matter if there is a next packet? 17:30 <+bridge> [ddnet] You should always just recv everything you get, not like discarding the rest of the rx queue is cheap, nor can you know how much of the ex queue to discard without recving 17:42 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/802941452652511262/unknown.png 17:42 <+bridge> [ddnet] \\o/ 17:42 <+bridge> [ddnet] 🙈 17:43 <+bridge> [ddnet] @Learath2 do u know if the token is in big endian ? 17:43 <+bridge> [ddnet] i have to figure out this token stuff 17:59 <+bridge> [ddnet] Hetzner has almost to none ddos protection i can be the judge of that 18:00 <+bridge> [ddnet] it has basic ddos protection yes but Just needs ports closed 18:10 <+bridge> [ddnet] what's that? 18:10 <+bridge> [ddnet] my program 18:10 <+bridge> [ddnet] thanks cap 18:10 <+bridge> [ddnet] xd 18:10 <+bridge> [ddnet] i actually said what i want to do a bit more up 18:10 <+bridge> [ddnet] > i also been inspired by status.tw 18:10 <+bridge> [ddnet] > i think i want to do my own teeworlds spider/crawler 18:11 <+bridge> [ddnet] oh, cool 18:11 <+bridge> [ddnet] would it have more information about players? 18:11 <+bridge> [ddnet] i will try ye 18:11 <+bridge> [ddnet] the annoying thing is dealing with old servers 18:12 <+bridge> [ddnet] they dont have all the fields 18:12 <+bridge> [ddnet] are there many old servers? 18:12 <+bridge> [ddnet] with players 18:12 <+bridge> [ddnet] i mean 18:12 <+bridge> [ddnet] vanilla 0.6.5 18:13 <+bridge> [ddnet] doesnt have map src 18:13 <+bridge> [ddnet] and map size 18:14 <+bridge> [ddnet] is it necessary btw? xd 18:16 <+bridge> [ddnet] idk 18:23 <+bridge> [ddnet] so it's web api 18:24 <+bridge> [ddnet] right now its just a rust library 18:28 <+bridge> [ddnet] it's just 18:43 <+bridge> [ddnet] @gerdoe https://github.com/edg-l/teestatus 18:43 <+bridge> [ddnet] :monkalaugh: 18:43 <+bridge> [ddnet] hacked it fast 18:43 <+bridge> [ddnet] ill clean it up somewhen 18:53 <+bridge> [ddnet] @Ryozuki best docs ever 18:53 <+bridge> [ddnet] xd 19:36 <+bridge> [ddnet] @Ryozuki https://github.com/heinrich5991/libtw2/blob/master/doc/serverinfo_extended.md 19:36 <+bridge> [ddnet] libtw2 docs really tell you all this stuff 19:36 <+bridge> [ddnet] the token is indeed big endian 19:36 <+bridge> [ddnet] i was reading that for 4 hours 19:36 <+bridge> [ddnet] it doesnt say the response token is big endian 19:36 <+bridge> [ddnet] > token must be the token from the request. If the server info isn't sent upon a request, it mut be -1. 19:37 <+bridge> [ddnet] > token is an arbitrary byte chosen by the client which will be sent back with the server info. For the extended server info, the extra_token field needs to be included in the server info response. 19:37 <+bridge> [ddnet] token is a single byte, there is no byte order in single bytes 😛 19:37 <+bridge> [ddnet] but token is merged with extra token 19:37 <+bridge> [ddnet] extra_token is big endian 19:38 <+bridge> [ddnet] > `extra_token` contains a 16 bit big-endian integer that should be shifted by 8 to the left and combined with `token` 19:38 <+bridge> [ddnet] i think this should give it away 19:38 <+bridge> [ddnet] `extra_token << 8 | token` is the token you are sent back 19:38 <+bridge> [ddnet] yea 19:38 <+bridge> [ddnet] and it never matches 19:38 <+bridge> [ddnet] atleast for me 19:38 <+bridge> [ddnet] ill try again tomorrow 19:38 <+bridge> [ddnet] Do you go from big endian to host byte order? 19:38 <+bridge> [ddnet] what are you doing ryo? 19:39 <+bridge> [ddnet] @timakro https://github.com/edg-l/teestatus 19:39 <+bridge> [ddnet] i plan to make a better status.tw 19:39 <+bridge> [ddnet] backend in rust ofc 19:39 <+bridge> [ddnet] You're just reading serverstatus or are you joining the server? 19:39 <+bridge> [ddnet] reading 19:40 <+bridge> [ddnet] xd 19:40 <+bridge> [ddnet] @timakro what data would u get from joining 19:40 <+bridge> [ddnet] player positions? or maybe teams? 19:40 <+bridge> [ddnet] but idk 19:40 <+bridge> [ddnet] idk nsa spy data 19:41 <+bridge> [ddnet] xd 19:41 <+bridge> [ddnet] i will consider after i have a solid base 19:41 <+bridge> [ddnet] So I guess you also need a handshake for extended serverstatus ^^ 19:41 <+bridge> [ddnet] Anyway, I bet it's probably just not you swapping around the bytes before appending the last one 19:41 <+bridge> [ddnet] Wouldn't be cool to take a player slot anyways 19:41 <+bridge> [ddnet] I need to go 😛 19:42 <+bridge> [ddnet] yeah i guess its smth like that learath 19:42 <+bridge> [ddnet] ill look into it more tomorrow 19:43 <+bridge> [ddnet] Since I'm obsessive I just had to check, the server doesn't swap it around 19:50 <+bridge> [ddnet] does* 😛 19:51 <+bridge> [ddnet] 😛 19:51 <+bridge> [ddnet] does 19:51 <+bridge> [ddnet] ? 19:51 <+bridge> [ddnet] or doesnt 19:51 <+bridge> [ddnet] xd 19:51 <+bridge> [ddnet] does 19:51 <+bridge> [ddnet] I just made a typo 19:51 <+bridge> [ddnet] btw wdym by swap around bytes 19:52 <+bridge> [ddnet] Well a lot of code in teeworlds (incorrectly btw) assumes the host is little endian 19:52 <+bridge> [ddnet] but network byte order is usually big endian, so when reassembling the integer you essentially swap around the bytes 19:53 <+bridge> [ddnet] but C abstracts that away for you by defining bitshifts the way it does 19:53 <+bridge> [ddnet] can u send the link to the line 19:53 <+bridge> [ddnet] where it does it 19:54 <+bridge> [ddnet] so you only need to remember where you put things, when crafting the request, we generate a 3 byte token. The least significant byte we put in the last byte named `token` in the protocol 19:54 <+bridge> [ddnet] y 19:54 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/master/src/engine/client/serverbrowser.cpp#L770 19:55 <+bridge> [ddnet] The most significant byte we put in the first byte of the extra token, the middle byte we put in the second byte 19:56 <+bridge> [ddnet] so overall the token is `extra_token[0] << 16 | extra_token[1] << 8 | token` 19:57 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/master/src/engine/server/server.cpp#L2186 this is where the server does it btw 19:57 <+bridge> [ddnet] i see 20:23 <+ChillerDragon> @Learath2 when finish ur wireshark dissector? 20:24 <+ChillerDragon> i pay u 20 bucks when u get it merged in upstream :) 20:25 <+ChillerDragon> Ryozuki: is teestatus 0.7? 20:26 <+bridge> [ddnet] if the protocol hasnt changed then ye 20:26 <+ChillerDragon> it has 20:26 <+ChillerDragon> it has tokens now as far as i understood it 20:27 <+ChillerDragon> you could call it ddnet status orr teestatus deprecated :D 20:28 <+ChillerDragon> if i see "Request info about teeworlds servers." published in 2021 i expect it to support 0.7 20:28 <+bridge> [ddnet] nobo 20:28 <+bridge> [ddnet] tell me a 0.7 sv ip 20:29 <+ChillerDragon> 139.59.215.82:8704 20:30 <+bridge> [ddnet] u sure its online 20:30 <+ChillerDragon> yes 20:30 <+ChillerDragon> https://status.tw/server/details/139.59.215.82/8704/ 20:32 <+bridge> [ddnet] doesnt seem to work 20:35 <+bridge> [ddnet] do they use tcp for info or what 20:41 < ***> Buffer Playback... 20:41 <+ChillerDragon> [20:39:05] wb 20:41 <+bridge> [20:39:05] [ddnet] One day i’ll finish it ;D 20:41 <+ChillerDragon> [20:39:05] nice :) 20:41 <+bridge> [20:41:14] [ddnet] Dissecting stateful protocols is not fun 20:41 <+ChillerDragon> [20:41:15] feel free to contact me when its merged 20:41 <+ChillerDragon> [20:41:15] u get free money 20:41 <+bridge> [20:41:15] [ddnet] is it free money if he has to work for it? 20:41 < ***> Playback Complete. 21:21 <+ChillerDragon> no he doesnt has to work for it because its something he wanted to do anyways