ActiveSambaLdap 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. data/NEWS.en +40 -0
  2. data/NEWS.ja +44 -0
  3. data/README.en +366 -0
  4. data/README.ja +361 -0
  5. data/Rakefile +168 -0
  6. data/bin/asl-groupadd +73 -0
  7. data/bin/asl-groupadd.help +1 -0
  8. data/bin/asl-groupdel +61 -0
  9. data/bin/asl-groupdel.help +1 -0
  10. data/bin/asl-groupmod +137 -0
  11. data/bin/asl-groupmod.help +1 -0
  12. data/bin/asl-groupshow +33 -0
  13. data/bin/asl-groupshow.help +1 -0
  14. data/bin/asl-passwd +90 -0
  15. data/bin/asl-passwd.help +1 -0
  16. data/bin/asl-populate +101 -0
  17. data/bin/asl-populate.help +1 -0
  18. data/bin/asl-purge +26 -0
  19. data/bin/asl-purge.help +1 -0
  20. data/bin/asl-samba-computeradd +96 -0
  21. data/bin/asl-samba-computeradd.help +1 -0
  22. data/bin/asl-samba-groupadd +57 -0
  23. data/bin/asl-samba-groupadd.help +1 -0
  24. data/bin/asl-samba-groupdel +55 -0
  25. data/bin/asl-samba-groupdel.help +1 -0
  26. data/bin/asl-samba-groupmod +99 -0
  27. data/bin/asl-samba-groupmod.help +1 -0
  28. data/bin/asl-samba-useradd +100 -0
  29. data/bin/asl-samba-useradd.help +1 -0
  30. data/bin/asl-samba-userdel +49 -0
  31. data/bin/asl-samba-userdel.help +1 -0
  32. data/bin/asl-samba-usermod +94 -0
  33. data/bin/asl-samba-usermod.help +1 -0
  34. data/bin/asl-useradd +264 -0
  35. data/bin/asl-useradd.help +1 -0
  36. data/bin/asl-userdel +84 -0
  37. data/bin/asl-userdel.help +1 -0
  38. data/bin/asl-usermod +335 -0
  39. data/bin/asl-usermod.help +1 -0
  40. data/bin/asl-usershow +33 -0
  41. data/bin/asl-usershow.help +1 -0
  42. data/lib/active_samba_ldap.rb +42 -0
  43. data/lib/active_samba_ldap/account_entry.rb +208 -0
  44. data/lib/active_samba_ldap/base.rb +137 -0
  45. data/lib/active_samba_ldap/command.rb +100 -0
  46. data/lib/active_samba_ldap/computer.rb +24 -0
  47. data/lib/active_samba_ldap/computer_account_entry.rb +34 -0
  48. data/lib/active_samba_ldap/configuration.rb +333 -0
  49. data/lib/active_samba_ldap/dc.rb +19 -0
  50. data/lib/active_samba_ldap/entry.rb +81 -0
  51. data/lib/active_samba_ldap/get_text_support.rb +12 -0
  52. data/lib/active_samba_ldap/group.rb +17 -0
  53. data/lib/active_samba_ldap/group_entry.rb +187 -0
  54. data/lib/active_samba_ldap/idmap.rb +19 -0
  55. data/lib/active_samba_ldap/ou.rb +20 -0
  56. data/lib/active_samba_ldap/populate.rb +257 -0
  57. data/lib/active_samba_ldap/reloadable.rb +15 -0
  58. data/lib/active_samba_ldap/samba_account_entry.rb +225 -0
  59. data/lib/active_samba_ldap/samba_entry.rb +26 -0
  60. data/lib/active_samba_ldap/samba_group_entry.rb +143 -0
  61. data/lib/active_samba_ldap/unix_id_pool.rb +43 -0
  62. data/lib/active_samba_ldap/user.rb +44 -0
  63. data/lib/active_samba_ldap/user_account_entry.rb +30 -0
  64. data/lib/active_samba_ldap/version.rb +3 -0
  65. data/lib/samba/encrypt.rb +86 -0
  66. data/misc/rd2html.rb +42 -0
  67. data/po/ja/active-samba-ldap.po +465 -0
  68. data/rails/README +30 -0
  69. data/rails/init.rb +33 -0
  70. data/rails_generators/scaffold_active_samba_ldap/scaffold_active_samba_ldap_generator.rb +27 -0
  71. data/rails_generators/scaffold_active_samba_ldap/templates/computer.rb +3 -0
  72. data/rails_generators/scaffold_active_samba_ldap/templates/dc.rb +3 -0
  73. data/rails_generators/scaffold_active_samba_ldap/templates/group.rb +3 -0
  74. data/rails_generators/scaffold_active_samba_ldap/templates/idmap.rb +3 -0
  75. data/rails_generators/scaffold_active_samba_ldap/templates/ldap.yml +24 -0
  76. data/rails_generators/scaffold_active_samba_ldap/templates/ou.rb +3 -0
  77. data/rails_generators/scaffold_active_samba_ldap/templates/samba_controller.rb +12 -0
  78. data/rails_generators/scaffold_active_samba_ldap/templates/samba_helper.rb +2 -0
  79. data/rails_generators/scaffold_active_samba_ldap/templates/samba_index.rhtml +17 -0
  80. data/rails_generators/scaffold_active_samba_ldap/templates/samba_populate.rhtml +15 -0
  81. data/rails_generators/scaffold_active_samba_ldap/templates/samba_purge.rhtml +10 -0
  82. data/rails_generators/scaffold_active_samba_ldap/templates/unix_id_pool.rb +3 -0
  83. data/rails_generators/scaffold_active_samba_ldap/templates/user.rb +3 -0
  84. data/setup.rb +1585 -0
  85. data/test-unit/History.txt +107 -0
  86. data/test-unit/README.txt +52 -0
  87. data/test-unit/Rakefile +40 -0
  88. data/test-unit/TODO +5 -0
  89. data/test-unit/bin/testrb +5 -0
  90. data/test-unit/lib/test/unit.rb +342 -0
  91. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  92. data/test-unit/lib/test/unit/assertions.rb +1149 -0
  93. data/test-unit/lib/test/unit/attribute.rb +125 -0
  94. data/test-unit/lib/test/unit/autorunner.rb +329 -0
  95. data/test-unit/lib/test/unit/collector.rb +43 -0
  96. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  97. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  98. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  99. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  100. data/test-unit/lib/test/unit/color-scheme.rb +86 -0
  101. data/test-unit/lib/test/unit/color.rb +96 -0
  102. data/test-unit/lib/test/unit/diff.rb +538 -0
  103. data/test-unit/lib/test/unit/error.rb +124 -0
  104. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  105. data/test-unit/lib/test/unit/failure.rb +110 -0
  106. data/test-unit/lib/test/unit/fixture.rb +176 -0
  107. data/test-unit/lib/test/unit/notification.rb +125 -0
  108. data/test-unit/lib/test/unit/omission.rb +143 -0
  109. data/test-unit/lib/test/unit/pending.rb +146 -0
  110. data/test-unit/lib/test/unit/priority.rb +181 -0
  111. data/test-unit/lib/test/unit/runner/console.rb +52 -0
  112. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  113. data/test-unit/lib/test/unit/testcase.rb +425 -0
  114. data/test-unit/lib/test/unit/testresult.rb +89 -0
  115. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  116. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  117. data/test-unit/lib/test/unit/ui/console/testrunner.rb +223 -0
  118. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  119. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  120. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  121. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  122. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  123. data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
  124. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  125. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  126. data/test-unit/lib/test/unit/version.rb +7 -0
  127. data/test-unit/sample/adder.rb +13 -0
  128. data/test-unit/sample/subtracter.rb +12 -0
  129. data/test-unit/sample/tc_adder.rb +18 -0
  130. data/test-unit/sample/tc_subtracter.rb +18 -0
  131. data/test-unit/sample/test_user.rb +22 -0
  132. data/test-unit/sample/ts_examples.rb +7 -0
  133. data/test-unit/test/collector/test-descendant.rb +135 -0
  134. data/test-unit/test/collector/test-load.rb +333 -0
  135. data/test-unit/test/collector/test_dir.rb +406 -0
  136. data/test-unit/test/collector/test_objectspace.rb +98 -0
  137. data/test-unit/test/run-test.rb +13 -0
  138. data/test-unit/test/test-attribute.rb +86 -0
  139. data/test-unit/test/test-color-scheme.rb +56 -0
  140. data/test-unit/test/test-color.rb +47 -0
  141. data/test-unit/test/test-diff.rb +477 -0
  142. data/test-unit/test/test-emacs-runner.rb +60 -0
  143. data/test-unit/test/test-fixture.rb +287 -0
  144. data/test-unit/test/test-notification.rb +33 -0
  145. data/test-unit/test/test-omission.rb +81 -0
  146. data/test-unit/test/test-pending.rb +70 -0
  147. data/test-unit/test/test-priority.rb +119 -0
  148. data/test-unit/test/test-testcase.rb +507 -0
  149. data/test-unit/test/test_assertions.rb +1082 -0
  150. data/test-unit/test/test_error.rb +26 -0
  151. data/test-unit/test/test_failure.rb +33 -0
  152. data/test-unit/test/test_testresult.rb +113 -0
  153. data/test-unit/test/test_testsuite.rb +129 -0
  154. data/test-unit/test/testunit-test-util.rb +14 -0
  155. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  156. data/test-unit/test/util/test-method-owner-finder.rb +38 -0
  157. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  158. data/test-unit/test/util/test_observable.rb +102 -0
  159. data/test-unit/test/util/test_procwrapper.rb +36 -0
  160. data/test/asl-test-utils.rb +276 -0
  161. data/test/command.rb +67 -0
  162. data/test/config.yaml.sample +17 -0
  163. data/test/run-test.rb +20 -0
  164. data/test/test_asl_groupadd.rb +69 -0
  165. data/test/test_asl_groupdel.rb +88 -0
  166. data/test/test_asl_groupmod.rb +259 -0
  167. data/test/test_asl_groupshow.rb +21 -0
  168. data/test/test_asl_passwd.rb +126 -0
  169. data/test/test_asl_populate.rb +92 -0
  170. data/test/test_asl_purge.rb +21 -0
  171. data/test/test_asl_useradd.rb +712 -0
  172. data/test/test_asl_userdel.rb +75 -0
  173. data/test/test_asl_usermod.rb +549 -0
  174. data/test/test_asl_usershow.rb +27 -0
  175. data/test/test_entry.rb +21 -0
  176. data/test/test_group.rb +21 -0
  177. data/test/test_password.rb +51 -0
  178. data/test/test_samba_encrypt.rb +35 -0
  179. data/test/test_user_home_directory.rb +43 -0
  180. metadata +314 -0
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fileutils'
4
+ require 'etc'
5
+ require 'time'
6
+
7
+ require 'active_samba_ldap'
8
+ require 'active_samba_ldap/command'
9
+
10
+ include ActiveSambaLdap::GetTextSupport
11
+
12
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
13
+ end
14
+
15
+ unless Process.uid.zero?
16
+ $stderr.puts(_("need root authority."))
17
+ exit 1
18
+ end
19
+
20
+ ActiveSambaLdap::Base.setup_connection("update")
21
+
22
+ ActiveSambaLdap::Base.purge
23
+
24
+ ActiveSambaLdap::Base.restart_nscd
25
+
26
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'active_samba_ldap'
4
+ require 'active_samba_ldap/command'
5
+
6
+ include ActiveSambaLdap::GetTextSupport
7
+
8
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
9
+ options.ou = nil
10
+
11
+ opts.banner += " COMPUTER_NAME"
12
+
13
+ opts.on("-o", "--ou=OU",
14
+ _("add the user in the organizational unit OU"),
15
+ _("(relative to the user suffix)")) do |ou|
16
+ if /^ou=/ =~ ou
17
+ options.ou = ou
18
+ else
19
+ options.ou = "ou=#{ou}"
20
+ end
21
+ end
22
+ end
23
+
24
+ name = nil
25
+ if argv.size == 1
26
+ name = argv.first.chomp("$") + "$"
27
+ else
28
+ $stderr.puts opts
29
+ exit 1
30
+ end
31
+
32
+ unless Process.uid.zero?
33
+ $stderr.puts(_("need root authority."))
34
+ exit 1
35
+ end
36
+
37
+ ActiveSambaLdap::Base.setup_connection("update")
38
+
39
+
40
+ class User < ActiveSambaLdap::User
41
+ ldap_mapping :recommended_classes => []
42
+ end
43
+
44
+ class Computer < ActiveSambaLdap::Computer
45
+ ldap_mapping :recommended_classes => []
46
+ end
47
+
48
+ class Group < ActiveSambaLdap::Group
49
+ ldap_mapping :recommended_classes => []
50
+ end
51
+
52
+ class UnixIdPool < ActiveSambaLdap::UnixIdPool
53
+ ldap_mapping
54
+ end
55
+
56
+ unless Computer.valid_name?(name)
57
+ $stderr.puts(_("illegal computer name: %s") % name)
58
+ exit 1
59
+ end
60
+
61
+ if Computer.exists?(name)
62
+ $stderr.puts(_("computer already exists: %s") % name)
63
+ exit 1
64
+ end
65
+
66
+ create_options = {
67
+ :uid => [name, options.ou].compact.join(","),
68
+ :group_class => Group,
69
+ }
70
+
71
+ create_options[:description] = "Computer"
72
+ create_options[:gecos] = "Computer"
73
+
74
+ computer = nil
75
+ begin
76
+ computer = Computer.create(:uid => name, :group_class => Group)
77
+ rescue ActiveSambaLdap::UidNumberAlreadyExists
78
+ $stderr.puts(_("UID already exists: %s") % uid_number)
79
+ exit 1
80
+ rescue ActiveSambaLdap::GidNumberDoesNotExist,
81
+ ActiveSambaLdap::GroupDoesNotExist,
82
+ ActiveSambaLdap::GroupDoesNotHaveSambaSID
83
+ $stderr.puts $!
84
+ exit 1
85
+ end
86
+
87
+ unless computer.errors.empty?
88
+ computer.errors.each_full do |message|
89
+ $stderr.puts(message)
90
+ end
91
+ exit 1
92
+ end
93
+
94
+ ActiveSambaLdap::Base.restart_nscd
95
+
96
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'active_samba_ldap'
4
+ require 'active_samba_ldap/command'
5
+
6
+ include ActiveSambaLdap::GetTextSupport
7
+
8
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
9
+ opts.banner += " GROUP_NAME"
10
+ end
11
+
12
+ name = nil
13
+ if argv.size == 1
14
+ name = argv.first
15
+ else
16
+ $stderr.puts opts
17
+ exit 1
18
+ end
19
+
20
+ unless Process.uid.zero?
21
+ $stderr.puts(_("need root authority."))
22
+ exit 1
23
+ end
24
+
25
+ ActiveSambaLdap::Base.setup_connection("update")
26
+
27
+ class Group < ActiveSambaLdap::Group
28
+ ldap_mapping :recommended_classes => []
29
+ end
30
+
31
+ class UnixIdPool < ActiveSambaLdap::UnixIdPool
32
+ ldap_mapping
33
+ end
34
+
35
+ if Group.exists?(name)
36
+ $stderr.puts(_("group already exists: %s") % name)
37
+ exit 1
38
+ end
39
+
40
+ create_options = {
41
+ :cn => name,
42
+ :gid_number => options.gid,
43
+ :pool_class => UnixIdPool,
44
+ :group_type => options.group_type,
45
+ }
46
+ group = Group.create(create_options)
47
+
48
+ unless group.errors.empty?
49
+ group.errors.each_full do |message|
50
+ $stderr.puts(message)
51
+ end
52
+ exit 1
53
+ end
54
+
55
+ ActiveSambaLdap::Base.restart_nscd
56
+
57
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'active_samba_ldap'
4
+ require 'active_samba_ldap/command'
5
+
6
+ include ActiveSambaLdap::GetTextSupport
7
+
8
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
9
+ opts.banner += " GROUP_NAME"
10
+ end
11
+
12
+ name = nil
13
+ if argv.size == 1
14
+ name = argv.first
15
+ else
16
+ $stderr.puts opts
17
+ exit 1
18
+ end
19
+
20
+ unless Process.uid.zero?
21
+ $stderr.puts(_("need root authority."))
22
+ exit 1
23
+ end
24
+
25
+ ActiveSambaLdap::Base.setup_connection("update")
26
+
27
+ class Group < ActiveSambaLdap::Group
28
+ ldap_mapping :recommended_classes => []
29
+ end
30
+
31
+ class User < ActiveSambaLdap::User
32
+ ldap_mapping :recommended_classes => []
33
+ end
34
+
35
+ class Computer < ActiveSambaLdap::Computer
36
+ ldap_mapping :recommended_classes => []
37
+ end
38
+
39
+ unless Group.exists?(name)
40
+ $stderr.puts(_("group doesn't exist: %s") % name)
41
+ exit 1
42
+ end
43
+ group = Group.find(name)
44
+
45
+ begin
46
+ group.destroy(:remove_members => true,
47
+ :force_change_primary_members => options.force)
48
+ rescue ActiveSambaLdap::Error
49
+ $stderr.puts $!
50
+ exit 1
51
+ end
52
+
53
+ ActiveSambaLdap::Base.restart_nscd
54
+
55
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'active_samba_ldap'
4
+ require 'active_samba_ldap/command'
5
+
6
+ include ActiveSambaLdap::GetTextSupport
7
+
8
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
9
+ options.members_to_add = nil
10
+ options.members_to_delete = nil
11
+
12
+ opts.banner += " GROUP_NAME"
13
+
14
+ opts.on("-a", "--add-members=MEMBER1,MEMBER2,MEBMER3", Array,
15
+ _("add members (comma delimited)")) {|options.members_to_add|}
16
+ opts.on("-d", "--delete-members=MEMBER1,MEMBER2,MEBMER3", Array,
17
+ _("delete members (comma delimited)")) {|options.members_to_delete|}
18
+ end
19
+
20
+ name = nil
21
+ if argv.size == 1
22
+ name = argv.first
23
+ else
24
+ $stderr.puts opts
25
+ exit 1
26
+ end
27
+
28
+ unless Process.uid.zero?
29
+ $stderr.puts(_("need root authority."))
30
+ exit 1
31
+ end
32
+
33
+ ActiveSambaLdap::Base.setup_connection("update")
34
+
35
+ class Group < ActiveSambaLdap::Group
36
+ ldap_mapping :recommended_classes => []
37
+ end
38
+
39
+ class User < ActiveSambaLdap::User
40
+ ldap_mapping :recommended_classes => []
41
+ end
42
+
43
+ class Computer < ActiveSambaLdap::Computer
44
+ ldap_mapping :recommended_classes => []
45
+ end
46
+
47
+ unless Group.exists?(name)
48
+ $stderr.puts(_("group doesn't exist: %s") % name)
49
+ exit 1
50
+ end
51
+ group = Group.find(name)
52
+
53
+ if options.members_to_add and options.members_to_delete
54
+ duplicated_members = options.members_to_add & options.members_to_delete
55
+ unless duplicated_members.empty?
56
+ format = _("there are duplicated members in adding and deleting members: %s")
57
+ $stderr.puts(format % duplicated_members.join(", "))
58
+ exit 1
59
+ end
60
+ end
61
+
62
+ if options.members_to_add
63
+ users = []
64
+ computers = []
65
+ options.members_to_add.each do |member|
66
+ if /\$$/ =~ member
67
+ computers << Computer.find(member)
68
+ else
69
+ users << User.find(member)
70
+ end
71
+ end
72
+ group.users.concat(users)
73
+ group.computers.concat(computers)
74
+ end
75
+
76
+ if options.members_to_delete
77
+ users = []
78
+ computers = []
79
+ options.members_to_delete.each do |member|
80
+ if /\$$/ =~ member
81
+ computers << Computer.find(member)
82
+ else
83
+ users << User.find(member)
84
+ end
85
+ end
86
+ group.users -= users
87
+ group.computers -= computers
88
+ end
89
+
90
+ unless group.save
91
+ group.errors.each_full do |message|
92
+ $stderr.puts(message)
93
+ end
94
+ exit 1
95
+ end
96
+
97
+ ActiveSambaLdap::Base.restart_nscd
98
+
99
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'active_samba_ldap'
4
+ require 'active_samba_ldap/command'
5
+
6
+ include ActiveSambaLdap::GetTextSupport
7
+
8
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
9
+ options.ou = nil
10
+
11
+ opts.banner += " USER_NAME"
12
+
13
+ opts.on("-o", "--ou=OU",
14
+ _("add the user in the organizational unit OU"),
15
+ _("(relative to the user suffix)")) do |ou|
16
+ if /^ou=/ =~ ou
17
+ options.ou = ou
18
+ else
19
+ options.ou = "ou=#{ou}"
20
+ end
21
+ end
22
+ end
23
+
24
+ name = nil
25
+ if argv.size == 1
26
+ name = argv.first
27
+ else
28
+ $stderr.puts opts
29
+ exit 1
30
+ end
31
+
32
+ unless Process.uid.zero?
33
+ $stderr.puts(_("need root authority."))
34
+ exit 1
35
+ end
36
+
37
+ ActiveSambaLdap::Base.setup_connection("update")
38
+
39
+
40
+ class User < ActiveSambaLdap::User
41
+ ldap_mapping :recommended_classes => []
42
+ end
43
+
44
+ class Computer < ActiveSambaLdap::Computer
45
+ ldap_mapping :recommended_classes => []
46
+ end
47
+
48
+ class Group < ActiveSambaLdap::Group
49
+ ldap_mapping :recommended_classes => []
50
+ end
51
+
52
+ class UnixIdPool < ActiveSambaLdap::UnixIdPool
53
+ ldap_mapping
54
+ end
55
+
56
+ unless User.valid_name?(name)
57
+ $stderr.puts(_("illegal user name: %s") % name)
58
+ exit 1
59
+ end
60
+
61
+ if User.exists?(name)
62
+ $stderr.puts(_("user already exists: %s") % name)
63
+ exit 1
64
+ end
65
+
66
+ create_options = {
67
+ :uid => [name, options.ou].compact.join(","),
68
+ :group_class => Group,
69
+ }
70
+
71
+ user = nil
72
+ begin
73
+ user = User.create(:uid => name, :group_class => Group)
74
+ rescue ActiveSambaLdap::UidNumberAlreadyExists
75
+ $stderr.puts(_("UID already exists: %s") % uid_number)
76
+ exit 1
77
+ rescue ActiveSambaLdap::GidNumberDoesNotExist,
78
+ ActiveSambaLdap::GroupDoesNotExist,
79
+ ActiveSambaLdap::GroupDoesNotHaveSambaSID
80
+ $stderr.puts $!
81
+ exit 1
82
+ end
83
+
84
+ unless user.errors.empty?
85
+ user.errors.each_full do |message|
86
+ $stderr.puts(message)
87
+ end
88
+ exit 1
89
+ end
90
+
91
+ begin
92
+ user.setup_home_directory
93
+ rescue SystemCallError
94
+ $stderr.puts $!
95
+ exit 1
96
+ end
97
+
98
+ ActiveSambaLdap::Base.restart_nscd
99
+
100
+ ActiveSambaLdap::Base.clear_active_connections!