ActiveSambaLdap 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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,73 @@
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.gid = nil
10
+ options.group_type = "domain"
11
+ options.print_gid_number = false
12
+
13
+ opts.banner += " GROUP_NAME"
14
+
15
+ opts.on("-g", "--gid=GID", Integer, _("GID number")) {|options.gid|}
16
+ opts.on("-t", "--type=TYPE",
17
+ _("group type"),
18
+ "(#{options.group_type})") {|options.group_type|}
19
+ opts.on("-p", "--[no-]print-gid-number",
20
+ _("print the gid number to stdout"),
21
+ "(#{options.print_gid_number})") {|options.print_gid_number|}
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
+ class Group < ActiveSambaLdap::Group
40
+ ldap_mapping
41
+ end
42
+
43
+ class UnixIdPool < ActiveSambaLdap::UnixIdPool
44
+ ldap_mapping
45
+ end
46
+
47
+ if Group.exists?(name)
48
+ $stderr.puts(_("group already exists: %s") % name)
49
+ exit 1
50
+ end
51
+
52
+ create_options = {
53
+ :cn => name,
54
+ :gid_number => options.gid,
55
+ :pool_class => UnixIdPool,
56
+ :group_type => options.group_type,
57
+ }
58
+ group = Group.create(create_options)
59
+
60
+ unless group.errors.empty?
61
+ group.errors.each_full do |message|
62
+ $stderr.puts(message)
63
+ end
64
+ exit 1
65
+ end
66
+
67
+ if options.print_gid_number
68
+ puts group.gid_number
69
+ end
70
+
71
+ ActiveSambaLdap::Base.restart_nscd
72
+
73
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,61 @@
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.force = false
10
+
11
+ opts.banner += " GROUP_NAME"
12
+
13
+ opts.on("-f", "--[no-]force",
14
+ _("force delete group"),
15
+ "(#{options.force})") {|options.force|}
16
+ end
17
+
18
+ name = nil
19
+ if argv.size == 1
20
+ name = argv.first
21
+ else
22
+ $stderr.puts opts
23
+ exit 1
24
+ end
25
+
26
+ unless Process.uid.zero?
27
+ $stderr.puts(_("need root authority."))
28
+ exit 1
29
+ end
30
+
31
+ ActiveSambaLdap::Base.setup_connection("update")
32
+
33
+ class Group < ActiveSambaLdap::Group
34
+ ldap_mapping
35
+ end
36
+
37
+ class User < ActiveSambaLdap::User
38
+ ldap_mapping
39
+ end
40
+
41
+ class Computer < ActiveSambaLdap::Computer
42
+ ldap_mapping
43
+ end
44
+
45
+ unless Group.exists?(name)
46
+ $stderr.puts(_("group doesn't exist: %s") % name)
47
+ exit 1
48
+ end
49
+ group = Group.find(name)
50
+
51
+ begin
52
+ group.destroy(:remove_members => true,
53
+ :force_change_primary_members => options.force)
54
+ rescue ActiveSambaLdap::Error
55
+ $stderr.puts $!
56
+ exit 1
57
+ end
58
+
59
+ ActiveSambaLdap::Base.restart_nscd
60
+
61
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,137 @@
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.gid = nil
10
+ options.allow_non_unique_gid_number = false
11
+ options.new_group_name = nil
12
+ options.members_to_add = nil
13
+ options.members_to_delete = nil
14
+
15
+ opts.banner += " GROUP_NAME"
16
+
17
+ opts.on("-g", "--gid=GID", _("GID number")) {|options.gid|}
18
+ opts.on("--[no-]allow-non-unique-gid",
19
+ _("gid can be non unique"),
20
+ "(#{options.allow_non_unique_gid_number})") do |bool|
21
+ options.allow_non_unique_gid_number = bool
22
+ end
23
+ opts.on("-r", "--rename=NEW_NAME",
24
+ _("new group name")) {|options.new_group_name|}
25
+ opts.on("-a", "--add-members=MEMBER1,MEMBER2,MEBMER3", Array,
26
+ _("add members (comma delimited)")) {|options.members_to_add|}
27
+ opts.on("-d", "--delete-members=MEMBER1,MEMBER2,MEBMER3", Array,
28
+ _("delete members (comma delimited)")) {|options.members_to_delete|}
29
+ end
30
+
31
+ name = nil
32
+ if argv.size == 1
33
+ name = argv.first
34
+ else
35
+ $stderr.puts opts
36
+ exit 1
37
+ end
38
+
39
+ unless Process.uid.zero?
40
+ $stderr.puts(_("need root authority."))
41
+ exit 1
42
+ end
43
+
44
+ ActiveSambaLdap::Base.setup_connection("update")
45
+
46
+ class Group < ActiveSambaLdap::Group
47
+ ldap_mapping
48
+ end
49
+
50
+ class User < ActiveSambaLdap::User
51
+ ldap_mapping
52
+ end
53
+
54
+ class Computer < ActiveSambaLdap::Computer
55
+ ldap_mapping
56
+ end
57
+
58
+ unless Group.exists?(name)
59
+ $stderr.puts(_("group doesn't exist: %s") % name)
60
+ exit 1
61
+ end
62
+ group = Group.find(name)
63
+
64
+ if options.gid
65
+ begin
66
+ group.change_gid_number(options.gid, options.allow_non_unique_gid_number)
67
+ rescue ActiveSambaLdap::GidNumberAlreadyExists
68
+ $stderr.puts $!.message
69
+ exit 1
70
+ end
71
+ end
72
+
73
+ if options.members_to_add and options.members_to_delete
74
+ duplicated_members = options.members_to_add & options.members_to_delete
75
+ unless duplicated_members.empty?
76
+ format =
77
+ n_("there is duplicated member in adding and deleting members: %s",
78
+ "there are duplicated members in adding and deleting members: %s",
79
+ duplicated_members.size)
80
+ $stderr.puts(format % duplicated_members.join(", "))
81
+ exit 1
82
+ end
83
+ end
84
+
85
+ if options.members_to_add
86
+ users = []
87
+ computers = []
88
+ options.members_to_add.each do |member|
89
+ if /\$$/ =~ member
90
+ computers << Computer.find(member)
91
+ else
92
+ users << User.find(member)
93
+ end
94
+ end
95
+ group.users.concat(users)
96
+ group.computers.concat(computers)
97
+ end
98
+
99
+ if options.members_to_delete
100
+ users = []
101
+ computers = []
102
+ options.members_to_delete.each do |member|
103
+ if /\$$/ =~ member
104
+ computers << Computer.find(member)
105
+ else
106
+ users << User.find(member)
107
+ end
108
+ end
109
+ group.users -= users
110
+ group.computers -= computers
111
+ end
112
+
113
+ group.save!
114
+
115
+ if options.new_group_name
116
+ if Group.exists?(options.new_group_name)
117
+ $stderr.puts(_("group already exists: %s") % options.new_group_name)
118
+ exit 1
119
+ end
120
+
121
+ new_group = Group.new(options.new_group_name)
122
+ new_group.attributes = group.attributes.reject do |key, value|
123
+ %w(cn).include?(key)
124
+ end
125
+ primary_members = group.primary_members
126
+ group.gid_number = nil
127
+ new_group.save!
128
+ primary_members.each do |member|
129
+ member.primary_group = new_group
130
+ member.save!
131
+ end
132
+ group.destroy(:remove_members => true)
133
+ end
134
+
135
+ ActiveSambaLdap::Base.restart_nscd
136
+
137
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,33 @@
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
+ ActiveSambaLdap::Base.setup_connection("reference")
21
+
22
+ class Group < ActiveSambaLdap::Group
23
+ ldap_mapping
24
+ end
25
+
26
+ unless Group.exists?(name)
27
+ $stderr.puts(_("group doesn't exist: %s") % name)
28
+ exit 1
29
+ end
30
+ group = Group.find(name)
31
+ puts group.to_ldif
32
+
33
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'etc'
4
+
5
+ require 'active_samba_ldap'
6
+ require 'active_samba_ldap/command'
7
+
8
+ include ActiveSambaLdap::GetTextSupport
9
+
10
+ argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
11
+ options.update_samba_password = true
12
+ options.update_unix_password = true
13
+
14
+ opts.banner += " [USER_NAME]"
15
+
16
+ opts.on("-s", "--[no-]samba-password",
17
+ _("update samba password"),
18
+ "(#{options.update_samba_password})") do |bool|
19
+ options.update_samba_password = bool
20
+ end
21
+
22
+ opts.on("-u", "--[no-]unix-password",
23
+ _("update UNIX password"),
24
+ "(#{options.update_unix_password})") do |bool|
25
+ options.update_unix_password = bool
26
+ end
27
+ end
28
+
29
+ name = nil
30
+ case argv.size
31
+ when 0
32
+ name = Etc.getpwuid(Process.uid).name
33
+ when 1
34
+ name = argv.first
35
+ else
36
+ $stderr.puts opts
37
+ exit 1
38
+ end
39
+
40
+ if !options.update_samba_password and !options.update_unix_password
41
+ $stderr.puts(_("do nothing."))
42
+ exit
43
+ end
44
+
45
+ ActiveSambaLdap::Base.setup_connection("update")
46
+
47
+ class User < ActiveSambaLdap::User
48
+ ldap_mapping
49
+ end
50
+
51
+ unless User.exists?(name)
52
+ $stderr.puts(_("user doesn't exist: %s") % name)
53
+ exit 1
54
+ end
55
+ user = User.find(name)
56
+
57
+ unless Process.uid.zero?
58
+ prompt = _("Enter your current password: ")
59
+ old_password = ActiveSambaLdap::Command.read_password(prompt)
60
+ begin
61
+ user.bind(old_password)
62
+ rescue ActiveLdap::AuthenticationError
63
+ $stderr.puts(_("password doesn't match."))
64
+ exit 1
65
+ end
66
+ end
67
+
68
+ password = ActiveSambaLdap::Command.read_password(_("New password: "))
69
+ password2 = ActiveSambaLdap::Command.read_password(_("Retype new password: "))
70
+
71
+ unless password == password2
72
+ $stderr.puts(_("New passwords don't match."))
73
+ exit 1
74
+ end
75
+
76
+ changed = false
77
+
78
+ if options.update_unix_password
79
+ user.change_password(password)
80
+ changed = true
81
+ end
82
+
83
+ if options.update_samba_password
84
+ user.change_samba_password(password)
85
+ changed = true
86
+ end
87
+
88
+ user.save! if changed
89
+
90
+ ActiveSambaLdap::Base.clear_active_connections!
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,101 @@
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
+ default = ActiveSambaLdap::Configuration::ClassMethods::Private.new({})
14
+ options.start_uid = Integer(default.start_uid)
15
+ options.start_gid = Integer(default.start_gid)
16
+ options.administrator = ActiveSambaLdap::User::DOMAIN_ADMIN_NAME
17
+ admin_rid = ActiveSambaLdap::User::DOMAIN_ADMIN_RID
18
+ admins_rid = ActiveSambaLdap::Group::DOMAIN_ADMINS_RID
19
+ guest_rid = ActiveSambaLdap::User::DOMAIN_GUEST_RID
20
+ guests_rid = ActiveSambaLdap::Group::DOMAIN_GUESTS_RID
21
+ options.administrator_uid = ActiveSambaLdap::User.rid2uid(admin_rid)
22
+ options.administrator_gid = ActiveSambaLdap::Group.rid2gid(admins_rid)
23
+ options.guest = ActiveSambaLdap::User::DOMAIN_GUEST_NAME
24
+ options.guest_uid = ActiveSambaLdap::User.rid2uid(guest_rid)
25
+ options.guest_gid = ActiveSambaLdap::Group.rid2gid(guests_rid)
26
+ options.export_ldif = nil
27
+ options.import_ldif = nil
28
+
29
+ opts.on("-u", "--start-uid=UID", Integer,
30
+ _("first uid number to allocate"),
31
+ "(#{options.start_uid})") {|options.start_uid|}
32
+ opts.on("-g", "--start-gid=GID", Integer,
33
+ _("first gid number to allocate"),
34
+ "(#{options.start_gid})") {|options.start_gid|}
35
+ opts.on("-a", "--administrator=NAME",
36
+ _("administrator login name"),
37
+ "(#{options.administrator})") {|options.administrator|}
38
+ opts.on("--administrator-uid=UID", Integer,
39
+ _("administrator's uid number"),
40
+ "(#{options.administrator_uid})") {|options.administrator_uid|}
41
+ opts.on("--administrator-gid=GID", Integer,
42
+ _("administrator's gid number"),
43
+ "(#{options.administrator_gid})") {|options.administrator_gid|}
44
+ opts.on("--guest=NAME",
45
+ _("guest login name"),
46
+ "(#{options.guest})") {|options.guest|}
47
+ opts.on("--guest-uid=UID", Integer,
48
+ _("guest's uid number"),
49
+ "(#{options.guest_uid})") {|options.guest_uid|}
50
+ opts.on("--guest-gid=GID", Integer,
51
+ _("guest's gid number"),
52
+ "(#{options.guest_gid})") {|options.guest_gid|}
53
+ opts.on("-e", "--export-ldif=LDIF",
54
+ _("export LDIF file")) {|options.export_ldif|}
55
+ # opts.on("-i", "--import-ldif=LDIF",
56
+ # _("import LDIF file")) {|options.import_ldif|}
57
+ end
58
+
59
+ unless Process.uid.zero?
60
+ $stderr.puts(_("need root authority."))
61
+ exit 1
62
+ end
63
+
64
+ ActiveSambaLdap::Base.setup_connection("update")
65
+
66
+ entries, opts = ActiveSambaLdap::Base.populate(options.marshal_dump)
67
+
68
+ def init_administrator(opts, entries)
69
+ admin_name = opts[:administrator]
70
+ user_class = opts[:user_class]
71
+ admin = entries.find do |entry|
72
+ entry.is_a?(user_class) and entry.uid == admin_name
73
+ end
74
+ return if admin.new_entry?
75
+
76
+ prompt = _("Password for %s: ") % admin_name
77
+ password = ActiveSambaLdap::Command.read_password(prompt)
78
+ prompt2 = _("Retype password for %s: ") % admin_name
79
+ password2 = ActiveSambaLdap::Command.read_password(prompt2)
80
+ unless password == password2
81
+ $stderr.puts(_("Passwords don't match."))
82
+ exit 1
83
+ end
84
+
85
+ admin.change_password(password)
86
+ admin.change_samba_password(password)
87
+ admin.enable
88
+ admin.save!
89
+ end
90
+
91
+ init_administrator(opts, entries)
92
+
93
+ if options.export_ldif
94
+ File.open(options.export_ldif, "w") do |out|
95
+ out.puts(entries.join("\n"))
96
+ end
97
+ end
98
+
99
+ ActiveSambaLdap::Base.restart_nscd
100
+
101
+ ActiveSambaLdap::Base.clear_active_connections!