ADD_SUBDIRECTORY(event)
ADD_SUBDIRECTORY(klass)
ADD_SUBDIRECTORY(logger)
-ADD_SUBDIRECTORY(rmi)
ADD_SUBDIRECTORY(sdk)
+# rmi
+ADD_SUBDIRECTORY(rmi)
+
# policy
ADD_SUBDIRECTORY(policy)
TARGET_LINK_LIBRARIES(${TARGET_VIST_TEST} ${TARGET_VIST_LIB}
${TARGET_VIST_CLIENT_LIB}
${TARGET_VIST_COMMON_LIB}
+ ${TARGET_VIST_POLICY_LIB}
vist-rmi-static
gtest)
TARGET_LINK_WHOLE(${TARGET_VIST_TEST} ${TARGET_OSQUERY_LIB})
ADD_VIST_TEST(${POLICY_CORE_TESTS})
ADD_LIBRARY(${TARGET_VIST_POLICY_LIB} STATIC ${${TARGET_VIST_POLICY_LIB}_SRCS})
-TARGET_LINK_LIBRARIES(${TARGET_VIST_POLICY_LIB} ${VIST_POLICY_DEPS_LIBRARIES}
- ${TARGET_VIST_COMMON_LIB}
+TARGET_LINK_LIBRARIES(${TARGET_VIST_POLICY_LIB} ${TARGET_VIST_COMMON_LIB}
+ vist-rmi
pthread
dl)
* limitations under the License
*/
+#include <vist/exception.hpp>
#include <vist/policy/api.hpp>
+#include <vist/process.hpp>
+#include <vist/rmi/gateway.hpp>
#include "policy-manager.hpp"
void API::Admin::Set(const std::string& policy, const PolicyValue& value)
{
- // TODO(Sangwan): Get admin name from peer PID
- PolicyManager::Instance().set(policy, value, "admin");
+ std::string admin;
+ auto peer = rmi::Gateway::GetPeerCredentials();
+ if (peer == nullptr)
+ admin = Process::GetPath(Process::GetPid());
+ else
+ admin = Process::GetPath(peer->pid);
+
+ PolicyManager::Instance().set(policy, value, admin);
}
void API::Admin::Enroll(const std::string& admin)
#include <cstdio>
#include <memory>
#include <string>
+#include <vector>
#include <errno.h>
#include <sys/types.h>
WORLD_READ
WORLD_EXECUTE)
+# for unit test
ADD_LIBRARY(${TARGET}-static STATIC ${${TARGET}_SRCS})
TARGET_LINK_LIBRARIES(${TARGET} ${TARGET_VIST_COMMON_LIB}
pthread)
}
/// Credentials exists per thread.
-std::shared_ptr<Credentials> GetPeerCredentials()
+std::shared_ptr<Credentials> Gateway::GetPeerCredentials() noexcept
{
return Server::GetPeerCredentials();
}
template<typename O, typename F>
void expose(O& object, const std::string& name, F&& func);
- static std::shared_ptr<Credentials> GetPeerCredentials();
+ static std::shared_ptr<Credentials> GetPeerCredentials() noexcept;
private:
class Impl;
void run(int timeout = -1, Stopper stopper = nullptr);
void stop(void);
- static std::shared_ptr<Credentials> GetPeerCredentials()
+ static std::shared_ptr<Credentials> GetPeerCredentials() noexcept
{
return peer;
}
TEST_F(CoreTests, query_update)
{
- policy::API::Admin::Enroll("admin");
+ policy::API::Admin::Enroll("/usr/bin/vist-test");
std::string statement = "SELECT * FROM policy WHERE name = 'sample-int-policy'";
auto rows = Vistd::Query(statement);
rows = Vistd::Query(statement);
EXPECT_EQ(rows[0]["value"], "I/10");
- policy::API::Admin::Disenroll("admin");
+ policy::API::Admin::Disenroll("/usr/bin/vist-test");
}