[ https://issues.apache.org/jira/browse/QPID-2539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12865168#action_12865168 ]
Andrew Kennedy commented on QPID-2539: -------------------------------------- Sorry for the delay in adding this... The changes are cosmetic, mostly, and would (admittedly) have the result of breaking Java to C++ compatibility, although C++ ACL files would remain parseable by the Java broker. The file format specification would have three types of declarations: group, acl or config, which I will describe below. Additionally, there are common features among these declarations. 1. Whitespace is considered to be any ASCII byte with a value below 0x20, and is ignored when it occurs between tokens. 2. Continuations using the '\' character (ASCII 0x5c) are allowed anywhere on a line, and can consist of a blank line with a continuation character as the lat non-whitespace token 3. Comments are line-style comments, and any text after an un-quoted '#' (ASCII 0x23) are ignored, including continuations. The '#' charater may appear in a quoted string. 4. Quoted strings consist of any ASCII inside matching pairs of ''' or '"' (ASCII 0x27 and 0x22) characters, including any otherwise special characters. 5. Tokens are *NOT* case sensitive, but quoted strings *ARE*. 6. The '=' (ASCII 0x3d) character is special, and is used to indicate property value assignment. 7. Wildcards are specified using the '*' (ASCII 0x2a) character in a property value string, which may be quoted. The declarations are as follows, using some kind of grammar, with + and * having the usual regular expression meanings, parenthesis denote grouping and brackets denote optional elements. CONFIG ( <config-property> '=' <TRUE | FALSE> ) + GROUP <group-name> ( <username | group-name> ) + [ <number> ] ACL <permission> <username | group-name | ALL> <operation> [ <object-type> ( <property-name> '=' <property-value> ) * ] This allows a rather looser and more readable style for ACL files, while still retaining the ability to read the stricter files accepted by the C++ broker. Bear in mind that the group declarations are to be deprecated, in favour of an external directory service, using a plugin mechanism. The initial <number> is used to allow rulesets to be created which allow indicidual rules to be enabled and disabled using an admin interface, and an ACL file using numbered lines would be restricted to having increasing numbers per rule, although gaps would be allowed to enable rules to be inserted later, again using an admin interface. This administrative interface would also allow saving of a modified ruleset and re-loading. Additionally, the following operations, object types and property names are defined, some of which are not present in the C++ implementation: Operation: ALL, CONSUME, PUBLISH, CREATE, ACCESS, CONNECT, BIND, UNBIND, DELETE, PURGE, UPDATE, ADMIN ObjectType: ALL, VIRTUALHOST, QUEUE, TOPIC, EXCHANGE, BROKER, LINK, ROUTE, METHOD, USER, LOG, CONFIG, ACL Property: ROUTING_KEY, NAME, QUEUE_NAME, OWNER, TYPE, ALTERNATE, INTERNAL, NO_WAIT, NO_LOCAL, NO_ACK, PASSIVE, DURABLE, EXCLUSIVE, TEMPORARY, AUTO_DELETE, TCP_SESSION, REMOTE_ADDR There are restrictions on the combinations of Operations and ObjectTypes, as well as which Properties can be used to specify an ObjectType. I will attach a more detailed document on these restrictions, which I am working on at the moment, describing the use cases that are covered. Andrew. > Update ACL file syntax to be clearer and add extra operations > ------------------------------------------------------------- > > Key: QPID-2539 > URL: https://issues.apache.org/jira/browse/QPID-2539 > Project: Qpid > Issue Type: Sub-task > Components: Java Broker > Reporter: Andrew Kennedy > Fix For: 0.7 > > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:dev-subscr...@qpid.apache.org