humble beginnings
This commit is contained in:
commit
687d174eb5
73
collab.rb
Normal file
73
collab.rb
Normal file
|
@ -0,0 +1,73 @@
|
|||
require 'fileutils'
|
||||
|
||||
POSIX_NAME_PREFIX = "emacs"
|
||||
|
||||
|
||||
$user_count = 0
|
||||
$users = []
|
||||
$id_map = {}
|
||||
|
||||
|
||||
## User manipulation
|
||||
|
||||
class User
|
||||
attr_accessor :id, :path, :posixname
|
||||
|
||||
def to_s
|
||||
"#{@id}, #{@path}"
|
||||
end
|
||||
end
|
||||
|
||||
def get_user(id)
|
||||
$id_map[id]
|
||||
end
|
||||
|
||||
def add_user(id)
|
||||
if not system("useradd -m #{POSIX_NAME_PREFIX}#{id}") then
|
||||
raise "User creation failed"
|
||||
end
|
||||
|
||||
user = User.new
|
||||
user.id = id
|
||||
user.path = "/home/#{POSIX_NAME_PREFIX}#{id}"
|
||||
user.posixname = "#{POSIX_NAME_PREFIX}#{id}"
|
||||
$user_count += 1
|
||||
$users << user
|
||||
$id_map[id] = user
|
||||
|
||||
FileUtils.mkdir "#{user.path}/.ssh"
|
||||
FileUtils.touch "#{user.path}/.ssh/authorized_keys"
|
||||
FileUtils.chown_R user.id, user.id, "#{user.path}/.ssh"
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
def remove_user(id)
|
||||
system("userdel -r #{POSIX_NAME_PREFIX}#{id}")
|
||||
$user_count -= 1
|
||||
end
|
||||
|
||||
## Key manipulation
|
||||
|
||||
class SSHKey
|
||||
attr_accessor :cipher, :pubkey, :comment
|
||||
|
||||
def initialize(cipher,pubkey,comment="")
|
||||
@cipher = cipher
|
||||
@pubkey = pubkey
|
||||
@comment = comment
|
||||
end
|
||||
end
|
||||
|
||||
def get_ssh_keys(id)
|
||||
user = get_user(id)
|
||||
extract_ssh_keys("#{user.path}/.ssh/authorized_keys").each do |k|
|
||||
puts k.comment
|
||||
end
|
||||
end
|
||||
|
||||
def extract_ssh_keys(file)
|
||||
File.open(file,"r") do |f|
|
||||
f.read.split("\n").select{ |line| line[0..2] == "ssh" }.map{ |ks| k = ks.split(" "); SSHKey.new(k[0][4..6], k[1], k[2]) }
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user