summaryrefslogtreecommitdiff
path: root/bin/common.rb.in
diff options
context:
space:
mode:
Diffstat (limited to 'bin/common.rb.in')
-rw-r--r--bin/common.rb.in44
1 files changed, 44 insertions, 0 deletions
diff --git a/bin/common.rb.in b/bin/common.rb.in
new file mode 100644
index 0000000..7c457b8
--- /dev/null
+++ b/bin/common.rb.in
@@ -0,0 +1,44 @@
+# Copyright 2016 Luke Shumaker <lukeshu@sbcglobal.net>.
+#
+# This is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This software is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this manual; if not, see
+# <http://www.gnu.org/licenses/>.
+
+require 'yaml'
+
+def cfg
+ if @cfg.nil?
+ @cfg = YAML::load(open("@conf_file@"))
+ if ENV['PARABOLA_HACKERS_YAMLDIR']
+ @cfg["yamldir"] = ENV['PARABOLA_HACKERS_YAMLDIR']
+ end
+ end
+ return @cfg
+end
+
+def load_user_yaml(filename)
+ user = YAML::load(open(filename))
+ groups = user["groups"] || []
+ user["groups"] = groups.concat((groups & cfg["groupgroups"].keys).map{|g|cfg["groupgroups"][g]}.flatten)
+ return user
+end
+
+def load_all_users
+ users = {}
+ Dir.glob("#{cfg["yamldir"]}/*.yml").map{|filename|
+ uid = File.basename(filename).sub(/^([0-9]*)\.yml$/, "\\1").to_i
+ user = load_user_yaml(filename)
+ users[uid] = user
+ }
+ return users
+end