-
-
Notifications
You must be signed in to change notification settings - Fork 229
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
Allow list broken with 1.20.10 update. #336
Comments
I'm still not sure what is happening. The latest image now generates the |
...I'm going to mark this as "caused by upstream" for now, because something seems to be weird on their part. It's like the allow list needs to only be loaded into the world data via the command. |
Verified that the workaround (deleting allow list) works. Thank you for looking into this!!!!! |
With those latest changes (commit #337) it seems to no longer be possible to get a "sideloaded" allowlist.json to work, as it ends up being deleted when you don't have the ALLOW_LIST_USERS filled and overwritten when you set said variable. |
@SvenLudwig202 can you help figure out why the presence of an allowlist.json file prevents joining the server? When you side load the file, is there anything in particular you put in yours for the listed users to be able to access th server? I'll change the code later to at least only delete the file when the variable is an empty string. |
To be fully honest I don't think I can bring much new info to the table. I noticed the bedrock server not starting with an error message pointing out that it wasn't able to delete the allowlist.json. I've now tried setting up using the ALLOW_LIST_USERS by entering the required usernames separated via comma and I can see that a allowlist.json is being generated (missing the xuid portion at this point). From what I understand the bds should read this and resolve the names, but this doesn't seem to be happening. The server isn't putting out any info to the log regarding this though. I've tried to force a reload via "allowlist reload" which is being executed and written into the server's log. If you see any chance of me helping out here feel free to let me know. I'm more than happy to try out a view things. |
Thanks @SvenLudwig202 that's a very helpful data point. It seems like it is something about that version. I just pushed a new image that will only remove the allowlist/whitelist files when the With that pulled it should now be safe to put back the file you were using FWIW. |
I can confirm that with the new image my setup does indeed work again and I can connect to my server. It does seem like the current bds version isn't resolving the allowlist.json for whatever reason. If the xuid are present, like in my case, it does seem to work flawless. For reference, this is the compose file I'm running right now.
(can't seem to get the spacing to work in either quote or code mode .. please just imagine the correct indentation being there) |
Ah, ok, so with Their own docs say |
@itzg I updated a bit ealier today (client 1.20.10, server 1.20.11). What @SvenLudwig202 identified was correct but I found another issue. You have to explicitly delete whitelist.json, otherwise you'll still get the "not invited" error. I'm guessing they removed some references to it but still parse it at some point during loading. This is definitely a bug upstream. I haven't tested if adding the same params to the whitelist.json file fixes that as well, but just removing it, switching to allowlist and doing both username and xuid works. Is it worth submitting a PR for a workaround or just waiting to see what Mojang does? (or is there already a bug filed with them?) |
Good find! I'd be good with a PR to have the startup script make sure whitelist.json isn't present. I did notice a deprecation log when that file was present. |
Latest image now tweaks the logic as @ewolkowicz found and it seems to be working for me now. |
I notice a strange behavior. With ALLOW_LIST_USERS and ALLOW_LIST=TRUE set, previously the allowed users see "Not Invited" error. After removing allowlist.json and restarting the container, anybody is now allowed to connect with the same ALLOW_LIST_USERS and ALLOW_LIST. |
The bedrock software is acting like it saves its own list within the world data perhaps. This is all strange and hopefully gets better with their next release. I still haven't looked in their bug tracker for anything about this. Has anyone else looked? |
I think this bug fix may be related to the behavior. |
It looks like, understandably, I can't add the |
Correct. Instead you need to add your gamer tag to that list. |
I can confirm the following in Bedrock version 1.20.12.01. allowList.json does not work without xuid (Player not invited), but does work when using xuid's in allowList.json. The following docker-compose (thank you @SvenLudwig202 above) works. It mounts allowlist.json in docker and I have already added my xuid's manually to the file. I have removed docker-compose environment ALLOW_LIST. By working I mean I can start the docker and login with my users without further ado.
[{
allowlist add MY_NAME
|
I found this site that retrieve xuid from the gametag: https://www.cxkes.me/xbox/xuid |
Awesome find @xavierly ! Anybody want to PR that into the startup script? I'm also trying to decide if I'll add a subcommand to https://github.com/itzg/mc-image-helper to allow more robust add/replace behaviors. A PR to add allowlist management there would be great too. |
#336 (comment) Instead of manually manipulating the file, would it be better just to use the tools provided? For example:
|
Hi fishscene, According to my tests above, the 'allowlist add X' HAD to be executed in the running instance. That might not be easy to do, programmatically in the docker. Also in my experience it can only grab the xuid's when my users actually logged in, which was a bit of a pain. I think 1+2 is exactly what itzg already does in current version, he just didn't have access to the XUID's. |
The container startup only operates on the files directly and that's all it can do. Once the bedrock process is executed the container startup script is completely out of the picture. The crux of the original problem was that the bedrock software was not honoring the allowlist file when the whitelist file is present. It feels like this github issue has diverged in several directions, so I'm quite confused how to proceed. The original problem was fixed, so I'm inclined to close this issue and I'd appreciate people open a new issue for each new specific feature/issue identified. |
Hey All I am completely lost - what is the actual solution in the end for this issue as I seem to be going around in circles. |
@itzg
? @DrFrankensteinUK Upon checking the allowlist, both the username and XUID were present without anyone having to log in or having to manually look up the XUID.
|
#346 just got merged, which might clear up the remaining issues here. My testing was down with no prior data, so I had missed the case where there would have been a left over whitelist file. |
There's some kind of inconsistency with that bug in Bedrock server: I enhanced the image to remove any left over I'm running out of ideas and at wits end -- we may just have to see if the next bedrock version fixes all this. |
Mounting /data to a docker volume, and inspecting the contents of that volume, my allowlist.json file is being created on container startup, set to an old list of players (I believe the same list I used to use, before a recent update), none of which have XUIDs. "allow-list" is set to true in server.properties. All players get rejected when they try to join. Attaching to the container, "allowlist list" shows an empty list (which is inconsistent with what allowlist.json says). Doing "allowlist add ABC" then resets the contents of allowlist.json to contain just that player - all updates from then on get reflected in allowlist.json (and allowlist list), including setting XUIDs when those players join. This is all lost on container restart - it gets reset back to that old list of player names without XUIDs. Binding a local allowlist.json to /data/allowlist.json does nothing - they seem completely disconnected from each other. All the whitelist/allowlist environment variables in the docker compose config appear to do nothing now too. allow-list is ALWAYS set to true, and the allowlist.json file ALWAYS has the same contents (the old list of player names without XUIDs). I wonder if allow-list and allowlist.json are now overwritten on server startup, based on something saved elsewhere in the container? If so, that's a server bug, and it doesn't sound like the one linked above :( |
So it sounds like the startup script management of allowlist.json just needs to be removed for now, perhaps with a startup warning in the logs, since it seems to be counterproductive to command-driven updates. Any suggestions otherwise are very welcome. Honestly I really need others to contribute PRs for this. Personally I only use Java edition along with Geyser for bedrock compatibility. So I have no personal interest in fighting the disappointing quality of the Bedrock server software provided by Mojang. (The Bedrock software has been error prone for years, so this a long brewing frustration for me) |
Ah! It's likely this is because of the behavior when only binding a single file instead of a directory. If you bind |
@itzg Are you open to contributions being in another language, e.g. |
Normally I would say no since all of my existing tooling is bash, Go, or Java based and wouldn't want to grow the image size in the direction of Python. ...however, I'm frustrated enough that I'm totally open to that 😀 With that said, can you first summarize what you propose contributing? The technical solutions are easy for me to implement -- what is difficult is identifying what exactly would convince the bedrock server to accept an externally crafted allowlist file and how to resolve XUIDs without using an unofficial web service. |
...with those answers, I would really prefer to see the implementation added into I only have a local branch queued up to introduce mc-image-helper, so can push that sooner rather than later if needed. |
I could definitely do |
@Laptop765 just pushed #351 which brings in the new usage of mc-image-helper |
I'm wondering if |
Not as currently designed. The script
I really wish Microsoft provided an XUID lookup API like the Java/Mojang user lookup: Last I looked it was behind an API key mechanism that required an extensive application process. |
It is as tedious as I remember and not well suited for a distributed tool: https://stackoverflow.com/a/65693218 |
I figured that was probably the case when I wasn't able to find an answer with a quick search 😢 If I'm reading the code correctly setting neither
EDIT: I decided to spend a few minutes with this. I think it's actually just very broken. It seems that whenever the list is loaded anything missing an |
Nice research finding those issues. Those look like the culprits. So, I guess we're kinda stuck until those get addressed? |
Sadly I think so 😔 |
I too am becoming frustrated with Bedrock's bugginess and would like to move to Java, but I have children that only have access to iPads for gaming and are thus locked to the Bedrock edition. Your mention of Geyser interests me. Can you point me to a good starting resource for implementing Geyser to work with your Java Docker image? |
@rjbradleyling here's the example I use to connect with an iPhone https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml |
Not sure what is happening exactly, but with the 1.20.10 update, I can't join my server. It says "you are not invited" or something.
Here is my environment variables. I removed the ALLOW_LIST_USERS all together, and I still get rejected from the server.
The text was updated successfully, but these errors were encountered: