pgreco / rpms / ipa

Forked from forks/areguera/rpms/ipa 4 years ago
Clone

Blame SOURCES/0148-install-introduce-generic-Kerberos-Augeas-lens.patch

483b06
From 01440531b0805d647b0a0a37e2c3ea9489d19a35 Mon Sep 17 00:00:00 2001
483b06
From: Jan Cholasta <jcholast@redhat.com>
483b06
Date: Thu, 18 May 2017 07:57:40 +0000
483b06
Subject: [PATCH] install: introduce generic Kerberos Augeas lens
483b06
483b06
Introduce new IPAKrb5 lens to handle krb5.conf and kdc.conf changes using
483b06
Augeas. The stock Krb5 lens does not work on our krb5.conf and kdc.conf.
483b06
483b06
https://pagure.io/freeipa/issue/6831
483b06
483b06
Reviewed-By: Stanislav Laznicka <slaznick@redhat.com>
483b06
Reviewed-By: Martin Babinsky <mbabinsk@redhat.com>
483b06
---
483b06
 freeipa.spec.in           |  1 +
483b06
 install/share/Makefile.am |  1 +
483b06
 install/share/ipakrb5.aug | 46 ++++++++++++++++++++++++++++++++++++++++++++++
483b06
 3 files changed, 48 insertions(+)
483b06
 create mode 100644 install/share/ipakrb5.aug
483b06
483b06
diff --git a/freeipa.spec.in b/freeipa.spec.in
483b06
index 6cb37ae53b039aa1d0e0509f62a3237504be6555..790e5838e0ba45ea9bbfe3bc3a1bd40c0bd3ac1a 100644
483b06
--- a/freeipa.spec.in
483b06
+++ b/freeipa.spec.in
483b06
@@ -1362,6 +1362,7 @@ fi
483b06
 %dir %{_usr}/share/ipa/schema.d
483b06
 %attr(0644,root,root) %{_usr}/share/ipa/schema.d/README
483b06
 %attr(0644,root,root) %{_usr}/share/ipa/gssapi.login
483b06
+%{_usr}/share/ipa/ipakrb5.aug
483b06
 
483b06
 %files server-dns
483b06
 %defattr(-,root,root,-)
483b06
diff --git a/install/share/Makefile.am b/install/share/Makefile.am
483b06
index b27861da37153d77d693ce6e46340525bbd50173..85a061c6976dcc55b0ba2250423a344e14f2ce97 100644
483b06
--- a/install/share/Makefile.am
483b06
+++ b/install/share/Makefile.am
483b06
@@ -89,6 +89,7 @@ dist_app_DATA =				\
483b06
 	gssapi.login			\
483b06
 	ipa.conf.tmpfiles		\
483b06
 	gssproxy.conf.template		\
483b06
+	ipakrb5.aug			\
483b06
 	$(NULL)
483b06
 
483b06
 kdcproxyconfdir = $(IPA_SYSCONF_DIR)/kdcproxy
483b06
diff --git a/install/share/ipakrb5.aug b/install/share/ipakrb5.aug
483b06
new file mode 100644
483b06
index 0000000000000000000000000000000000000000..4a31a84e147a680067acddac683c672ccb6f9c31
483b06
--- /dev/null
483b06
+++ b/install/share/ipakrb5.aug
483b06
@@ -0,0 +1,46 @@
483b06
+module IPAKrb5 =
483b06
+  autoload xfm
483b06
+
483b06
+  let dels (s:string) = Util.del_str s
483b06
+
483b06
+  let indent    = Util.indent
483b06
+  let space     = Sep.space
483b06
+  let opt_space = Sep.opt_space
483b06
+  let sep       = Sep.space_equal
483b06
+  let eol       = IniFile.eol
483b06
+
483b06
+  let kw  = Rx.word
483b06
+  let val = Rx.space_in
483b06
+
483b06
+  let comment = IniFile.comment IniFile.comment_re "# "
483b06
+  let empty   = IniFile.empty
483b06
+
483b06
+  let entry_generic (v:lens) = [ indent . key kw . sep . v . eol ]
483b06
+
483b06
+  (*
483b06
+    FIXME: combine entry and subrecord into a single recursive lens
483b06
+
483b06
+    This does not work for some reason:
483b06
+      let rec entry = entry_generic ( store ( val - "{" ) )
483b06
+                    | entry_generic ( dels "{" . eol
483b06
+                                    . ( entry | comment | empty )*
483b06
+                                    . indent . dels "}" )
483b06
+  *)
483b06
+  let entry     = entry_generic ( store ( val - "{" ) )
483b06
+  let subrecord = entry_generic ( dels "{" . eol
483b06
+                                . ( entry | comment | empty )*
483b06
+                                . indent . dels "}" )
483b06
+
483b06
+  let title  = IniFile.indented_title kw
483b06
+  let record = IniFile.record title ( entry | subrecord | comment )
483b06
+
483b06
+  let directive = Build.key_value_line kw space ( store val )
483b06
+
483b06
+  let lns = IniFile.lns record ( directive | comment )
483b06
+
483b06
+  let filter = incl "/etc/krb5.conf"
483b06
+             . incl "/etc/krb5.conf.d/*"
483b06
+             . incl "/var/kerberos/krb5kdc/kdc.conf"
483b06
+             . Util.stdexcl
483b06
+
483b06
+  let xfm = transform lns filter
483b06
-- 
483b06
2.9.4
483b06