summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/ssh-list-authorized-keys17
1 files changed, 11 insertions, 6 deletions
diff --git a/bin/ssh-list-authorized-keys b/bin/ssh-list-authorized-keys
index fc329f2..bb153e1 100755
--- a/bin/ssh-list-authorized-keys
+++ b/bin/ssh-list-authorized-keys
@@ -1,18 +1,23 @@
#!/usr/bin/env ruby
# Usage: ssh-list-authorized-keys [username]
-cfg_groups = [ "hackers", "bots" ]
+cfg_groups = [ "repo", "git" ]
######################################################################
+require 'set'
require 'yaml'
-users = Dir.glob("users/*.yml").map{|f|YAML::load(open(f))}
+all_users = Dir.glob("users/*.yml").map{|f|YAML::load(open(f))}
+users = Set.new
-if ARGV[0]
- users = users.find_all{|u|u["username"] == ARGV[0]}
-else
- users = users.find_all{|u|u["groups"] and not (u["groups"] & cfg_groups).empty?}
+groupnames = ARGV & cfg_groups
+usernames = ARGV & all_users.map{|u|u["username"]}
+
+unless groupnames.empty?
+ groupnames.push("hackers")
end
+users = all_users.find_all{|u| usernames.include?(u["username"]) or not ((u["groups"]||[]) & groupnames).empty?}
+
users.each do |user|
if user["ssh_keys"]
user["ssh_keys"].each do |addr,key|