@@ -3148,7 +3148,7 @@ func markReadHandler(server *Server, client *Client, msg ircmsg.Message, rb *Res
31483148func metadataHandler (server * Server , client * Client , msg ircmsg.Message , rb * ResponseBuffer ) (exiting bool ) {
31493149 config := server .Config ()
31503150 if ! config .Metadata .Enabled {
3151- rb .Add (nil , server .name , "FAIL" , "METADATA" , "FORBIDDEN" , utils .SafeErrorParam (msg .Params [0 ]), "Metadata is disabled on this server" )
3151+ rb .Add (nil , server .name , "FAIL" , "METADATA" , "FORBIDDEN" , utils .SafeErrorParam (msg .Params [0 ]), client . t ( "Metadata is disabled on this server" ) )
31523152 return
31533153 }
31543154
@@ -3163,7 +3163,13 @@ func metadataHandler(server *Server, client *Client, msg ircmsg.Message, rb *Res
31633163 case "sub" , "unsub" , "subs" :
31643164 // these are session-local and function the same whether or not the client is registered
31653165 return metadataSubsHandler (client , subcommand , msg .Params , rb )
3166- case "get" , "set" , "list" , "clear" , "sync" :
3166+ case "set" , "clear" :
3167+ if config .Metadata .OperatorOnlyModification && ! client .HasRoleCapabs ("metadata" ) {
3168+ rb .Add (nil , server .name , "FAIL" , "METADATA" , "FORBIDDEN" , utils .SafeErrorParam (msg .Params [0 ]), client .t ("Only server operators can modify metadata" ))
3169+ return
3170+ }
3171+ fallthrough
3172+ case "get" , "list" , "sync" :
31673173 if client .registered {
31683174 return metadataRegisteredHandler (client , config , subcommand , msg .Params , rb )
31693175 } else {
0 commit comments