/** * @return string */ public function getKey() { return wfWAFRuleComparison::getSubjectKey($this->getSubject()); }
/** * @return wfWAFRuleParserURLParam * @throws wfWAFParserSyntaxError */ private function parseURLParams() { $this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS); $urlParam = new wfWAFRuleParserURLParam(); while (true) { $token = $this->expectNextToken(); switch ($token->getType()) { case wfWAFRuleLexer::T_IDENTIFIER: $this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_ASSIGNMENT); if ($token->getValue() === 'url') { $url = $this->expectLiteral(); $urlParam->setUrl($url); } else { if ($token->getValue() === 'param') { $subject = $this->parseSubject(); $urlParam->setParam(wfWAFRuleComparison::getSubjectKey($subject)); } else { if ($token->getValue() === 'rules') { $rules = $this->expectLiteral(); $urlParam->setRules($rules); } } } break; case wfWAFRuleLexer::T_COMMA: break; case wfWAFRuleLexer::T_CLOSE_PARENTHESIS: break 2; default: $this->triggerSyntaxError($token, sprintf('Wordfence WAF Rules Syntax Error: Unexpected %s found on line %d, column %d', $token->getType(), $token->getLine(), $token->getColumn())); } } return $urlParam; }