|
|
|
@ -87,6 +87,12 @@ class Passwd
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def each_group(&block)
|
|
|
|
|
group_as_array.each do |line|
|
|
|
|
|
yield Passwd::Group.new line
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_all_users
|
|
|
|
|
users = Array(Passwd::User).new
|
|
|
|
|
|
|
|
|
@ -97,6 +103,22 @@ class Passwd
|
|
|
|
|
users
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_group(&block) : Passwd::Group?
|
|
|
|
|
each_group do |group|
|
|
|
|
|
if yield group
|
|
|
|
|
return group
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_group(gid : Int32)
|
|
|
|
|
get_group &.gid.==(gid)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_group(name : String)
|
|
|
|
|
get_group &.name.==(name)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_all_groups
|
|
|
|
|
groups = Array(Passwd::Group).new
|
|
|
|
|
|
|
|
|
@ -211,6 +233,20 @@ class Passwd
|
|
|
|
|
File.write @passwd, new_passwd.join("\n") + "\n"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def mod_group(group : ::Passwd::Group)
|
|
|
|
|
new_group = group_as_array.map do |line|
|
|
|
|
|
_group = Passwd::Group.new line
|
|
|
|
|
|
|
|
|
|
if _group.gid == group.gid
|
|
|
|
|
group.to_csv
|
|
|
|
|
else
|
|
|
|
|
line.join(':')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
File.write @group, new_group.join('\n') + '\n'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private def safe_rewrite(path : String, body : String)
|
|
|
|
|
tempfile = File.tempfile(File.basename path)
|
|
|
|
|
tempfile << body
|
|
|
|
|