mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
Remove old code
This commit is contained in:
parent
a129eaece4
commit
33bcd07be5
@ -61,14 +61,8 @@ namespace
|
|||||||
Poco::Net::SocketAddress socketBindListen(Poco::Net::ServerSocket & socket, const std::string & host, UInt16 port, Poco::Logger * log)
|
Poco::Net::SocketAddress socketBindListen(Poco::Net::ServerSocket & socket, const std::string & host, UInt16 port, Poco::Logger * log)
|
||||||
{
|
{
|
||||||
auto address = makeSocketAddress(host, port, log);
|
auto address = makeSocketAddress(host, port, log);
|
||||||
#if POCO_VERSION < 0x01080000
|
|
||||||
socket.bind(address, /* reuseAddress = */ true);
|
|
||||||
#else
|
|
||||||
socket.bind(address, /* reuseAddress = */ true, /* reusePort = */ false);
|
socket.bind(address, /* reuseAddress = */ true, /* reusePort = */ false);
|
||||||
#endif
|
|
||||||
|
|
||||||
socket.listen(/* backlog = */ 64);
|
socket.listen(/* backlog = */ 64);
|
||||||
|
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,13 +145,9 @@ MongoDBDictionarySource::MongoDBDictionarySource(
|
|||||||
connection->connect(host, port);
|
connection->connect(host, port);
|
||||||
if (!user.empty())
|
if (!user.empty())
|
||||||
{
|
{
|
||||||
#if POCO_VERSION >= 0x01070800
|
|
||||||
Poco::MongoDB::Database poco_db(db);
|
Poco::MongoDB::Database poco_db(db);
|
||||||
if (!poco_db.authenticate(*connection, user, password, method.empty() ? Poco::MongoDB::Database::AUTH_SCRAM_SHA1 : method))
|
if (!poco_db.authenticate(*connection, user, password, method.empty() ? Poco::MongoDB::Database::AUTH_SCRAM_SHA1 : method))
|
||||||
throw Exception(ErrorCodes::MONGODB_CANNOT_AUTHENTICATE, "Cannot authenticate in MongoDB, incorrect user or password");
|
throw Exception(ErrorCodes::MONGODB_CANNOT_AUTHENTICATE, "Cannot authenticate in MongoDB, incorrect user or password");
|
||||||
#else
|
|
||||||
authenticate(*connection, db, user, password);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,105 +35,6 @@ namespace ErrorCodes
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if POCO_VERSION < 0x01070800
|
|
||||||
/// See https://pocoproject.org/forum/viewtopic.php?f=10&t=6326&p=11426&hilit=mongodb+auth#p11485
|
|
||||||
void authenticate(Poco::MongoDB::Connection & connection, const std::string & database, const std::string & user, const std::string & password)
|
|
||||||
{
|
|
||||||
Poco::MongoDB::Database db(database);
|
|
||||||
|
|
||||||
/// Challenge-response authentication.
|
|
||||||
std::string nonce;
|
|
||||||
|
|
||||||
/// First step: request nonce.
|
|
||||||
{
|
|
||||||
auto command = db.createCommand();
|
|
||||||
command->setNumberToReturn(1);
|
|
||||||
command->selector().add<Int32>("getnonce", 1);
|
|
||||||
|
|
||||||
Poco::MongoDB::ResponseMessage response;
|
|
||||||
connection.sendRequest(*command, response);
|
|
||||||
|
|
||||||
if (response.documents().empty())
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned empty response for 'getnonce' command",
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
|
|
||||||
auto doc = response.documents()[0];
|
|
||||||
try
|
|
||||||
{
|
|
||||||
double ok = doc->get<double>("ok", 0);
|
|
||||||
if (ok != 1)
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned response for 'getnonce' command that"
|
|
||||||
" has field 'ok' missing or having wrong value",
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
|
|
||||||
nonce = doc->get<std::string>("nonce", "");
|
|
||||||
if (nonce.empty())
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned response for 'getnonce' command that"
|
|
||||||
" has field 'nonce' missing or empty",
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
}
|
|
||||||
catch (Poco::NotFoundException & e)
|
|
||||||
{
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned response for 'getnonce' command that has missing required field: "
|
|
||||||
+ e.displayText(),
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Second step: use nonce to calculate digest and send it back to the server.
|
|
||||||
/// Digest is hex_md5(n.nonce + username + hex_md5(username + ":mongo:" + password))
|
|
||||||
{
|
|
||||||
std::string first = user + ":mongo:" + password;
|
|
||||||
|
|
||||||
Poco::MD5Engine md5;
|
|
||||||
md5.update(first);
|
|
||||||
std::string digest_first(Poco::DigestEngine::digestToHex(md5.digest()));
|
|
||||||
std::string second = nonce + user + digest_first;
|
|
||||||
md5.reset();
|
|
||||||
md5.update(second);
|
|
||||||
std::string digest_second(Poco::DigestEngine::digestToHex(md5.digest()));
|
|
||||||
|
|
||||||
auto command = db.createCommand();
|
|
||||||
command->setNumberToReturn(1);
|
|
||||||
command->selector()
|
|
||||||
.add<Int32>("authenticate", 1)
|
|
||||||
.add<std::string>("user", user)
|
|
||||||
.add<std::string>("nonce", nonce)
|
|
||||||
.add<std::string>("key", digest_second);
|
|
||||||
|
|
||||||
Poco::MongoDB::ResponseMessage response;
|
|
||||||
connection.sendRequest(*command, response);
|
|
||||||
|
|
||||||
if (response.empty())
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned empty response for 'authenticate' command",
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
|
|
||||||
auto doc = response.documents()[0];
|
|
||||||
try
|
|
||||||
{
|
|
||||||
double ok = doc->get<double>("ok", 0);
|
|
||||||
if (ok != 1)
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned response for 'authenticate' command that"
|
|
||||||
" has field 'ok' missing or having wrong value",
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
}
|
|
||||||
catch (Poco::NotFoundException & e)
|
|
||||||
{
|
|
||||||
throw Exception(
|
|
||||||
"Cannot authenticate in MongoDB: server returned response for 'authenticate' command that has missing required field: "
|
|
||||||
+ e.displayText(),
|
|
||||||
ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::unique_ptr<Poco::MongoDB::Cursor> createCursor(const std::string & database, const std::string & collection, const Block & sample_block_to_select)
|
std::unique_ptr<Poco::MongoDB::Cursor> createCursor(const std::string & database, const std::string & collection, const Block & sample_block_to_select)
|
||||||
{
|
{
|
||||||
auto cursor = std::make_unique<Poco::MongoDB::Cursor>(database, collection);
|
auto cursor = std::make_unique<Poco::MongoDB::Cursor>(database, collection);
|
||||||
|
@ -72,16 +72,14 @@ void StorageMongoDB::connectIfNotConnected()
|
|||||||
auto auth_db = database_name;
|
auto auth_db = database_name;
|
||||||
if (auth_source != query_params.end())
|
if (auth_source != query_params.end())
|
||||||
auth_db = auth_source->second;
|
auth_db = auth_source->second;
|
||||||
#if POCO_VERSION >= 0x01070800
|
|
||||||
if (!username.empty() && !password.empty())
|
if (!username.empty() && !password.empty())
|
||||||
{
|
{
|
||||||
Poco::MongoDB::Database poco_db(auth_db);
|
Poco::MongoDB::Database poco_db(auth_db);
|
||||||
if (!poco_db.authenticate(*connection, username, password, Poco::MongoDB::Database::AUTH_SCRAM_SHA1))
|
if (!poco_db.authenticate(*connection, username, password, Poco::MongoDB::Database::AUTH_SCRAM_SHA1))
|
||||||
throw Exception("Cannot authenticate in MongoDB, incorrect user or password", ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
throw Exception("Cannot authenticate in MongoDB, incorrect user or password", ErrorCodes::MONGODB_CANNOT_AUTHENTICATE);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
authenticate(*connection, database_name, username, password);
|
|
||||||
#endif
|
|
||||||
authenticated = true;
|
authenticated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,7 +211,6 @@ StorageMongoDBConfiguration StorageMongoDB::getConfiguration(ASTs engine_args, C
|
|||||||
|
|
||||||
if (engine_args.size() >= 6)
|
if (engine_args.size() >= 6)
|
||||||
configuration.options = checkAndGetLiteralArgument<String>(engine_args[5], "database");
|
configuration.options = checkAndGetLiteralArgument<String>(engine_args[5], "database");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
context->getRemoteHostFilter().checkHostAndPort(configuration.host, toString(configuration.port));
|
context->getRemoteHostFilter().checkHostAndPort(configuration.host, toString(configuration.port));
|
||||||
|
Loading…
Reference in New Issue
Block a user