open_directory_utils 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  require "open_directory_utils/dscl"
2
2
  require "open_directory_utils/clean_check"
3
+ require "open_directory_utils/commands_base"
3
4
 
4
5
  module OpenDirectoryUtils
5
6
 
@@ -9,10 +10,11 @@ module OpenDirectoryUtils
9
10
  # * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
10
11
  module CommandsUserAttribsLdap
11
12
 
12
- include OpenDirectoryUtils::Dscl
13
+ # include OpenDirectoryUtils::Dscl
13
14
  include OpenDirectoryUtils::CleanCheck
15
+ include OpenDirectoryUtils::CommandsBase
14
16
 
15
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER cn "$NAME"
17
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER cn "$NAME"
16
18
  def user_set_common_name(attribs, dir_info)
17
19
  attribs = user_record_name_alternatives(attribs)
18
20
 
@@ -34,7 +36,7 @@ module OpenDirectoryUtils
34
36
  end
35
37
  alias_method :user_set_cn, :user_set_common_name
36
38
 
37
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME givenName "$VALUE"
39
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME givenName "$VALUE"
38
40
  def user_set_given_name(attribs, dir_info)
39
41
  attribs = user_record_name_alternatives(attribs)
40
42
 
@@ -51,7 +53,7 @@ module OpenDirectoryUtils
51
53
  dscl( user_attrs, dir_info )
52
54
  end
53
55
 
54
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME sn "$VALUE"
56
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME sn "$VALUE"
55
57
  def user_set_surname(attribs, dir_info)
56
58
  attribs = user_record_name_alternatives(attribs)
57
59
 
@@ -107,7 +109,7 @@ module OpenDirectoryUtils
107
109
  dscl( user_attrs, dir_info )
108
110
  end
109
111
 
110
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME homedirectory "$VALUE"
112
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homedirectory "$VALUE"
111
113
  def user_set_home_directory(attribs, dir_info)
112
114
  attribs = user_record_name_alternatives(attribs)
113
115
 
@@ -125,7 +127,7 @@ module OpenDirectoryUtils
125
127
  dscl( user_attrs, dir_info )
126
128
  end
127
129
 
128
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME loginShell "$VALUE"
130
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME loginShell "$VALUE"
129
131
  def user_set_login_shell(attribs, dir_info)
130
132
  attribs = user_record_name_alternatives(attribs)
131
133
 
@@ -146,9 +148,9 @@ module OpenDirectoryUtils
146
148
 
147
149
  # OTHER FIELDS
148
150
  #####################
149
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mail "$VALUE"
150
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME email "$VALUE"
151
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
151
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
152
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
153
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
152
154
  def user_set_first_email(attribs, dir_info)
153
155
  attribs = user_record_name_alternatives(attribs)
154
156
 
@@ -218,117 +220,59 @@ module OpenDirectoryUtils
218
220
  dscl( user_attrs, dir_info )
219
221
  end
220
222
 
221
- # https://images.apple.com/server/docs/Command_Line.pdf
222
- # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
223
- # https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
224
- def user_create_min(attribs, dir_info)
225
- attribs = user_record_name_alternatives(attribs)
226
-
227
- check_critical_attribute( attribs, :record_name )
228
- attribs = tidy_attribs(attribs)
229
-
230
- command = {action: 'create', scope: 'Users', value: nil, attribute: nil}
231
- user_attrs = attribs.merge(command)
232
-
233
- dscl( user_attrs, dir_info )
234
-
235
- answer = []
236
- attribs[:value] = nil
237
- answer << dscl( user_attrs, dir_info )
238
- attribs[:value] = nil
239
- answer << user_set_password(attribs, dir_info)
240
- attribs[:value] = nil
241
- answer << user_set_real_name(attribs, dir_info)
242
-
243
- return answer
244
- end
245
-
246
- # https://images.apple.com/server/docs/Command_Line.pdf
247
- # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
248
- # https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
249
- def user_create_full(attribs, dir_info)
250
- attribs = user_record_name_alternatives(attribs)
251
-
252
- check_critical_attribute( attribs, :record_name )
253
- attribs = tidy_attribs(attribs).dup
254
-
255
- answer = []
256
- attribs[:value] = nil
257
- answer << user_create_min(attribs, dir_info)
258
- attribs[:value] = nil
259
- answer << user_set_shell(attribs, dir_info)
260
- attribs[:value] = nil
261
- answer << user_set_first_name(attribs, dir_info)
262
- attribs[:value] = nil
263
- answer << user_set_last_name(attribs, dir_info)
264
- attribs[:value] = nil
265
- answer << user_set_unique_id(attribs, dir_info)
266
- attribs[:value] = nil
267
- answer << user_set_primary_group_id(attribs, dir_info)
268
- attribs[:value] = nil
269
- answer << user_set_nfs_home_directory(attribs, dir_info)
270
- # skip email if non-sent
271
- unless attribs[:email].nil? and attribs[:mail].nil? and attribs[:apple_user_mailattribute].nil?
272
- attribs[:value] = nil
273
- answer << user_set_email(attribs, dir_info)
274
- end
275
-
276
- return answer.flatten
277
- end
278
-
279
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mobile "$VALUE"
223
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mobile "$VALUE"
280
224
  def user_set_mobile_phone
281
225
  end
282
226
 
283
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME telephoneNumber "$VALUE"
227
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME telephoneNumber "$VALUE"
284
228
  def user_set_work_phone
285
229
  end
286
230
 
287
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME homePhone "$VALUE"
231
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homePhone "$VALUE"
288
232
  def user_set_home_phone
289
233
  end
290
234
 
291
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME title "$VALUE"
235
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME title "$VALUE"
292
236
  def user_set_title
293
237
  end
294
238
 
295
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME departmentNumber "$VALUE"
239
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME departmentNumber "$VALUE"
296
240
  def user_set_department
297
241
  end
298
242
 
299
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME street "$VALUE"
243
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME street "$VALUE"
300
244
  def user_set_street
301
245
  end
302
246
  alias_method :las_set_dorm, :user_set_street
303
247
  alias_method :las_set_housing, :user_set_street
304
248
 
305
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname l "$VALUE"
249
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname l "$VALUE"
306
250
  def user_set_city
307
251
  end
308
252
  alias_method :las_, :user_set_city
309
253
 
310
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME st "$VALUE"
254
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME st "$VALUE"
311
255
  def user_set_state
312
256
  end
313
257
  alias_method :las_cultural_trip, :user_set_state
314
258
 
315
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME postalCode "$VALUE"
259
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME postalCode "$VALUE"
316
260
  def user_set_postcode
317
261
  end
318
262
  alias_method :las_faculty_family, :user_set_postcode
319
263
 
320
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER c "$VALUE"
264
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER c "$VALUE"
321
265
  def user_set_country
322
266
  end
323
267
 
324
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME labeledURI "$VALUE"
268
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME labeledURI "$VALUE"
325
269
  def user_set_homepage
326
270
  end
327
271
  alias_method :user_set_webpage, :user_set_homepage
328
272
  alias_method :las_enrollment_date, :user_set_homepage
329
273
  alias_method :las_begin_date, :user_set_homepage
330
274
 
331
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER description "$NAME"
275
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER description "$NAME"
332
276
  def user_set_comments
333
277
  end
334
278
  alias_method :user_set_description, :user_set_comments
@@ -1,5 +1,6 @@
1
1
  require "open_directory_utils/dscl"
2
2
  require "open_directory_utils/clean_check"
3
+ require "open_directory_utils/commands_base"
3
4
 
4
5
  module OpenDirectoryUtils
5
6
 
@@ -9,8 +10,9 @@ module OpenDirectoryUtils
9
10
  # * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
10
11
  module CommandsUserAttribsOd
11
12
 
12
- include OpenDirectoryUtils::Dscl
13
+ # include OpenDirectoryUtils::Dscl
13
14
  include OpenDirectoryUtils::CleanCheck
15
+ include OpenDirectoryUtils::CommandsBase
14
16
 
15
17
  # GET INFO
16
18
  ##########
@@ -39,16 +41,17 @@ module OpenDirectoryUtils
39
41
 
40
42
  # CHANGE OD
41
43
  ###########
42
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER RealName "$VALUE"
44
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER RealName "$VALUE"
43
45
  def user_set_real_name(attribs, dir_info)
44
46
  attribs = user_record_name_alternatives(attribs)
45
47
 
48
+ attribs[:value] = attribs[:value] || attribs[:common_name]
46
49
  attribs[:value] = attribs[:value] || attribs[:cn]
47
50
  attribs[:value] = attribs[:value] || attribs[:realname]
48
51
  attribs[:value] = attribs[:value] || attribs[:real_name]
49
52
  attribs[:value] = attribs[:value] || attribs[:fullname]
50
53
  attribs[:value] = attribs[:value] || attribs[:full_name]
51
- if attribs[:last_name]
54
+ if attribs[:last_name] or attribs[:first_name]
52
55
  attribs[:value] = attribs[:value] || "#{attribs[:first_name]} #{attribs[:last_name]}"
53
56
  end
54
57
  attribs[:value] = attribs[:value] || attribs[:record_name]
@@ -63,12 +66,14 @@ module OpenDirectoryUtils
63
66
  dscl( user_attrs, dir_info )
64
67
  end
65
68
 
66
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME FirstName "$VALUE"
69
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME FirstName "$VALUE"
67
70
  def user_set_first_name(attribs, dir_info)
68
71
  attribs = user_record_name_alternatives(attribs)
69
72
 
70
73
  attribs[:value] = attribs[:value] || attribs[:given_name]
74
+ attribs[:value] = attribs[:value] || attribs[:givenname]
71
75
  attribs[:value] = attribs[:value] || attribs[:first_name]
76
+ attribs[:value] = attribs[:value] || attribs[:firstname]
72
77
 
73
78
  check_critical_attribute( attribs, :record_name )
74
79
  check_critical_attribute( attribs, :value, :first_name )
@@ -80,12 +85,13 @@ module OpenDirectoryUtils
80
85
  dscl( user_attrs, dir_info )
81
86
  end
82
87
 
83
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME LastName "$VALUE"
88
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME LastName "$VALUE"
84
89
  def user_set_last_name(attribs, dir_info)
85
90
  attribs = user_record_name_alternatives(attribs)
86
91
 
87
92
  attribs[:value] = attribs[:value] || attribs[:sn]
88
93
  attribs[:value] = attribs[:value] || attribs[:surname]
94
+ attribs[:value] = attribs[:value] || attribs[:lastname]
89
95
  attribs[:value] = attribs[:value] || attribs[:last_name]
90
96
 
91
97
  check_critical_attribute( attribs, :record_name )
@@ -98,10 +104,10 @@ module OpenDirectoryUtils
98
104
  dscl( user_attrs, dir_info )
99
105
  end
100
106
 
101
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME NameSuffix "$VALUE"
107
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME NameSuffix "$VALUE"
102
108
  def user_set_name_suffix
103
109
  end
104
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-namesuffix "$VALUE"
110
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-namesuffix "$VALUE"
105
111
  def user_set_apple_name_suffix
106
112
  end
107
113
 
@@ -125,27 +131,7 @@ module OpenDirectoryUtils
125
131
  dscl( user_attrs, dir_info )
126
132
  end
127
133
 
128
- # sudo dscl . -create /Users/someuser PrimaryGroupID 80
129
- def user_set_primary_group_id(attribs, dir_info)
130
- attribs = user_record_name_alternatives(attribs)
131
-
132
- attribs[:value] = attribs[:value] || attribs[:group_id]
133
- attribs[:value] = attribs[:value] || attribs[:gidnumber]
134
- attribs[:value] = attribs[:value] || attribs[:groupnumber]
135
- attribs[:value] = attribs[:value] || attribs[:group_number]
136
- attribs[:value] = attribs[:value] || attribs[:primary_group_id]
137
-
138
- check_critical_attribute( attribs, :record_name )
139
- check_critical_attribute( attribs, :value, :group_id )
140
- attribs = tidy_attribs(attribs)
141
-
142
- command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
143
- user_attrs = attribs.merge(command)
144
-
145
- dscl( user_attrs, dir_info )
146
- end
147
-
148
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/someuser NFSHomeDirectory /Users/someuser
134
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/someuser NFSHomeDirectory /Users/someuser
149
135
  def user_set_nfs_home_directory(attribs, dir_info)
150
136
  attribs = user_record_name_alternatives(attribs)
151
137
 
@@ -163,41 +149,6 @@ module OpenDirectoryUtils
163
149
  dscl( user_attrs, dir_info )
164
150
  end
165
151
 
166
- # /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
167
- # /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1/ -passwd /Users/#{shortname} "#{passwd}"
168
- def user_set_password(attribs, dir_info)
169
- attribs = user_record_name_alternatives(attribs)
170
-
171
- attribs[:value] = attribs[:value] || attribs[:password]
172
- attribs[:value] = attribs[:value] || attribs[:passwd]
173
- attribs[:value] = attribs[:value] || '*'
174
-
175
- check_critical_attribute( attribs, :record_name )
176
- check_critical_attribute( attribs, :value, :password )
177
- attribs = tidy_attribs(attribs)
178
-
179
- command = {action: 'passwd', scope: 'Users'}
180
- user_attrs = attribs.merge(command)
181
-
182
- dscl( user_attrs, dir_info )
183
- end
184
- # /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
185
- def user_verify_password(attribs, dir_info)
186
- attribs = user_record_name_alternatives(attribs)
187
-
188
- attribs[:value] = attribs[:value] || attribs[:password]
189
- attribs[:value] = attribs[:value] || attribs[:passwd]
190
-
191
- check_critical_attribute( attribs, :record_name )
192
- check_critical_attribute( attribs, :value, :password )
193
- attribs = tidy_attribs(attribs)
194
-
195
- command = {action: 'auth', scope: 'Users'}
196
- user_attrs = attribs.merge(command)
197
-
198
- dscl( user_attrs, dir_info )
199
- end
200
-
201
152
  # sudo dscl . -create /Users/someuser UserShell /bin/bash
202
153
  def user_set_shell(attribs, dir_info)
203
154
  attribs = user_record_name_alternatives(attribs)
@@ -216,9 +167,9 @@ module OpenDirectoryUtils
216
167
  dscl( user_attrs, dir_info )
217
168
  end
218
169
 
219
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mail "$VALUE"
220
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME email "$VALUE"
221
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
170
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
171
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
172
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
222
173
  def user_set_first_email(attribs, dir_info)
223
174
  attribs = user_record_name_alternatives(attribs)
224
175
 
@@ -274,19 +225,120 @@ module OpenDirectoryUtils
274
225
  return answer
275
226
  end
276
227
 
277
- # dscl . -delete /Users/yourUserName
278
- # https://tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/
279
- def user_delete(attribs, dir_info)
228
+ # sudo dscl . -create /Users/someuser PrimaryGroupID 80
229
+ def user_set_primary_group_id(attribs, dir_info)
280
230
  attribs = user_record_name_alternatives(attribs)
281
231
 
232
+ attribs[:value] = attribs[:value] || attribs[:groupid]
233
+ attribs[:value] = attribs[:value] || attribs[:group_id]
234
+ attribs[:value] = attribs[:value] || attribs[:gidnumber]
235
+ attribs[:value] = attribs[:value] || attribs[:groupnumber]
236
+ attribs[:value] = attribs[:value] || attribs[:group_number]
237
+ attribs[:value] = attribs[:value] || attribs[:primarygroupid]
238
+ attribs[:value] = attribs[:value] || attribs[:primary_group_id]
239
+
282
240
  check_critical_attribute( attribs, :record_name )
241
+ check_critical_attribute( attribs, :value, :group_id )
283
242
  attribs = tidy_attribs(attribs)
284
243
 
285
- command = {action: 'delete', scope: 'Users', value: nil, attribute: nil}
244
+ command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
245
+ user_attrs = attribs.merge(command)
246
+
247
+ dscl( user_attrs, dir_info )
248
+ end
249
+
250
+ # /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
251
+ # /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1 -passwd /Users/#{shortname} "#{passwd}"
252
+ def user_set_password(attribs, dir_info)
253
+ attribs = user_record_name_alternatives(attribs)
254
+
255
+ attribs[:value] = attribs[:value] || attribs[:password]
256
+ attribs[:value] = attribs[:value] || attribs[:passwd]
257
+ attribs[:value] = attribs[:value] || '*'
258
+
259
+ check_critical_attribute( attribs, :record_name )
260
+ check_critical_attribute( attribs, :value, :password )
261
+ attribs = tidy_attribs(attribs)
262
+
263
+ command = {action: 'passwd', scope: 'Users'}
264
+ user_attrs = attribs.merge(command)
265
+
266
+ dscl( user_attrs, dir_info )
267
+ end
268
+ # /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
269
+ def user_password_verified?(attribs, dir_info)
270
+ attribs = user_record_name_alternatives(attribs)
271
+
272
+ attribs[:value] = attribs[:value] || attribs[:password]
273
+ attribs[:value] = attribs[:value] || attribs[:passwd]
274
+
275
+ check_critical_attribute( attribs, :record_name )
276
+ check_critical_attribute( attribs, :value, :password )
277
+ attribs = tidy_attribs(attribs)
278
+
279
+ command = {action: 'auth', scope: 'Users'}
286
280
  user_attrs = attribs.merge(command)
287
281
 
288
282
  dscl( user_attrs, dir_info )
289
283
  end
284
+ alias_method :user_password_ok?, :user_password_verified?
285
+
286
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=0"
287
+ def user_enable_login(attribs, dir_info)
288
+ attribs = user_record_name_alternatives(attribs)
289
+
290
+ check_critical_attribute( attribs, :record_name )
291
+ attribs = tidy_attribs(attribs)
292
+
293
+ command = {attribute: 'enableuser', value: nil}
294
+ params = command.merge(attribs)
295
+ pwpolicy(params, dir_info)
296
+ end
297
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=1"
298
+ def user_disable_login(attribs, dir_info)
299
+ attribs = user_record_name_alternatives(attribs)
300
+
301
+ check_critical_attribute( attribs, :record_name )
302
+ attribs = tidy_attribs(attribs)
303
+
304
+ command = {attribute: 'disableuser', value: nil}
305
+ params = command.merge(attribs)
306
+ pwpolicy(params, dir_info)
307
+ end
308
+
309
+ def user_add_to_group(attribs, dir_info)
310
+ attribs = user_record_name_alternatives(attribs)
311
+
312
+ attribs[:value] = attribs[:group_membership]
313
+ attribs[:value] = attribs[:value] || attribs[:groupmembership]
314
+ attribs[:value] = attribs[:value] || attribs[:group_name]
315
+ attribs[:value] = attribs[:value] || attribs[:groupname]
316
+ attribs[:value] = attribs[:value] || attribs[:gid]
317
+
318
+ check_critical_attribute( attribs, :record_name, :username )
319
+ check_critical_attribute( attribs, :value, :groupname )
320
+ attribs = tidy_attribs(attribs)
321
+ command = { operation: 'edit', action: 'add', type: 'user'}
322
+ user_attrs = attribs.merge(command)
323
+
324
+ dseditgroup( user_attrs, dir_info )
325
+ end
326
+ # module_function :user_add_to_group
327
+ # alias_method :user_set_group_memebership, :user_add_to_group
328
+
329
+
330
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -getpolicy
331
+ def user_get_policy(attribs, dir_info)
332
+ attribs = user_record_name_alternatives(attribs)
333
+
334
+ check_critical_attribute( attribs, :record_name )
335
+ attribs = tidy_attribs(attribs)
336
+
337
+ command = {attribute: 'getpolicy', value: nil}
338
+ params = command.merge(attribs)
339
+ pwpolicy(params, dir_info)
340
+ end
341
+ alias_method :user_login_enabled?, :user_get_policy
290
342
 
291
343
  # https://images.apple.com/server/docs/Command_Line.pdf
292
344
  # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
@@ -308,6 +360,11 @@ module OpenDirectoryUtils
308
360
  attribs[:value] = nil
309
361
  answer << user_set_password(attribs, dir_info)
310
362
  attribs[:value] = nil
363
+ answer << user_enable_login(attribs, dir_info) if
364
+ attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
365
+ answer << user_disable_login(attribs, dir_info) unless
366
+ attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
367
+ attribs[:value] = nil
311
368
  answer << user_set_real_name(attribs, dir_info)
312
369
 
313
370
  return answer
@@ -320,51 +377,82 @@ module OpenDirectoryUtils
320
377
  attribs = user_record_name_alternatives(attribs)
321
378
 
322
379
  check_critical_attribute( attribs, :record_name )
323
- attribs = tidy_attribs(attribs).dup
324
-
325
- answer = []
326
- attribs[:value] = nil
327
- answer << user_create_min(attribs, dir_info)
328
- attribs[:value] = nil
329
- answer << user_set_shell(attribs, dir_info)
330
- attribs[:value] = nil
331
- answer << user_set_first_name(attribs, dir_info)
332
- attribs[:value] = nil
333
- answer << user_set_last_name(attribs, dir_info)
334
- attribs[:value] = nil
335
- answer << user_set_unique_id(attribs, dir_info)
336
- attribs[:value] = nil
337
- answer << user_set_primary_group_id(attribs, dir_info)
338
- attribs[:value] = nil
339
- answer << user_set_nfs_home_directory(attribs, dir_info)
380
+ # attribs = tidy_attribs(attribs).dup
381
+ attribs = tidy_attribs(attribs)
382
+
383
+ answer = []
384
+ attribs[:value] = nil
385
+ answer << user_create_min(attribs, dir_info)
386
+ attribs[:value] = nil
387
+ answer << user_set_shell(attribs, dir_info)
388
+ if attribs[:first_name] or attribs[:firstname] or attribs[:given_name] or
389
+ attribs[:givenname]
390
+ attribs[:value] = nil
391
+ answer << user_set_first_name(attribs, dir_info)
392
+ end
393
+ if attribs[:last_name] or attribs[:lastname] or attribs[:sn] or
394
+ attribs[:surname]
395
+ attribs[:value] = nil
396
+ answer << user_set_last_name(attribs, dir_info)
397
+ end
398
+ attribs[:value] = nil
399
+ answer << user_set_unique_id(attribs, dir_info)
400
+ attribs[:value] = nil
401
+ answer << user_set_primary_group_id(attribs, dir_info)
402
+ attribs[:value] = nil
403
+ answer << user_set_nfs_home_directory(attribs, dir_info)
340
404
  # skip email if non-sent
341
- unless attribs[:email].nil? and attribs[:mail].nil? and attribs[:apple_user_mailattribute].nil?
405
+ if attribs[:email] or attribs[:mail] or attribs[:apple_user_mailattribute]
342
406
  attribs[:value] = nil
343
407
  answer << user_set_email(attribs, dir_info)
344
408
  end
409
+ # TODO add to groups without error - if group present
410
+ # "<main> attribute status: eDSSchemaError\n" +
411
+ # "<dscl_cmd> DS Error: -14142 (eDSSchemaError)"]
412
+ # # enroll in a group membership if info present
413
+ if attribs[:group_name] or attribs[:groupname] or attribs[:gid] or
414
+ attribs[:group_membership] or attribs[:groupmembership]
415
+ attribs[:value] = nil
416
+ answer << user_add_to_group(attribs, dir_info)
417
+ end
345
418
 
346
419
  return answer.flatten
347
420
  end
421
+ alias_method :user_create, :user_create_full
422
+
423
+ # dscl . -delete /Users/yourUserName
424
+ # https://tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/
425
+ def user_delete(attribs, dir_info)
426
+ attribs = user_record_name_alternatives(attribs)
427
+
428
+ check_critical_attribute( attribs, :record_name )
429
+ attribs = tidy_attribs(attribs)
430
+
431
+ command = {action: 'delete', scope: 'Users', value: nil, attribute: nil}
432
+ user_attrs = attribs.merge(command)
433
+
434
+ dscl( user_attrs, dir_info )
435
+ end
348
436
 
349
- # 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-keyword "$VALUE"
350
- # other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
437
+ # 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-keyword "$VALUE"
438
+ # other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
351
439
  def user_set_first_keyword
352
440
  end
353
441
 
354
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
442
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
355
443
  def user_append_keyword
356
444
  end
357
445
 
358
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-company "$VALUE"
446
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-company "$VALUE"
359
447
  def user_set_company
360
448
  end
361
449
  alias_method :las_program_info, :user_set_company
362
450
 
363
- # first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER apple-imhandle "$VALUE"
364
- # others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "$VALUE"
365
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER apple-imhandle "AIM:created: $CREATE"
366
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "ICQ:start: $START"
367
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "MSN:end: $END"
451
+ # first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "$VALUE"
452
+ # others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "$VALUE"
453
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "AIM:created: $CREATE"
454
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "ICQ:start: $START"
455
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "MSN:end: $END"
368
456
  def user_set_chat
369
457
  end
370
458
  alias_method :user_set_chat_channels, :user_set_chat
@@ -372,19 +460,19 @@ module OpenDirectoryUtils
372
460
  alias_method :las_start_date, :user_set_chat
373
461
  alias_method :las_end_date, :user_set_chat
374
462
 
375
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-webloguri "$VALUE"
463
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-webloguri "$VALUE"
376
464
  def user_set_blog
377
465
  end
378
466
  alias_method :user_set_weblog, :user_set_blog
379
467
  alias_method :las_sync_date, :user_set_blog
380
468
 
381
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-organizationinfo "$VALUE"
469
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-organizationinfo "$VALUE"
382
470
  def user_set_org_info
383
471
  end
384
472
  alias_method :las_set_organizational_info, :user_set_org_info
385
473
  alias_method :las_link_student_to_parent, :user_set_org_info
386
474
 
387
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-relationships "$VALUE"
475
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-relationships "$VALUE"
388
476
  def user_set_relationships
389
477
  end
390
478
  alias_method :las_link_parent_to_student, :user_set_relationships