GroupServ
The point of GroupServ is to manage lists of nicks for use in channel access lists.
- A group has a name, a description, a creation date, a privacy setting, a list of admins, and a list of members.
- A group name starts with an @ ("AT") character to distinguish it from nicknames.
- The lists of admins and members can contain accounts (nicks) as well as groups. (cycles are possible and should be dealt with correctly)
GroupServ manages groups. In particular it
- allows everybody to create new groups,
- allows everybody to list non-private groups,
- allows everybody to query information about a specific group - The information provided depends on the channel's privacy setting: Everybody gets name, description, creation date. The list of members is restricted to members and admins (and opers) if the channel is private (Should the list of admins be restricted too?) -,
- allows group administrators to drop their group (provided no channel becomes masterless with that action?),
- allows group administrators to add/remove administrators and members,
- allows group administrators to toggle the privacy setting,
- provides a sudo method for services administrators to do actions with the privileges of a group admin.
Changes required to ChanServ:
- Needs to allow groups in place of a nick in channel access lists.
- Special care must be taken to handle the case correctly where an account (nick) is on the access list multiple times, be it once as a nick and once via a group or via different groups. In such cases the one access entry that grants the highest permission should be used.
Changes required to NickServ:
- Maybe show the list of groups an account is in with info (limited to opers and that person, just like channel lists).
Implementation
GroupServ is currently partially implemented, and deployed on OFTC.
Source Code
GroupServ is included from oftc-ircservices-1.3.6 onwards. You can browse source, submit and view bugs here
Help
- ACCESS: Maintains the group access list.
- The group access list specifies which nicknames are allowed access to group and at what level their access is. The commands available are as follows:
- ADD: Add a nickname to the group access list.
- MASTER - The highest level of access possible on a group. Setting this level of access on a group will allow full management of the group. Be careful of who you give this to.
- MEMBER - Recognizes the user as a member of the group.
- DEL: Remove a nickname from the group access list.
- LIST: Show the group access list.
- ADD: Add a nickname to the group access list.
- The group access list specifies which nicknames are allowed access to group and at what level their access is. The commands available are as follows:
- DROP: Releases your group for use.
- Releases your group for use and deletes it from the database. This cannot be undone. Releasing your group in this way will allow others to make use of it, or register it for their use, so make sure you really want this before confirming.
- HELP: Shows this help.
- INFO: Get information on a group.
- Displays all information that services knows about a group. Email addresses are not shown for PRIVATE groups.
- LIST: Shows a list of groups matching a specified pattern.
- Shows a list of groups which are registered and match the pattern specified. Results will be limited to 50 matches, so try to be specific with your pattern.
- SET: Set group properties.
Set group properties. The various properties are shown below. Use HELP SET <property> to get help on the individual properties.
- URL
- Set/unset URL field to be shown in the INFO command. Specify '-' (without the quotes) to remove your URL.
- EMAIL
- Set/unset e-mail field on the group. For display purposes only. Is shown in the INFO command if PRIVATE is turned off.
- PRIVATE
- Enables/disables the private flag on your group which prevents your e-mail address being shown in an INFO request, and also prevents your group showing in a list.
- URL
Suggestions
- Provide a group-wide access list for channels registered to the group.
For example, if nick is listed on the access list of @group with operator status or higher, if nick joined any channel registered to @group then the user would be have automatic access. basically, saving a group administrator having to add a new IRC operator to all channels that the group had registered. -- SteffanWood 2009-06-23 19:23:00
Also, sharing channel automatic kick lists, for example, if nick is listed on the automatic kick list of @group, if nick joined any channel registered to @group, that user would be automatically kicked. -- SteffanWood 2009-06-23 19:23:00
Provide groups registered with GroupServ a pseudo client for their group channel(s), possibly providing logging facilities, or other useful utilities. -- SteffanWood 2009-06-23 19:23:00
Should ACCESS @group add nick default to MEMBER if no other level is specified? -- SteffanWood 2009-06-23 19:23:00
At first I found "ACCESS @group ADD" weird - would MEMBER @group ADD be a better name? (But it wouldn't match ChanServ's command list) -- ChristophBerg
Personally I prefer ACCESS; it matches the current services which work well. If it's not broke, why fix it? -- SteffanWood 2009-06-24 18:27:45
Should we forbid registering @foo if channel #foo exists and the user is not master on that channel?
Similary for nick? -- ChristophBerg
/cs INFO #channel should include the MASTER group members -- ChristophBerg
LIST pattern should print the group descriptions -- ChristophBerg
