Code Monkey home page Code Monkey logo

communitybridge's Issues

Test CommunityBridge with GroupManager: Are primary groups added as if they were secondary?

Originally pointed out by: http://dev.bukkit.org/profiles/CoolV1994/ via Bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/126-secondary-group-is-treated-like-primary-group/

CoolV1994

What version of Community Bridge are you using?
1.12.10

What version of Bukkit are you using?
1.5.2 R0.1

Which Permission Plugin are you using and what version?
Group Manager 2.10.1

What forum/CMS/web app and its version are you using?
vBulletin 4.2.1

Make a copy of your config.yml with the MySQL username and password erased. Either attach or paste the copy (pastie.org/pastbin or similar tool is preferred).
http://pastebin.com/s2LBjmVp

What triggers the problem (During startup, when you use a particular command, every few minutes, etc.)?
When syncing the groups, CommunityBridge will move a user to the primary group then each sub-group, but it treats secondary groups like primary groups.

What is the expected output? What do you see instead?
I expect the user to be moved to the primary group then adding the secondary groups as subgroups.
Instead the user is moved to the primary group as the primary group, then is moved to the secondary group as the primary group.

Do you have an error log of what happened?
Don't think a log is necessary, no errors were given.

More Info:
Screenshot: http://i44.tinypic.com/126bvp0.png
users.yml http://pastebin.com/cTCtP5T8

What appears to be happening is CommunityBridge is using the following GroupManager commands when syncing users
/manuadd [user] [primary group]
/manuadd [user] [secondary group 1]
/manuadd [user] [secondary group 2]
and so forth, when it should be doing the commands
/manuadd [user] [primary group]
/manuaddsub [user] [secondary group 1]
/manuaddsub [user] [secondary group 2]
It would also be important to do the command /manudelsub [user] [secondary group] when a user is no longer in that secondary group.

Rewards for various achievements

Originally requested by: http://dev.bukkit.org/profiles/wexcide/ in bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/93-reward-for-posting/

wexcide

Not sure if it is in plans for the future, but some type of reward system would be awesome. I know currently economy plugin support is being developed, which could play a huge role in it. For example, if a user makes a post, he could earn $10 towards the economy plugin.

Feaelin

Interesting. I could definitely see that as a desirable feature for community building. It will take some thought. One problem I see is it could increase the number of posts that have no substance. There'd have to be a mechanism for reversing pay out if an admin rejects a post as being unuseful or inappropiate.

Feaelin

Hmm. In the same vein of thought giving [some item] could be an option too. I'm mainly thinking of servers that use emeralds as their currency, but it'd be simple enough to make the item given configurable.

wexcide

That would be my only concern is worthless posts filling the boards just so people can get money.

I just thought I would toss the idea your way as food for thought.

Hvarr: Rank priorities

Originally requested by: http://dev.bukkit.org/profiles/Hvarr/ via bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/107-rank-priorities/

Hvarr

It would be great if you could add some prioritization system. For example, if rank admin (1) is higher than moderator (2), but on a forum someone is still moderator(2), or a simple user(3), while on the server the same username is an admin(1), and in this situation we don't want a plugin to reduce a player to a lower rank, only if the rank on forums is higher, we than want to upgrade the player on the server as well.

Thank you.

Feaelin

I'm playing with the notion of an "advanced configuration" for group synchronization that is rule-based. My current thinking is that someone could set up a series of "rules". If I do that, then I think that would capture what you're wanting here, since one could put the highest ranked forum groups before the lower ranked one.

Add support for password verification / authentication

(Imported from Bukkit Tickets)
Requested by: http://dev.bukkit.org/profiles/giannoug/, http://dev.bukkit.org/profiles/fragger505/, http://dev.bukkit.org/profiles/MinecraftFreaksOnline/, http://dev.bukkit.org/profiles/xiZverx/

xiZverx

Using PW authentication. When a user joined the game he'd have to enter his forum password to play. If he didn't he'd be treated as not registered at all. It should be pretty straight forward, you could use the existing username verification, and add password checks maybe even with the same code (+salt+hash decription).

You can check out xAuth and AuthMe. These plugins do that, only that they don't support any rank syncing and aren't nearly as adaptable as this is. I cannot set up multi table configuration to add custom fields for example...

Feaelin

Currently, CommunityBridge places you in the permissions group that is mapped to the webapp's primary group if you have an account. Otherwise, it leaves you in the default group, which usually has reduced permissions.

What you want this feature to do is leave the player in the default group until they issue a command that checks their password against their account on the web application, if its correct, then they're placed in the permissions group.

Its doable. One caveat is that whoever is configuring CommunityBridge will need to know what encryption method (frequently SHA1 or MD5) the web application is using for its passwords.

xiZverx

Yes. But while doing some research into the password encryption when I tried to get AuthMe to work I found out this:

Anyway, I did some reading on IPB 2.x's password schema a while ago and as it turned out it is elementary to import IPB 2.x's password hashes to vBulletin 3.x. IPS chose to use the same system but hash the salt in the password hash to make it difficult to switch from vBulletin 3.x to IPB 2.x with the same password hashes.

For a visual aid, here is how vBulletin's password schema works:

md5(md5(password).salt)

Here is IPB 2.x's password schema:

md5(md5(password).md5(salt))

As far as I can understand this, it means that just using md5 hashing wont be enough for integration. You'd have to code the decryption differently for different webapps. And seeing how CB is currenty very very adaptable, it may be a problem if you had to limit your support to just a few web applications.

So in order to keep the adaptability the person configuring CB would have to know a tad more than just what hashing his webapp uses.

Feaelin

Wow. Yeah, I'll have to reflect on how to provide the feature flexibly. Probably consider the simplest cases and work "up" from there.

The very simplest is the forum stores the password in plain text in the database hopefully...no one actually does this...in fact, I'm disinclined to support it...'get a different app' might be in order on this one.

I'd say next is the case where it uses one of the built-in-to-mysql encryption functions (http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html).

Then perhaps provide a way to capture the variations that VB and IPB use. Probably a field for the salt and then a way to specify the method.

In-game registration (register from Minecraft server)

(Originally submitted by: http://dev.bukkit.org/profiles/BlueFusion95/ via Bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/48-register-from-minecraft-server/)

Also requested by: http://dev.bukkit.org/profiles/Dark123Summer/, http://dev.bukkit.org/profiles/pimsserver/

BlueFusion95

I think it would be awesome if you were able to register to the website from the Minecraft server. For example someone could type /register (email) (password) and it would register that email and password, as well as their Minecaft name as their username.

Feaelin

This is actually a tricky one. (All?) Most forums, CMSs, blogs, etc. have careful measures to prevent automated programs from accessing their registration mechanism...to defend against bots. Unfortunately, that also presents some challenges to implementing a mechanism for registration.

The ideas I've had so far will require the server admins to have very detailed knowledge of how their web application creates and stores users.

Thinking out loud here, the possible approaches are:

  1. Someone (not I) writes a plugin for a given web application that provides CommunityBridge access to the forum's registration functionality. Preferably something that includes support for paired-key security, otherwise they'd be opening a security hole. Then CB could send the necessary information to the web application via a http request. This is possibly the "perfect world" scenario because it would use the web application's own registration mechanism to create the user: better odds of the data being in all the right places. Unfortunately, it is the least likely to happen, because to make it universal would require a web-application plugin for each and every web application, e.g., a vbulletin plugin, a xenforo plugin, a phpbb plugin, etc. I can provide the CommunityBridge side of it, but not the web-application plugin side. So the server owner/admins will have to have themselves or know/hire someone that can write such a plugin for the forum software they use. Admittedly, servers using the same web-app could "team up" on such a project...

  2. The other approach is that in the config.yml, we have a config setting that is, well, the database insert for a new registered user with the username and password left empty (they'd be filled in by CommunityBridge). It'd require the person who was configuring CommunityBridge to have very very detailed knowledge of how the web-application creates and stores user information and there would many opportunities for someone shooting themselves in the foot. Again, folks who happen to be using the same web application could pool their knowledge, which would help.

I think the basic feature idea is a good one, I just haven't come up with a good way to get us there. I'll continue thinking on the issue, though.

BlueFusion95

Thank you for the detailed reply, I really appreciate it. I hope you are able to get things worked out and look forward to seeing how this will play out.

In-game registration: account "activation" deadline

Originally requested by: http://dev.bukkit.org/profiles/pimsserver/

pimsserver

and then have a set amount of time to verify their account on the site before the account on the MC server gets suspended?

This way players wouldn't have to leave the game, which makes their lives easier, which results in getting more players :)

Feaelin

This is somewhat similar to another feature request, but I wondered if you could elaborate on the "then have a set amount of time to verify their account" portion?

pimsserver

Great that you accepted this!

With "then have a set amount of time to verify their account" I mean that it'd be nice to allow players to play on the server for a set amount of time before they verify their account.

If a player connects to the server s/he will be forced to create an account with a command. After that has been done s/he can play on the server for x hours. After x hours s/he will not be allowed back into the server until s/he has verified his/her account (via email)

GroupManager / phpBB setup issues.

So I got this installed and configured, however I'm stuck. Whenever a user joins that has registered on the forums I get this in the logs...

02:11:39 [INFO] Group not found!
02:11:39 [INFO] /manuadd | optional [world]
02:11:39 [INFO] [CommunityBridge] Setting daplayer to group null
02:11:39 [INFO] [CommunityBridge] daplayer linked to Community User #56, Group: null

Here's my config for CommunityBridge. Any help would be super!

log-level: finest
permissions-system: GroupManager
db-host: localhost
db-port: 3306
db-database: phpbb
db-username: user
db-password: pass

show-primary-group: true
kick-unregistered: false
multi-tables: false
multi-tables-use-key: false
use-banned-field: false

group-synchronization:
  primary-group:
    enabled: true
    group-ids-to-ignore: []
    group-names-to-ignore: []

groups-table:
    enabled: false
    table: phpbb_user_group
    user-id-field: user_id
    group-id-field: group_id
secondary-groups: false
auto-sync: true
auto-every-unit: minutes
auto-sync-every: 20
auto-remind: true
auto-remind-every: 5
enable-basic-tracking: false

users-table:
  table: phpbb_users
  user-name-field: username_clean
  user-id-field: user_id
  groups-id-field: group_id
  default-group: 1

groups:
'12':'_MEMBERDONATE'
'1':'_GUEST'
'13':'_OWNER'
'10':'_MEMBERCHARTER'
'8':'_MOD'
'11':'_MEMBER'
'3':'_MEMBER'
'9':'_ADMIN'

Run sync only via auto sync or /cbsync

This is just a suggestion but i see when players join the server that it runs a sync so my suggestions is that the sync only runs with auto sync or the commands /cbsync etc.

Another suggestion would be an option to disable the msg "Registered Account, Linked to Server Forums".

Statistics update query missing space before END

15:04:42 [INFO] [CommunityBridge] UPDATE `smf_themes` SET `value` = CASE `variable` WHEN 'cust_online' THEN '1' WHEN 'cust_lastonline' THEN '1374609882'END WHERE `id_member` = '1' AND `variable` IN ('cust_online', 'cust_lastonline');

Minecraft->webapp sync doesn't appear to be working correctly.

Upon running /cbsyncall or /cbsync the webapp primary groups aren't updated. I'm not sure if this is due to a config error or not. When I run the command I get this in the server log:


[INFO] [CommunityBridge] (CONSOLE) Groups and/or statistics will be synchronized for all connected players.
[INFO] [CommunityBridge] SELECT `id_group` FROM `smf_members` WHERE `id_member` = '3'
[INFO] [CommunityBridge] SELECT `additional_groups` FROM `smf_members` WHERE `id_member` = '3'

Upon inspecting my player.yml file (under CommunityBridge\Players) I find that
'primary-group-name:' is not set, but my current in game group is listed under 'group-names:'. Just wondering if that may be the culprit/config error on my part.

My config file (cut out some comments and features set to false so it wasn't quite as long, if I cut anything out let me know):


#                  Community Bridge Configuration File
# -----------------------------------------------------------------------------

#                             General Settings
# -----------------------------------------------------------------------------
general:
  log-level: all

  plugin-metrics: true

  auto-every-unit: minutes

  auto-sync: false

  auto-sync-every: 20

  permissions-system: PEX

  application-url: localhost/emp/forums

#                             Database Settings
# -----------------------------------------------------------------------------
database:
  # Hostname for your MySQL Server
  hostname: localhost

  # MySQL Port
  port: 3306

  # Database Name
  name: db

  # Database Username
  username: user

  # Database Password
  password: pass

#                             Player Linking Settings
# -----------------------------------------------------------------------------
player-user-linking:

  kick-unregistered: false

  auto-remind: true

  auto-remind-every: 10

  notify-registered-player: true
  notify-unregistered-player: true

  unregistered-player-group:
  registered-player-group:
  notify-player-of-group: true

  registered-former-unregistered-only: true

  table-name: smf_themes

  user-id-column: id_member

  uses-key: true

  playername-column:

  key-name: cust_ign
  key-column: variable
  value-column: value

#                             Requirements (false, removed)

#                             Statistics Tracking (false, removed)


#                     Web Application Group Configuration
# -----------------------------------------------------------------------------
app-group-config:
  primary:
    enabled: true
    table-name: smf_members
    user-id-column: id_member
    uses-key: false
    group-id-column: id_group

    key-name:
    key-column:

  secondary:
    enabled: true
    table-name: smf_members

    user-id-column: id_member

    storage-method: single

    group-id-column: additional_groups

    group-id-delimiter: ','

    key-name:
    key-column:

simple-synchronization:
  # Set this to true for simple synchronization
  enabled: true

  direction: minecraft

  # Set this to true if you want the player to be notified when their primary
  # group changes.
  primary-group-change-notify: false

  super-user-user-id: '1'

  groups-treated-as-primary: ['Guest','Member','Veteran','Elder']

  group-mapping:
    '12' : 'Guest'
    '11' : 'Member'
    '10' : 'Veteran'
    '9'  : 'Elder'

Also, when using '/cbsync' in game it returns 'null' to the player.
EDIT: Got bored and was messing around with github and this fixed the 'null' issue on my end.
https://github.com/paul1338/CommunityBridge/commit/7c959428c7d64950601e312ac5766b28259fb593

Background tasks not being canceled properly during deactivation?

During 'reload' CraftBukkit complains that the background tasks are not being shut down properly during deactivation:

13:48:13 [SEVERE] Nag author: 'Feaelin' of 'CommunityBridge' about the following: This plugin is not properly shutting down its async tasks when it is being r
eloaded.  This may cause conflicts with the newly loaded version of the plugin

SMF Configuration issues

After completely configure community bridge v2.0.0.182 I get the following errors:

[SEVERE] [CommunityBridge] The super-user's user ID setting is not set.
[SEVERE] [CommunityBridge] Simple synchronization disabled due to prior errors.

but in my config it is set:

super-user-user-id: '1'

Any help would be appreciated!
Here is my config file (cut out the comments so it wasn't quite as long, if I cut anything out let me know):

#                  Community Bridge Configuration File
# -----------------------------------------------------------------------------

#                             General Settings
# -----------------------------------------------------------------------------
general:
  log-level: config

  plugin-metrics: true

  auto-every-unit: minutes

  auto-sync: false

  auto-sync-every: 20

  permissions-system: PEX

  application-url: localhost/emp/forums

#                             Database Settings
# -----------------------------------------------------------------------------
database:
  # Hostname for your MySQL Server
  hostname: localhost

  # MySQL Port
  port: 3306

  # Database Name
  name: db

  # Database Username
  username: user

  # Database Password
  password: pass

#                             Player Linking Settings
# -----------------------------------------------------------------------------
player-user-linking:

  kick-unregistered: false

  auto-remind: true

  auto-remind-every: 10

  notify-registered-player: true
  notify-unregistered-player: true

  unregistered-player-group:
  registered-player-group:
  notify-player-of-group: true

  registered-former-unregistered-only: true

  table-name: smf_themes

  user-id-column: id_member

  uses-key: true

  playername-column:

  key-name: cust_ign
  key-column: variable
  value-column: value

#                             Requirements
# -----------------------------------------------------------------------------
requirement:
  avatar:
    enabled: false
    table-name:
    user-id-column:
    avatar-column:
  minimum-posts:
    enabled: false
    table-name:
    user-id-column:
    post-count-column:
    post-count:

#                             Statistics Tracking
# -----------------------------------------------------------------------------
statistics:
  enabled: false
  table-name:
  user-id-column:
  uses-key: false

  key-column:
  value-column:

    online-status:
      enabled: false
      column-or-key-name:
      online-value:
      offline-value:
    last-online:
      enabled: false
      column-or-key-name:
      formatted-column-or-key-name:

    game-time:
      enabled: false
      column-or-key-name:
      formatted-column-or-key-name:

    level:
      enabled: false
      column-or-key-name:

    current-xp:
      enabled: false
      column-or-key-name:
      formatted-column-or-key-name:

    total-xp:
      enabled: false
      column-or-key-name:

    health:
      enabled: false
      column-or-key-name:

    lifeticks:
      enabled: false
      column-or-key-name:
      formatted-column-or-key-name:

    wallet:
      enabled: false
      column-or-key-name:

#                     Web Application Group Configuration
# -----------------------------------------------------------------------------
app-group-config:
  primary:
    enabled: true
    table-name: smf_members
    user-id-column: id_member
    uses-key: false
    group-id-column: id_group

    key-name:
    key-column:

  secondary:
    enabled: true
    table-name: smf_members

    user-id-column: id_member

    storage-method: single

    group-id-column: additional_groups

    group-id-delimiter: ','

    key-name:
    key-column:

simple-synchronization:
  # Set this to true for simple synchronization
  enabled: true

  direction: minecraft

  # Set this to true if you want the player to be notified when their primary
  # group changes.
  primary-group-change-notify: false

  super-user-user-id: '1'

  groups-treated-as-primary: ['Guest','Member','Veteran','Elder']

  group-mapping:
    '12' : 'Guest'
    '11' : 'Member'
    '10' : 'Veteran'
    '9'  : 'Elder'


Fire a custom event when you promote a player

Originally requested by: http://dev.bukkit.org/profiles/ebiggz/ via bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/130-fire-a-custom-event-when-you-promote-a-player/

ebiggz

I just was wondering if you would be willing to make a quick custom event that is called when you promote a player? My server co-owner and I write simple functionality and things for our server to make life easier for our players, mods, and us as admins. I would love to be able to act upon when a player gets promoted after they have registered successfully. We use PEX, so I tried listening to their custom event, but it seems to only fire when you use PEX commands to change a players groups/inheritance, and not anything else. I haven't done much digging or searching so maybe this is already do-able now. Let me know if there's something else I could be trying.

Thanks!

Ban Synchronization

Add support for synchronizing ban information between the web application and the Minecraft server's ban file.

Warnings Synchronization?

Originally requested by: http://dev.bukkit.org/profiles/XGZ_SAMSTERZ/ via Bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/119-warnings/

XGZ_SAMSTERZ

Hey !
I was thinking .. I use IPB and there is a feature that you can give warnings to people. And so I thought that maybe since alot of servers use a warnings plugin like SimpleWarnings, you can add compatibility so that when people get warnings on the server, cb automaticly gives the warning on IPB( or any other forum software) and vis-versa. also Another incompatible Web hosting application Is when you have an IPB service Hosted by the IPB company.. because they "dont allow any third party applications to acces the mysql db). This is why i transferred to the self-hosted service

Create row on users_stats table if none exists for the user?

Originally requested by: http://dev.bukkit.org/profiles/Zeroi9/ via bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/111-gametime-field-not-working-properly/

Zeroi9

Everything is working now, except for the the part creating a row to track the user. I have those rows in a different table (users_stats). It works fine if the user registered on the website, but we allow ingame registrations, so I have a cronjob query that runs a couple of times per day to create users_stats accounts from users accounts, and players lose playtime from this. Is this something you could add? If update affected 0 rows, create?

Hvarr: Include compatibility with SMF (Simple Machines Forum) ban database storage format

(Originally requested by http://dev.bukkit.org/profiles/Hvarr/ via bukkit ticket: http://dev.bukkit.org/bukkit-plugins/communitybridge-fm/tickets/108-support-for-smf-forums-bans-database/)

Hvarr

Dear developer,

I could not find myself able to add a support for my SMF forum ban database. I found that SMF has a dedicated bans table where it just throws in usernames and some other info like ban reason. I was not able however to find a field with banned 1\0 in members table.
Could you please add a support for SMF?
Maybe I missed something. Please double check if my info is correct.

Feaelin

Let me clarify my understanding of SMF's ban information. From what you said, it has a separate table to store bans. What are the fields/columns on that table? Guessing, so the precise names won't be right...

ban_table ----- user_id username ban_reason

any others?

My sense is that "someone is banned if they have an entry on this table".

I'll review the ban config and see if there is a way that 1.x supports this. I've a crazy schedule ahead of me so I'm not sure when I'll do so, though.

Hvarr

it's even more complicated. It has two ban tables.

The first table is smf_ban_groups:

Fields are: Image doesn't fit, so open it in a new tab.
1

The second table is smf_ban_items

Fields are: Image doesn't fit, so open it in a new tab.
2

Fields of smf_members are: id_member member_name date_registered posts id_group lngfile last_login real_name instant_messages unread_messages new_pm buddy_list pm_ignore_list pm_prefs mod_prefs message_labels passwd openid_uri email_address personal_text gender birthdate website_title website_url location icq aim yim msn hide_email show_online time_format signature time_offset avatar pm_email_notify karma_bad karma_good usertitle notify_announcements notify_regularity notify_send_body notify_types member_ip member_ip2 secret_question secret_answer id_theme is_activated validation_code id_msg_last_visit additional_groups smiley_set id_post_group total_time_logged_in password_salt ignore_boards warning passwd_flood pm_receive_from

as you can see, smf_members has nothing that tells us if user is banned or not.

Feaelin

For some reason I entirely missed your reply. Thank you for the detailed information. I've added this to the mix for getting the banning system rewritten, planned for 2.x.

Hvarr

Thank you Feaelin.

Support for SMF's Custom Profile Fields

Support for SMF's Custom Profile Fields

Needs INSERT ... UPDATE ON DUPLICATE. But it will also need additional info in the INSERT to begin with. The primary key is composite of member_id, theme_id, and key_name.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.