Verified Commit 303262e4 authored by Marc Vef's avatar Marc Vef
Browse files

Integrate proxy into existing code base

parent 464668f3
Loading
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ endif()
option(CREATE_CHECK_PARENTS "Check parent directory existance before creating child node" ON)
message(STATUS "[gekkofs] Create checks parents: ${CREATE_CHECK_PARENTS}")

option(SYMLINK_SUPPORT "Compile with support for symlinks" ON)
option(SYMLINK_SUPPORT "Compile with support for symlinks" OFF)
if(SYMLINK_SUPPORT)
    add_definitions(-DHAS_SYMLINKS)
endif ()
@@ -239,8 +239,12 @@ include_directories(
add_subdirectory(src/common)
# Daemon
add_subdirectory(src/daemon)
# Proxy
add_subdirectory(src/proxy)
# Client library
add_subdirectory(src/client)
add_subdirectory(marc)


### Mark any CMake variables imported from {fmt} and spdlog as advanced, so
### that they don't appear in cmake-gui or ccmake. Similarly for FETCHCONTENT
Compare 7dd90dcb to 7a234d85
Original line number Diff line number Diff line
Subproject commit 7dd90dcbacc6a68f7a5d6473c97151590a5a6b0f
Subproject commit 7a234d854ae24bb33b46319f6735e44ab5dc33c7
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ static constexpr auto HOSTS_FILE = ADD_PREFIX("HOSTS_FILE");
#ifdef GKFS_ENABLE_FORWARDING
static constexpr auto FORWARDING_MAP_FILE = ADD_PREFIX("FORWARDING_MAP_FILE");
#endif
static constexpr auto PROXY_PID_FILE = ADD_PREFIX("PROXY_PID_FILE");

} // namespace gkfs::env

+12 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@

namespace gkfs::path {

enum class NormalizeStatus { ok, fd_unknown, fd_not_a_dir };

unsigned int
match_components(const std::string& path, unsigned int& path_components,
                 const std::vector<std::string>& components);
@@ -40,6 +42,16 @@ bool
resolve(const std::string& path, std::string& resolved,
        bool resolve_last_link = true);

NormalizeStatus
normalize(int dirfd, const char* raw_path, std::string& normalized_path,
          bool resolve_last_link = true);

std::string
normalize(const char* raw_path, bool resolve_last_link = true);

bool
is_in_gkfs(std::string& path, bool cut_mountdir_prefix = false);

std::string
get_sys_cwd();

+24 −9
Original line number Diff line number Diff line
@@ -70,8 +70,6 @@ struct FsConfig {
    std::string rootdir;
};

enum class RelativizeStatus { internal, external, fd_unknown, fd_not_a_dir };

/**
 * Singleton class of the client context with all relevant global data
 */
@@ -97,6 +95,11 @@ private:
    std::string rpc_protocol_;
    bool auto_sm_{false};

    // proxy stuff
    bool use_proxy_{false};
    std::string proxy_address_str_;
    hermes::endpoint proxy_host_;

    bool interception_enabled_;

    std::bitset<MAX_INTERNAL_FDS> internal_fds_;
@@ -168,14 +171,26 @@ public:
    void
    auto_sm(bool auto_sm);

    RelativizeStatus
    relativize_fd_path(int dirfd, const char* raw_path,
                       std::string& relative_path, int flags = 0,
                       bool resolve_last_link = true) const;

    bool
    relativize_path(const char* raw_path, std::string& relative_path,
                    bool resolve_last_link = true) const;
    use_proxy() const;

    void
    use_proxy(bool use_proxy);

    const std::string&
    proxy_address_str() const;

    void
    proxy_address_str(const std::string& proxy_address_str);

    const hermes::endpoint&
    proxy_host() const;

    void
    proxy_host(const hermes::endpoint& proxy_host);

    void
    clear_proxy_host();

    const std::shared_ptr<gkfs::filemap::OpenFileMap>&
    file_map() const;
Loading