]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add capability to verify undocumented 'FR_CONF.*'
authorJorge Pereira <jpereiran@gmail.com>
Tue, 17 Dec 2019 19:26:50 +0000 (16:26 -0300)
committerAlan DeKok <aland@freeradius.org>
Tue, 17 Dec 2019 19:57:52 +0000 (14:57 -0500)
scripts/build/missing-raddb-mod-conf.sh

index f6048d3d101abd494fe52fe127520f1402e34340..3ea820326bd524fa519e2220b7fb309c0490d645 100755 (executable)
@@ -3,10 +3,18 @@
 # mods src/modules/rlm_$mod
 ignored_mods="rlm_(test|example|sql)"
 
+# directories to be ignored
+ignored_dirs="src/(include|freeradius-devel|modules)"
+
+# ignored config options
+ignored_keys="(local_state_dir|sbin_dir)"
+
 # main()
 dir_modules="src/modules"
 
-# Only "rlm_*"
+#
+# Look up for FR_CONF in src/modules/rlm_${mod} and cross with raddb/mods-available/${mod}
+#
 for _mod in $(ls $dir_modules | grep "^rlm_" | grep -vE "${ignored_mods}"); do
        mod_name="${_mod/rlm_/}"
        mod_dir="${dir_modules}/${_mod}"
@@ -30,4 +38,18 @@ for _mod in $(ls $dir_modules | grep "^rlm_" | grep -vE "${ignored_mods}"); do
                done
 done
 
+#
+# Look up for FR_CONF in src/*
+#
+grep -l --include="*.c" -r FR_CONF_ src | egrep -v "${ignored_dirs}" | sort -n | uniq | \
+while read fr_conf_file; do
+       grep "FR_CONF_" $fr_conf_file | sed '/_DEPRECATED/d; /_SUBSECTION/d; s/^.*{ FR_CONF_.*("//g; s/".*$//g' | \
+       sort | uniq | egrep -v "${ignored_keys}" | \
+       while read fr_conf; do
+               if ! grep -q "${fr_conf}.*=" -r raddb/; then
+                       echo "WARNING: ${fr_conf_file}: '${fr_conf}' has no reference in raddb/*"
+               fi
+       done
+done | sort -n
+
 exit 0