Class: UnixUserManager

Inherits:
Object
  • Object
show all
Defined in:
lib/unix_user_manager.rb,
lib/unix_user_manager/version.rb

Defined Under Namespace

Modules: File Classes: Base, Groups, Users

Constant Summary collapse

VERSION =
'0.1.1'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(passwd:, shadow:, group:) ⇒ UnixUserManager



16
17
18
19
20
21
22
23
# File 'lib/unix_user_manager.rb', line 16

def initialize(passwd:, shadow:, group:)
  @passwd = UnixUserManager::File::Passwd.new passwd
  @shadow = UnixUserManager::File::Shadow.new shadow
  @group  = UnixUserManager::File::Group.new  group

  @users  = UnixUserManager::Users.new(passwd: @passwd, shadow: @shadow)
  @groups = UnixUserManager::Groups.new(group: @group)
end

Instance Attribute Details

#groupObject (readonly)

Returns the value of attribute group.



13
14
15
# File 'lib/unix_user_manager.rb', line 13

def group
  @group
end

#groupsObject (readonly)

Returns the value of attribute groups.



13
14
15
# File 'lib/unix_user_manager.rb', line 13

def groups
  @groups
end

#passwdObject (readonly)

Returns the value of attribute passwd.



13
14
15
# File 'lib/unix_user_manager.rb', line 13

def passwd
  @passwd
end

#shadowObject (readonly)

Returns the value of attribute shadow.



13
14
15
# File 'lib/unix_user_manager.rb', line 13

def shadow
  @shadow
end

#usersObject (readonly)

Returns the value of attribute users.



13
14
15
# File 'lib/unix_user_manager.rb', line 13

def users
  @users
end

Instance Method Details

#available_id(min_id: 100, max_id: 500, preffered_ids: [200, 300, 333, 400, 500], recursive: false) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/unix_user_manager.rb', line 25

def available_id(min_id: 100, max_id: 500, preffered_ids: [200, 300, 333, 400, 500], recursive: false)
  ids = available_ids(min_id: min_id, max_id: max_id)

  new_id = (ids & preffered_ids).any? ? (ids & preffered_ids)[0] : ids[0]

  if recursive && new_id.nil?
    available_id(min_id: min_id, preffered_ids: preffered_ids, recursive: recursive, max_id: max_id + 100)
  else
    new_id
  end
end

#available_ids(min_id: 100, max_id: 500) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/unix_user_manager.rb', line 37

def available_ids(min_id: 100, max_id: 500)
  # Service ids must be from 100 to 500
  available_uid = (min_id..max_id).to_a - users.ids
  available_gid = (min_id..max_id).to_a - groups.ids

  available_uid & available_gid
end