X-Git-Url: http://git.home-dn.net/?p=manu%2Fsuphp.git;a=blobdiff_plain;f=src%2FAPI.hpp;fp=src%2FAPI.hpp;h=9b9f69f28ec22ba1e65677c956d82db3064d1ede;hp=0000000000000000000000000000000000000000;hb=873afb00229b8e205345b6895eaad6602d5e10f4;hpb=728a5b3f000f892e52ecea98fcc8f0c5d7275b7b diff --git a/src/API.hpp b/src/API.hpp new file mode 100644 index 0000000..9b9f69f --- /dev/null +++ b/src/API.hpp @@ -0,0 +1,186 @@ +/* + suPHP - (c)2002-2005 Sebastian Marsching + + 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 +#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; + }; +}; + +#endif // SUPHP_API_H