Add tasks for modifying schema, first custom attributes
refs #172, #173
This commit is contained in:
		
							parent
							
								
									8de0a2e26e
								
							
						
					
					
						commit
						de20931d30
					
				| @ -1,6 +1,6 @@ | |||||||
| namespace :ldap do | namespace :ldap do | ||||||
|   desc "Reset the LDAP directory and set up base entries and default org" |   desc "Reset the LDAP directory and set up base entries and default org" | ||||||
|   task setup: :environment do |t, args| |   task setup: [:environment, :add_custom_attributes] do |t, args| | ||||||
|     ldap = LdapService.new |     ldap = LdapService.new | ||||||
| 
 | 
 | ||||||
|     ldap.delete_entry "cn=admin_role,ou=kosmos.org,cn=users,dc=kosmos,dc=org", true |     ldap.delete_entry "cn=admin_role,ou=kosmos.org,cn=users,dc=kosmos,dc=org", true | ||||||
| @ -19,6 +19,42 @@ namespace :ldap do | |||||||
|     }, true |     }, true | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   desc "Add custom attributes to schema" | ||||||
|  |   task add_custom_attributes: :environment do |t, args| | ||||||
|  |     %w[ admin service_enabled nostr_key ].each do |name| | ||||||
|  |       Rake::Task["ldap:modify_ldap_schema"].invoke(name, "add") | ||||||
|  |       Rake::Task['ldap:modify_ldap_schema'].reenable | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   desc "Delete custom attributes from schema" | ||||||
|  |   task delete_custom_attributes: :environment do |t, args| | ||||||
|  |     %w[ admin service_enabled nostr_key ].each do |name| | ||||||
|  |       Rake::Task["ldap:modify_ldap_schema"].invoke(name, "delete") | ||||||
|  |       Rake::Task['ldap:modify_ldap_schema'].reenable | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   desc "Modify LDAP schema" | ||||||
|  |   task :modify_ldap_schema, [:name, :operation] => [:environment] do |t, args| | ||||||
|  |     puts "Modify schema: #{args[:operation]} #{args[:name]}" | ||||||
|  | 
 | ||||||
|  |     filename = "#{Rails.root}/schemas/ldap/#{args[:name]}.ldif" | ||||||
|  |     ldif = YAML.safe_load(File.read(filename)) | ||||||
|  |     dn = ldif["dn"] | ||||||
|  |     attribute = ldif["add"] | ||||||
|  |     value = ldif[attribute] | ||||||
|  |     operation = [ args[:operation].to_sym, attribute.to_sym, value ] | ||||||
|  | 
 | ||||||
|  |     ldap = LdapService.new | ||||||
|  |     res = ldap.modify dn, [ operation ] | ||||||
|  | 
 | ||||||
|  |     if res != 0 | ||||||
|  |       puts "Result code: #{res}" | ||||||
|  |       exit 1 | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   desc "List user domains/organizations" |   desc "List user domains/organizations" | ||||||
|   task list_organizations: :environment do |t, args| |   task list_organizations: :environment do |t, args| | ||||||
|     ldap = LdapService.new |     ldap = LdapService.new | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								schemas/ldap/admin.ldif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								schemas/ldap/admin.ldif
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | dn: cn=schema | ||||||
|  | changetype: modify | ||||||
|  | add: attributeTypes | ||||||
|  | attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.1 | ||||||
|  |   NAME 'admin' | ||||||
|  |   DESC 'Admin flag' | ||||||
|  |   EQUALITY booleanMatch | ||||||
|  |   SYNTAX  1.3.6.1.4.1.1466.115.121.1.7 | ||||||
|  |   SINGLE-VALUE ) | ||||||
							
								
								
									
										9
									
								
								schemas/ldap/nostr_key.ldif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								schemas/ldap/nostr_key.ldif
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | dn: cn=schema | ||||||
|  | changetype: modify | ||||||
|  | add: attributeTypes | ||||||
|  | attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.21 | ||||||
|  |   NAME 'nostrKey' | ||||||
|  |   DESC 'Nostr public key' | ||||||
|  |   EQUALITY caseIgnoreMatch | ||||||
|  |   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 | ||||||
|  |   SINGLE-VALUE ) | ||||||
							
								
								
									
										8
									
								
								schemas/ldap/service_enabled.ldif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								schemas/ldap/service_enabled.ldif
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | dn: cn=schema | ||||||
|  | changetype: modify | ||||||
|  | add: attributeTypes | ||||||
|  | attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.2 | ||||||
|  |   NAME 'serviceEnabled' | ||||||
|  |   DESC 'Services enabled for account' | ||||||
|  |   EQUALITY caseExactMatch | ||||||
|  |   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user