charybdis-ircd / charybdis

Scalable IRCv3.2 server for large, community-oriented networks
GNU General Public License v2.0
231 stars 102 forks source link

Propagate OPER #282

Closed edk0 closed 4 years ago

edk0 commented 4 years ago

Move opername and privset storage to struct User, so it can exist for remote opers.

On /oper and when bursting opers, send:

:foo OPER opername privset

which sets foo's opername and privset. The contents of the privset on remote servers come from the remote server's config, so the potential for confusion exists if these do not match.

If an oper's privset does not exist on a server that sees it, it will complain, but create a placeholder privset. If the privset is created by a rehash, this will be reflected properly.

/privs is udpated to take an optional argument, the server to query, and is now local by default:

/privs [[nick_or_server] nick]