sys-admin 1.7.1 → 1.7.6

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake/clean'
3
3
  require 'rake/testtask'
4
4
  require 'rbconfig'
5
5
 
6
- CLEAN.include("**/*.gem", "**/*.rbx", "**/*.rbc", "ruby.core")
6
+ CLEAN.include("**/*.gem", "**/*.rbx", "**/*.rbc", "ruby.core", "**/*.lock")
7
7
 
8
8
  namespace :gem do
9
9
  desc "Create the sys-uname gem"
@@ -11,7 +11,7 @@ namespace :gem do
11
11
  require 'rubygems/package'
12
12
  spec = eval(IO.read('sys-admin.gemspec'))
13
13
  spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
14
- Gem::Package.build(spec, true)
14
+ Gem::Package.build(spec)
15
15
  end
16
16
 
17
17
  desc "Install the sys-uname gem"
data/lib/bsd/sys/admin.rb CHANGED
@@ -6,10 +6,9 @@ require 'rbconfig'
6
6
 
7
7
  module Sys
8
8
  class Admin
9
- private
10
-
11
9
  # :no-doc:
12
10
  BUF_MAX = 65536 # Max buffer for retry
11
+ private_constant :BUF_MAX
13
12
 
14
13
  # I'm making some aliases here to prevent potential conflicts
15
14
  attach_function :open_c, :open, [:string, :int], :int
@@ -22,8 +21,7 @@ module Sys
22
21
  attach_function :getgrnam_r, [:string, :pointer, :pointer, :size_t, :pointer], :int
23
22
  attach_function :getgrgid_r, [:long, :pointer, :pointer, :size_t, :pointer], :int
24
23
 
25
- private_class_method :getlogin_r, :getpwnam_r, :getpwuid_r, :getgrnam_r
26
- private_class_method :getgrgid_r
24
+ private_class_method :getlogin_r, :getpwnam_r, :getpwuid_r, :getgrnam_r, :getgrgid_r
27
25
  private_class_method :open_c, :pread_c, :close_c
28
26
 
29
27
  # struct passwd from /usr/include/pwd.h
@@ -48,6 +46,8 @@ module Sys
48
46
  layout(*fields)
49
47
  end
50
48
 
49
+ private_constant :PasswdStruct
50
+
51
51
  # struct group from /usr/include/grp.h
52
52
  class GroupStruct < FFI::Struct
53
53
  layout(
@@ -58,6 +58,8 @@ module Sys
58
58
  )
59
59
  end
60
60
 
61
+ private_constant :GroupStruct
62
+
61
63
  # I'm blending the timeval struct in directly here
62
64
  class LastlogStruct < FFI::Struct
63
65
  layout(
@@ -67,7 +69,7 @@ module Sys
67
69
  )
68
70
  end
69
71
 
70
- public
72
+ private_constant :LastlogStruct
71
73
 
72
74
  # Returns the login for the current process.
73
75
  #
@@ -192,8 +194,6 @@ module Sys
192
194
  groups
193
195
  end
194
196
 
195
- private
196
-
197
197
  # Takes a GroupStruct and converts it to a Group object.
198
198
  def self.get_group_from_struct(grp)
199
199
  Group.new do |g|
@@ -204,6 +204,8 @@ module Sys
204
204
  end
205
205
  end
206
206
 
207
+ private_class_method :get_group_from_struct
208
+
207
209
  # Takes a UserStruct and converts it to a User object.
208
210
  def self.get_user_from_struct(pwd)
209
211
  user = User.new do |u|
@@ -230,6 +232,8 @@ module Sys
230
232
  user
231
233
  end
232
234
 
235
+ private_class_method :get_user_from_struct
236
+
233
237
  # Get lastlog information for the given user.
234
238
  def self.get_lastlog_info(uid)
235
239
  logfile = '/var/log/lastlog'
@@ -252,5 +256,7 @@ module Sys
252
256
 
253
257
  lastlog
254
258
  end
259
+
260
+ private_class_method :get_lastlog_info
255
261
  end
256
262
  end
@@ -5,10 +5,9 @@ require 'sys/admin/common'
5
5
 
6
6
  module Sys
7
7
  class Admin
8
- private
9
-
10
8
  # :no-doc:
11
9
  BUF_MAX = 65536 # Max buf size for retry.
10
+ private_constant :BUF_MAX
12
11
 
13
12
  attach_function :getlogin_r, [:pointer, :int], :int
14
13
  attach_function :getpwnam_r, [:string, :pointer, :pointer, :size_t, :pointer], :int
@@ -17,8 +16,8 @@ module Sys
17
16
  attach_function :getgrgid_r, [:long, :pointer, :pointer, :size_t, :pointer], :int
18
17
  attach_function :getlastlogx, [:long, :pointer], :pointer
19
18
 
20
- private_class_method :getlogin_r, :getpwnam_r, :getpwuid_r, :getgrnam_r
21
- private_class_method :getgrgid_r, :getlastlogx
19
+ private_class_method :getlogin_r, :getpwnam_r, :getpwuid_r
20
+ private_class_method :getgrnam_r, :getgrgid_r, :getlastlogx
22
21
 
23
22
  # struct passwd from /usr/include/pwd.h
24
23
  class PasswdStruct < FFI::Struct
@@ -36,6 +35,8 @@ module Sys
36
35
  )
37
36
  end
38
37
 
38
+ private_constant :PasswdStruct
39
+
39
40
  # struct group from /usr/include/grp.h
40
41
  class GroupStruct < FFI::Struct
41
42
  layout(
@@ -46,6 +47,8 @@ module Sys
46
47
  )
47
48
  end
48
49
 
50
+ private_constant :GroupStruct
51
+
49
52
  # I'm blending the timeval struct in directly here
50
53
  class LastlogxStruct < FFI::Struct
51
54
  layout(
@@ -56,7 +59,7 @@ module Sys
56
59
  )
57
60
  end
58
61
 
59
- public
62
+ private_constant :LastlogxStruct
60
63
 
61
64
  # Returns the login for the current process.
62
65
  #
@@ -185,8 +188,6 @@ module Sys
185
188
  groups
186
189
  end
187
190
 
188
- private
189
-
190
191
  # Takes a GroupStruct and converts it to a Group object.
191
192
  def self.get_group_from_struct(grp)
192
193
  Group.new do |g|
@@ -197,6 +198,8 @@ module Sys
197
198
  end
198
199
  end
199
200
 
201
+ private_class_method :get_group_from_struct
202
+
200
203
  # Takes a UserStruct and converts it to a User object.
201
204
  def self.get_user_from_struct(pwd)
202
205
  user = User.new do |u|
@@ -223,6 +226,8 @@ module Sys
223
226
  user
224
227
  end
225
228
 
229
+ private_class_method :get_user_from_struct
230
+
226
231
  # Gets lastlog information for the given user.
227
232
  def self.get_lastlog_info(uid)
228
233
  lastlog = LastlogxStruct.new
@@ -233,5 +238,7 @@ module Sys
233
238
 
234
239
  ptr.null? ? nil : lastlog
235
240
  end
241
+
242
+ private_class_method :get_lastlog_info
236
243
  end
237
244
  end
@@ -5,10 +5,9 @@ require 'sys/admin/common'
5
5
 
6
6
  module Sys
7
7
  class Admin
8
- private
9
-
10
8
  # :no-doc:
11
9
  BUF_MAX = 65536 # Absolute max buffer size for retry attempts.
10
+ private_constant :BUF_MAX
12
11
 
13
12
  # I'm making some aliases here to prevent potential conflicts
14
13
  attach_function :open_c, :open, [:string, :int], :int
@@ -40,6 +39,8 @@ module Sys
40
39
  )
41
40
  end
42
41
 
42
+ private_constant :PasswdStruct
43
+
43
44
  # struct group from /usr/include/grp.h
44
45
  class GroupStruct < FFI::Struct
45
46
  layout(
@@ -50,6 +51,8 @@ module Sys
50
51
  )
51
52
  end
52
53
 
54
+ private_constant :GroupStruct
55
+
53
56
  # I'm blending the timeval struct in directly here
54
57
  class LastlogStruct < FFI::Struct
55
58
  layout(
@@ -59,18 +62,12 @@ module Sys
59
62
  )
60
63
  end
61
64
 
62
- public
65
+ private_constant :LastlogStruct
63
66
 
64
67
  # Returns the login for the current process.
65
68
  #
66
69
  def self.get_login
67
- buf = FFI::MemoryPointer.new(:char, 256)
68
-
69
- if getlogin_r(buf, buf.size) != 0
70
- raise Error, "getlogin_r function failed: " + strerror(FFI.errno)
71
- end
72
-
73
- buf.read_string
70
+ get_user(geteuid()).name
74
71
  end
75
72
 
76
73
  # Returns a User object for the given name or uid. Raises an error
@@ -204,8 +201,6 @@ module Sys
204
201
  groups
205
202
  end
206
203
 
207
- private
208
-
209
204
  # Takes a GroupStruct and converts it to a Group object.
210
205
  def self.get_group_from_struct(grp)
211
206
  Group.new do |g|
@@ -216,6 +211,8 @@ module Sys
216
211
  end
217
212
  end
218
213
 
214
+ private_class_method :get_group_from_struct
215
+
219
216
  # Takes a UserStruct and converts it to a User object.
220
217
  def self.get_user_from_struct(pwd)
221
218
  user = User.new do |u|
@@ -242,6 +239,8 @@ module Sys
242
239
  user
243
240
  end
244
241
 
242
+ private_class_method :get_user_from_struct
243
+
245
244
  # Note: it seems that Linux, or at least Ubuntu, does not track logins
246
245
  # via GDM (Gnome Display Manager) for some reason, so this may not return
247
246
  # anything useful.
@@ -269,5 +268,7 @@ module Sys
269
268
 
270
269
  lastlog
271
270
  end
271
+
272
+ private_class_method :get_lastlog_info
272
273
  end
273
274
  end
@@ -5,10 +5,9 @@ require 'sys/admin/common'
5
5
 
6
6
  module Sys
7
7
  class Admin
8
- private
9
-
10
8
  # :no-doc:
11
9
  BUF_MAX = 65536 # Max buffer size for retry.
10
+ private_constant :BUF_MAX
12
11
 
13
12
  # I'm making some aliases here to prevent potential conflicts
14
13
  attach_function :open_c, :open, [:string, :int], :int
@@ -42,6 +41,8 @@ module Sys
42
41
  )
43
42
  end
44
43
 
44
+ private_constant :PasswdStruct
45
+
45
46
  # struct group from /usr/include/grp.h
46
47
  class GroupStruct < FFI::Struct
47
48
  layout(
@@ -52,6 +53,8 @@ module Sys
52
53
  )
53
54
  end
54
55
 
56
+ private_constant :GroupStruct
57
+
55
58
  # I'm blending the timeval struct in directly here
56
59
  class LastlogStruct < FFI::Struct
57
60
  layout(
@@ -61,7 +64,7 @@ module Sys
61
64
  )
62
65
  end
63
66
 
64
- public
67
+ private_constant :LastlogStruct
65
68
 
66
69
  # Returns the login for the current process.
67
70
  #
@@ -194,8 +197,6 @@ module Sys
194
197
  groups
195
198
  end
196
199
 
197
- private
198
-
199
200
  # Takes a GroupStruct and converts it to a Group object.
200
201
  def self.get_group_from_struct(grp)
201
202
  Group.new do |g|
@@ -206,6 +207,8 @@ module Sys
206
207
  end
207
208
  end
208
209
 
210
+ private_class_method :get_group_from_struct
211
+
209
212
  # Takes a UserStruct and converts it to a User object.
210
213
  def self.get_user_from_struct(pwd)
211
214
  user = User.new do |u|
@@ -232,6 +235,8 @@ module Sys
232
235
  user
233
236
  end
234
237
 
238
+ private_class_method :get_use_from_struct
239
+
235
240
  # The use of pread was necessary here because it's a sparse file. Note
236
241
  # also that while Solaris supports the getuserattr function, it doesn't
237
242
  # appear to store anything regarding login information.
@@ -257,5 +262,7 @@ module Sys
257
262
 
258
263
  lastlog
259
264
  end
265
+
266
+ private_class_method :get_lastlog_info
260
267
  end
261
268
  end
data/lib/sys/admin.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Sys
2
2
  class Admin
3
3
  # The version of the sys-admin library.
4
- VERSION = '1.7.1'.freeze
4
+ VERSION = '1.7.6'.freeze
5
5
  end
6
6
  end
7
7
 
@@ -9,12 +9,11 @@ module Sys
9
9
  extend FFI::Library
10
10
  ffi_lib FFI::Library::LIBC
11
11
 
12
- private
13
-
14
12
  attach_function :strerror, [:int], :string
15
13
 
16
14
  attach_function :getlogin, [], :string
17
15
  attach_function :getuid, [], :long
16
+ attach_function :geteuid, [], :long
18
17
  attach_function :getpwnam, [:string], :pointer
19
18
  attach_function :getpwuid, [:long], :pointer
20
19
  attach_function :getpwent, [], :pointer
@@ -27,12 +26,10 @@ module Sys
27
26
  attach_function :endgrent, [], :void
28
27
  attach_function :setgrent, [], :void
29
28
 
30
- private_class_method :getlogin, :getuid, :getpwnam, :getpwuid, :getpwent
31
- private_class_method :setpwent, :endpwent, :getgrgid, :getgrnam
29
+ private_class_method :getlogin, :getuid, :geteuid, :getpwnam, :getpwuid
30
+ private_class_method :getpwent, :setpwent, :endpwent, :getgrgid, :getgrnam
32
31
  private_class_method :getgrent, :endgrent, :setgrent, :strerror
33
32
 
34
- public
35
-
36
33
  # Error typically raised if any of the Sys::Admin methods fail.
37
34
  class Error < StandardError; end
38
35
 
@@ -5,8 +5,6 @@ require 'sys/admin/common'
5
5
 
6
6
  module Sys
7
7
  class Admin
8
- private
9
-
10
8
  class PasswdStruct < FFI::Struct
11
9
  layout(
12
10
  :pw_name, :string,
@@ -19,6 +17,8 @@ module Sys
19
17
  )
20
18
  end
21
19
 
20
+ private_constant :PasswdStruct
21
+
22
22
  class GroupStruct < FFI::Struct
23
23
  layout(
24
24
  :gr_name, :string,
@@ -28,7 +28,7 @@ module Sys
28
28
  )
29
29
  end
30
30
 
31
- public
31
+ private_constant :GroupStruct
32
32
 
33
33
  # Returns the login for the current process.
34
34
  #
@@ -133,8 +133,6 @@ module Sys
133
133
  groups
134
134
  end
135
135
 
136
- private
137
-
138
136
  # Takes a GroupStruct and converts it to a Group object.
139
137
  def self.get_group_from_struct(grp)
140
138
  Group.new do |g|
@@ -145,6 +143,8 @@ module Sys
145
143
  end
146
144
  end
147
145
 
146
+ private_class_method :get_group_from_struct
147
+
148
148
  # Takes a UserStruct and converts it to a User object.
149
149
  def self.get_user_from_struct(pwd)
150
150
  user = User.new do |u|
@@ -159,5 +159,7 @@ module Sys
159
159
 
160
160
  user
161
161
  end
162
+
163
+ private_class_method :get_user_from_struct
162
164
  end
163
165
  end
@@ -97,8 +97,6 @@ module Sys
97
97
  @sid_type = "unknown"
98
98
  end
99
99
  end
100
-
101
- @sid_type
102
100
  end
103
101
  end
104
102
 
@@ -314,9 +312,8 @@ module Sys
314
312
  SidTypeUnknown = 8
315
313
  SidTypeComputer = 9
316
314
 
317
- private
318
-
319
315
  HKEY = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\"
316
+ private_constant :HKEY
320
317
 
321
318
  # Retrieves the user's home directory. For local accounts query the
322
319
  # registry. For domain accounts use ADSI and use the HomeDirectory.
@@ -343,6 +340,8 @@ module Sys
343
340
  dir
344
341
  end
345
342
 
343
+ private_class_method :get_home_dir
344
+
346
345
  # A private method that lower cases all keys, and converts them
347
346
  # all to symbols.
348
347
  #
@@ -357,6 +356,8 @@ module Sys
357
356
  rhash
358
357
  end
359
358
 
359
+ private_class_method :munge_options
360
+
360
361
  # An internal, private method for getting a list of groups for
361
362
  # a particular user. The first member is a list of group names,
362
363
  # the second member is the primary group ID.
@@ -368,6 +369,8 @@ module Sys
368
369
  [array, adsi.PrimaryGroupId]
369
370
  end
370
371
 
372
+ private_class_method :get_groups
373
+
371
374
  # An internal, private method for getting a list of members for
372
375
  # any particular group.
373
376
  #
@@ -378,13 +381,13 @@ module Sys
378
381
  array
379
382
  end
380
383
 
384
+ private_class_method :get_members
385
+
381
386
  # Used by the get_login method
382
387
  ffi_lib :advapi32
383
388
  attach_function :GetUserNameW, [:pointer, :pointer], :bool
384
389
  private_class_method :GetUserNameW
385
390
 
386
- public
387
-
388
391
  # Creates the given +user+. If no domain option is specified,
389
392
  # then it defaults to your local host, i.e. a local account is
390
393
  # created.
@@ -705,7 +708,7 @@ module Sys
705
708
  end
706
709
  }
707
710
 
708
- if usr.kind_of?(Fixnum)
711
+ if usr.kind_of?(Integer)
709
712
  query << " and sid like '%-#{usr}'"
710
713
  else
711
714
  query << " and name = '#{usr}'"
@@ -718,7 +721,7 @@ module Sys
718
721
 
719
722
  # Because our 'like' query isn't fulproof, let's parse
720
723
  # the SID again to make sure
721
- if usr.kind_of?(Fixnum)
724
+ if usr.kind_of?(Integer)
722
725
  next if usr != uid
723
726
  end
724
727
 
@@ -886,7 +889,7 @@ module Sys
886
889
  end
887
890
  }
888
891
 
889
- if grp.kind_of?(Fixnum)
892
+ if grp.kind_of?(Integer)
890
893
  query << " and sid like '%-#{grp}'"
891
894
  else
892
895
  query << " and name = '#{grp}'"
@@ -899,7 +902,7 @@ module Sys
899
902
 
900
903
  # Because our 'like' query isn't fulproof, let's parse
901
904
  # the SID again to make sure
902
- if grp.kind_of?(Fixnum)
905
+ if grp.kind_of?(Integer)
903
906
  next if grp != gid
904
907
  end
905
908