0.6.0-1 release
[manu/suphp.git] / src / API.hpp
diff --git a/src/API.hpp b/src/API.hpp
new file mode 100644 (file)
index 0000000..9b9f69f
--- /dev/null
@@ -0,0 +1,186 @@
+/*
+    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;
+    };
+};
+
+#endif // SUPHP_API_H