Imported Upstream version 0.7.1
[hcoop/zz_old/debian/suphp.git] / src / Configuration.hpp
1 /*
2 suPHP - (c)2002-2008 Sebastian Marsching <sebastian@marsching.com>
3
4 This file is part of suPHP.
5
6 suPHP is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 suPHP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with suPHP; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef SUPHP_CONFIGURATION_H
22
23 namespace suPHP {
24 class Configuration;
25 };
26
27 #define SUPHP_CONFIGURATION_H
28
29 #include <string>
30 #include <map>
31 #include <vector>
32
33 #include "ParsingException.hpp"
34 #include "IOException.hpp"
35 #include "File.hpp"
36 #include "KeyNotFoundException.hpp"
37 #include "Logger.hpp"
38
39 namespace suPHP {
40 /**
41 * Class encapsulating run-time configuration.
42 */
43 class Configuration {
44 private:
45 std::string logfile;
46 std::string webserver_user;
47 std::vector<std::string> docroots;
48 bool allow_file_group_writeable;
49 bool allow_directory_group_writeable;
50 bool allow_file_others_writeable;
51 bool allow_directory_others_writeable;
52 bool check_vhost_docroot;
53 bool errors_to_browser;
54 std::string env_path;
55 std::map<std::string, std::string> handlers;
56 LogLevel loglevel;
57 int min_uid;
58 int min_gid;
59 int umask;
60 std::string chroot_path;
61
62 /**
63 * Converts string to bool
64 */
65 bool strToBool(const std::string& str) const throw (ParsingException);
66
67 /**
68 * Converts string to LogLevel
69 */
70 LogLevel strToLogLevel(const std::string& str) const
71 throw (ParsingException);
72
73 public:
74 /**
75 * Constructor, initializes configuration with default values.
76 */
77 Configuration();
78
79 /**
80 * Reads values from INI file
81 */
82 void readFromFile(File& file) throw (IOException, ParsingException);
83
84 /**
85 * Return path to logfile;
86 */
87 std::string getLogfile() const;
88
89 /**
90 Return log level
91 */
92 LogLevel getLogLevel() const;
93
94 /**
95 * Return username of user the webserver is running as
96 */
97 std::string getWebserverUser() const;
98
99 /**
100 * Return document root (list of directories, scripts may be within)
101 */
102 const std::vector<std::string>& getDocroots() const;
103
104 /**
105 * Returns wheter suPHP should check if scripts in within the
106 * document root of the VHost
107 */
108 bool getCheckVHostDocroot() const;
109
110 /**
111 * Returns wheter suPHP should ignore the group write bit of
112 * the script file
113 */
114 bool getAllowFileGroupWriteable() const;
115
116 /**
117 * Returns wheter suPHP should ignore the group write bit of
118 * the directory the is script in
119 */
120 bool getAllowDirectoryGroupWriteable() const;
121
122 /**
123 * Returns wheter suPHP should ignore the others write bit of the
124 * script file
125 */
126 bool getAllowFileOthersWriteable() const;
127
128 /**
129 * Returns wheter suPHP should ignore the others write bit of
130 * the directory the is script in
131 */
132 bool getAllowDirectoryOthersWriteable() const;
133
134 /**
135 * Returns whether (minor) error message should be sent to browser
136 */
137 bool getErrorsToBrowser() const;
138
139 /**
140 * Returns the content for the PATH environment variable
141 */
142 std::string getEnvPath() const;
143
144 /**
145 * Returns interpreter string for specified handler
146 */
147 std::string getInterpreter(std::string handler) const
148 throw (KeyNotFoundException);
149
150 /**
151 * Returns minimum UID allowed for scripts
152 */
153 int getMinUid() const;
154
155 /**
156 * Returns minimum GID allowed for scripts
157 */
158 int getMinGid() const;
159
160 /**
161 * Returns umask to set
162 */
163 int getUmask() const;
164
165 /**
166 * Return chroot path
167 */
168 std::string getChrootPath() const;
169 };
170 };
171
172 #endif // SUPHP_CONFIGURATION_H