Fix the port
This commit is contained in:
515
textproc/augeas/863.patch
Normal file
515
textproc/augeas/863.patch
Normal file
@ -0,0 +1,515 @@
|
||||
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
|
||||
|
||||
@ -1,15 +1,40 @@
|
||||
--- lenses/rsyslog.aug.orig 2025-07-23 05:14:55 UTC
|
||||
+++ lenses/rsyslog.aug
|
||||
@@ -53,11 +53,7 @@ let namedpipe = Syslog.pipe . Sep.space . [ label "pip
|
||||
--- lenses/rsyslog.aug.orig 2025-07-23 13:11:53.989669000 +0200
|
||||
+++ lenses/rsyslog.aug 2025-07-23 13:12:09.304191000 +0200
|
||||
@@ -53,8 +53,10 @@
|
||||
|
||||
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
|
||||
+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
|
||||
+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" ] ) .
|
||||
@@ -87,9 +89,23 @@
|
||||
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 )*
|
||||
+(* 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 ]
|
||||
|
||||
-let lns = entries . ( program | hostname )*
|
||||
+(* 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/*"
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
--- tests/root/var/tmp/test-quoted-strings.txt.orig 2022-11-14 10:02:37 UTC
|
||||
+++ tests/root/var/tmp/test-quoted-strings.txt
|
||||
@@ -1 +1 @@
|
||||
-find this: ][ )( . * $ / \ " '
|
||||
+find this: ]][ )( . * $ / \
|
||||
@ -1,38 +0,0 @@
|
||||
--- tests/test-augtool/quoted-strings.sh.orig 2022-11-13 10:55:34 UTC
|
||||
+++ tests/test-augtool/quoted-strings.sh
|
||||
@@ -0,0 +1,35 @@
|
||||
+#!/bin/bash
|
||||
+
|
||||
+commands="
|
||||
+set /files/var/tmp/test-quoted-strings.txt/01 '['
|
||||
+set /files/var/tmp/test-quoted-strings.txt/02 ']'
|
||||
+set /files/var/tmp/test-quoted-strings.txt/03 ']['
|
||||
+set /files/var/tmp/test-quoted-strings.txt/04 '[]'
|
||||
+set /files/var/tmp/test-quoted-strings.txt/05 '[]['
|
||||
+set /files/var/tmp/test-quoted-strings.txt/06 '[]]'
|
||||
+set /files/var/tmp/test-quoted-strings.txt/07 '('
|
||||
+set /files/var/tmp/test-quoted-strings.txt/08 ')'
|
||||
+set /files/var/tmp/test-quoted-strings.txt/09 '"\""'
|
||||
+insert 010 after /files/var/tmp/test-quoted-strings.txt/seq::*[.=~regexp('.*\]\]\[ \)\( .*')]
|
||||
+set /files/var/tmp/test-quoted-strings.txt/010 'found ]][ )('
|
||||
+insert 011 after /files/var/tmp/test-quoted-strings.txt/seq::*[.=~regexp('.*\\\\..*')]
|
||||
+set /files/var/tmp/test-quoted-strings.txt/011 'found .'
|
||||
+"
|
||||
+lens=Simplelines.lns
|
||||
+file="/var/tmp/test-quoted-strings.txt"
|
||||
+
|
||||
+diff='--- /var/tmp/test-quoted-strings.txt
|
||||
++++ /var/tmp/test-quoted-strings.txt.augnew
|
||||
+@@ -1 +1,12 @@
|
||||
+ find this: ]][ )( . * $ / \
|
||||
++found .
|
||||
++found ]][ )(
|
||||
++[
|
||||
++]
|
||||
++][
|
||||
++[]
|
||||
++[][
|
||||
++[]]
|
||||
++(
|
||||
++)
|
||||
++"'
|
||||
Reference in New Issue
Block a user