Skip to content
Snippets Groups Projects
Select Git revision
  • move-gl-dropdown
  • improve-table-pagination-spec
  • move-markdown-preview
  • winh-fix-merge-request-spec
  • master default
  • index-namespaces-lower-name
  • winh-single-karma-test
  • 10-3-stable
  • 36782-replace-team-user-role-with-add_role-user-in-specs
  • winh-modal-internal-state
  • tz-ide-file-icons
  • 38869-milestone-select
  • update-autodevops-template
  • jivl-activate-repo-cookie-preferences
  • qa-add-deploy-key
  • docs-move-article-ldap
  • 40780-choose-file
  • 22643-manual-job-page
  • refactor-cluster-show-page-conservative
  • dm-sidekiq-versioning
  • v10.4.0.pre
  • v10.3.0
  • v10.3.0-rc5
  • v10.3.0-rc4
  • v10.3.0-rc3
  • v10.3.0-rc2
  • v10.2.5
  • v10.3.0-rc1
  • v10.0.7
  • v10.1.5
  • v10.2.4
  • v10.2.3
  • v10.2.2
  • v10.2.1
  • v10.3.0.pre
  • v10.2.0
  • v10.2.0-rc4
  • v10.2.0-rc3
  • v10.1.4
  • v10.2.0-rc2
40 results

mail_room.rb

Blame
  • Forked from GitLab.org / GitLab FOSS
    6808 commits behind the upstream repository.
    mail_room.rb 1.39 KiB
    require 'yaml'
    require 'json'
    require_relative 'redis' unless defined?(Gitlab::Redis)
    
    module Gitlab
      module MailRoom
        class << self
          def enabled?
            config[:enabled] && config[:address]
          end
    
          def config
            @config ||= fetch_config
          end
    
          def reset_config!
            @config = nil
          end
    
          private
    
          def fetch_config
            return {} unless File.exist?(config_file)
    
            rails_env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
            all_config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys
    
            config = all_config[:incoming_email] || {}
            config[:enabled] = false if config[:enabled].nil?
            config[:port] = 143 if config[:port].nil?
            config[:ssl] = false if config[:ssl].nil?
            config[:start_tls] = false if config[:start_tls].nil?
            config[:mailbox] = 'inbox' if config[:mailbox].nil?
            config[:idle_timeout] = 60 if config[:idle_timeout].nil?
    
            if config[:enabled] && config[:address]
              gitlab_redis = Gitlab::Redis.new(rails_env)
              config[:redis_url] = gitlab_redis.url
    
              if gitlab_redis.sentinels?
                config[:sentinels] = gitlab_redis.sentinels
              end
            end
    
            config
          end
    
          def config_file
            ENV['MAIL_ROOM_GITLAB_CONFIG_FILE'] || File.expand_path('../../../config/gitlab.yml', __FILE__)
          end
        end
      end
    end