Inactive [ADMN/WEB/SEC] Warrant 4 - Fast Forum Group Bridge [1.1-R6/1.2.2-R0.1]

Discussion in 'Inactive/Unsupported Plugins' started by Ant59, May 21, 2011.

  1. Offline

    Ant59

    • adfly link removed
    [​IMG]

    Warrant effectively allows you to control your users' permission ranks in-game through your forum/community system! I have designed this to work with Permissions 3 and SMF, however it is customisable to work with nearly any forum system using MySQL. All column names are customisable and information can be changed in the config.yml file.
    Warrant is perfect for subscription servers, where SMF subscriptions are used for example. It can grant VIP grouping as soon as the player logs in after taking out the subscription on the forum, or simply being moved rank on the forum.

    So far, I've had feedback of successful syncing with SMF, phpBB, XenForo, vBulletin, ccBoard and a few others I can't remember the names of :)

    Supports the following permissions plugins: PermissionsEx, bPermissions.
    Has Warrant been of any use to you?
    For now, this is my only source of income at university.
    Every donation is VERY much appreciated :D
    [​IMG]
    Version 4.0.3
    Version 3.2
    Just grab the JAR there, and drop it in your plugins folder! Simples ;)
    Let me know if there are any other features you want and if there are any bugs to squash!
    Currently, you will still need to create your own configuration file for Warrant to work from. Inside your plugins folder, create a folder called "Warrant", and inside there create a file called "config.yml". Here are example config.yml files for you to work from and customise as you wish. If anyone creates example files for any other forum system, I'd love to post them up here too!

    SMF (open)
    Code:
    forum:
        # Want to use information from a custom profile field instead of the user's forum username?
        multitable: false
        # Want to use a comma seperated list of additional groups to assign your member?
        use-additional-groups: true
        # If we're using phpBB3 or a forum system like it, then it's a pain in the arse to find a user's group! Are we using phpBB3?
        use-group-table: false
        # If you'd like, Warrant can look at if the member's "banned-field" is true or false and keep 'em out if it's true
        use-boolean-ban: false
        # Bung in the info on where to look for the member data
        usertable:
            # Name of the member data table
            name: smf_members
            # Field to find the group id to match those set in the "groups" section of this file
            group-field: id_group
            # If we're not using multitable mode, then which field should we look for the member's minecraft username in?
            username-field: member_name
            # And if "use-additional-groups" is enabled... where is the comma seperated list of additional groups?
            additional-groups-field: additional_groups
            # Has a player been banned? If "use-boolean-ban" is true, this field will be used to determine if the user can come in or not. OVERRIDES WHITELIST!
            banned-field:
            # If "use-additional-groups" is on, then we're going to need a way to link this user to their extra profile fields
            key-field: id_member
        # This part ONLY counts if you've used 'multitable'. Make sure to match the key-fields up!
        profiletable:
            # Name of the custom profile fields table
            name: smf_custom_fields
            # If we're going to match up the custom fields to the user's member data, then we're going to need this to match the "key-field" in the other table for each member
            key-field: id_member
            # Since we're in multitable mode, we can have a look in this table for their minecraft name instead. Clever isn't it?
            minecraft-name-field:
        # This ONLY applies if you want to use a phpBB3 style group table
        grouptable:
            name: phpbb_user_group
            key-field: user_id
            group-field: group_id
     
    # Stick your database info here
    database:
        host: 'districtmine.net'
        port: '3306'
        db: 'database'
        user: 'username'
        pass: 'password'
    # Which worlds on your server should Warrant affect the permissions for?
    worlds:
        - world
    # What you gonna tell peeps that aren't whitelisted? (PS, telling them to go and register on the forum would be a good idea. Telling them to #"@! off, would not)
    kick-message: 'Sorry, you are not permitted to login to the server at your current rank'
    # What you gonna tell peeps that are banned by your forum? (Telling these guys to #"@! off may actually be a good idea lol)
    banned-message: 'Sorry, you are not permitted to login to the server as you are banned'
    # Tell players that they've been assigned ranks when they login, or just do it silently in the background?
    notify-group-on-login: true
    # Keep out those who aren't in any group stated below (false), or shall we let them in and assign them to their default permissions group (true)?
    whitelist-default: true
    # Stick all the mappings here for any groups you wish tp be auto-ranked
    # Make sure to surround the number in single quotes (''), else it may just self-destruct and noone wants that
    # If "whitelisted" is false, then you may ommit the rank, as there will be no need to assign a rank to disallowed players
    # You must give a default group that can be assigned to those players that have been demoted from a higher rank to prevent them from keeping permissions they no longer have access to
    default-group: Member
    groups:
        # Here, normal registered members can go ahead and just join in as normal members
        '0':
            rank: Member
            whitelisted: true
        # Admins are instantly granted all there rights as found in the Permissions configuration
        '1':
            rank: Admins
            whitelisted: true
        # Let's say this group is banned for example. We can forget about the rank because they don't deserve one :)
        '2':
            whitelisted: false
    

    phpBB3 (open)
    Code:
    forum:
        # Want to use information from a custom profile field instead of the user's forum username?
        multitable: false
        # Want to use a comma seperated list of additional groups to assign your member?
        use-additional-groups: false
        # If we're using phpBB3 or a forum system like it, then it's a pain in the arse to find a user's group! Are we using phpBB3?
        use-group-table: true
        # If you'd like, Warrant can look at if the member's "banned-field" is true or false and keep 'em out if it's true
        use-boolean-ban: false
        # Bung in the info on where to look for the member data
        usertable:
            # Name of the member data table
            name: phpbb_users
            # Field to find the group id to match those set in the "groups" section of this file. This can be left blank if you are using the group-table
            group-field:
            # If we're not using multitable mode, then which field should we look for the member's minecraft username in?
            username-field: username
            # And if "use-additional-groups" is enabled... where is the comma seperated list of additional groups?
            additional-groups-field:
            # Has a player been banned? If "use-boolean-ban" is true, this field will be used to determine if the user can come in or not. OVERRIDES WHITELIST!
            banned-field:
            # If "use-additional-groups" is on, then we're going to need a way to link this user to their extra profile fields
            key-field: user_id
        # This part ONLY counts if you've used 'multitable'. Make sure to match the key-fields up!
        profiletable:
            # Name of the custom profile fields table
            name: smf_custom_fields
            # If we're going to match up the custom fields to the user's member data, then we're going to need this to match the "key-field" in the other table for each member
            key-field: id_member
            # Since we're in multitable mode, we can have a look in this table for their minecraft name instead. Clever isn't it?
            minecraft-name-field:
        # This ONLY applies if you want to use a phpBB3 style group table
        grouptable:
            name: phpbb_user_group
            key-field: user_id
            group-field: group_id
    # Stick your database info here
    database:
        host: 'localhost'
        port: '3306'
        db: 'minecraft'
        user: 'root'
        pass: 'xxxx'
    # Which worlds on your server should Warrant affect the permissions for?
    worlds:
        - world
    # What you gonna tell peeps that aren't whitelisted? (PS, telling them to go and register on the forum would be a good idea. Telling them to #"@! off, would not)
    kick-message: 'Sorry, you are not permitted to login to the server at your current rank'
    # What you gonna tell peeps that are banned by your forum? (Telling these guys to #"@! off may actually be a good idea lol)
    banned-message: 'Sorry, you are not permitted to login to the server as you are banned'
    # Tell players that they've been assigned ranks when they login, or just do it silently in the background?
    notify-group-on-login: true
    # Keep out those who aren't in any group stated below (false), or shall we let them in and assign them to the default permissions group (true)?
    whitelist-default: true
    # Stick all the mappings here for any groups you wish tp be auto-ranked
    # Make sure to surround the number in single quotes (''), else it may just self-destruct and noone wants that
    # If "whitelisted" is false, then you may ommit the rank, as there will be no need to assign a rank to disallowed players
    # You must give a default group that can be assigned to those players that have been demoted from a higher rank to prevent them from keeping permissions they no longer have access to
    default-group: Member
    groups:
        '1':
            rank: Guest
            whitelisted: true
        '5':
            rank: Owner
            whitelisted: true
        '11':
            rank: Moderator
            whitelisted: true
        '13':
            rank: Constructer
            whitelisted: true
        '14':
            rank: Builder
            whitelisted: true
        '17':
            rank: Admin
            whitelisted: true
    

    XenForo (open)
    Code:
    forum:
        # Want to use information from a custom profile field instead of the user's forum username?
        multitable: false
        # Want to use a comma seperated list of additional groups to assign your member?
        use-additional-groups: false
        # If we're using phpBB3 or a forum system like it, then it's a pain in the arse to find a user's group! Are we using phpBB3?
        use-group-table: false
        # If you'd like, Warrant can look at if the member's "banned-field" is true or false and keep 'em out if it's true
        use-boolean-ban: false
        # Bung in the info on where to look for the member data
        usertable:
            # Name of the member data table
            name: xf_user
            # Field to find the group id to match those set in the "groups" section of this file
            group-field: user_group_id
            # If we're not using multitable mode, then which field should we look for the member's minecraft username in?
            username-field: username
            # And if "use-additional-groups" is enabled... where is the comma seperated list of additional groups?
            additional-groups-field:
            # Has a player been banned? If "use-boolean-ban" is true, this field will be used to determine if the user can come in or not. OVERRIDES WHITELIST!
            banned-field: is_banned
            # If "use-additional-groups" is on, then we're going to need a way to link this user to their extra profile fields
            key-field:
        # This part ONLY counts if you've used 'multitable'. Make sure to match the key-fields up!
        profiletable:
            # Name of the custom profile fields table
            name:
            # If we're going to match up the custom fields to the user's member data, then we're going to need this to match the "key-field" in the other table for each member
            key-field:
            # Since we're in multitable mode, we can have a look in this table for their minecraft name instead. Clever isn't it?
            minecraft-name-field:
        # This ONLY applies if you want to use a phpBB3 style group table
        grouptable:
            name:
            key-field:
            group-field:
     
    # Stick your database info here
    database:
        host: '*HOST*'
        port: '3306'
        db: '*DATABSE*'
        user: '*USERNAME*'
        pass: '*PASSWORD*'
    # Which worlds on your server should Warrant affect the permissions for?
    worlds:
        - world
    # What you gonna tell peeps that aren't whitelisted? (PS, telling them to go and register on the forum would be a good idea. Telling them to #"@! off, would not)
    kick-message: 'Maintenance going on. Connect later.'
    # What you gonna tell peeps that are banned by your forum? (Telling these guys to #"@! off may actually be a good idea lol)
    banned-message: 'Sorry, you are not permitted to login to the server as you are banned'
    # Tell players that they've been assigned ranks when they login, or just do it silently in the background?
    notify-group-on-login: true
    # Keep out those who aren't in any group stated below (false), or shall we let them in and assign them to their default permissions group (true)?
    whitelist-default: true
    # Stick all the mappings here for any groups you wish tp be auto-ranked
    # Make sure to surround the number in single quotes (''), else it may just self-destruct and noone wants that
    # If "whitelisted" is false, then you may ommit the rank, as there will be no need to assign a rank to disallowed players
    # You must give a default group that can be assigned to those players that have been demoted from a higher rank to prevent them from keeping permissions they no longer have access to
    default-group: guest
    groups:
        # Here, normal registered members can go ahead and just join in as normal members
        '1':
            whitelisted: false
        '2':
            whitelisted: false
        '3':
            rank: admin
            whitelisted: true
        '4':
            rank: mod
            whitelisted: true
    

    Joomla and ccBoard (open)
    Warning! This one includes only the forum section! You will need to get the rest of the config from one above.


    What is new in version 2?
    This version has been completely written from scratch. It is extremely improved in performance, processing everything in a separate thread to avoid lag when someone logs in. Although this method waits for a non-whitelisted player to enter the game before kicking them, it does stop any lag from Warrant when anyone joins the game. You can now whitelist individual groups, and you can control which worlds Warrant alters Permissions in. You can also set Warrant to apply additional groups to players by looking into a comma separated list in of additional groups in one of your database fields. Please let me know if you want anything else from Warrant!

    What is new in version 3?
    Permissions support! Warrant now supports a large array of permissions plugins. Unfortunately because Warrant manipulates grouping of players, it means that it has to individually support the different plugins and the way that they change the player's groups, and since there is no standard here, I have to individually code in extra parts for any new permissions plugin that users want me to support, so please let me know if any more are wanted!

    Changelog

    4.0
    + Added support for the new Bukkit events system
    - Dropped support for Permissions 2.x
    - Dropped support for Permissions 3.x
    ~ Made some minor adjustments for speed and threading

    3.2
    ~ Fixed all the class not found errors

    3.1
    ~ Worked all the bugs out of using multiple permissions managers
    ~ Fixed most of the class not found errors

    3.0.4
    ~ After the trouble of getting my test server to work again, I can't even remember what I changed, but I remember adding something and fixing a few things lol)

    3.0.3
    ~ Checks Permissions version using string instead of double

    3.0.2
    ~ Compatible with CraftBukkit 1240
    ~ Fixed group naming (removed formatting for console)

    3.0.1
    ~ Compiled against JDK6
    ~ Fixed error with bPermissions

    3.0
    + Now works with bPermissions, PermissionsEx, Permissions 3 and partially (hopefully lol) Permissions 2
    + Requires a default-group node in the config to specify a group which a player should be assigned when they no longer get set by the forum to solve a security issue

    2.5
    ~ Fixed major security issue when players are demoted to the default group
    ~ Fixed spelling mistake and variable reference error when notifying additional groups

    2.4
    ~ Changed the getUserObject and getGroupObject methods to their safe counterparts to prevent an error for users who aren't registered in Permissions yet

    2.3.1
    ~ Fixed event register in onEnable to the correct event

    2.3
    ~ Changed event to player join instead of player login to avoid major error

    2.2.2
    + Check to see if Permissions world exists for worlds in the config

    2.2.1
    + Check to see if user has parent groups before trying to remove them

    2.2
    + Added phpBB3 functionality and the ability to set a separate table for group keys

    2.1
    + Added banning ability from forum table flag
    + Added on kick/on ban messages
    ~ Corrected an inverted boolean setting for whitelisting guests

    2.0
    ~ Complete recode of the plugin from scratch with efficiency at the heart of it
    ~ All Warrant processing is now threaded to prevent server lag when someone logs in
    + Added TONS of new features, most things that people had asked for from the new version

    Old Post (v1.2 and backward) (open)

    Go ahead and grab v1.2 for your server now...

    Download JAR: http://dl.dropbox.com/u/29840218/Warrant.jar
    Download MySQL Connector: http://dl.dropbox.com/u/29840218/mysql.jar

    Installation
    1. Place Warrant.jar in your plugins directory
    2. Place mysql.jar (the mysql java connector) into the root of your bukkit server, in the same folder as craftbukkit.jar
    3. Requires EssentialsGroupManager.jar! Add this to your plugins folder too, from the Essentials plugin suite.
    4. It is suggested to add EssentialsGroupBridge.jar too, since this will give more compatability with plugins that only talk to Permissions instead of GroupManager. Do NOT use Permissions.jar with this plugin!
    Configuration








    All configuration settings can be found in the auto-generated properties file, found in plugins/Warrant/warrant.properties


    IMPORTANT!

    You MUST create a "groups.properties" file in the plugins/Warrant folder!


    The groups.properties file takes the format of



    Code:
    #forum group id=GroupManager rank
    1=Admins
    2=Member
    Properties and explanations

    These are the properties needed to be set in the warrant.properties file...

    mysql-host - The MySQL server IP or URL

    mysql-port - Port of MySQL server (3306 by default)

    mysql-db - Database to find member data

    users-table - The table used for member data

    minecraftname-table - The OPTIONAL table used for extra data, where the user's minecraft username lies - perfect for forums that set "Minecraft username" as an additional profile field :) If left blank, the plugin will default to single table mode

    mysql-user - Name of MySQL User

    mysql-pass - Password for MySQL user

    minecraftname-field - The field which stores the user's minecraft player name. This is either on the specified table in "minecraftname-table", or it is in the default "users-table" if the former is left blank.

    group-field - The field that stores the group ids of users in "users-table"

    memberid-field - When in two table mode (see "minecraftname-table"), the field used to store the user's id in the "users-table" - used to join the two tables together

    minecraftname-table-memberid-field - When in two table mode (see "minecraftname-table"), the field used to store the user's id in the "minecraftname-table" - used to join the two tables together


    I took my own time to make this plugin and distribute it and would really appreciate a small donation if you find it useful :) Thank you!

    [​IMG]


    Any suggestions welcome!!

    Changelog
    • v1.2
      • Done my best to optimize the plugin in every way I can think and better error handling too
      • Updated for build 818
      • Stuck some code in ready for when Permissions add hooks to change groups. Waiting on the Permissions team now to be able to support their plugin
    • v1.1
      • Moved warrant giving method into it's own thread, therefore allowing a player to login with no lag caused by warrant to the server, and it will grant the warrant to the player when it's all finished. Max timeout of 1 minute
      • Added support to have the minecraft username on a seperate MySQL table, linked to the members' table through members' ID#s.
    • v1.0 alpha
      • Initial Release
    Want to whitelist players with forum groups instead? Use Albus
     
  2. Offline

    seriosbrad

  3. Offline

    Ant59

  4. Offline

    Jamie Tees

    Think this would work on IPB3.1 and the newest release,if it does it would be so handy :D
     
  5. Offline

    rakiru

    This looks good. I won't be using it, but I've been looking for something like this and have just started my own thing similar to this for a MyBB forum. Nice work.
     
  6. Offline

    Jamie Tees

    I just thought, if the user was banned on the forum system could we make it so it automaticallybans or demotes users? Same if we wanted to up them to VIP rank via the subscription system, could it change their group on update?
    If you could do this I would happily donate for it :D
     
  7. Offline

    Ant59

    If you can get me the layout for the tables and columns for IPB, then I can definitely give you a config file for Warrant that will work :) I can't seem to find any documentation of IPB's database structure online anywhere :S

    If you were to move the banned users into a special group on the forum, then you could use Albus to blacklist them from the server too: http://forums.bukkit.org/threads/3110/

    Or Warrant, will be able to demote them into a GroupManager rank too.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
  8. Offline

    Jamie Tees

    Has it got the functionality so if we update a user to VIP it would automatically change them in minecraft too.

    Also I can pm you on the structure.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
  9. Offline

    rakiru

    I believe that is the purpose of this plugin?

    @Ant59 Could I have a look at your source? I only ask because it sounds like you are planning to upload it.
     
  10. Offline

    Ant59

    Yes, that is indeed the purpose of this plugin :) The reason I originally developed it is to auto-upgrade players that are subscribed via our forum.
     
  11. Offline

    Jamie Tees

    Oh yeah, just realized xD

    Lets just say, me and my girlfriend who run my server love you now :p (she is from somerset also ;))
    We have been looking for something like this for my website http://jrnetwork.net/

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
  12. Offline

    Ant59

    I'm really glad I could be of help :) Let me know if there's any bugs/missing features/configuration problems. I'd be more than happy to develop this plugin further for those who need it :)
     
  13. Offline

    seriosbrad

    Any way to have it so that if a user's group is changed on the Minecraft server first, it will update the forum database?
     
  14. Offline

    Jamie Tees

    Thanks alot :D I pmed you, so how does this update from the update on the forum database?
     
  15. Offline

    Ant59

    Well it was meant to make adminitration easier by the fact that you can change groups through a web interface instead. However, I guess I could try to have a go at working it the other way around. Shouldn't be too hard :)

    Yes, here it is :) http://dl.dropbox.com/u/29840218/warrant~src.7z

    As a player logs in, it asks the database for the player's forum group, then updates in-game if necessary. If a player asks why he hasn't been ranked up in-game if he has been in the forum, just tell them to logout and back in :)
     
    seriosbrad likes this.
  16. Offline

    Jamie Tees

    So it also automatically does a /reload correct?
     
  17. Offline

    Ant59

    Doing /reload won't affect it at all. It will reload the plugin, but the plugin only does anything when a player logs in. That way you won't have to reload a whole server, just to update a single user. Just get that user to logout and back in :)
     
  18. Offline

    Jamie Tees

    Awesome mod, Highly recommended, Ant59 was very helpful when we wanted to install it to http://jrnetwork.net/ Works a treat for our minecraft server :D
     
  19. Offline

    Ant59

    Thank god we got it working properly in the end :D I will have to release that custom JAR for the multiple tables version too. Then it should be extremely flexible :)
     
  20. Offline

    Kalman Olah

    Yeah Ant59, about that...

    <Edit by Moderator: Redacted mediafire url>

    (Man that was a pain in the ass)
     
    Last edited by a moderator: Dec 14, 2016
  21. Offline

    Ant59

    I can't access mediafire where I am right now :( I'll check this out as soon as I get home :)

    EDIT: I don't understand? What is it? Why did you upload my JAR to mediafire?
     
    Last edited by a moderator: Dec 14, 2016
  22. Offline

    Kalman Olah

    I edited the source so it can use 2 tables. Then I compiled it. Then I saw what you posted earlier about 2 tables. So I posted this. Just because.

    I've noticed that, while a player is logging in, the server just kind of freezes for everyone else.
    May I suggest having this plugin run in a seperate thread so it doesn't cause huge lag spikes?
    I'm loving it so far, by the way :).

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
  23. Offline

    Ant59

    Ah I see. I've already updated it for two tables, but haven't yet uploaded the JAR. I am currently trying to optimize things first. I will upload a new version later this evening :)
     
    NeatMonster and Kalman Olah like this.
  24. Offline

    Jamie Tees

    Yup, you started that cause I needed it and asked :p (*told you others would need it*)
     
  25. Offline

    NeatMonster

    Yeah, good feature!
     
  26. Offline

    Sphex

    Could you make this work with Permissions please?
     
  27. Offline

    seriosbrad

    I had no problem switching from Permissions to (Essentials)GroupManager and GroupManagerBridge. You'll have to separate your Permissions world.yml into two configs for GroupManager though. groups.yml and users.yml.
     
  28. Offline

    Sphex

    Hum GroupManager are compatible with all plugins? Like Permissions?
     
  29. Offline

    seriosbrad

    Yup, but you have to also add the GroupManagerBridge part of Essentials.

    So, remove Permissions.jar from your Plugins folder and download these two:
    http://ess.earth2me.com/index.php/Downloads#EssentialsGroupManager.jar

    The Bridge plugin makes all plugins that use Permisisons work with GroupManager
     
  30. Offline

    NeatMonster

    Please upload the new version.
     

Share This Page