sys-admin 1.6.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGES +10 -0
- data/README +1 -1
- data/Rakefile +7 -2
- data/doc/sys-admin-unix.txt +164 -164
- data/doc/sys-admin-windows.txt +336 -336
- data/lib/sys/admin/common.rb +1 -1
- data/lib/windows/sys/admin.rb +28 -6
- data/sys-admin.gemspec +3 -1
- data/test/test_sys_admin.rb +1 -1
- data/test/test_sys_admin_windows.rb +17 -12
- metadata +31 -21
data/lib/sys/admin/common.rb
CHANGED
data/lib/windows/sys/admin.rb
CHANGED
@@ -297,7 +297,7 @@ module Sys
|
|
297
297
|
extend FFI::Library
|
298
298
|
|
299
299
|
# The version of the sys-admin library.
|
300
|
-
VERSION = '1.6.
|
300
|
+
VERSION = '1.6.1'
|
301
301
|
|
302
302
|
# This is the error raised in the majority of cases if anything goes wrong
|
303
303
|
# with any of the Sys::Admin methods.
|
@@ -379,7 +379,7 @@ module Sys
|
|
379
379
|
|
380
380
|
# Used by the get_login method
|
381
381
|
ffi_lib :advapi32
|
382
|
-
attach_function :GetUserNameW, [:
|
382
|
+
attach_function :GetUserNameW, [:pointer, :pointer], :bool
|
383
383
|
private_class_method :GetUserNameW
|
384
384
|
|
385
385
|
public
|
@@ -465,7 +465,7 @@ module Sys
|
|
465
465
|
# # Change the password
|
466
466
|
# Sys::Admin.configure_user(
|
467
467
|
# :name => 'asmith',
|
468
|
-
# :password =>
|
468
|
+
# :password => 'new_password'
|
469
469
|
# )
|
470
470
|
#
|
471
471
|
# # Configure a user on a specific domain
|
@@ -486,7 +486,7 @@ module Sys
|
|
486
486
|
|
487
487
|
options.each{ |option, value|
|
488
488
|
if option.to_s == 'password'
|
489
|
-
adsi.
|
489
|
+
adsi.setpassword(value)
|
490
490
|
else
|
491
491
|
adsi.put(option.to_s, value)
|
492
492
|
end
|
@@ -559,6 +559,28 @@ module Sys
|
|
559
559
|
end
|
560
560
|
end
|
561
561
|
|
562
|
+
# Adds +user+ to +group+ on the specified +domain+, or the localhost
|
563
|
+
# if no domain is specified.
|
564
|
+
#
|
565
|
+
def self.add_group_member(user, group, domain=nil)
|
566
|
+
domain ||= Socket.gethostname
|
567
|
+
adsi = WIN32OLE.connect("WinNT://#{domain}/#{group},group")
|
568
|
+
adsi.Add("WinNT://#{domain}/#{user}")
|
569
|
+
rescue WIN32OLERuntimeError => err
|
570
|
+
raise Error, err
|
571
|
+
end
|
572
|
+
|
573
|
+
# Removes +user+ from +group+ on the specified +domain+, or the localhost
|
574
|
+
# if no domain is specified.
|
575
|
+
#
|
576
|
+
def self.remove_group_member(user, group, domain=nil)
|
577
|
+
domain ||= Socket.gethostname
|
578
|
+
adsi = WIN32OLE.connect("WinNT://#{domain}/#{group},group")
|
579
|
+
adsi.Remove("WinNT://#{domain}/#{user}")
|
580
|
+
rescue WIN32OLERuntimeError => err
|
581
|
+
raise Error, err
|
582
|
+
end
|
583
|
+
|
562
584
|
# Configures the +group+ using +options+. If no domain option is
|
563
585
|
# specified then your local host is used, i.e. you are configuring
|
564
586
|
# a local group.
|
@@ -614,7 +636,7 @@ module Sys
|
|
614
636
|
# Returns the user name (only) of the current login.
|
615
637
|
#
|
616
638
|
def self.get_login
|
617
|
-
buffer =
|
639
|
+
buffer = FFI::MemoryPointer.new(:char, 256)
|
618
640
|
nsize = FFI::MemoryPointer.new(:ulong)
|
619
641
|
nsize.write_ulong(buffer.size)
|
620
642
|
|
@@ -622,7 +644,7 @@ module Sys
|
|
622
644
|
raise Error, 'GetUserName() call failed in get_login'
|
623
645
|
end
|
624
646
|
|
625
|
-
buffer.
|
647
|
+
buffer.read_string(nsize.read_ulong * 2).tr(0.chr, '')
|
626
648
|
end
|
627
649
|
|
628
650
|
# Returns a User object based on either +name+ or +uid+.
|
data/sys-admin.gemspec
CHANGED
@@ -4,7 +4,7 @@ require 'rubygems'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'sys-admin'
|
7
|
-
spec.version = '1.6.
|
7
|
+
spec.version = '1.6.1'
|
8
8
|
spec.author = 'Daniel J. Berger'
|
9
9
|
spec.license = 'Artistic 2.0'
|
10
10
|
spec.email = 'djberg96@gmail.com'
|
@@ -17,7 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.rubyforge_project = 'sysutils'
|
18
18
|
|
19
19
|
spec.add_dependency('ffi', '>= 1.1.0')
|
20
|
+
|
20
21
|
spec.add_development_dependency('test-unit', '>= 2.5.0')
|
22
|
+
spec.add_development_dependency('rake')
|
21
23
|
|
22
24
|
spec.description = <<-EOF
|
23
25
|
The sys-admin library is a unified, cross platform replacement for the
|
data/test/test_sys_admin.rb
CHANGED
@@ -16,14 +16,7 @@ include Sys
|
|
16
16
|
class TC_Sys_Admin_Win32 < Test::Unit::TestCase
|
17
17
|
def self.startup
|
18
18
|
@@host = Socket.gethostname
|
19
|
-
@@
|
20
|
-
|
21
|
-
# No elevated_security? method for XP yet.
|
22
|
-
if @@version < 6
|
23
|
-
@@elevated = true
|
24
|
-
else
|
25
|
-
@@elevated = Win32::Security.elevated_security?
|
26
|
-
end
|
19
|
+
@@elevated = Win32::Security.elevated_security?
|
27
20
|
end
|
28
21
|
|
29
22
|
def setup
|
@@ -53,12 +46,12 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
|
|
53
46
|
:name => 'foo',
|
54
47
|
:description => 'delete me',
|
55
48
|
:fullname => 'fubar',
|
56
|
-
:password =>
|
49
|
+
:password => 'd1c2b3A4'
|
57
50
|
)
|
58
51
|
}
|
59
52
|
end
|
60
53
|
|
61
|
-
def
|
54
|
+
def test_06_delete_user
|
62
55
|
omit_unless(@@elevated)
|
63
56
|
assert_respond_to(Admin, :delete_user)
|
64
57
|
assert_nothing_raised{ Admin.delete_user('foo') }
|
@@ -74,11 +67,23 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
|
|
74
67
|
omit_unless(@@elevated)
|
75
68
|
assert_respond_to(Admin, :configure_group)
|
76
69
|
assert_nothing_raised{
|
77
|
-
|
70
|
+
Admin.configure_group(:name => 'bar', :description => 'delete me')
|
78
71
|
}
|
79
72
|
end
|
80
73
|
|
81
|
-
def
|
74
|
+
def test_03_add_group_member
|
75
|
+
omit_unless(@@elevated)
|
76
|
+
assert_respond_to(Admin, :add_group_member)
|
77
|
+
assert_nothing_raised{ Admin.add_group_member('foo', 'bar') }
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_04_remove_group_member
|
81
|
+
omit_unless(@@elevated)
|
82
|
+
assert_respond_to(Admin, :remove_group_member)
|
83
|
+
assert_nothing_raised{ Admin.remove_group_member('foo', 'bar') }
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_05_delete_group
|
82
87
|
omit_unless(@@elevated)
|
83
88
|
assert_respond_to(Admin, :delete_group)
|
84
89
|
assert_nothing_raised{ Admin.delete_group('bar') }
|
metadata
CHANGED
@@ -1,52 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sys-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
5
|
-
prerelease:
|
4
|
+
version: 1.6.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Daniel J. Berger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-24 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ffi
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.1.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.1.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: test-unit
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 2.5.0
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 2.5.0
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: |2
|
56
|
+
The sys-admin library is a unified, cross platform replacement for the
|
57
|
+
'etc' library that ships as part of the Ruby standard library. It
|
58
|
+
provides a common interface for all platforms, including MS Windows. In
|
59
|
+
addition, it provides an interface for adding, deleting and configuring
|
60
|
+
users on MS Windows.
|
50
61
|
email: djberg96@gmail.com
|
51
62
|
executables: []
|
52
63
|
extensions: []
|
@@ -79,27 +90,26 @@ files:
|
|
79
90
|
homepage: http://www.github.com/djberg96/sysutils
|
80
91
|
licenses:
|
81
92
|
- Artistic 2.0
|
93
|
+
metadata: {}
|
82
94
|
post_install_message:
|
83
95
|
rdoc_options: []
|
84
96
|
require_paths:
|
85
97
|
- lib
|
86
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
99
|
requirements:
|
89
|
-
- -
|
100
|
+
- - '>='
|
90
101
|
- !ruby/object:Gem::Version
|
91
102
|
version: '0'
|
92
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
104
|
requirements:
|
95
|
-
- -
|
105
|
+
- - '>='
|
96
106
|
- !ruby/object:Gem::Version
|
97
107
|
version: '0'
|
98
108
|
requirements: []
|
99
109
|
rubyforge_project: sysutils
|
100
|
-
rubygems_version:
|
110
|
+
rubygems_version: 2.0.3
|
101
111
|
signing_key:
|
102
|
-
specification_version:
|
112
|
+
specification_version: 4
|
103
113
|
summary: A unified, cross platform replacement for the "etc" library.
|
104
114
|
test_files:
|
105
115
|
- test/test_sys_admin.rb
|