mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							95 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							95 lines
						
					
					
						
							2.6 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| module Docuseal
 | |
|   URL_CACHE = ActiveSupport::Cache::MemoryStore.new
 | |
|   PRODUCT_URL = 'https://www.docuseal.co'
 | |
|   NEWSLETTER_URL = "#{PRODUCT_URL}/newsletters".freeze
 | |
|   ENQUIRIES_URL = "#{PRODUCT_URL}/enquiries".freeze
 | |
|   PRODUCT_NAME = 'DocuSeal'
 | |
|   DEFAULT_APP_URL = ENV.fetch('APP_URL', 'http://localhost:3000')
 | |
|   GITHUB_URL = 'https://github.com/docusealco/docuseal'
 | |
|   DISCORD_URL = 'https://discord.gg/qygYCDGck9'
 | |
|   TWITTER_URL = 'https://twitter.com/docusealco'
 | |
|   TWITTER_HANDLE = '@docusealco'
 | |
|   CHATGPT_URL = 'https://chatgpt.com/g/g-9hg8AAw0r-docuseal'
 | |
|   SUPPORT_EMAIL = 'support@docuseal.com'
 | |
|   HOST = ENV.fetch('HOST', 'localhost')
 | |
|   AATL_CERT_NAME = 'docuseal_aatl'
 | |
|   CONSOLE_URL = if Rails.env.development?
 | |
|                   'http://console.localhost.io:3001'
 | |
|                 elsif ENV['MULTITENANT'] == 'true'
 | |
|                   "https://console.#{HOST}"
 | |
|                 else
 | |
|                   'https://console.docuseal.com'
 | |
|                 end
 | |
|   CLOUD_URL = if Rails.env.development?
 | |
|                 'http://localhost:3000'
 | |
|               else
 | |
|                 'https://docuseal.com'
 | |
|               end
 | |
|   CDN_URL = if Rails.env.development?
 | |
|               'http://localhost:3000'
 | |
|             elsif ENV['MULTITENANT'] == 'true'
 | |
|               "https://cdn.#{HOST}"
 | |
|             else
 | |
|               'https://cdn.docuseal.com'
 | |
|             end
 | |
| 
 | |
|   CERTS = JSON.parse(ENV.fetch('CERTS', '{}'))
 | |
|   TIMESERVER_URL = ENV.fetch('TIMESERVER_URL', nil)
 | |
|   VERSION_FILE_PATH = Rails.root.join('.version')
 | |
| 
 | |
|   DEFAULT_URL_OPTIONS = {
 | |
|     host: HOST,
 | |
|     protocol: ENV['FORCE_SSL'].present? ? 'https' : 'http'
 | |
|   }.freeze
 | |
| 
 | |
|   module_function
 | |
| 
 | |
|   def version
 | |
|     @version ||= VERSION_FILE_PATH.read.strip if VERSION_FILE_PATH.exist?
 | |
|   end
 | |
| 
 | |
|   def multitenant?
 | |
|     ENV['MULTITENANT'] == 'true'
 | |
|   end
 | |
| 
 | |
|   def demo?
 | |
|     ENV['DEMO'] == 'true'
 | |
|   end
 | |
| 
 | |
|   def active_storage_public?
 | |
|     ENV['ACTIVE_STORAGE_PUBLIC'] == 'true'
 | |
|   end
 | |
| 
 | |
|   def default_pkcs
 | |
|     @default_pkcs ||= GenerateCertificate.load_pkcs(Docuseal::CERTS)
 | |
|   end
 | |
| 
 | |
|   def trusted_certs
 | |
|     @trusted_certs ||=
 | |
|       ENV['TRUSTED_CERTS'].to_s.gsub('\\n', "\n").split("\n\n").map do |base64|
 | |
|         OpenSSL::X509::Certificate.new(base64)
 | |
|       end
 | |
|   end
 | |
| 
 | |
|   def default_url_options
 | |
|     return DEFAULT_URL_OPTIONS if multitenant?
 | |
| 
 | |
|     @default_url_options ||= begin
 | |
|       value = EncryptedConfig.find_by(key: EncryptedConfig::APP_URL_KEY)&.value if ENV['APP_URL'].blank?
 | |
|       value ||= DEFAULT_APP_URL
 | |
|       url = Addressable::URI.parse(value)
 | |
|       { host: url.host, port: url.port, protocol: url.scheme }
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def product_name
 | |
|     PRODUCT_NAME
 | |
|   end
 | |
| 
 | |
|   def refresh_default_url_options!
 | |
|     @default_url_options = nil
 | |
|   end
 | |
| end
 |