Port private repositories settings to new config
[gitorious:mainline.git] / lib / gitorious.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2011-2012 Gitorious AS
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU Affero General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU Affero General Public License for more details.
14 #
15 #   You should have received a copy of the GNU Affero General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #++
18 require "gitorious/configurable"
19 require "gitorious/mount_point"
20
21 module Gitorious
22   VERSION = "3.0.0"
23
24   # Application-wide configuration settings.
25   Configuration = Configurable.new("GITORIOUS")
26
27   def self.site
28     return @site if @site && cache?
29     host = Gitorious::Configuration.get("host", "gitorious.local")
30     port = Gitorious::Configuration.get("port")
31     scheme = Gitorious::Configuration.get("scheme")
32     @site = Gitorious::HttpMountPoint.new(host, port, scheme)
33   end
34
35   def self.scheme; site.scheme; end
36   def self.host; site.host; end
37   def self.port; site.port; end
38   def self.ssl?; site.ssl?; end
39   def self.url(path); site.url(path); end
40
41   def self.client
42     return @client if @client && cache?
43     host = Gitorious::Configuration.get("client_host", "localhost")
44     port = Gitorious::Configuration.get("client_port")
45     @client = Gitorious::HttpMountPoint.new(host, port)
46   end
47
48   def self.git_daemon
49     return @git_daemon if @git_daemon && cache?
50     host = Gitorious::Configuration.get("git_daemon_host") { Gitorious.host }
51     port = Gitorious::Configuration.get("git_daemon_port")
52     @git_daemon = Gitorious::GitMountPoint.new(host, port)
53   end
54
55   def self.ssh_daemon
56     return @ssh_daemon if @ssh_daemon && cache?
57     host = Gitorious::Configuration.get("ssh_daemon_host") { Gitorious.host }
58     @ssh_daemon = Gitorious::GitSshMountPoint.new(Gitorious.user, host)
59   end
60
61   def self.email_sender
62     return @email_sender if @email_sender && cache?
63     default = "Gitorious <no-reply@#{host}>"
64     @email_sender = Gitorious::Configuration.get("email_sender", default)
65   end
66
67   def self.user
68     return @user if @user && cache?
69     @user = Gitorious::Configuration.get("user", "git")
70   end
71
72   def self.public?
73     return @public if !@public.nil? && cache?
74     @public = Gitorious::Configuration.get("public_mode", true)
75   end
76
77   def self.private_repositories?
78     return @private_repos if !@private_repos.nil? && cache?
79     @private_repos = Gitorious::Configuration.get("enable_private_repositories", false)
80   end
81
82   def self.projects_default_private?
83     return @projdefpriv if !@projdefpriv.nil? && cache?
84     @projdefpriv = private_repositories? && Gitorious::Configuration.get("projects_default_private", false)
85   end
86
87   def self.repositories_default_private?
88     return @repodefpriv if !@repodefpriv.nil? && cache?
89     @repodefpriv = private_repositories? && Gitorious::Configuration.get("repositories_default_private", false)
90   end
91
92   def self.support_email
93     return @support_email if @support_email && cache?
94     @support_email = Gitorious::Configuration.get("support_email") do
95       "gitorious-support@#{host}"
96     end
97   end
98
99   def self.remote_ops_ips
100     return @remote_ops_ips if @remote_ops_ips && cache?
101     ips = Gitorious::Configuration.get("remote_ops_ips", ["127.0.0.1"])
102     @remote_ops_ips = Array(ips)
103   end
104
105   def self.ops?(remote_addr)
106     remote_ops_ips.include?(remote_addr)
107   end
108
109   private
110   def self.cache?
111     return Rails.env.production? if defined?(Rails)
112     false
113   end
114 end