not neededwq
This commit is contained in:
@ -1,515 +0,0 @@
|
|||||||
From 78a9c2add3dd37d023df67e9089de277bd98f914 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Xavier Beaudouin <xbeaudouin@gmail.com>
|
|
||||||
Date: Mon, 2 Jun 2025 09:33:57 +0200
|
|
||||||
Subject: [PATCH 1/3] lenses/rsyslog.aug: Fix if xxx then { }
|
|
||||||
|
|
||||||
If the rsyslog.conf have :
|
|
||||||
if $programname != "devd" then {
|
|
||||||
}
|
|
||||||
|
|
||||||
The lense fails with a parse_failed.
|
|
||||||
|
|
||||||
This fix bug #846
|
|
||||||
---
|
|
||||||
lenses/rsyslog.aug | 216 +++++++++++++++++++++++++--------------------
|
|
||||||
1 file changed, 118 insertions(+), 98 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lenses/rsyslog.aug b/lenses/rsyslog.aug
|
|
||||||
index 29ff9b104..4d56d37cb 100644
|
|
||||||
--- a/lenses/rsyslog.aug
|
|
||||||
+++ b/lenses/rsyslog.aug
|
|
||||||
@@ -1,98 +1,118 @@
|
|
||||||
-(*
|
|
||||||
-Module: Rsyslog
|
|
||||||
- Parses /etc/rsyslog.conf
|
|
||||||
-
|
|
||||||
-Author: Raphael Pinson <raphael.pinsons@camptocamp.com>
|
|
||||||
-
|
|
||||||
-About: Reference
|
|
||||||
- This lens tries to keep as close as possible to `man 5 rsyslog.conf` where possible.
|
|
||||||
-
|
|
||||||
-About: License
|
|
||||||
- This file is licenced under the LGPL v2+, like the rest of Augeas.
|
|
||||||
-
|
|
||||||
-About: Lens Usage
|
|
||||||
- To be documented
|
|
||||||
-
|
|
||||||
-About: Configuration files
|
|
||||||
- This lens applies to /etc/rsyslog.conf. See <filter>.
|
|
||||||
-
|
|
||||||
-About: Examples
|
|
||||||
- The <Test_Rsyslog> file contains various examples and tests.
|
|
||||||
-*)
|
|
||||||
-module Rsyslog =
|
|
||||||
-
|
|
||||||
-autoload xfm
|
|
||||||
-
|
|
||||||
-let macro_rx = /[^,# \n\t][^#\n]*[^,# \n\t]|[^,# \n\t]/
|
|
||||||
-let macro = [ key /$[A-Za-z0-9]+/ . Sep.space . store macro_rx . Util.comment_or_eol ]
|
|
||||||
-
|
|
||||||
-let config_object_param = [ key /[A-Za-z.]+/ . Sep.equal . Quote.dquote
|
|
||||||
- . store /[^"]+/ . Quote.dquote ]
|
|
||||||
-(* Inside config objects, we allow embedded comments; we don't surface them
|
|
||||||
- * in the tree though *)
|
|
||||||
-let config_sep = del /[ \t]+|[ \t]*#.*\n[ \t]*/ " "
|
|
||||||
-
|
|
||||||
-let config_object =
|
|
||||||
- [ key /action|global|input|module|parser|timezone|include/ .
|
|
||||||
- Sep.lbracket .
|
|
||||||
- config_object_param . ( config_sep . config_object_param )* .
|
|
||||||
- Sep.rbracket . Util.comment_or_eol ]
|
|
||||||
-
|
|
||||||
-(* View: users
|
|
||||||
- Map :omusrmsg: and a list of users, or a single *
|
|
||||||
-*)
|
|
||||||
-let omusrmsg = Util.del_str ":omusrmsg:" .
|
|
||||||
- Syslog.label_opt_list_or "omusrmsg" (store Syslog.word)
|
|
||||||
- Syslog.comma "*"
|
|
||||||
-
|
|
||||||
-(* View: file_tmpl
|
|
||||||
- File action with a specified template *)
|
|
||||||
-let file_tmpl = Syslog.file . [ label "template" . Util.del_str ";" . store Rx.word ]
|
|
||||||
-
|
|
||||||
-let dynamic = [ Util.del_str "?" . label "dynamic" . store Rx.word ]
|
|
||||||
-
|
|
||||||
-let namedpipe = Syslog.pipe . Sep.space . [ label "pipe" . store Syslog.file_r ]
|
|
||||||
-
|
|
||||||
-let action = Syslog.action | omusrmsg | file_tmpl | dynamic | namedpipe
|
|
||||||
-
|
|
||||||
-(* Cannot use syslog program because rsyslog does not suppport #! *)
|
|
||||||
-let program = [ label "program" . Syslog.bang .
|
|
||||||
- ( Syslog.opt_plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
- Syslog.programs . Util.eol . Syslog.entries ]
|
|
||||||
-
|
|
||||||
-(* Cannot use syslog hostname because rsyslog does not suppport #+/- *)
|
|
||||||
-let hostname = [ label "hostname" .
|
|
||||||
- ( Syslog.plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
- Syslog.hostnames . Util.eol . Syslog.entries ]
|
|
||||||
-
|
|
||||||
-(* View: actions *)
|
|
||||||
-let actions =
|
|
||||||
- let prop_act = [ label "action" . action ]
|
|
||||||
- in let act_sep = del /[ \t]*\n&[ \t]*/ "\n& "
|
|
||||||
- in Build.opt_list prop_act act_sep
|
|
||||||
-
|
|
||||||
-(* View: entry
|
|
||||||
- An entry contains selectors and an action
|
|
||||||
-*)
|
|
||||||
-let entry = [ label "entry" . Syslog.selectors . Syslog.sep_tab .
|
|
||||||
- actions . Util.eol ]
|
|
||||||
-
|
|
||||||
-(* View: prop_filter
|
|
||||||
- Parses property-based filters, which start with ":" and the property name *)
|
|
||||||
-let prop_filter =
|
|
||||||
- let sep = Sep.comma . Util.del_opt_ws " "
|
|
||||||
- in let prop_name = [ Util.del_str ":" . label "property" . store Rx.word ]
|
|
||||||
- in let prop_oper = [ label "operation" . store /[A-Za-z!-]+/ ]
|
|
||||||
- in let prop_val = [ label "value" . Quote.do_dquote (store /[^\n"]*/) ]
|
|
||||||
- in [ label "filter" . prop_name . sep . prop_oper . sep . prop_val .
|
|
||||||
- Sep.space . actions . Util.eol ]
|
|
||||||
-
|
|
||||||
-let entries = ( Syslog.empty | Util.comment | entry | macro | config_object | prop_filter )*
|
|
||||||
-
|
|
||||||
-let lns = entries . ( program | hostname )*
|
|
||||||
-
|
|
||||||
-let filter = incl "/etc/rsyslog.conf"
|
|
||||||
- . incl "/etc/rsyslog.d/*"
|
|
||||||
- . Util.stdexcl
|
|
||||||
-
|
|
||||||
-let xfm = transform lns filter
|
|
||||||
+(*
|
|
||||||
+Module: Rsyslog
|
|
||||||
+ Parses /etc/rsyslog.conf
|
|
||||||
+
|
|
||||||
+Author: Raphael Pinson <raphael.pinsons@camptocamp.com>
|
|
||||||
+
|
|
||||||
+About: Reference
|
|
||||||
+ This lens tries to keep as close as possible to `man 5 rsyslog.conf` where possible.
|
|
||||||
+
|
|
||||||
+About: License
|
|
||||||
+ This file is licenced under the LGPL v2+, like the rest of Augeas.
|
|
||||||
+
|
|
||||||
+About: Lens Usage
|
|
||||||
+ To be documented
|
|
||||||
+
|
|
||||||
+About: Configuration files
|
|
||||||
+ This lens applies to /etc/rsyslog.conf. See <filter>.
|
|
||||||
+
|
|
||||||
+About: Examples
|
|
||||||
+ The <Test_Rsyslog> file contains various examples and tests.
|
|
||||||
+*)
|
|
||||||
+module Rsyslog =
|
|
||||||
+
|
|
||||||
+autoload xfm
|
|
||||||
+
|
|
||||||
+let macro_rx = /[^,# \n\t][^#\n]*[^,# \n\t]|[^,# \n\t]/
|
|
||||||
+let macro = [ key /$[A-Za-z0-9]+/ . Sep.space . store macro_rx . Util.comment_or_eol ]
|
|
||||||
+
|
|
||||||
+let config_object_param = [ key /[A-Za-z.]+/ . Sep.equal . Quote.dquote
|
|
||||||
+ . store /[^"]+/ . Quote.dquote ]
|
|
||||||
+(* Inside config objects, we allow embedded comments; we don't surface them
|
|
||||||
+ * in the tree though *)
|
|
||||||
+let config_sep = del /[ \t]+|[ \t]*#.*\n[ \t]*/ " "
|
|
||||||
+
|
|
||||||
+let config_object =
|
|
||||||
+ [ key /action|global|input|module|parser|timezone|include/ .
|
|
||||||
+ Sep.lbracket .
|
|
||||||
+ config_object_param . ( config_sep . config_object_param )* .
|
|
||||||
+ Sep.rbracket . Util.comment_or_eol ]
|
|
||||||
+
|
|
||||||
+(* View: users
|
|
||||||
+ Map :omusrmsg: and a list of users, or a single *
|
|
||||||
+*)
|
|
||||||
+let omusrmsg = Util.del_str ":omusrmsg:" .
|
|
||||||
+ Syslog.label_opt_list_or "omusrmsg" (store Syslog.word)
|
|
||||||
+ Syslog.comma "*"
|
|
||||||
+
|
|
||||||
+(* View: file_tmpl
|
|
||||||
+ File action with a specified template *)
|
|
||||||
+let file_tmpl = Syslog.file . [ label "template" . Util.del_str ";" . store Rx.word ]
|
|
||||||
+
|
|
||||||
+let dynamic = [ Util.del_str "?" . label "dynamic" . store Rx.word ]
|
|
||||||
+
|
|
||||||
+let namedpipe = Syslog.pipe . Sep.space . [ label "pipe" . store Syslog.file_r ]
|
|
||||||
+
|
|
||||||
+(* View: action_config
|
|
||||||
+ Handle action(type="..." users="...") syntax *)
|
|
||||||
+let action_config =
|
|
||||||
+ [ key "action" . Util.del_str "(" .
|
|
||||||
+ [ label "params" . store /[^)]+/ ] . Util.del_str ")" ]
|
|
||||||
+
|
|
||||||
+let action = Syslog.action | omusrmsg | file_tmpl | dynamic | namedpipe | action_config
|
|
||||||
+
|
|
||||||
+(* Cannot use syslog program because rsyslog does not suppport #! *)
|
|
||||||
+let program = [ label "program" . Syslog.bang .
|
|
||||||
+ ( Syslog.opt_plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
+ Syslog.programs . Util.eol . Syslog.entries ]
|
|
||||||
+
|
|
||||||
+(* Cannot use syslog hostname because rsyslog does not suppport #+/- *)
|
|
||||||
+let hostname = [ label "hostname" .
|
|
||||||
+ ( Syslog.plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
+ Syslog.hostnames . Util.eol . Syslog.entries ]
|
|
||||||
+
|
|
||||||
+(* View: actions *)
|
|
||||||
+let actions =
|
|
||||||
+ let prop_act = [ label "action" . action ]
|
|
||||||
+ in let act_sep = del /[ \t]*\n&[ \t]*/ "\n& "
|
|
||||||
+ in Build.opt_list prop_act act_sep
|
|
||||||
+
|
|
||||||
+(* View: entry
|
|
||||||
+ An entry contains selectors and an action
|
|
||||||
+*)
|
|
||||||
+let entry = [ label "entry" . Syslog.selectors . Syslog.sep_tab .
|
|
||||||
+ actions . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* View: prop_filter
|
|
||||||
+ Parses property-based filters, which start with ":" and the property name *)
|
|
||||||
+let prop_filter =
|
|
||||||
+ let sep = Sep.comma . Util.del_opt_ws " "
|
|
||||||
+ in let prop_name = [ Util.del_str ":" . label "property" . store Rx.word ]
|
|
||||||
+ in let prop_oper = [ label "operation" . store /[A-Za-z!-]+/ ]
|
|
||||||
+ in let prop_val = [ label "value" . Quote.do_dquote (store /[^\n"]*/) ]
|
|
||||||
+ in [ label "filter" . prop_name . sep . prop_oper . sep . prop_val .
|
|
||||||
+ Sep.space . actions . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* View: condition
|
|
||||||
+ Parses if condition blocks, e.g., if $programname != "devd" then { ... }
|
|
||||||
+*)
|
|
||||||
+let condition =
|
|
||||||
+ let cond_rx = /\\$[a-zA-Z0-9_]+[ \t]*(==|!=|=~|!~|>|<|>=|<=)[ \t]*("[^"]*"|[0-9]+)/ in
|
|
||||||
+ [ key "if" . Sep.space .
|
|
||||||
+ [ label "condition" . store cond_rx ] . Sep.space .
|
|
||||||
+ Util.del_str "then" . Sep.space . Util.del_str "{" . (del /[ \t\n]*/ "" ) .
|
|
||||||
+ (entry | Util.comment | Syslog.empty)* .
|
|
||||||
+ Util.del_str "}" . (del /[ \t\n]*/ "" ) . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* Fallback for unparsed lines *)
|
|
||||||
+let invalid = [ label "invalid" . store /[^\n]*\n/ ]
|
|
||||||
+
|
|
||||||
+let entries = ( Syslog.empty | Util.comment | entry | macro | config_object | prop_filter | condition | invalid )*
|
|
||||||
+
|
|
||||||
+let lns = entries . ( program | hostname | condition )*
|
|
||||||
+
|
|
||||||
+let filter = incl "/etc/rsyslog.conf"
|
|
||||||
+ . incl "/etc/rsyslog.d/*"
|
|
||||||
+ . Util.stdexcl
|
|
||||||
+
|
|
||||||
+let xfm = transform lns filter
|
|
||||||
|
|
||||||
From 1b3b1754b2e9624cab49d0dcc32bc55ba2460ef7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Xavier Beaudouin <xbeaudouin@gmail.com>
|
|
||||||
Date: Mon, 14 Jul 2025 17:03:39 +0700
|
|
||||||
Subject: [PATCH 2/3] Removed uncessary carriage return.
|
|
||||||
|
|
||||||
---
|
|
||||||
lenses/rsyslog.aug | 236 ++++++++++++++++++++++-----------------------
|
|
||||||
1 file changed, 118 insertions(+), 118 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lenses/rsyslog.aug b/lenses/rsyslog.aug
|
|
||||||
index 4d56d37cb..b51f6fe8c 100644
|
|
||||||
--- a/lenses/rsyslog.aug
|
|
||||||
+++ b/lenses/rsyslog.aug
|
|
||||||
@@ -1,118 +1,118 @@
|
|
||||||
-(*
|
|
||||||
-Module: Rsyslog
|
|
||||||
- Parses /etc/rsyslog.conf
|
|
||||||
-
|
|
||||||
-Author: Raphael Pinson <raphael.pinsons@camptocamp.com>
|
|
||||||
-
|
|
||||||
-About: Reference
|
|
||||||
- This lens tries to keep as close as possible to `man 5 rsyslog.conf` where possible.
|
|
||||||
-
|
|
||||||
-About: License
|
|
||||||
- This file is licenced under the LGPL v2+, like the rest of Augeas.
|
|
||||||
-
|
|
||||||
-About: Lens Usage
|
|
||||||
- To be documented
|
|
||||||
-
|
|
||||||
-About: Configuration files
|
|
||||||
- This lens applies to /etc/rsyslog.conf. See <filter>.
|
|
||||||
-
|
|
||||||
-About: Examples
|
|
||||||
- The <Test_Rsyslog> file contains various examples and tests.
|
|
||||||
-*)
|
|
||||||
-module Rsyslog =
|
|
||||||
-
|
|
||||||
-autoload xfm
|
|
||||||
-
|
|
||||||
-let macro_rx = /[^,# \n\t][^#\n]*[^,# \n\t]|[^,# \n\t]/
|
|
||||||
-let macro = [ key /$[A-Za-z0-9]+/ . Sep.space . store macro_rx . Util.comment_or_eol ]
|
|
||||||
-
|
|
||||||
-let config_object_param = [ key /[A-Za-z.]+/ . Sep.equal . Quote.dquote
|
|
||||||
- . store /[^"]+/ . Quote.dquote ]
|
|
||||||
-(* Inside config objects, we allow embedded comments; we don't surface them
|
|
||||||
- * in the tree though *)
|
|
||||||
-let config_sep = del /[ \t]+|[ \t]*#.*\n[ \t]*/ " "
|
|
||||||
-
|
|
||||||
-let config_object =
|
|
||||||
- [ key /action|global|input|module|parser|timezone|include/ .
|
|
||||||
- Sep.lbracket .
|
|
||||||
- config_object_param . ( config_sep . config_object_param )* .
|
|
||||||
- Sep.rbracket . Util.comment_or_eol ]
|
|
||||||
-
|
|
||||||
-(* View: users
|
|
||||||
- Map :omusrmsg: and a list of users, or a single *
|
|
||||||
-*)
|
|
||||||
-let omusrmsg = Util.del_str ":omusrmsg:" .
|
|
||||||
- Syslog.label_opt_list_or "omusrmsg" (store Syslog.word)
|
|
||||||
- Syslog.comma "*"
|
|
||||||
-
|
|
||||||
-(* View: file_tmpl
|
|
||||||
- File action with a specified template *)
|
|
||||||
-let file_tmpl = Syslog.file . [ label "template" . Util.del_str ";" . store Rx.word ]
|
|
||||||
-
|
|
||||||
-let dynamic = [ Util.del_str "?" . label "dynamic" . store Rx.word ]
|
|
||||||
-
|
|
||||||
-let namedpipe = Syslog.pipe . Sep.space . [ label "pipe" . store Syslog.file_r ]
|
|
||||||
-
|
|
||||||
-(* View: action_config
|
|
||||||
- Handle action(type="..." users="...") syntax *)
|
|
||||||
-let action_config =
|
|
||||||
- [ key "action" . Util.del_str "(" .
|
|
||||||
- [ label "params" . store /[^)]+/ ] . Util.del_str ")" ]
|
|
||||||
-
|
|
||||||
-let action = Syslog.action | omusrmsg | file_tmpl | dynamic | namedpipe | action_config
|
|
||||||
-
|
|
||||||
-(* Cannot use syslog program because rsyslog does not suppport #! *)
|
|
||||||
-let program = [ label "program" . Syslog.bang .
|
|
||||||
- ( Syslog.opt_plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
- Syslog.programs . Util.eol . Syslog.entries ]
|
|
||||||
-
|
|
||||||
-(* Cannot use syslog hostname because rsyslog does not suppport #+/- *)
|
|
||||||
-let hostname = [ label "hostname" .
|
|
||||||
- ( Syslog.plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
- Syslog.hostnames . Util.eol . Syslog.entries ]
|
|
||||||
-
|
|
||||||
-(* View: actions *)
|
|
||||||
-let actions =
|
|
||||||
- let prop_act = [ label "action" . action ]
|
|
||||||
- in let act_sep = del /[ \t]*\n&[ \t]*/ "\n& "
|
|
||||||
- in Build.opt_list prop_act act_sep
|
|
||||||
-
|
|
||||||
-(* View: entry
|
|
||||||
- An entry contains selectors and an action
|
|
||||||
-*)
|
|
||||||
-let entry = [ label "entry" . Syslog.selectors . Syslog.sep_tab .
|
|
||||||
- actions . Util.eol ]
|
|
||||||
-
|
|
||||||
-(* View: prop_filter
|
|
||||||
- Parses property-based filters, which start with ":" and the property name *)
|
|
||||||
-let prop_filter =
|
|
||||||
- let sep = Sep.comma . Util.del_opt_ws " "
|
|
||||||
- in let prop_name = [ Util.del_str ":" . label "property" . store Rx.word ]
|
|
||||||
- in let prop_oper = [ label "operation" . store /[A-Za-z!-]+/ ]
|
|
||||||
- in let prop_val = [ label "value" . Quote.do_dquote (store /[^\n"]*/) ]
|
|
||||||
- in [ label "filter" . prop_name . sep . prop_oper . sep . prop_val .
|
|
||||||
- Sep.space . actions . Util.eol ]
|
|
||||||
-
|
|
||||||
-(* View: condition
|
|
||||||
- Parses if condition blocks, e.g., if $programname != "devd" then { ... }
|
|
||||||
-*)
|
|
||||||
-let condition =
|
|
||||||
- let cond_rx = /\\$[a-zA-Z0-9_]+[ \t]*(==|!=|=~|!~|>|<|>=|<=)[ \t]*("[^"]*"|[0-9]+)/ in
|
|
||||||
- [ key "if" . Sep.space .
|
|
||||||
- [ label "condition" . store cond_rx ] . Sep.space .
|
|
||||||
- Util.del_str "then" . Sep.space . Util.del_str "{" . (del /[ \t\n]*/ "" ) .
|
|
||||||
- (entry | Util.comment | Syslog.empty)* .
|
|
||||||
- Util.del_str "}" . (del /[ \t\n]*/ "" ) . Util.eol ]
|
|
||||||
-
|
|
||||||
-(* Fallback for unparsed lines *)
|
|
||||||
-let invalid = [ label "invalid" . store /[^\n]*\n/ ]
|
|
||||||
-
|
|
||||||
-let entries = ( Syslog.empty | Util.comment | entry | macro | config_object | prop_filter | condition | invalid )*
|
|
||||||
-
|
|
||||||
-let lns = entries . ( program | hostname | condition )*
|
|
||||||
-
|
|
||||||
-let filter = incl "/etc/rsyslog.conf"
|
|
||||||
- . incl "/etc/rsyslog.d/*"
|
|
||||||
- . Util.stdexcl
|
|
||||||
-
|
|
||||||
-let xfm = transform lns filter
|
|
||||||
+(*
|
|
||||||
+Module: Rsyslog
|
|
||||||
+ Parses /etc/rsyslog.conf
|
|
||||||
+
|
|
||||||
+Author: Raphael Pinson <raphael.pinsons@camptocamp.com>
|
|
||||||
+
|
|
||||||
+About: Reference
|
|
||||||
+ This lens tries to keep as close as possible to `man 5 rsyslog.conf` where possible.
|
|
||||||
+
|
|
||||||
+About: License
|
|
||||||
+ This file is licenced under the LGPL v2+, like the rest of Augeas.
|
|
||||||
+
|
|
||||||
+About: Lens Usage
|
|
||||||
+ To be documented
|
|
||||||
+
|
|
||||||
+About: Configuration files
|
|
||||||
+ This lens applies to /etc/rsyslog.conf. See <filter>.
|
|
||||||
+
|
|
||||||
+About: Examples
|
|
||||||
+ The <Test_Rsyslog> file contains various examples and tests.
|
|
||||||
+*)
|
|
||||||
+module Rsyslog =
|
|
||||||
+
|
|
||||||
+autoload xfm
|
|
||||||
+
|
|
||||||
+let macro_rx = /[^,# \n\t][^#\n]*[^,# \n\t]|[^,# \n\t]/
|
|
||||||
+let macro = [ key /$[A-Za-z0-9]+/ . Sep.space . store macro_rx . Util.comment_or_eol ]
|
|
||||||
+
|
|
||||||
+let config_object_param = [ key /[A-Za-z.]+/ . Sep.equal . Quote.dquote
|
|
||||||
+ . store /[^"]+/ . Quote.dquote ]
|
|
||||||
+(* Inside config objects, we allow embedded comments; we don't surface them
|
|
||||||
+ * in the tree though *)
|
|
||||||
+let config_sep = del /[ \t]+|[ \t]*#.*\n[ \t]*/ " "
|
|
||||||
+
|
|
||||||
+let config_object =
|
|
||||||
+ [ key /action|global|input|module|parser|timezone|include/ .
|
|
||||||
+ Sep.lbracket .
|
|
||||||
+ config_object_param . ( config_sep . config_object_param )* .
|
|
||||||
+ Sep.rbracket . Util.comment_or_eol ]
|
|
||||||
+
|
|
||||||
+(* View: users
|
|
||||||
+ Map :omusrmsg: and a list of users, or a single *
|
|
||||||
+*)
|
|
||||||
+let omusrmsg = Util.del_str ":omusrmsg:" .
|
|
||||||
+ Syslog.label_opt_list_or "omusrmsg" (store Syslog.word)
|
|
||||||
+ Syslog.comma "*"
|
|
||||||
+
|
|
||||||
+(* View: file_tmpl
|
|
||||||
+ File action with a specified template *)
|
|
||||||
+let file_tmpl = Syslog.file . [ label "template" . Util.del_str ";" . store Rx.word ]
|
|
||||||
+
|
|
||||||
+let dynamic = [ Util.del_str "?" . label "dynamic" . store Rx.word ]
|
|
||||||
+
|
|
||||||
+let namedpipe = Syslog.pipe . Sep.space . [ label "pipe" . store Syslog.file_r ]
|
|
||||||
+
|
|
||||||
+(* View: action_config
|
|
||||||
+ Handle action(type="..." users="...") syntax *)
|
|
||||||
+let action_config =
|
|
||||||
+ [ key "action" . Util.del_str "(" .
|
|
||||||
+ [ label "params" . store /[^)]+/ ] . Util.del_str ")" ]
|
|
||||||
+
|
|
||||||
+let action = Syslog.action | omusrmsg | file_tmpl | dynamic | namedpipe | action_config
|
|
||||||
+
|
|
||||||
+(* Cannot use syslog program because rsyslog does not suppport #! *)
|
|
||||||
+let program = [ label "program" . Syslog.bang .
|
|
||||||
+ ( Syslog.opt_plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
+ Syslog.programs . Util.eol . Syslog.entries ]
|
|
||||||
+
|
|
||||||
+(* Cannot use syslog hostname because rsyslog does not suppport #+/- *)
|
|
||||||
+let hostname = [ label "hostname" .
|
|
||||||
+ ( Syslog.plus | [ Build.xchgs "-" "reverse" ] ) .
|
|
||||||
+ Syslog.hostnames . Util.eol . Syslog.entries ]
|
|
||||||
+
|
|
||||||
+(* View: actions *)
|
|
||||||
+let actions =
|
|
||||||
+ let prop_act = [ label "action" . action ]
|
|
||||||
+ in let act_sep = del /[ \t]*\n&[ \t]*/ "\n& "
|
|
||||||
+ in Build.opt_list prop_act act_sep
|
|
||||||
+
|
|
||||||
+(* View: entry
|
|
||||||
+ An entry contains selectors and an action
|
|
||||||
+*)
|
|
||||||
+let entry = [ label "entry" . Syslog.selectors . Syslog.sep_tab .
|
|
||||||
+ actions . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* View: prop_filter
|
|
||||||
+ Parses property-based filters, which start with ":" and the property name *)
|
|
||||||
+let prop_filter =
|
|
||||||
+ let sep = Sep.comma . Util.del_opt_ws " "
|
|
||||||
+ in let prop_name = [ Util.del_str ":" . label "property" . store Rx.word ]
|
|
||||||
+ in let prop_oper = [ label "operation" . store /[A-Za-z!-]+/ ]
|
|
||||||
+ in let prop_val = [ label "value" . Quote.do_dquote (store /[^\n"]*/) ]
|
|
||||||
+ in [ label "filter" . prop_name . sep . prop_oper . sep . prop_val .
|
|
||||||
+ Sep.space . actions . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* View: condition
|
|
||||||
+ Parses if condition blocks, e.g., if $programname != "devd" then { ... }
|
|
||||||
+*)
|
|
||||||
+let condition =
|
|
||||||
+ let cond_rx = /\\$[a-zA-Z0-9_]+[ \t]*(==|!=|=~|!~|>|<|>=|<=)[ \t]*("[^"]*"|[0-9]+)/ in
|
|
||||||
+ [ key "if" . Sep.space .
|
|
||||||
+ [ label "condition" . store cond_rx ] . Sep.space .
|
|
||||||
+ Util.del_str "then" . Sep.space . Util.del_str "{" . (del /[ \t\n]*/ "" ) .
|
|
||||||
+ (entry | Util.comment | Syslog.empty)* .
|
|
||||||
+ Util.del_str "}" . (del /[ \t\n]*/ "" ) . Util.eol ]
|
|
||||||
+
|
|
||||||
+(* Fallback for unparsed lines *)
|
|
||||||
+let invalid = [ label "invalid" . store /[^\n]*\n/ ]
|
|
||||||
+
|
|
||||||
+let entries = ( Syslog.empty | Util.comment | entry | macro | config_object | prop_filter | condition | invalid )*
|
|
||||||
+
|
|
||||||
+let lns = entries . ( program | hostname | condition )*
|
|
||||||
+
|
|
||||||
+let filter = incl "/etc/rsyslog.conf"
|
|
||||||
+ . incl "/etc/rsyslog.d/*"
|
|
||||||
+ . Util.stdexcl
|
|
||||||
+
|
|
||||||
+let xfm = transform lns filter
|
|
||||||
|
|
||||||
From 3e34678abf8a29e9125221a890e6efb826bd36ff Mon Sep 17 00:00:00 2001
|
|
||||||
From: Xavier Beaudouin <xbeaudouin@gmail.com>
|
|
||||||
Date: Mon, 14 Jul 2025 17:11:16 +0700
|
|
||||||
Subject: [PATCH 3/3] Cleanup some unneeded comments.
|
|
||||||
|
|
||||||
---
|
|
||||||
lenses/rsyslog.aug | 6 +-----
|
|
||||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lenses/rsyslog.aug b/lenses/rsyslog.aug
|
|
||||||
index b51f6fe8c..ddd4829cf 100644
|
|
||||||
--- a/lenses/rsyslog.aug
|
|
||||||
+++ b/lenses/rsyslog.aug
|
|
||||||
@@ -53,11 +53,7 @@ let dynamic = [ Util.del_str "?" . label "dynamic" . store Rx.word ]
|
|
||||||
|
|
||||||
let namedpipe = Syslog.pipe . Sep.space . [ label "pipe" . store Syslog.file_r ]
|
|
||||||
|
|
||||||
-(* View: action_config
|
|
||||||
- Handle action(type="..." users="...") syntax *)
|
|
||||||
-let action_config =
|
|
||||||
- [ key "action" . Util.del_str "(" .
|
|
||||||
- [ label "params" . store /[^)]+/ ] . Util.del_str ")" ]
|
|
||||||
+let action_config = [ key "action" . Util.del_str "(" . [ label "params" . store /[^)]+/ ] . Util.del_str ")" ]
|
|
||||||
|
|
||||||
let action = Syslog.action | omusrmsg | file_tmpl | dynamic | namedpipe | action_config
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user