@ -331,7 +331,7 @@ macro_rules! make_config { 
			
		
	
		
		
			
				
					             }              }  
			
		
	
		
		
			
				
					         }          }  
			
		
	
		
		
			
				
					     } } ;      } } ;  
			
		
	
		
		
			
				
					
					     (   @ build   $value :expr ,   $config :expr ,   gen ,   $default_fn :expr   )   = >   { {      (   @ build   $value :expr ,   $config :expr ,   generated  ,   $default_fn :expr   )   = >   { {  
			
				
				
			
		
	
		
		
	
		
		
			
				
					         let   f : & dyn   Fn ( & ConfigItems )   -> _   =   & $default_fn ;          let   f : & dyn   Fn ( & ConfigItems )   -> _   =   & $default_fn ;  
			
		
	
		
		
			
				
					         f ( $config )          f ( $config )  
			
		
	
		
		
			
				
					     } } ;      } } ;  
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -352,7 +352,7 @@ macro_rules! make_config { 
			
		
	
		
		
			
				
					//  def:       Use a default value
 //  def:       Use a default value
  
			
		
	
		
		
			
				
					//  auto:      Value is auto generated based on other values
 //  auto:      Value is auto generated based on other values
  
			
		
	
		
		
			
				
					//  option:    Value is optional
 //  option:    Value is optional
  
			
		
	
		
		
			
				
					
					//  gen:     Value is always autogenerated and it's original value ignored
 //  generated : Value is always autogenerated and it's original value ignored
  
			
				
				
			
		
	
		
		
	
		
		
			
				
					make_config !   { make_config !   {  
			
		
	
		
		
			
				
					     folders   {      folders   {  
			
		
	
		
		
			
				
					         ///  Data folder |> Main data folder
          ///  Data folder |> Main data folder
  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -515,7 +515,7 @@ make_config! { 
			
		
	
		
		
			
				
					         /// Set to the string "none" (without quotes), to disable any headers and just use the remote IP
          /// Set to the string "none" (without quotes), to disable any headers and just use the remote IP
  
			
		
	
		
		
			
				
					         ip_header :              String ,   true ,     def ,      "X-Real-IP" . to_string ( ) ;          ip_header :              String ,   true ,     def ,      "X-Real-IP" . to_string ( ) ;  
			
		
	
		
		
			
				
					         /// Internal IP header property, used to avoid recomputing each time
          /// Internal IP header property, used to avoid recomputing each time
  
			
		
	
		
		
			
				
					
					         _ip_header_enabled :     bool ,     false ,    gen ,      | c |   & c . ip_header . trim ( ) . to_lowercase ( )   ! =   "none" ;          _ip_header_enabled :     bool ,     false ,    generated  ,      | c |   & c . ip_header . trim ( ) . to_lowercase ( )   ! =   "none" ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					         /// Icon service |> The predefined icon services are: internal, bitwarden, duckduckgo, google.
          /// Icon service |> The predefined icon services are: internal, bitwarden, duckduckgo, google.
  
			
		
	
		
		
			
				
					         /// To specify a custom icon service, set a URL template with exactly one instance of `{}`,
          /// To specify a custom icon service, set a URL template with exactly one instance of `{}`,
  
			
		
	
		
		
			
				
					         /// which is replaced with the domain. For example: `https://icon.example.com/domain/{}`.
          /// which is replaced with the domain. For example: `https://icon.example.com/domain/{}`.
  
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -524,9 +524,9 @@ make_config! { 
			
		
	
		
		
			
				
					         /// corresponding icon at the external service.
          /// corresponding icon at the external service.
  
			
		
	
		
		
			
				
					         icon_service :           String ,   false ,    def ,      "internal" . to_string ( ) ;          icon_service :           String ,   false ,    def ,      "internal" . to_string ( ) ;  
			
		
	
		
		
			
				
					         /// _icon_service_url
          /// _icon_service_url
  
			
		
	
		
		
			
				
					
					         _icon_service_url :      String ,   false ,    gen ,      | c |   generate_icon_service_url ( & c . icon_service ) ;          _icon_service_url :      String ,   false ,    generated  ,      | c |   generate_icon_service_url ( & c . icon_service ) ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					         /// _icon_service_csp
          /// _icon_service_csp
  
			
		
	
		
		
			
				
					
					         _icon_service_csp :      String ,   false ,    gen ,      | c |   generate_icon_service_csp ( & c . icon_service ,   & c . _icon_service_url ) ;          _icon_service_csp :      String ,   false ,    generated  ,      | c |   generate_icon_service_csp ( & c . icon_service ,   & c . _icon_service_url ) ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					         /// Icon redirect code |> The HTTP status code to use for redirects to an external icon service.
          /// Icon redirect code |> The HTTP status code to use for redirects to an external icon service.
  
			
		
	
		
		
			
				
					         /// The supported codes are 301 (legacy permanent), 302 (legacy temporary), 307 (temporary), and 308 (permanent).
          /// The supported codes are 301 (legacy permanent), 302 (legacy temporary), 307 (temporary), and 308 (permanent).
  
			
		
	
		
		
			
				
					         /// Temporary redirects are useful while testing different icon services, but once a service
          /// Temporary redirects are useful while testing different icon services, but once a service
  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -624,7 +624,7 @@ make_config! { 
			
		
	
		
		
			
				
					         /// WARNING: This could cause issues with clients. Also exports will not work on Bitwarden servers!
          /// WARNING: This could cause issues with clients. Also exports will not work on Bitwarden servers!
  
			
		
	
		
		
			
				
					         increase_note_size_limit :      bool ,    true ,    def ,   false ;          increase_note_size_limit :      bool ,    true ,    def ,   false ;  
			
		
	
		
		
			
				
					         /// Generated max_note_size value to prevent if..else matching during every check
          /// Generated max_note_size value to prevent if..else matching during every check
  
			
		
	
		
		
			
				
					
					         _max_note_size :                usize ,   false ,   gen ,   | c |   if   c . increase_note_size_limit   { 100_000 }   else   { 10_000 } ;          _max_note_size :                usize ,   false ,   generated  ,   | c |   if   c . increase_note_size_limit   { 100_000 }   else   { 10_000 } ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					         /// Enforce Single Org with Reset Password Policy |> Enforce that the Single Org policy is enabled before setting the Reset Password policy
          /// Enforce Single Org with Reset Password Policy |> Enforce that the Single Org policy is enabled before setting the Reset Password policy
  
			
		
	
		
		
			
				
					         /// Bitwarden enforces this by default. In Vaultwarden we encouraged to use multiple organizations because groups were not available.
          /// Bitwarden enforces this by default. In Vaultwarden we encouraged to use multiple organizations because groups were not available.
  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -695,7 +695,7 @@ make_config! { 
			
		
	
		
		
			
				
					         /// Embed images as email attachments.
          /// Embed images as email attachments.
  
			
		
	
		
		
			
				
					         smtp_embed_images :             bool ,   true ,   def ,   true ;          smtp_embed_images :             bool ,   true ,   def ,   true ;  
			
		
	
		
		
			
				
					         /// _smtp_img_src
          /// _smtp_img_src
  
			
		
	
		
		
			
				
					
					         _smtp_img_src :                 String ,   false ,   gen ,   | c |   generate_smtp_img_src ( c . smtp_embed_images ,   & c . domain ) ;          _smtp_img_src :                 String ,   false ,   generated  ,   | c |   generate_smtp_img_src ( c . smtp_embed_images ,   & c . domain ) ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					         /// Enable SMTP debugging (Know the risks!) |> DANGEROUS: Enabling this will output very detailed SMTP messages. This could contain sensitive information like passwords and usernames! Only enable this during troubleshooting!
          /// Enable SMTP debugging (Know the risks!) |> DANGEROUS: Enabling this will output very detailed SMTP messages. This could contain sensitive information like passwords and usernames! Only enable this during troubleshooting!
  
			
		
	
		
		
			
				
					         smtp_debug :                    bool ,     false ,    def ,       false ;          smtp_debug :                    bool ,     false ,    def ,       false ;  
			
		
	
		
		
			
				
					         /// Accept Invalid Certs (Know the risks!) |> DANGEROUS: Allow invalid certificates. This option introduces significant vulnerabilities to man-in-the-middle attacks!
          /// Accept Invalid Certs (Know the risks!) |> DANGEROUS: Allow invalid certificates. This option introduces significant vulnerabilities to man-in-the-middle attacks!