Skip to content

Commit 6a3692c

Browse files
authored
Merge pull request zerebubuth#362 from mmd-osm/patch/basicauth_removal
Basic auth removal
2 parents 2a5eb27 + 3e27257 commit 6a3692c

25 files changed

+64
-640
lines changed

.github/workflows/codeql.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
sudo apt-get install -y gcc g++ make autoconf automake libtool \
4141
libfcgi-dev libxml2-dev libmemcached-dev \
4242
libboost-program-options-dev libcrypto++-dev libyajl-dev \
43-
libpqxx-dev zlib1g-dev libargon2-dev libfmt-dev
43+
libpqxx-dev zlib1g-dev libfmt-dev
4444
4545
- name: Autobuild
4646
uses: github/codeql-action/autobuild@v3

CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ find_package(Threads REQUIRED)
8181
find_package(PQXX 6.0 REQUIRED)
8282
find_package(LibXml2 2.6.31 REQUIRED)
8383
find_package(Libmemcached REQUIRED)
84-
find_package(Argon2 REQUIRED)
8584

8685
find_package(Boost 1.43 REQUIRED COMPONENTS program_options)
8786
target_compile_definitions(cgimap_common_compiler_options INTERFACE

cmake/FindArgon2.cmake

-47
This file was deleted.

docker/debian/Dockerfile_bookworm

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RUN apt-get update -qq && \
77
apt-get install -y gcc g++ make cmake \
88
libfcgi-dev libxml2-dev libmemcached-dev libbrotli-dev \
99
libboost-program-options-dev libcrypto++-dev libyajl-dev \
10-
libpqxx-dev zlib1g-dev libargon2-dev libfmt-dev \
10+
libpqxx-dev zlib1g-dev libfmt-dev \
1111
postgresql-15 postgresql-server-dev-all \
1212
--no-install-recommends && \
1313
apt-get clean && \
@@ -31,7 +31,7 @@ FROM debian:bookworm-slim
3131
RUN apt-get update -qq && \
3232
apt-get install -y \
3333
libfcgi-bin libmemcached11 libboost-program-options1.74.0 \
34-
libxml2 libcrypto++8 libyajl2 libpqxx-6.4 zlib1g libargon2-1 argon2 libfmt9 \
34+
libxml2 libcrypto++8 libyajl2 libpqxx-6.4 zlib1g libfmt9 \
3535
--no-install-recommends && \
3636
apt-get clean && \
3737
rm -rf /var/lib/apt/lists/*

docker/debian/Dockerfile_trixie

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RUN apt-get update -qq && \
77
apt-get install -y gcc g++ make cmake \
88
libfcgi-dev libxml2-dev libmemcached-dev libbrotli-dev \
99
libboost-program-options-dev libcrypto++-dev libyajl-dev \
10-
libpqxx-dev zlib1g-dev libargon2-dev libfmt-dev \
10+
libpqxx-dev zlib1g-dev libfmt-dev \
1111
postgresql-16 postgresql-server-dev-all \
1212
--no-install-recommends && \
1313
apt-get clean && \
@@ -31,7 +31,7 @@ FROM debian:trixie
3131
RUN apt-get update -qq && \
3232
apt-get install -y \
3333
libfcgi-bin libmemcached11 libboost-program-options1.74.0 \
34-
libxml2 libcrypto++8 libyajl2 libpqxx-7.8 zlib1g libargon2-1 argon2 libfmt9 \
34+
libxml2 libcrypto++8 libyajl2 libpqxx-7.8 zlib1g libfmt9 \
3535
--no-install-recommends && \
3636
apt-get clean && \
3737
rm -rf /var/lib/apt/lists/*

docker/ubuntu/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ RUN apt-get update -qq && \
88
libfcgi-dev libxml2-dev libmemcached-dev libbrotli-dev \
99
libboost-program-options-dev \
1010
libcrypto++-dev libyajl-dev \
11-
libpqxx-dev zlib1g-dev libargon2-dev libfmt-dev \
11+
libpqxx-dev zlib1g-dev libfmt-dev \
1212
postgresql-12 postgresql-server-dev-all \
1313
--no-install-recommends && \
1414
apt-get clean && \
@@ -33,7 +33,7 @@ FROM ubuntu:20.04
3333
RUN apt-get update -qq && \
3434
apt-get install -y \
3535
libfcgi-bin libmemcached11 libboost-locale1.71.0 libboost-program-options1.71.0 \
36-
libxml2 libcrypto++6 libyajl2 libpqxx-6.4 zlib1g libargon2-1 \
36+
libxml2 libcrypto++6 libyajl2 libpqxx-6.4 zlib1g \
3737
--no-install-recommends && \
3838
apt-get clean && \
3939
rm -rf /var/lib/apt/lists/*

docker/ubuntu/Dockerfile2204

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RUN apt-get update -qq && \
77
apt-get install -y gcc g++ make cmake \
88
libfcgi-dev libxml2-dev libmemcached-dev libbrotli-dev \
99
libboost-program-options-dev libcrypto++-dev libyajl-dev \
10-
libpqxx-dev zlib1g-dev libargon2-dev libfmt-dev \
10+
libpqxx-dev zlib1g-dev libfmt-dev \
1111
postgresql-14 postgresql-server-dev-all \
1212
--no-install-recommends && \
1313
apt-get clean && \
@@ -31,7 +31,7 @@ FROM ubuntu:22.04
3131
RUN apt-get update -qq && \
3232
apt-get install -y \
3333
libfcgi-bin libmemcached11 libboost-program-options1.74.0 \
34-
libxml2 libcrypto++8 libyajl2 libpqxx-6.4 zlib1g libargon2-1 argon2 libfmt8 \
34+
libxml2 libcrypto++8 libyajl2 libpqxx-6.4 zlib1g libfmt8 \
3535
--no-install-recommends && \
3636
apt-get clean && \
3737
rm -rf /var/lib/apt/lists/*

include/cgimap/backend/apidb/readonly_pgsql_selection.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ class readonly_pgsql_selection : public data_selection {
7474

7575
bool supports_user_details() const override;
7676
bool is_user_blocked(const osm_user_id_t) override;
77-
bool get_user_id_pass(const std::string&, osm_user_id_t &, std::string &, std::string &) override;
7877
std::set< osm_user_role_t > get_roles_for_user(osm_user_id_t id) override;
7978
std::optional< osm_user_id_t > get_user_id_for_oauth2_token(
8079
const std::string &token_id, bool &expired, bool &revoked,

include/cgimap/basicauth.hpp

-45
This file was deleted.

include/cgimap/data_selection.hpp

-5
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,6 @@ class data_selection {
172172
// is user currently blocked?
173173
virtual bool is_user_blocked(const osm_user_id_t) = 0;
174174

175-
virtual bool get_user_id_pass(const std::string& display_name,
176-
osm_user_id_t &,
177-
std::string & pass_crypt,
178-
std::string & pass_salt) = 0;
179-
180175
virtual std::set<osm_user_role_t> get_roles_for_user(osm_user_id_t id) = 0;
181176

182177
virtual std::optional< osm_user_id_t > get_user_id_for_oauth2_token(

include/cgimap/options.hpp

-14
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class global_settings_base {
3232
virtual int64_t get_scale() const = 0;
3333
virtual std::optional<uint32_t> get_relation_max_members() const = 0;
3434
virtual std::optional<uint32_t> get_element_max_tags() const = 0;
35-
virtual bool get_basic_auth_support() const = 0;
3635
virtual uint32_t get_ratelimiter_ratelimit(bool) const = 0;
3736
virtual uint32_t get_ratelimiter_maxdebt(bool) const = 0;
3837
virtual bool get_ratelimiter_upload() const = 0;
@@ -81,10 +80,6 @@ class global_settings_default : public global_settings_base {
8180
return {}; // default: unlimited
8281
}
8382

84-
bool get_basic_auth_support() const override {
85-
return true;
86-
}
87-
8883
uint32_t get_ratelimiter_ratelimit(bool moderator) const override {
8984
if (moderator) {
9085
return 1024 * 1024; // 1MB/s
@@ -162,10 +157,6 @@ class global_settings_via_options : public global_settings_base {
162157
return m_element_max_tags;
163158
}
164159

165-
bool get_basic_auth_support() const override {
166-
return m_basic_auth_support;
167-
}
168-
169160
uint32_t get_ratelimiter_ratelimit(bool moderator) const override {
170161
if (moderator) {
171162
return m_moderator_ratelimiter_ratelimit;
@@ -197,7 +188,6 @@ class global_settings_via_options : public global_settings_base {
197188
void set_scale(const po::variables_map &options);
198189
void set_relation_max_members(const po::variables_map &options);
199190
void set_element_max_tags(const po::variables_map &options);
200-
void set_basic_auth_support(const po::variables_map &options);
201191
void set_ratelimiter_ratelimit(const po::variables_map &options);
202192
void set_ratelimiter_maxdebt(const po::variables_map &options);
203193
void set_ratelimiter_upload(const po::variables_map &options);
@@ -213,7 +203,6 @@ class global_settings_via_options : public global_settings_base {
213203
int64_t m_scale;
214204
std::optional<uint32_t> m_relation_max_members;
215205
std::optional<uint32_t> m_element_max_tags;
216-
bool m_basic_auth_support;
217206
uint32_t m_ratelimiter_ratelimit;
218207
uint32_t m_moderator_ratelimiter_ratelimit;
219208
uint32_t m_ratelimiter_maxdebt;
@@ -258,9 +247,6 @@ class global_settings final {
258247
// Maximum number of tags for an OSM object (may be unlimited)
259248
static std::optional<uint32_t> get_element_max_tags() { return settings->get_element_max_tags(); }
260249

261-
// Enable HTTP basic authentication support
262-
static bool get_basic_auth_support() { return settings->get_basic_auth_support(); }
263-
264250
// average number of bytes/s to allow each client/moderator
265251
static uint32_t get_ratelimiter_ratelimit(bool moderator) { return settings->get_ratelimiter_ratelimit(moderator); }
266252

include/cgimap/process_request.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "cgimap/data_update.hpp"
1616
#include "cgimap/data_selection.hpp"
1717
#include "cgimap/routes.hpp"
18-
#include "cgimap/basicauth.hpp"
1918
#include "cgimap/oauth2.hpp"
2019
#include <string>
2120

src/CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ target_sources(cgimap_core PRIVATE
1616
http.cpp
1717
logger.cpp
1818
mime_types.cpp
19-
basicauth.cpp
2019
oauth2.cpp
2120
options.cpp
2221
osm_responder.cpp
@@ -77,7 +76,6 @@ target_link_libraries(cgimap_core
7776
ZLIB::ZLIB
7877
CryptoPP::CryptoPP
7978
Libmemcached::Libmemcached
80-
Argon2::Argon2
8179
$<$<BOOL:${ENABLE_BROTLI}>:Brotli::common>
8280
$<$<BOOL:${ENABLE_BROTLI}>:Brotli::encoder>
8381
$<$<BOOL:${ENABLE_BROTLI}>:Brotli::decoder>

src/backend/apidb/readonly_pgsql_selection.cpp

-36
Original file line numberDiff line numberDiff line change
@@ -794,42 +794,6 @@ bool readonly_pgsql_selection::is_user_blocked(const osm_user_id_t id) {
794794
return !res.empty();
795795
}
796796

797-
bool readonly_pgsql_selection::get_user_id_pass(const std::string& user_name, osm_user_id_t & id,
798-
std::string & pass_crypt, std::string & pass_salt) {
799-
800-
std::string email = boost::algorithm::trim_copy(user_name);
801-
802-
m.prepare("get_user_id_pass",
803-
R"(SELECT id, pass_crypt, COALESCE(pass_salt, '') as pass_salt FROM users
804-
WHERE (email = $1 OR display_name = $2)
805-
AND (status = 'active' or status = 'confirmed') LIMIT 1
806-
)");
807-
808-
m.prepare("get_user_id_pass_case_insensitive",
809-
R"(SELECT id, pass_crypt, COALESCE(pass_salt, '') as pass_salt FROM users
810-
WHERE (LOWER(email) = LOWER($1) OR LOWER(display_name) = LOWER($2))
811-
AND (status = 'active' or status = 'confirmed')
812-
)");
813-
814-
815-
auto res = m.exec_prepared("get_user_id_pass", email, user_name);
816-
817-
if (res.empty()) {
818-
// try case insensitive query
819-
res = m.exec_prepared("get_user_id_pass_case_insensitive", email, user_name);
820-
// failure, in case no entries or multiple entries were found
821-
if (res.size() != 1)
822-
return false;
823-
}
824-
825-
auto row = res[0];
826-
id = row["id"].as<osm_user_id_t>();
827-
pass_crypt = row["pass_crypt"].as<std::string>();
828-
pass_salt = row["pass_salt"].as<std::string>();
829-
830-
return true;
831-
}
832-
833797
std::set< osm_user_role_t > readonly_pgsql_selection::get_roles_for_user(osm_user_id_t id)
834798
{
835799
std::set<osm_user_role_t> roles;

0 commit comments

Comments
 (0)