1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
/*
suPHP - (c)2002-2005 Sebastian Marsching <sebastian@marsching.com>
This file is part of suPHP.
suPHP is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
suPHP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with suPHP; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef SUPHP_API_H
namespace suPHP {
class API;
};
#define SUPHP_API_H
#include <string>
#include "CommandLine.hpp"
#include "Environment.hpp"
#include "UserInfo.hpp"
#include "GroupInfo.hpp"
#include "File.hpp"
#include "Logger.hpp"
namespace suPHP {
/**
* Class encapsulating system-specific API.
*/
class API {
public:
/**
* Get environment variable
*/
virtual Environment getProcessEnvironment() =0;
/**
* Get UserInfo from username
*/
virtual UserInfo getUserInfo(const std::string username)
throw (LookupException) =0;
/**
* Get UserInfo from UID
*/
virtual UserInfo getUserInfo(const int uid) =0;
/**
* Get GroupInfo from groupname
*/
virtual GroupInfo getGroupInfo(const std::string groupname)
throw (LookupException) =0;
/**
* Get GroupInfo from GID
*/
virtual GroupInfo getGroupInfo(const int gid) =0;
/**
* Get UserInfo for effective UID
*/
virtual UserInfo getEffectiveProcessUser() =0;
/**
* Get UserInfo for real UID
*/
virtual UserInfo getRealProcessUser() =0;
/**
* Get GroupInfo for effective GID
*/
virtual GroupInfo getEffectiveProcessGroup() =0;
/**
* Get GroupInfo for real GID
*/
virtual GroupInfo getRealProcessGroup() =0;
/**
* Get Logger implementation
*/
virtual Logger& getSystemLogger() =0;
/**
* Set UID of current process
*/
virtual void setProcessUser(const UserInfo& user) const
throw (SystemException) =0;
/**
* Set GID of current process
*/
virtual void setProcessGroup(const GroupInfo& group) const
throw (SystemException) =0;
/**
* Returns username from UserInfo
*/
virtual std::string UserInfo_getUsername(const UserInfo& uinfo) const
throw (LookupException) =0;
/**
* Returns group from UserInfo
*/
virtual GroupInfo UserInfo_getGroupInfo(const UserInfo& uinfo) const
throw (LookupException) =0;
/**
* Checks whether UserInfo objects represents the super-user
*/
virtual bool UserInfo_isSuperUser(const UserInfo& uinfo) const =0;
/**
* Returns groupname from GroupInfo
*/
virtual std::string GroupInfo_getGroupname(const GroupInfo& ginfo)
const throw (LookupException) =0;
/**
* Checks whether file exists
*/
virtual bool File_exists(const File& file) const =0;
/**
* Returns real path to file
*/
virtual std::string File_getRealPath(const File& file) const
throw (SystemException) =0;
/**
* Checks for a permission bit
*/
virtual bool File_hasPermissionBit(const File& file, FileMode perm)
const throw (SystemException) =0;
/**
* Returns UID of file
*/
virtual UserInfo File_getUser(const File& file) const
throw (SystemException) =0;
/**
* Returns GID of file
*/
virtual GroupInfo File_getGroup(const File& file) const
throw (SystemException) =0;
/**
* Runs another program (replaces current process)
*/
virtual void execute(std::string program, const CommandLine& cline,
const Environment& env) const
throw (SystemException) =0;
/**
* Returns current working directory
*/
virtual std::string getCwd() const throw (SystemException) =0;
/**
* Sets current working directory
*/
virtual void setCwd(const std::string& dir) const
throw (SystemException) =0;
/**
* Sets umask
*/
virtual void setUmask(int umask) const throw (SystemException) =0;
/**
* Changes root directory for the current process
*/
virtual void chroot(const std::string& dir) const
throw (SystemException) =0;
};
};
#endif // SUPHP_API_H
|