FLockClient - Server
FLockClient
ATTENTION: At this time I'm not able to maintain this project. If any experienced developer wants to maintain this project while I can't, contact-me.
FLockClient is a small and simple tool to force players to use the server defined .jar, It might be useful to modded server and also can work to prevent hacked clients, forcing all the players to use a clean .jar. A client-side modification is required.
Pages: Instructions || Permissions || Key Numbers || Jenkins
Features
- Highly Configurable
- Random security keys
- Multiples clients
- Force player to use a defined client
- Permissions to each client
- Download files from the server
- Permanent ban by MAC address
- more
Permissions
Permission | Effect |
---|---|
FLockClient.Debug | Receive in-game debug messages |
FLockClient.F3 | Access access to the "F3" menu |
FLockClient.Texture | Ability to bypass the texture pack lock |
FLockClient.hash.<client> | Access to the <client> defined |
FLockClient.Gui.Debug | Show debug information on download |
FLockClient.ByEmpty | Join the server without the client |
Commands
- /lc ban - Ban the player MAC address
- /lc unban - unBan the player MAC address
- /lc info - Show information about a client
- /lc list - List players using any authorized client
- /lc reload - Reload the configuration
- /lc unex - Re-enable the anti-cheat protection
Attention
This plugin is made to work with a client mode that is available here, if you don't use the mod, the server will not recognise you!
Know Bugs
- Sometimes the kick message will not be properly shown, this is not related to FLockClient.
- Let me know if you find any!
I cant tell if this is an FC error or not. I do have FC configured to use MySQL.
Ok, thanks. That fixed it!
@saki2fifty
The hash data can't have more then 1 day old, people can't store and re-send the hash (which would fail anyway). He might be needing to fix his computer's clock.
Ok, it looks like the players time was off by 1 day (which I guess is what it had to do with), but what is the timeframe that hash expires?
Thanks!
Any idea what the below means for one of my players?
"[INFO] hi1mjake hash is too old, generated on 20/06/2013 20:14:39"
------7:15:03 PM
CONSOLE:
[INFO] Initial data sent to hi1mjake (12.87 KB)...
7:15:07 PM
CONSOLE:
[INFO] Checking hi1mjake packet data...
7:15:07 PM
CONSOLE:
[INFO] hi1mjake packet data received successfully!
7:15:07 PM
CONSOLE:
[INFO] hi1mjake's data received, lenght: 4.75 KB
7:15:07 PM
CONSOLE:
[INFO] hi1mjake hash is too old, generated on 20/06/2013 20:14:39
7:15:07 PM
CONSOLE:
[INFO] hi1mjake kicked, reason: Server error, contact the administrator.
7:15:07 PM
CONSOLE:
[INFO] hi1mjake authentication took 5 ms
7:15:09 PM
CONSOLE:
hi1mjake has left.
7:15:09 PM
CONSOLE:
[INFO] hi1mjake lost connection: user was kicked.
7:15:09 PM
CONSOLE:
[INFO] Unloading Player: hi1mjake
@FurmigaHumana
hey - for me it seems, that youve been very active for this project in the last weeks. Hope you find some free hours to relax... hoping for you and us you donĀ“t loose the fun in this project. So..plz prefer some hours in the sun before helping my tickets :)
Julia :)
@FurmigaHumana
Nope, you're all good here. FAntiXray, seems much more complex than this, so we know that you have other priorities.
But, if you gonna shoot to have tickets done by Sat, im gonna a couple in. :D
I know I'm not being much active the last few weeks, but just to let everybody know, i have not gave up on the project, I'm yet working on it actively, I'm just a little bit overloaded at the moment, 4 public projects here, a few more private ones (3d, plugins, sites and apps), college and a crappy job dont leave me much free time, hopefully I'll close all tickets/comments on saturday.
Furmiga, some suggestions for the Client:
- Instead of Flock block the ability to change texture packs and force the use of the standard package, the client could only block the ability to modify the package after use to log into the server.
- Creating a MySQL table that stores a history of user MAC addresses.
Furmiga, algumas sugestƵes para o Client://**
- Ao invĆ©s do Flock bloquear a habilidade de modificar pacotes de textura e forƧar o uso do pacote padrĆ£o, o Client poderia somente bloquear a habilidade de modificar o pacote utilizado apĆ³s realizar o login no servidor. - Criar uma tabela do MySQL que armazene um histĆ³rico dos endereƧos MAC do usuĆ”rio.
@o0Julia0o
Um, I dont think you can send client based on perms / groups, but that would be really cool though... seriously, it would great to just drop someone in a group, and he'll get that client. @mods : Ah, ok... gonna try that when I get home today. Thx!
@Furmiga Another issue I found last night is when there is a change in a .jar and you have send enabled, I guess FC will send files in the "temp" folder if its been cached already, correct?
Well, the problem with this is that Technic also caches the entire modpack (38MB file) in the "temp" folder so FC sends that modpack file as well to the client pc creating a lot of traffic.
@saki2fifty
oh yes, your are right. So you canĀ“t send different jars to different user-groups(per permission)?
@mods "then the player will be able to join the server using one or all of them." ...so its by default what you want. You put reis Minimap into the jars\mods-folder & users who have installed it - are authenticated. And users who donĀ“t have installed it - are authenticated, too. The users have the option to use one or all mods which are in the jars\mods-folder. But no other mod.
Julia :)
@o0Julia0o
Wouldn't that depend on what you have in your /send folder?
I thought if any mod or .jar is not valid, it'll send the entire /send folder.. but maybe not.
With all the features you have in place, I wanted to ask here first befire creating a ticket.
Does anyone know of a way to allow "approved mods"?
So for instance, I know that I can add any mods to the /jars/mods folder as "required" mods, but what if the Admin wanted to "allow" REI's Minimap but not include it in the required mods.
So if a player chooses to download it himself and drop the mod into the /mods folder, it'll work with no issues. If he chooses not to use the mod, it'll still work / authenticate. The reason I ask is because I have an approved Video capture mod that i've bundled, but if someone wanted to use another Video capture, i'd like to approve of that before the players can use it.
Just trying to figure a way to do this with the current features.
o.k., thx, Furmiga. If the client has no valid minecraft.jar & the flock-server allows 2 minecraft.jars:
minecraft.jar
mincraftB.jar
which will be uploaded to the client, if the client has permission for both ones? The name on the client will bei Minecraft.jar(regardless which file from the 2 above will uploaded, right?).
thx
Julia
btw I changed some default messages in v2.8, delete your current messages.yml if you want to check out the new ones.
@florianschlieper96
Client-Side V2.3 is only compatible with Server-Side v2.8
@o0Julia0o
Update just like any other plugin (dont need to delete the settings, it will be auto updated), and just override the client-files, dont need to use a fresh jar. About the permission, yes it is a bug, this permission has added before the feature to download files. I'll fix that.
@saki2fifty
On v2.7 and older, the player was not getting kicked if he didnt had all the required files (when "RequiredMods" is set to true) that's why you stay in the server and was able to play without getting verified, appears to be working just fine but I'll do some testing tonight.
I did changed some things to detect changes in the file, but it wont check for timestamp, It is not possible with java 6, but a single bit changed in the file will affected the verification.
Let me know if you find any problems.
I installed ur plugin and the client mod, but when i join with the modded client i always get this message as a popup from the client AND in the server console:
Start of StackTrace: - java.util.Arrays.copyOfRange(Unknown Source) - me.FurH.LockClient.LockClientHandler.handleInitialData(LockClientHandler.java:208) - me.FurH.LockClient.LockClientHandler.handleCustomPayload(LockClientHandler.java:75) - net.minecraft.client.multiplayer.NetClientHandler.func_72501_a(NetClientHandler.java:1584) - net.minecraft.network.packet.Packet250CustomPayload.func_73279_a(SourceFile:59) - net.minecraft.network.TcpConnection.func_74428_b(TcpConnection.java:461) - net.minecraft.client.multiplayer.NetClientHandler.func_72551_d(NetClientHandler.java:267) - net.minecraft.client.multiplayer.WorldClient.func_72835_b(WorldClient.java:94) - net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1871) - net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:836) - net.minecraft.client.Minecraft.run(Minecraft.java:761) - java.lang.Thread.run(Unknown Source) End of StackTrace
I tried it with Forge and Vanilla and with a fresh copy of bukkit. Everything the same result. But ur xray works perfect, really like it
greetz
edit: when someone is online with the client mod installed and i try to run /lc list i get an internal error, when no modded client is online i get 0/0
Looks like most things are working, still going through all the features to ensure its all working.
minecraft.jar and modpack.jar protected and working good. (!!!!!)
Protected mods and coremods look good, but it looks like the switch to force mods might be reversed. When I switch to False, it then checks and validates the mods... but, I need to check again tonight. But, i'm ecstatic this its now working great!
The config file check is not recursive, so the checks are only on the files in the root of /config. If there are any mods that create folders within there, those are not checked.
The send function looks like it might be a little finicky as I couldn't get it to send correctly (kept saying something about splitting the files into so many *something*, then skipping the last 4 or 5 *something* even when I verified both sides had the exact same files), but again, I'm going to test again tonight.
You also made mention that you are no longer using a certain method for checks so I was curious if I changed certain things if it would detect it. Looks like there is a check on the filename, date, and I even modified one single letter in a text file within a single mod (same date stamp, filename, and file size), and it detected the change each time. I need to check the timstamp change again though.
Overall, looking good... and i'm really excited about putting it to good use!!! :D
Oh, and yes a version # via a .txt file in the mod/plugins would be beneficial.
(now on to looks at why my FAntiXray is now getting errors, im sure its user error :D
an version-number in the FlockClient.zip/readme wuld be useful
how can i update the client? Just copy over the files... f.e. from 2.7 to 2.8? It seems to work :)
since 2.8 - if the admin(PEX with *.node-Permission) joins the server with another jar-file, he is downloading the file from the server. Before he could use every jarfile he wanted. So you have to copy the "admin-jarfile" into the jars-folder now(sind 2.8).
thx
Julia :)
if the client has no valid minecraft.jar & the flock-server allows 2 minecraft.jars:
minecraft.jar
mincraftB.jar
which will be uploaded to the client, if the client has permission for both ones? The name on the client will bei Minecraft.jar(regardless which file from the 2 above will uploaded, right?).
thx
Julia :)
Furmiga, 99% of everything is working fine with one exception.
When someone makes a change to minecraft.jar, its detects it and disconnects the user. That's working fine.
But when someone [**] <
-deleted my last comment.I've also given, and taken away permissions but still they are allow to use that client.
Is there any way that you could incorporate that function?