X-Git-Url: http://git.home-dn.net/?p=manu%2Fsuphp.git;a=blobdiff_plain;f=src%2FAPI_Linux.hpp;fp=src%2FAPI_Linux.hpp;h=c75ad426f40ba4886a80195f092e17d50993fa23;hp=0000000000000000000000000000000000000000;hb=873afb00229b8e205345b6895eaad6602d5e10f4;hpb=728a5b3f000f892e52ecea98fcc8f0c5d7275b7b diff --git a/src/API_Linux.hpp b/src/API_Linux.hpp new file mode 100644 index 0000000..c75ad42 --- /dev/null +++ b/src/API_Linux.hpp @@ -0,0 +1,197 @@ +/* + 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_LINUX_H + +namespace suPHP { + class API_Linux; +}; + +#define SUPHP_API_LINUX_H + +#include + +#include "API.hpp" +#include "Environment.hpp" +#include "SmartPtr.hpp" +#include "File.hpp" +#include "API_Linux_Logger.hpp" + + +namespace suPHP { + /** + * Class encapsulating system-specific API for Linux. + */ + class API_Linux : public API { + private: + static SmartPtr logger; + /** + * Internal function for checking wheter path + * points to a symlink + */ + bool isSymlink(const std::string path) const + throw (SystemException); + + /** + * Internal function to read the target of a symlink + */ + std::string readSymlink(const std::string path) const + throw (SystemException); + + public: + /** + * Get environment variable + */ + virtual Environment getProcessEnvironment(); + + /** + * Get UserInfo from username + */ + virtual UserInfo getUserInfo(const std::string username) + throw (LookupException); + + /** + * Get UserInfo from UID + */ + virtual UserInfo getUserInfo(const int uid); + + /** + * Get GroupInfo from groupname + */ + virtual GroupInfo getGroupInfo(const std::string groupname) + throw (LookupException); + + /** + * Get GroupInfo from GID + */ + virtual GroupInfo getGroupInfo(const int gid); + + /** + * Get UserInfo for effective UID + */ + virtual UserInfo getEffectiveProcessUser(); + + /** + * Get UserInfo for real UID + */ + virtual UserInfo getRealProcessUser(); + + /** + * Get GroupInfo for effective GID + */ + virtual GroupInfo getEffectiveProcessGroup(); + + /** + * Get GroupInfo for real GID + */ + virtual GroupInfo getRealProcessGroup(); + + + virtual Logger& getSystemLogger(); + + /** + * Set UID of current process + */ + virtual void setProcessUser(const UserInfo& user) const + throw (SystemException); + + /** + * Set GID of current process + */ + virtual void setProcessGroup(const GroupInfo& group) const + throw (SystemException); + + /** + * Returns username from UserInfo + */ + virtual std::string UserInfo_getUsername(const UserInfo& uinfo) const + throw (LookupException); + + /** + * Returns group from UserInfo + */ + virtual GroupInfo UserInfo_getGroupInfo(const UserInfo& uinfo) const throw (LookupException); + + /** + * Checks whether UserInfo objects represents the super-user + */ + virtual bool UserInfo_isSuperUser(const UserInfo& uinfo) const; + + /** + * Returns groupname from GroupInfo + */ + std::string GroupInfo_getGroupname(const GroupInfo& ginfo) const + throw (LookupException); + + /** + * Checks whether file exists + */ + virtual bool File_exists(const File& file) const; + + /** + * Returns real path to file + */ + virtual std::string File_getRealPath(const File& file) const + throw (SystemException); + + /** + * Checks for a permission bit + */ + virtual bool File_hasPermissionBit(const File& file, FileMode perm) + const throw (SystemException); + + /** + * Returns UID of file + */ + virtual UserInfo File_getUser(const File& file) const + throw (SystemException); + + /** + * Returns GID of file + */ + virtual GroupInfo File_getGroup(const File& file) const + throw (SystemException); + + /** + * Runs another program (replaces current process) + */ + virtual void execute(std::string program, const CommandLine& cline, + const Environment& env) const + throw (SystemException); + + /** + * Returns current working directory + */ + virtual std::string getCwd() const throw (SystemException); + + /** + * Sets current working directory + */ + virtual void setCwd(const std::string& dir) const + throw (SystemException); + + /** + * Sets umask + */ + virtual void setUmask(int umask) const throw (SystemException); + }; +}; + +#endif // SUPHP_API_LINUX_H