AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Plugins (https://forums.alliedmods.net/forumdisplay.php?f=108)
-   -   Steam Group Admins (HTTP Prefetch) (https://forums.alliedmods.net/showthread.php?t=145767)

Mister_Magotchi 12-19-2010 22:42

Steam Group Admins (HTTP Prefetch)
 
2 Attachment(s)
Steam Group Admins (HTTP Prefetch)

This plugin reads all players from Steam Community group XML member lists (via HTTP), based on a config file, and adds them to the admin cache whenever the admin cache is refreshed (manually or at map start).

It should work in any game that SourceMod supports.

I've currently used it on a Windows CS:S server, a Linux CS:S server, a Windows TF2 server, and a Windows CS:GO server.

Setup:
  1. Install the cURL extension.
  2. Extract the attached ZIP archive to your game mod folder.
  3. Edit addons\sourcemod\configs\steam-group-admins-http.txt to you liking. All entries are commented out by default.
    • Steam group ID (the key name for each entry)
      • This may be found most easily by going to "Admin options" --> "Edit group profile" when viewing a group you are an admin for in the Steam Community. It can also be found by subtracting 103582791429521408 from the groupid64 if you know that. You can see the groupid64 for all the groups a player is in by tacking "?xml=1" onto the end of their Steam Community profile URL (eg http://steamcommunity.com/id/ChetFaliszek?xml=1) and viewing the XML source.
    • admin_group_name - Required
      • The name you want SourceMod to use as its admin group name. If you have already created the group with another admin config. system, this plugin will use that group. If not, this plugin will create it.
    • flags - Optional
      • Flags to add to the group. If you are using a pre-existing group name from another admin config. system, these flags will be added to all members of that group. If you already have the flags set for the group with the other system, you don't need to set them here.
    • immunity - Optional
      • If set, the group's immunity level will be set to this. If you already have the immunity set for the group via another admin config. system, setting it here may overwrite the other value, depending on the order in which the plugins work with the admin cache.
  4. Change the map or restart your server. You can alternatively manually load the plugin and then run sm_reloadadmins.
Version History:
  • 0.9.0 - 2010-12-19 - Initial release
  • 0.9.5 - 2012-02-25 - Nearly complete rewrite. Switched from Socket to cURL. Fixed intermittent crash on map change. Fixed invalid memory access errors.
  • 0.9.6 - 2012-04-23 - Added caching: XML files are now written to the SM data folder before being read, so for later admin cache reloads, if cURL can't get fresh data from Steam's servers, it still has old data to work with.
  • 0.9.7 - 2012-04-28 - Fixed minor corruption of XML cache data, and players potentially not being properly removed as admins, when users were removed from a Steam group.
  • 0.9.8 - 2013-12-28 - Changed the way API data caching works to hopefully do away with file-locking issues experienced by some. Also, no response from the API will be cached unless it contains valid group member data; this should prevent people from losing their admin rights when Steam's API is providing abnormal data.
  • 0.9.9 - 2013-12-30 - Made SteamID64 to Steam ID conversion more future-proof, fixed calculation error which may have affected a small percentage of Steam IDs, cleaned up and better-documented code.
  • 0.9.9b - 2014-08-26 - Hotfix to support new Steam ID format ("[U:1:########]").
Known Issues:

When manually reloading the admin cache via sm_reloadadmins, players currently authenticated as admins via this plugin will lose their admin authentication until they reconnect to the server or the map changes.

Steam Community group XML member lists are paginated after 1,000 members, so in order to prevent excessive server load and hammering of the Steam Community XML API, only the first page, and therefore only the first 1,000 listed members, are processed.

Special Thanks:

psychonic - He made the original Steam Group Admins plugin. As there is a slight delay after a user connects to the server before they are authenticated by their Steam groups, it doesn't work properly for reserved slots, and that's why I made this plugin. His plugin, however, supports groups of any size, while mine only handles groups with 1,000 members or less.

Compiling:

This plugin requires the include files for the cURL extension to compile correctly.

Download Options:
  • steam-group-admins-http-new-steamid-format.zip
    • Adds admins using the new Steam ID format ("[U:1:########]").
    • Only works in 1.7 branch of SourceMod.
    • Requires a game which uses the new format, like TF2.
  • steam-group-admins-http-old-steamid-format.zip
    • Adds admins using the old Steam ID format ("STEAM_0:#:########").
    • Only works in 1.6 branch of SourceMod.
    • Works with games that use either the new or old Steam ID formats, thanks to the 1.6 branch backward compatibility "hack" on 2014-08-21.

psychonic 12-19-2010 22:56

Re: Steam Group Admins (HTTP Prefetch)
 
You need to account for groups that have >1000 people. Even the xml version gets paginated.

The nextPageLink node has the link to the next page if applicable.

Plus, you're only mapping admin to users when the admin cache is refreshed. Users late-joining won't get admin until map change.

Mister_Magotchi 12-19-2010 23:10

Re: Steam Group Admins (HTTP Prefetch)
 
I don't want to account for groups that have > 1000 people. A non-threaded approach really shouldn't be handling that many anyway.

If a player joins the server any time after this plugin has been loaded and the admin cache has been refreshed (the map has changed or sm_reloadadmins has been run), they will get admin.

psychonic 12-19-2010 23:12

Re: Steam Group Admins (HTTP Prefetch)
 
Quote:

Originally Posted by Mister_Magotchi (Post 1375119)
I don't want to account for groups that have > 1000 people. A non-threaded approach really shouldn't handling that many anyway.

Then it should be mentioned as a limitation or 'known bug'.

Quote:

Originally Posted by Mister_Magotchi (Post 1375119)
If a player joins the server any time after this plugin has been loaded and the admin cache has been refreshed (the map has changed or sm_reloadadmins has been run), they will get admin.

Right. I should have also said " or administrative action" (pending that they had admin without having to wait :3 )

Mister_Magotchi 12-19-2010 23:17

Re: Steam Group Admins (HTTP Prefetch)
 
Thanks for the pointers. I had already done all that in the description I was writing. The reason I posted the thread before finishing the description was that I wanted to put the thread's URL in the "url" thing in the plugin source. Sorry for the confusion. I didn't expect anyone to see that since I was finished in a few more minutes from the initial post.

By the way (and I was going to ask you in IRC or something, but I didn't want to bug you), if you have any idea what I'm missing on that first "Known Issue" I list, let me know.

xX Marc Xx 12-30-2010 21:36

Re: Steam Group Admins (HTTP Prefetch)
 
Nice Nice But it is not walk... :|


If I want compielen the sp file itself does this error
fatal error 120: cannot read from file: "socket"


Plz Can you give me a ready made package for this group

http://steamcommunity.com/groups/dreist-reserver-slot
Group ID: 103582791431649758

end this frags
Quote:

"steam_groups"
{
"31649758"
{
"admin_group_name" "VIPs"
"flags" "ab"
"immunity" "0"
}
}

Mister_Magotchi 12-31-2010 02:06

Re: Steam Group Admins (HTTP Prefetch)
 
Quote:

Originally Posted by xX Marc Xx (Post 1382794)
If I want compielen the sp file itself does this error
fatal error 120: cannot read from file: "socket"

Quote:

Originally Posted by Mister_Magotchi (Post 1375108)
This plugin requires the include file for the Socket extension to compile correctly and therefore won't compile in the forums.

That config file you have looks fine, but the group ID should be 2128350 instead of 31649758. If not, then there's something I don't know about the group numbers. Just use the precompiled binary in the ZIP file, or get the Socket include file and compile it yourself.

xX Marc Xx 12-31-2010 09:35

Re: Steam Group Admins (HTTP Prefetch)
 
Oh ok the neu

steam-group-admins-http.txt is

PHP Code:

"steam_groups"
{
  
"2128350"
  
{
    
"admin_group_name" "VIPs"
    "flags" "ab"
    "immunity" "0"
  
}


Its ok????

Mister_Magotchi 12-31-2010 13:48

Re: Steam Group Admins (HTTP Prefetch)
 
It seems to be fine, but if you're only trying to give the members of that groups reserved slots, you only need the "a" flag.

xX Marc Xx 01-01-2011 12:17

Re: Steam Group Admins (HTTP Prefetch)
 
Englisch

Oh very nice everything is going perfectly ...

But please tell me how do you still have the number 2128350 ?????

Germany

Oh sehr schön es geht alles perfekt...

Aber bitte sag mir noch woher hast du die nummer 2128350 ?????



All times are GMT -4. The time now is 02:02.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.