}
}
+\"basic-authentication-realm\" {
+ switch(driver.ctx_) {
+ case ParserContext::AGENT:
+ return AgentParser::make_BASIC_AUTHENTICATION_REALM(driver.loc_);
+ default:
+ return AgentParser::make_STRING("basic-authentication-realm", driver.loc_);
+ }
+}
+
\"user-context\" {
switch(driver.ctx_) {
case ParserContext::AGENT:
case ParserContext::SERVER:
case ParserContext::LOGGERS:
+ case ParserContext::BASIC_AUTHENTICATIONS:
return AgentParser::make_USER_CONTEXT(driver.loc_);
default:
return AgentParser::make_STRING("user-context", driver.loc_);
case ParserContext::AGENT:
case ParserContext::SERVER:
case ParserContext::LOGGERS:
+ case ParserContext::BASIC_AUTHENTICATIONS:
return AgentParser::make_COMMENT(driver.loc_);
default:
return AgentParser::make_STRING("comment", driver.loc_);
}
}
+\"basic-authentications\" {
+ switch(driver.ctx_) {
+ case ParserContext::AGENT:
+ return AgentParser::make_BASIC_AUTHENTICATIONS(driver.loc_);
+ default:
+ return AgentParser::make_STRING("basic-authentications", driver.loc_);
+ }
+}
+
+\"user\" {
+ switch(driver.ctx_) {
+ case ParserContext::BASIC_AUTHENTICATIONS:
+ return AgentParser::make_USER(driver.loc_);
+ default:
+ return AgentParser::make_STRING("user", driver.loc_);
+ }
+}
+
+\"password\" {
+ switch(driver.ctx_) {
+ case ParserContext::BASIC_AUTHENTICATIONS:
+ return AgentParser::make_PASSWORD(driver.loc_);
+ default:
+ return AgentParser::make_STRING("password", driver.loc_);
+ }
+}
+
{JSONString} {
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
CONTROL_AGENT "Control-agent"
HTTP_HOST "http-host"
HTTP_PORT "http-port"
+ BASIC_AUTHENTICATION_REALM "basic-authentication-realm"
USER_CONTEXT "user-context"
COMMENT "comment"
SOCKET_TYPE "socket-type"
UNIX "unix"
+ BASIC_AUTHENTICATIONS "basic-authentications"
+ USER "user"
+ PASSWORD "password"
+
HOOKS_LIBRARIES "hooks-libraries"
LIBRARY "library"
PARAMETERS "parameters"
// Dhcp6.
global_param: http_host
| http_port
+ | basic_authentication_realm
| control_sockets
+ | basic_authentications
| hooks_libraries
| loggers
| user_context
ctx.stack_.back()->set("http-port", prf);
};
+basic_authentication_realm: BASIC_AUTHENTICATION_REALM {
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr realm(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("basic-authentication-realm", realm);
+ ctx.leave();
+};
+
user_context: USER_CONTEXT {
ctx.enter(ctx.NO_KEYWORDS);
} COLON map_value {
// --- control-sockets end here ------------------------------------------------
+// --- basic-authentications starts here -----------------------------------------------------
+
+basic_authentications: BASIC_AUTHENTICATIONS {
+ ElementPtr l(new ListElement(ctx.loc2pos(@1)));
+ ctx.stack_.back()->set("basic-authentications", l);
+ ctx.stack_.push_back(l);
+ ctx.enter(ctx.BASIC_AUTHENTICATIONS);
+} COLON LSQUARE_BRACKET basic_auth_list RSQUARE_BRACKET {
+ ctx.stack_.pop_back();
+ ctx.leave();
+};
+
+basic_auth_list: %empty
+ | not_empty_basic_auth_list
+ ;
+
+not_empty_basic_auth_list: basic_auth
+ | not_empty_basic_auth_list COMMA basic_auth
+ ;
+
+basic_auth: LCURLY_BRACKET {
+ ElementPtr m(new MapElement(ctx.loc2pos(@1)));
+ ctx.stack_.back()->add(m);
+ ctx.stack_.push_back(m);
+} basic_auth_params RCURLY_BRACKET {
+ ctx.stack_.pop_back();
+};
+
+basic_auth_params: basic_auth_param
+ | basic_auth_params COMMA basic_auth_param
+ ;
+
+basic_auth_param: user
+ | password
+ | user_context
+ | comment
+ | unknown_map_entry
+ ;
+
+user: USER {
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr user(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("user", user);
+ ctx.leave();
+};
+
+password: PASSWORD {
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr password(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("password", password);
+ ctx.leave();
+};
+
+// --- basic-authentications end here -----------------------------------------------------
+
// --- Loggers starts here -----------------------------------------------------
loggers: LOGGERS {