diff --git a/Dockerfile b/Dockerfile index b430e4a..42f969b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,8 @@ RUN make prod && \ FROM alpine:3.16.3 +ENV LANDER_DATA_DIR=/data + RUN apk add --update --no-cache boost && \ mkdir /data && \ chown -R 1000:1000 /data diff --git a/landerctl b/landerctl index d74e0fa..b22393c 100755 --- a/landerctl +++ b/landerctl @@ -14,5 +14,5 @@ elif [ "$1" = get ]; then curl -is "$URL/$2" | sed -En 's/^[lL]ocation: (.*)/\1/p' elif [ "$1" = paste ]; then - curl -v --data-binary @"$2" -XPOST -H "X-Api-Key: $API_KEY" "$URL/p/" + curl --data-binary @"$2" -XPOST -H "X-Api-Key: $API_KEY" "$URL/p/" fi diff --git a/src/main.cpp b/src/main.cpp index 4fe8031..6c45326 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -52,17 +52,20 @@ int main() { mkdir((data_dir + "/pastes").c_str(), 0700); crow::SimpleApp app; - app.loglevel(crow::LogLevel::Info); + // Serve an entry CROW_ROUTE(app, "/") .methods(crow::HTTPMethod::Get)( - [trie](crow::response &res, std::string s) { - Entry *entry = ternarytrie_search(trie, s.c_str()); + [data_dir, trie](crow::response &res, std::string key) { + Entry *entry = ternarytrie_search(trie, key.c_str()); - // TODO check entry type if (entry != NULL) { - res.redirect(entry->string); + if (entry->type == Redirect) { + res.redirect(entry->string); + } else if (entry->type == Paste) { + res.set_static_file_info(data_dir + "/pastes/" + key); + } } else { res.code = 404; }