diff options
Diffstat (limited to 'src')
112 files changed, 403 insertions, 524 deletions
diff --git a/src/mongo/db/SConscript b/src/mongo/db/SConscript index 84a77cbc835..14eadcbecba 100644 --- a/src/mongo/db/SConscript +++ b/src/mongo/db/SConscript @@ -472,7 +472,6 @@ env.Library( target='service_context', source=[ 'client.cpp', - 'client_basic.cpp', 'operation_context.cpp', 'service_context.cpp', 'service_context_noop.cpp', diff --git a/src/mongo/db/audit.cpp b/src/mongo/db/audit.cpp index 715e9023c15..a7108d3ee3f 100644 --- a/src/mongo/db/audit.cpp +++ b/src/mongo/db/audit.cpp @@ -38,43 +38,43 @@ namespace mongo { namespace audit { -void logAuthentication(ClientBasic* client, +void logAuthentication(Client* client, StringData mechanism, const UserName& user, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logCommandAuthzCheck(ClientBasic* client, + void logCommandAuthzCheck(Client* client, const std::string& dbname, const BSONObj& cmdObj, Command* command, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logDeleteAuthzCheck(ClientBasic* client, + void logDeleteAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& pattern, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logGetMoreAuthzCheck(ClientBasic* client, + void logGetMoreAuthzCheck(Client* client, const NamespaceString& ns, long long cursorId, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logInsertAuthzCheck(ClientBasic* client, + void logInsertAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& insertedObj, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logKillCursorsAuthzCheck(ClientBasic* client, + void logKillCursorsAuthzCheck(Client* client, const NamespaceString& ns, long long cursorId, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logQueryAuthzCheck(ClientBasic* client, + void logQueryAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& query, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logUpdateAuthzCheck(ClientBasic* client, + void logUpdateAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& query, const BSONObj& updateObj, @@ -82,101 +82,95 @@ void logAuthentication(ClientBasic* client, bool isMulti, ErrorCodes::Error result) MONGO_AUDIT_STUB - void logCreateUser(ClientBasic* client, + void logCreateUser(Client* client, const UserName& username, bool password, const BSONObj* customData, const std::vector<RoleName>& roles) MONGO_AUDIT_STUB - void logDropUser(ClientBasic* client, const UserName& username) MONGO_AUDIT_STUB + void logDropUser(Client* client, const UserName& username) MONGO_AUDIT_STUB - void logDropAllUsersFromDatabase(ClientBasic* client, StringData dbname) MONGO_AUDIT_STUB + void logDropAllUsersFromDatabase(Client* client, StringData dbname) MONGO_AUDIT_STUB - void logUpdateUser(ClientBasic* client, + void logUpdateUser(Client* client, const UserName& username, bool password, const BSONObj* customData, const std::vector<RoleName>* roles) MONGO_AUDIT_STUB - void logGrantRolesToUser(ClientBasic* client, + void logGrantRolesToUser(Client* client, const UserName& username, const std::vector<RoleName>& roles) MONGO_AUDIT_STUB - void logRevokeRolesFromUser(ClientBasic* client, + void logRevokeRolesFromUser(Client* client, const UserName& username, const std::vector<RoleName>& roles) MONGO_AUDIT_STUB - void logCreateRole(ClientBasic* client, + void logCreateRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles, const PrivilegeVector& privileges) MONGO_AUDIT_STUB - void logUpdateRole(ClientBasic* client, + void logUpdateRole(Client* client, const RoleName& role, const std::vector<RoleName>* roles, const PrivilegeVector* privileges) MONGO_AUDIT_STUB - void logDropRole(ClientBasic* client, const RoleName& role) MONGO_AUDIT_STUB + void logDropRole(Client* client, const RoleName& role) MONGO_AUDIT_STUB - void logDropAllRolesFromDatabase(ClientBasic* client, StringData dbname) MONGO_AUDIT_STUB + void logDropAllRolesFromDatabase(Client* client, StringData dbname) MONGO_AUDIT_STUB - void logGrantRolesToRole(ClientBasic* client, + void logGrantRolesToRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles) MONGO_AUDIT_STUB - void logRevokeRolesFromRole(ClientBasic* client, + void logRevokeRolesFromRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles) MONGO_AUDIT_STUB - void logGrantPrivilegesToRole(ClientBasic* client, + void logGrantPrivilegesToRole(Client* client, const RoleName& role, const PrivilegeVector& privileges) MONGO_AUDIT_STUB - void logRevokePrivilegesFromRole(ClientBasic* client, + void logRevokePrivilegesFromRole(Client* client, const RoleName& role, const PrivilegeVector& privileges) MONGO_AUDIT_STUB - void logReplSetReconfig(ClientBasic* client, + void logReplSetReconfig(Client* client, const BSONObj* oldConfig, const BSONObj* newConfig) MONGO_AUDIT_STUB - void logApplicationMessage(ClientBasic* client, StringData msg) MONGO_AUDIT_STUB + void logApplicationMessage(Client* client, StringData msg) MONGO_AUDIT_STUB - void logShutdown(ClientBasic* client) MONGO_AUDIT_STUB + void logShutdown(Client* client) MONGO_AUDIT_STUB - void logCreateIndex(ClientBasic* client, + void logCreateIndex(Client* client, const BSONObj* indexSpec, StringData indexname, StringData nsname) MONGO_AUDIT_STUB - void logCreateCollection(ClientBasic* client, StringData nsname) MONGO_AUDIT_STUB + void logCreateCollection(Client* client, StringData nsname) MONGO_AUDIT_STUB - void logCreateDatabase(ClientBasic* client, StringData dbname) MONGO_AUDIT_STUB + void logCreateDatabase(Client* client, StringData dbname) MONGO_AUDIT_STUB - void logDropIndex(ClientBasic* client, StringData indexname, StringData nsname) MONGO_AUDIT_STUB + void logDropIndex(Client* client, StringData indexname, StringData nsname) MONGO_AUDIT_STUB - void logDropCollection(ClientBasic* client, StringData nsname) MONGO_AUDIT_STUB + void logDropCollection(Client* client, StringData nsname) MONGO_AUDIT_STUB - void logDropDatabase(ClientBasic* client, StringData dbname) MONGO_AUDIT_STUB + void logDropDatabase(Client* client, StringData dbname) MONGO_AUDIT_STUB - void logRenameCollection(ClientBasic* client, - StringData source, - StringData target) MONGO_AUDIT_STUB + void logRenameCollection(Client* client, StringData source, StringData target) MONGO_AUDIT_STUB - void logEnableSharding(ClientBasic* client, StringData dbname) MONGO_AUDIT_STUB + void logEnableSharding(Client* client, StringData dbname) MONGO_AUDIT_STUB - void logAddShard(ClientBasic* client, - StringData name, - const std::string& servers, - long long maxSize) MONGO_AUDIT_STUB + void logAddShard(Client* client, StringData name, const std::string& servers, long long maxSize) + MONGO_AUDIT_STUB - void logRemoveShard(ClientBasic* client, StringData shardname) MONGO_AUDIT_STUB + void logRemoveShard(Client* client, StringData shardname) MONGO_AUDIT_STUB - void logShardCollection(ClientBasic* client, - StringData ns, - const BSONObj& keyPattern, - bool unique) MONGO_AUDIT_STUB + void logShardCollection(Client* client, StringData ns, const BSONObj& keyPattern, bool unique) + MONGO_AUDIT_STUB void writeImpersonatedUsersToMetadata(OperationContext* txn, BSONObjBuilder* metadata) MONGO_AUDIT_STUB diff --git a/src/mongo/db/audit.h b/src/mongo/db/audit.h index 54c07aa1d77..26f27ea8a8e 100644 --- a/src/mongo/db/audit.h +++ b/src/mongo/db/audit.h @@ -41,7 +41,7 @@ namespace mongo { class AuthorizationSession; class BSONObj; -class ClientBasic; +class Client; class Command; class NamespaceString; class OperationContext; @@ -54,7 +54,7 @@ namespace audit { /** * Logs the result of an authentication attempt. */ -void logAuthentication(ClientBasic* client, +void logAuthentication(Client* client, StringData mechanism, const UserName& user, ErrorCodes::Error result); @@ -69,7 +69,7 @@ void logAuthentication(ClientBasic* client, /** * Logs the result of a command authorization check. */ -void logCommandAuthzCheck(ClientBasic* client, +void logCommandAuthzCheck(Client* client, const std::string& dbname, const BSONObj& cmdObj, Command* command, @@ -78,7 +78,7 @@ void logCommandAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_DELETE wire protocol message. */ -void logDeleteAuthzCheck(ClientBasic* client, +void logDeleteAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& pattern, ErrorCodes::Error result); @@ -86,7 +86,7 @@ void logDeleteAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_GET_MORE wire protocol message. */ -void logGetMoreAuthzCheck(ClientBasic* client, +void logGetMoreAuthzCheck(Client* client, const NamespaceString& ns, long long cursorId, ErrorCodes::Error result); @@ -94,7 +94,7 @@ void logGetMoreAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_INSERT wire protocol message. */ -void logInsertAuthzCheck(ClientBasic* client, +void logInsertAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& insertedObj, ErrorCodes::Error result); @@ -102,7 +102,7 @@ void logInsertAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_KILL_CURSORS wire protocol message. */ -void logKillCursorsAuthzCheck(ClientBasic* client, +void logKillCursorsAuthzCheck(Client* client, const NamespaceString& ns, long long cursorId, ErrorCodes::Error result); @@ -110,7 +110,7 @@ void logKillCursorsAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_QUERY wire protocol message. */ -void logQueryAuthzCheck(ClientBasic* client, +void logQueryAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& query, ErrorCodes::Error result); @@ -118,7 +118,7 @@ void logQueryAuthzCheck(ClientBasic* client, /** * Logs the result of an authorization check for an OP_UPDATE wire protocol message. */ -void logUpdateAuthzCheck(ClientBasic* client, +void logUpdateAuthzCheck(Client* client, const NamespaceString& ns, const BSONObj& query, const BSONObj& updateObj, @@ -129,7 +129,7 @@ void logUpdateAuthzCheck(ClientBasic* client, /** * Logs the result of a createUser command. */ -void logCreateUser(ClientBasic* client, +void logCreateUser(Client* client, const UserName& username, bool password, const BSONObj* customData, @@ -138,17 +138,17 @@ void logCreateUser(ClientBasic* client, /** * Logs the result of a dropUser command. */ -void logDropUser(ClientBasic* client, const UserName& username); +void logDropUser(Client* client, const UserName& username); /** * Logs the result of a dropAllUsersFromDatabase command. */ -void logDropAllUsersFromDatabase(ClientBasic* client, StringData dbname); +void logDropAllUsersFromDatabase(Client* client, StringData dbname); /** * Logs the result of a updateUser command. */ -void logUpdateUser(ClientBasic* client, +void logUpdateUser(Client* client, const UserName& username, bool password, const BSONObj* customData, @@ -157,21 +157,21 @@ void logUpdateUser(ClientBasic* client, /** * Logs the result of a grantRolesToUser command. */ -void logGrantRolesToUser(ClientBasic* client, +void logGrantRolesToUser(Client* client, const UserName& username, const std::vector<RoleName>& roles); /** * Logs the result of a revokeRolesFromUser command. */ -void logRevokeRolesFromUser(ClientBasic* client, +void logRevokeRolesFromUser(Client* client, const UserName& username, const std::vector<RoleName>& roles); /** * Logs the result of a createRole command. */ -void logCreateRole(ClientBasic* client, +void logCreateRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles, const PrivilegeVector& privileges); @@ -179,7 +179,7 @@ void logCreateRole(ClientBasic* client, /** * Logs the result of a updateRole command. */ -void logUpdateRole(ClientBasic* client, +void logUpdateRole(Client* client, const RoleName& role, const std::vector<RoleName>* roles, const PrivilegeVector* privileges); @@ -187,60 +187,58 @@ void logUpdateRole(ClientBasic* client, /** * Logs the result of a dropRole command. */ -void logDropRole(ClientBasic* client, const RoleName& role); +void logDropRole(Client* client, const RoleName& role); /** * Logs the result of a dropAllRolesForDatabase command. */ -void logDropAllRolesFromDatabase(ClientBasic* client, StringData dbname); +void logDropAllRolesFromDatabase(Client* client, StringData dbname); /** * Logs the result of a grantRolesToRole command. */ -void logGrantRolesToRole(ClientBasic* client, - const RoleName& role, - const std::vector<RoleName>& roles); +void logGrantRolesToRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles); /** * Logs the result of a revokeRolesFromRole command. */ -void logRevokeRolesFromRole(ClientBasic* client, +void logRevokeRolesFromRole(Client* client, const RoleName& role, const std::vector<RoleName>& roles); /** * Logs the result of a grantPrivilegesToRole command. */ -void logGrantPrivilegesToRole(ClientBasic* client, +void logGrantPrivilegesToRole(Client* client, const RoleName& role, const PrivilegeVector& privileges); /** * Logs the result of a revokePrivilegesFromRole command. */ -void logRevokePrivilegesFromRole(ClientBasic* client, +void logRevokePrivilegesFromRole(Client* client, const RoleName& role, const PrivilegeVector& privileges); /** * Logs the result of a replSet(Re)config command. */ -void logReplSetReconfig(ClientBasic* client, const BSONObj* oldConfig, const BSONObj* newConfig); +void logReplSetReconfig(Client* client, const BSONObj* oldConfig, const BSONObj* newConfig); /** * Logs the result of an ApplicationMessage command. */ -void logApplicationMessage(ClientBasic* client, StringData msg); +void logApplicationMessage(Client* client, StringData msg); /** * Logs the result of a shutdown command. */ -void logShutdown(ClientBasic* client); +void logShutdown(Client* client); /** * Logs the result of a createIndex command. */ -void logCreateIndex(ClientBasic* client, +void logCreateIndex(Client* client, const BSONObj* indexSpec, StringData indexname, StringData nsname); @@ -248,56 +246,53 @@ void logCreateIndex(ClientBasic* client, /** * Logs the result of a createCollection command. */ -void logCreateCollection(ClientBasic* client, StringData nsname); +void logCreateCollection(Client* client, StringData nsname); /** * Logs the result of a createDatabase command. */ -void logCreateDatabase(ClientBasic* client, StringData dbname); +void logCreateDatabase(Client* client, StringData dbname); /** * Logs the result of a dropIndex command. */ -void logDropIndex(ClientBasic* client, StringData indexname, StringData nsname); +void logDropIndex(Client* client, StringData indexname, StringData nsname); /** * Logs the result of a dropCollection command. */ -void logDropCollection(ClientBasic* client, StringData nsname); +void logDropCollection(Client* client, StringData nsname); /** * Logs the result of a dropDatabase command. */ -void logDropDatabase(ClientBasic* client, StringData dbname); +void logDropDatabase(Client* client, StringData dbname); /** * Logs a collection rename event. */ -void logRenameCollection(ClientBasic* client, StringData source, StringData target); +void logRenameCollection(Client* client, StringData source, StringData target); /** * Logs the result of a enableSharding command. */ -void logEnableSharding(ClientBasic* client, StringData dbname); +void logEnableSharding(Client* client, StringData dbname); /** * Logs the result of a addShard command. */ -void logAddShard(ClientBasic* client, - StringData name, - const std::string& servers, - long long maxSize); +void logAddShard(Client* client, StringData name, const std::string& servers, long long maxSize); /** * Logs the result of a removeShard command. */ -void logRemoveShard(ClientBasic* client, StringData shardname); +void logRemoveShard(Client* client, StringData shardname); /** * Logs the result of a shardCollection command. */ -void logShardCollection(ClientBasic* client, StringData ns, const BSONObj& keyPattern, bool unique); +void logShardCollection(Client* client, StringData ns, const BSONObj& keyPattern, bool unique); /* diff --git a/src/mongo/db/auth/auth_decorations.cpp b/src/mongo/db/auth/auth_decorations.cpp index 558f3f9ba3c..bf1b31ca148 100644 --- a/src/mongo/db/auth/auth_decorations.cpp +++ b/src/mongo/db/auth/auth_decorations.cpp @@ -43,13 +43,13 @@ namespace mongo { namespace { const auto getAuthenticationSession = - ClientBasic::declareDecoration<std::unique_ptr<AuthenticationSession>>(); + Client::declareDecoration<std::unique_ptr<AuthenticationSession>>(); const auto getAuthorizationManager = ServiceContext::declareDecoration<std::unique_ptr<AuthorizationManager>>(); const auto getAuthorizationSession = - ClientBasic::declareDecoration<std::unique_ptr<AuthorizationSession>>(); + Client::declareDecoration<std::unique_ptr<AuthorizationSession>>(); class AuthzClientObserver final : public ServiceContext::ClientObserver { public: @@ -67,13 +67,11 @@ public: } // namespace -void AuthenticationSession::set(ClientBasic* client, - std::unique_ptr<AuthenticationSession> newSession) { +void AuthenticationSession::set(Client* client, std::unique_ptr<AuthenticationSession> newSession) { getAuthenticationSession(client) = std::move(newSession); } -void AuthenticationSession::swap(ClientBasic* client, - std::unique_ptr<AuthenticationSession>& other) { +void AuthenticationSession::swap(Client* client, std::unique_ptr<AuthenticationSession>& other) { using std::swap; swap(getAuthenticationSession(client), other); } @@ -95,21 +93,21 @@ void AuthorizationManager::set(ServiceContext* service, service->registerClientObserver(stdx::make_unique<AuthzClientObserver>()); } -AuthorizationSession* AuthorizationSession::get(ClientBasic* client) { +AuthorizationSession* AuthorizationSession::get(Client* client) { return get(*client); } -AuthorizationSession* AuthorizationSession::get(ClientBasic& client) { +AuthorizationSession* AuthorizationSession::get(Client& client) { AuthorizationSession* retval = getAuthorizationSession(client).get(); massert(16481, "No AuthorizationManager has been set up for this connection", retval); return retval; } -bool AuthorizationSession::exists(ClientBasic* client) { +bool AuthorizationSession::exists(Client* client) { return getAuthorizationSession(client).get(); } -void AuthorizationSession::set(ClientBasic* client, +void AuthorizationSession::set(Client* client, std::unique_ptr<AuthorizationSession> authorizationSession) { auto& authzSession = getAuthorizationSession(client); invariant(authorizationSession); diff --git a/src/mongo/db/auth/authentication_session.h b/src/mongo/db/auth/authentication_session.h index 1c3b34b16ee..52ee521e298 100644 --- a/src/mongo/db/auth/authentication_session.h +++ b/src/mongo/db/auth/authentication_session.h @@ -33,7 +33,7 @@ namespace mongo { -class ClientBasic; +class Client; /** * Abstract type representing an ongoing authentication session. @@ -52,12 +52,12 @@ public: /** * Sets the authentication session for the given "client" to "newSession". */ - static void set(ClientBasic* client, std::unique_ptr<AuthenticationSession> newSession); + static void set(Client* client, std::unique_ptr<AuthenticationSession> newSession); /** * Swaps "client"'s current authentication session with "other". */ - static void swap(ClientBasic* client, std::unique_ptr<AuthenticationSession>& other); + static void swap(Client* client, std::unique_ptr<AuthenticationSession>& other); virtual ~AuthenticationSession() = default; diff --git a/src/mongo/db/auth/authorization_session.cpp b/src/mongo/db/auth/authorization_session.cpp index 8981f758fc8..379ca78bd7c 100644 --- a/src/mongo/db/auth/authorization_session.cpp +++ b/src/mongo/db/auth/authorization_session.cpp @@ -624,7 +624,7 @@ void AuthorizationSession::setImpersonatedUserData(std::vector<UserName> usernam _impersonationFlag = true; } -bool AuthorizationSession::isCoauthorizedWithClient(ClientBasic* opClient) { +bool AuthorizationSession::isCoauthorizedWithClient(Client* opClient) { auto getUserNames = [](AuthorizationSession* authSession) { if (authSession->isImpersonating()) { return authSession->getImpersonatedUserNames(); diff --git a/src/mongo/db/auth/authorization_session.h b/src/mongo/db/auth/authorization_session.h index 31b64a7b1c8..f2e6fd0c91c 100644 --- a/src/mongo/db/auth/authorization_session.h +++ b/src/mongo/db/auth/authorization_session.h @@ -49,14 +49,14 @@ namespace auth { struct CreateOrUpdateRoleArgs; } -class ClientBasic; +class Client; /** * Contains all the authorization logic for a single client connection. It contains a set of * the users which have been authenticated, as well as a set of privileges that have been * granted to those users to perform various actions. * - * An AuthorizationSession object is present within every mongo::ClientBasic object. + * An AuthorizationSession object is present within every mongo::Client object. * * Users in the _authenticatedUsers cache may get marked as invalid by the AuthorizationManager, * for instance if their privileges are changed by a user or role modification command. At the @@ -74,19 +74,19 @@ public: * * The "client" object continues to own the returned AuthorizationSession. */ - static AuthorizationSession* get(ClientBasic* client); + static AuthorizationSession* get(Client* client); /** * Gets the AuthorizationSession associated with the given "client", or nullptr. * * The "client" object continues to own the returned AuthorizationSession. */ - static AuthorizationSession* get(ClientBasic& client); + static AuthorizationSession* get(Client& client); /** * Returns false if AuthorizationSession::get(client) would return nullptr. */ - static bool exists(ClientBasic* client); + static bool exists(Client* client); /** * Sets the AuthorizationSession associated with "client" to "session". @@ -94,7 +94,7 @@ public: * "session" must not be NULL, and it is only legal to call this function once * on each instance of "client". */ - static void set(ClientBasic* client, std::unique_ptr<AuthorizationSession> session); + static void set(Client* client, std::unique_ptr<AuthorizationSession> session); // Takes ownership of the externalState. explicit AuthorizationSession(std::unique_ptr<AuthzSessionExternalState> externalState); @@ -252,7 +252,7 @@ public: // those users will be considered as 'authenticated' for the purpose of this check. // // The existence of 'opClient' must be guaranteed through locks taken by the caller. - bool isCoauthorizedWithClient(ClientBasic* opClient); + bool isCoauthorizedWithClient(Client* opClient); // Tells whether impersonation is active or not. This state is set when // setImpersonatedUserData is called and cleared when clearImpersonatedUserData is diff --git a/src/mongo/db/auth/authz_session_external_state_server_common.cpp b/src/mongo/db/auth/authz_session_external_state_server_common.cpp index 16fb107f2f3..e2416596c4b 100644 --- a/src/mongo/db/auth/authz_session_external_state_server_common.cpp +++ b/src/mongo/db/auth/authz_session_external_state_server_common.cpp @@ -60,7 +60,7 @@ void AuthzSessionExternalStateServerCommon::_checkShouldAllowLocalhost(Operation if (!_allowLocalhost) return; // Don't bother checking if we're not on a localhost connection - if (!ClientBasic::getCurrent()->getIsLocalHostConnection()) { + if (!Client::getCurrent()->getIsLocalHostConnection()) { _allowLocalhost = false; return; } @@ -80,7 +80,7 @@ bool AuthzSessionExternalStateServerCommon::serverIsArbiter() const { } bool AuthzSessionExternalStateServerCommon::shouldAllowLocalhost() const { - ClientBasic* client = ClientBasic::getCurrent(); + Client* client = Client::getCurrent(); return _allowLocalhost && client->getIsLocalHostConnection(); } diff --git a/src/mongo/db/auth/sasl_commands.cpp b/src/mongo/db/auth/sasl_commands.cpp index 183049b5c11..37cc1984923 100644 --- a/src/mongo/db/auth/sasl_commands.cpp +++ b/src/mongo/db/auth/sasl_commands.cpp @@ -45,7 +45,7 @@ #include "mongo/db/auth/mongo_authentication_session.h" #include "mongo/db/auth/sasl_authentication_session.h" #include "mongo/db/auth/sasl_options.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/commands/authentication_commands.h" #include "mongo/db/server_options.h" @@ -172,7 +172,7 @@ void addStatus(const Status& status, BSONObjBuilder* builder) { builder->append(saslCommandErrmsgFieldName, status.reason()); } -Status doSaslStep(const ClientBasic* client, +Status doSaslStep(const Client* client, SaslAuthenticationSession* session, const BSONObj& cmdObj, BSONObjBuilder* result) { @@ -217,7 +217,7 @@ Status doSaslStep(const ClientBasic* client, return Status::OK(); } -Status doSaslStart(const ClientBasic* client, +Status doSaslStart(const Client* client, SaslAuthenticationSession* session, const std::string& db, const BSONObj& cmdObj, @@ -251,7 +251,7 @@ Status doSaslStart(const ClientBasic* client, return doSaslStep(client, session, cmdObj, result); } -Status doSaslContinue(const ClientBasic* client, +Status doSaslContinue(const Client* client, SaslAuthenticationSession* session, const BSONObj& cmdObj, BSONObjBuilder* result) { @@ -285,7 +285,7 @@ bool CmdSaslStart::run(OperationContext* txn, int options, std::string& ignored, BSONObjBuilder& result) { - ClientBasic* client = ClientBasic::getCurrent(); + Client* client = Client::getCurrent(); AuthenticationSession::set(client, std::unique_ptr<AuthenticationSession>()); std::string mechanism; @@ -327,7 +327,7 @@ bool CmdSaslContinue::run(OperationContext* txn, int options, std::string& ignored, BSONObjBuilder& result) { - ClientBasic* client = ClientBasic::getCurrent(); + Client* client = Client::getCurrent(); std::unique_ptr<AuthenticationSession> sessionGuard; AuthenticationSession::swap(client, sessionGuard); diff --git a/src/mongo/db/client.cpp b/src/mongo/db/client.cpp index 6776239f036..179b0938d5b 100644 --- a/src/mongo/db/client.cpp +++ b/src/mongo/db/client.cpp @@ -100,7 +100,8 @@ int64_t generateSeed(const std::string& desc) { } // namespace Client::Client(std::string desc, ServiceContext* serviceContext, transport::Session* session) - : ClientBasic(serviceContext, session), + : _serviceContext(serviceContext), + _session(session), _desc(std::move(desc)), _threadId(stdx::this_thread::get_id()), _connectionId(session ? session->id() : 0), @@ -147,7 +148,7 @@ std::string Client::clientAddress(bool includePort) const { return getRemote().host(); } -ClientBasic* ClientBasic::getCurrent() { +Client* Client::getCurrent() { return currentClient.getMake()->get(); } diff --git a/src/mongo/db/client.h b/src/mongo/db/client.h index ca9a159d579..8e313379b9c 100644 --- a/src/mongo/db/client.h +++ b/src/mongo/db/client.h @@ -36,14 +36,19 @@ #pragma once -#include "mongo/db/client_basic.h" +#include "mongo/base/disallow_copying.h" +#include "mongo/db/client.h" #include "mongo/db/namespace_string.h" #include "mongo/db/service_context.h" #include "mongo/platform/random.h" #include "mongo/platform/unordered_set.h" #include "mongo/stdx/thread.h" +#include "mongo/transport/session.h" #include "mongo/util/concurrency/spin_lock.h" #include "mongo/util/concurrency/threadlocal.h" +#include "mongo/util/decorable.h" +#include "mongo/util/net/abstract_message_port.h" +#include "mongo/util/net/hostandport.h" namespace mongo { @@ -57,8 +62,10 @@ class Session; typedef long long ConnectionId; -/** the database's concept of an outside "client" */ -class Client : public ClientBasic { +/** + * The database's concept of an outside "client". + * */ +class Client final : public Decorable<Client> { public: /** * Creates a Client object and stores it in TLS for the current thread. @@ -74,6 +81,38 @@ public: ServiceContext* serviceContext, transport::Session* session); + static Client* getCurrent(); + + bool getIsLocalHostConnection() { + if (!hasRemote()) { + return false; + } + return getRemote().isLocalHost(); + } + + bool hasRemote() const { + return _session; + } + + HostAndPort getRemote() const { + verify(_session); + return _session->remote(); + } + + /** + * Returns the ServiceContext that owns this client session context. + */ + ServiceContext* getServiceContext() const { + return _serviceContext; + } + + /** + * Returns the Session to which this client is bound, if any. + */ + transport::Session* session() const { + return _session; + } + /** * Inits a thread if that thread has not already been init'd, setting the thread name to * "desc". @@ -165,6 +204,8 @@ private: friend class ServiceContext; Client(std::string desc, ServiceContext* serviceContext, transport::Session* session = nullptr); + ServiceContext* const _serviceContext; + transport::Session* const _session; // Description for the client (e.g. conn8) const std::string _desc; diff --git a/src/mongo/db/client_basic.cpp b/src/mongo/db/client_basic.cpp deleted file mode 100644 index 578ebdf668d..00000000000 --- a/src/mongo/db/client_basic.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/** -* Copyright (C) 2008 10gen Inc. -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License, version 3, -* as published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* As a special exception, the copyright holders give permission to link the -* code of portions of this program with the OpenSSL library under certain -* conditions as described in each individual source file and distribute -* linked combinations including the program with the OpenSSL library. You -* must comply with the GNU Affero General Public License in all respects for -* all of the code used other than as permitted herein. If you modify file(s) -* with this exception, you may extend this exception to your version of the -* file(s), but you are not obligated to do so. If you do not wish to do so, -* delete this exception statement from your version. If you delete this -* exception statement from all source files in the program, then also delete -* it in the license file. -*/ - -#include "mongo/platform/basic.h" - -#include "mongo/db/client_basic.h" - -namespace mongo { - -ClientBasic::ClientBasic(ServiceContext* serviceContext, transport::Session* session) - : _serviceContext(serviceContext), _session(session) {} - -ClientBasic::~ClientBasic() = default; - -} // namespace mongo diff --git a/src/mongo/db/client_basic.h b/src/mongo/db/client_basic.h deleted file mode 100644 index 09f31b5da42..00000000000 --- a/src/mongo/db/client_basic.h +++ /dev/null @@ -1,94 +0,0 @@ -/** -* Copyright (C) 2008 10gen Inc. -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License, version 3, -* as published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* As a special exception, the copyright holders give permission to link the -* code of portions of this program with the OpenSSL library under certain -* conditions as described in each individual source file and distribute -* linked combinations including the program with the OpenSSL library. You -* must comply with the GNU Affero General Public License in all respects for -* all of the code used other than as permitted herein. If you modify file(s) -* with this exception, you may extend this exception to your version of the -* file(s), but you are not obligated to do so. If you do not wish to do so, -* delete this exception statement from your version. If you delete this -* exception statement from all source files in the program, then also delete -* it in the license file. -*/ - -#pragma once - -#include <memory> - -#include "mongo/base/disallow_copying.h" -#include "mongo/transport/session.h" -#include "mongo/util/decorable.h" -#include "mongo/util/net/abstract_message_port.h" -#include "mongo/util/net/hostandport.h" - -namespace mongo { - -class ServiceContext; - -/** - * this is the base class for Client and ClientInfo - * Client is for mongod - * ClientInfo is for mongos - * They should converge slowly - * The idea is this has the basic api so that not all code has to be duplicated - */ -class ClientBasic : public Decorable<ClientBasic> { - MONGO_DISALLOW_COPYING(ClientBasic); - -public: - bool getIsLocalHostConnection() { - if (!hasRemote()) { - return false; - } - return getRemote().isLocalHost(); - } - - bool hasRemote() const { - return _session; - } - - HostAndPort getRemote() const { - verify(_session); - return _session->remote(); - } - - /** - * Returns the ServiceContext that owns this client session context. - */ - ServiceContext* getServiceContext() const { - return _serviceContext; - } - - /** - * Returns the Session to which this client is bound, if any. - */ - transport::Session* session() const { - return _session; - } - - static ClientBasic* getCurrent(); - -protected: - ClientBasic(ServiceContext* serviceContext, transport::Session* session); - ~ClientBasic(); - -private: - ServiceContext* const _serviceContext; - transport::Session* const _session; -}; -} diff --git a/src/mongo/db/clientlistplugin.cpp b/src/mongo/db/clientlistplugin.cpp index 8204eeb74a9..48fdb84ea4b 100644 --- a/src/mongo/db/clientlistplugin.cpp +++ b/src/mongo/db/clientlistplugin.cpp @@ -152,7 +152,7 @@ public: return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/commands.cpp b/src/mongo/db/commands.cpp index cbc8f89764c..70989b0db9f 100644 --- a/src/mongo/db/commands.cpp +++ b/src/mongo/db/commands.cpp @@ -204,7 +204,7 @@ void Command::appendCommandWCStatus(BSONObjBuilder& result, } } -Status Command::checkAuthForCommand(ClientBasic* client, +Status Command::checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { std::vector<Privilege> privileges; @@ -226,7 +226,7 @@ BSONObj Command::getRedactedCopyForLogging(const BSONObj& cmdObj) { } static Status _checkAuthorizationImpl(Command* c, - ClientBasic* client, + Client* client, const std::string& dbname, const BSONObj& cmdObj) { namespace mmb = mutablebson; diff --git a/src/mongo/db/commands.h b/src/mongo/db/commands.h index ef808084454..1e16dc77238 100644 --- a/src/mongo/db/commands.h +++ b/src/mongo/db/commands.h @@ -36,7 +36,7 @@ #include "mongo/base/status_with.h" #include "mongo/db/auth/privilege.h" #include "mongo/db/auth/resource_pattern.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands/server_status_metric.h" #include "mongo/db/jsobj.h" #include "mongo/db/query/explain.h" @@ -219,7 +219,7 @@ public: * Checks if the given client is authorized to run this command on database "dbname" * with the invocation described by "cmdObj". */ - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); @@ -325,14 +325,14 @@ public: rpc::ReplyBuilderInterface* replyBuilder); // For mongos - // TODO: remove this entirely now that all instances of ClientBasic are instances + // TODO: remove this entirely now that all instances of Client are instances // of Client. This will happen as part of SERVER-18292 - static void execCommandClientBasic(OperationContext* txn, - Command* c, - int queryOptions, - const char* ns, - BSONObj& cmdObj, - BSONObjBuilder& result); + static void execCommandClient(OperationContext* txn, + Command* c, + int queryOptions, + const char* ns, + BSONObj& cmdObj, + BSONObjBuilder& result); // Helper for setting errmsg and ok field in command result object. static void appendCommandStatus(BSONObjBuilder& result, bool ok, const std::string& errmsg); diff --git a/src/mongo/db/commands/authentication_commands.cpp b/src/mongo/db/commands/authentication_commands.cpp index 2f05971ef56..e5b50fec80d 100644 --- a/src/mongo/db/commands/authentication_commands.cpp +++ b/src/mongo/db/commands/authentication_commands.cpp @@ -50,7 +50,7 @@ #include "mongo/db/auth/privilege.h" #include "mongo/db/auth/sasl_options.h" #include "mongo/db/auth/security_key.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/jsobj.h" #include "mongo/db/server_options.h" @@ -122,7 +122,7 @@ public: stringstream ss; ss << hex << n; result.append("nonce", ss.str()); - AuthenticationSession::set(ClientBasic::getCurrent(), + AuthenticationSession::set(Client::getCurrent(), stdx::make_unique<MongoAuthenticationSession>(n)); return true; } @@ -176,7 +176,7 @@ bool CmdAuthenticate::run(OperationContext* txn, mechanism = "MONGODB-CR"; } Status status = _authenticate(txn, mechanism, user, cmdObj); - audit::logAuthentication(ClientBasic::getCurrent(), mechanism, user, status.code()); + audit::logAuthentication(Client::getCurrent(), mechanism, user, status.code()); if (!status.isOK()) { if (!serverGlobalParams.quiet) { log() << "Failed to authenticate " << user << " with mechanism " << mechanism << ": " @@ -241,7 +241,7 @@ Status CmdAuthenticate::_authenticateCR(OperationContext* txn, stringstream digestBuilder; { - ClientBasic* client = ClientBasic::getCurrent(); + Client* client = Client::getCurrent(); std::unique_ptr<AuthenticationSession> session; AuthenticationSession::swap(client, session); if (!session || session->getType() != AuthenticationSession::SESSION_TYPE_MONGO) { @@ -290,8 +290,7 @@ Status CmdAuthenticate::_authenticateCR(OperationContext* txn, return Status(ErrorCodes::AuthenticationFailed, "key mismatch"); } - AuthorizationSession* authorizationSession = - AuthorizationSession::get(ClientBasic::getCurrent()); + AuthorizationSession* authorizationSession = AuthorizationSession::get(Client::getCurrent()); status = authorizationSession->addAndAuthorizeUser(txn, user); if (!status.isOK()) { return status; @@ -313,7 +312,7 @@ Status CmdAuthenticate::_authenticateX509(OperationContext* txn, "X.509 authentication must always use the $external database."); } - ClientBasic* client = ClientBasic::getCurrent(); + Client* client = Client::getCurrent(); AuthorizationSession* authorizationSession = AuthorizationSession::get(client); auto clientName = client->session()->getX509SubjectName(); @@ -374,7 +373,7 @@ public: int options, string& errmsg, BSONObjBuilder& result) { - AuthorizationSession* authSession = AuthorizationSession::get(ClientBasic::getCurrent()); + AuthorizationSession* authSession = AuthorizationSession::get(Client::getCurrent()); authSession->logoutDatabase(dbname); if (Command::testCommandsEnabled && dbname == "admin") { // Allows logging out as the internal user against the admin database, however diff --git a/src/mongo/db/commands/clone.cpp b/src/mongo/db/commands/clone.cpp index 5367bdb1a82..60b9d031dc1 100644 --- a/src/mongo/db/commands/clone.cpp +++ b/src/mongo/db/commands/clone.cpp @@ -69,7 +69,7 @@ public: help << "{clone: \"host13\"[, slaveOk: <bool>]}"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { ActionSet actions; diff --git a/src/mongo/db/commands/clone_collection.cpp b/src/mongo/db/commands/clone_collection.cpp index a6539a5c179..3cc202bcae8 100644 --- a/src/mongo/db/commands/clone_collection.cpp +++ b/src/mongo/db/commands/clone_collection.cpp @@ -77,7 +77,7 @@ public: return parseNsFullyQualified(dbname, cmdObj); } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { std::string ns = parseNs(dbname, cmdObj); diff --git a/src/mongo/db/commands/connection_status.cpp b/src/mongo/db/commands/connection_status.cpp index 8cf1a94ebd6..e26e6b9d192 100644 --- a/src/mongo/db/commands/connection_status.cpp +++ b/src/mongo/db/commands/connection_status.cpp @@ -61,7 +61,7 @@ public: int, string& errmsg, BSONObjBuilder& result) { - AuthorizationSession* authSession = AuthorizationSession::get(ClientBasic::getCurrent()); + AuthorizationSession* authSession = AuthorizationSession::get(Client::getCurrent()); bool showPrivileges; Status status = diff --git a/src/mongo/db/commands/copydb.cpp b/src/mongo/db/commands/copydb.cpp index 9bfbde8d67a..2e80deab625 100644 --- a/src/mongo/db/commands/copydb.cpp +++ b/src/mongo/db/commands/copydb.cpp @@ -102,7 +102,7 @@ public: return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return copydb::checkAuthForCopydbCommand(client, dbname, cmdObj); diff --git a/src/mongo/db/commands/copydb.h b/src/mongo/db/commands/copydb.h index 3da70ccd01a..0f2cec12a72 100644 --- a/src/mongo/db/commands/copydb.h +++ b/src/mongo/db/commands/copydb.h @@ -36,13 +36,11 @@ namespace mongo { -class ClientBasic; +class Client; namespace copydb { -Status checkAuthForCopydbCommand(ClientBasic* client, - const std::string& dbname, - const BSONObj& cmdObj); +Status checkAuthForCopydbCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); } // namespace copydb } // namespace mongo diff --git a/src/mongo/db/commands/copydb_common.cpp b/src/mongo/db/commands/copydb_common.cpp index 2a690ae0a17..ab6f5078429 100644 --- a/src/mongo/db/commands/copydb_common.cpp +++ b/src/mongo/db/commands/copydb_common.cpp @@ -36,16 +36,14 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/privilege.h" #include "mongo/db/catalog/document_validation.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/jsobj.h" #include "mongo/db/namespace_string.h" namespace mongo { namespace copydb { -Status checkAuthForCopydbCommand(ClientBasic* client, - const std::string& dbname, - const BSONObj& cmdObj) { +Status checkAuthForCopydbCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { bool fromSelf = StringData(cmdObj.getStringField("fromhost")).empty(); StringData fromdb = cmdObj.getStringField("fromdb"); StringData todb = cmdObj.getStringField("todb"); diff --git a/src/mongo/db/commands/copydb_start_commands.cpp b/src/mongo/db/commands/copydb_start_commands.cpp index 1af5e4be983..3e7f0ee7e60 100644 --- a/src/mongo/db/commands/copydb_start_commands.cpp +++ b/src/mongo/db/commands/copydb_start_commands.cpp @@ -158,7 +158,7 @@ public: return false; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { // No auth required diff --git a/src/mongo/db/commands/create_indexes.cpp b/src/mongo/db/commands/create_indexes.cpp index a3dcd815ebb..eb50818d63e 100644 --- a/src/mongo/db/commands/create_indexes.cpp +++ b/src/mongo/db/commands/create_indexes.cpp @@ -70,7 +70,7 @@ public: return false; } // TODO: this could be made true... - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { ActionSet actions; diff --git a/src/mongo/db/commands/current_op.cpp b/src/mongo/db/commands/current_op.cpp index 555fbd1efe5..69f042ecafe 100644 --- a/src/mongo/db/commands/current_op.cpp +++ b/src/mongo/db/commands/current_op.cpp @@ -68,7 +68,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp index ee9a4fe1082..8fd2617062a 100644 --- a/src/mongo/db/commands/dbcommands.cpp +++ b/src/mongo/db/commands/dbcommands.cpp @@ -311,7 +311,7 @@ public: return false; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -517,7 +517,7 @@ public: help << "create a collection explicitly\n" "{ create: <ns>[, capped: <bool>, size: <collSizeInBytes>, max: <nDocs>] }"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -1160,7 +1160,7 @@ public: virtual bool supportsWriteConcern(const BSONObj& cmd) const override { return false; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return Status::OK(); diff --git a/src/mongo/db/commands/explain_cmd.cpp b/src/mongo/db/commands/explain_cmd.cpp index b0c8f1baec3..09ff0b1d44c 100644 --- a/src/mongo/db/commands/explain_cmd.cpp +++ b/src/mongo/db/commands/explain_cmd.cpp @@ -89,7 +89,7 @@ public: * the command that you are explaining. The auth check is performed recursively * on the nested command. */ - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (Object != cmdObj.firstElement().type()) { diff --git a/src/mongo/db/commands/find_cmd.cpp b/src/mongo/db/commands/find_cmd.cpp index 0d3b0d4381b..c83080a2d70 100644 --- a/src/mongo/db/commands/find_cmd.cpp +++ b/src/mongo/db/commands/find_cmd.cpp @@ -120,7 +120,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { NamespaceString nss(parseNs(dbname, cmdObj)); diff --git a/src/mongo/db/commands/fsync.cpp b/src/mongo/db/commands/fsync.cpp index 0cb5f32f83f..2536a2f6f8e 100644 --- a/src/mongo/db/commands/fsync.cpp +++ b/src/mongo/db/commands/fsync.cpp @@ -199,7 +199,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { bool isAuthorized = AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/commands/getmore_cmd.cpp b/src/mongo/db/commands/getmore_cmd.cpp index ac11e131c77..2fcf53e8e82 100644 --- a/src/mongo/db/commands/getmore_cmd.cpp +++ b/src/mongo/db/commands/getmore_cmd.cpp @@ -132,7 +132,7 @@ public: return GetMoreRequest::parseNs(dbname, cmdObj); } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { StatusWith<GetMoreRequest> parseStatus = GetMoreRequest::parseFromBSON(dbname, cmdObj); diff --git a/src/mongo/db/commands/group_cmd.cpp b/src/mongo/db/commands/group_cmd.cpp index c721a2d0266..e490febe4fb 100644 --- a/src/mongo/db/commands/group_cmd.cpp +++ b/src/mongo/db/commands/group_cmd.cpp @@ -94,7 +94,7 @@ private: help << "http://dochub.mongodb.org/core/aggregation"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { std::string ns = parseNs(dbname, cmdObj); diff --git a/src/mongo/db/commands/index_filter_commands.cpp b/src/mongo/db/commands/index_filter_commands.cpp index 95725ee7702..5f8695713de 100644 --- a/src/mongo/db/commands/index_filter_commands.cpp +++ b/src/mongo/db/commands/index_filter_commands.cpp @@ -163,7 +163,7 @@ void IndexFilterCommand::help(stringstream& ss) const { ss << helpText; } -Status IndexFilterCommand::checkAuthForCommand(ClientBasic* client, +Status IndexFilterCommand::checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/index_filter_commands.h b/src/mongo/db/commands/index_filter_commands.h index 80fed645c5e..c34494b19d8 100644 --- a/src/mongo/db/commands/index_filter_commands.h +++ b/src/mongo/db/commands/index_filter_commands.h @@ -82,7 +82,7 @@ public: * One action type defined for index filter commands: * - planCacheIndexFilter */ - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); diff --git a/src/mongo/db/commands/kill_op.cpp b/src/mongo/db/commands/kill_op.cpp index 36e773bfaa8..f96f3692ecd 100644 --- a/src/mongo/db/commands/kill_op.cpp +++ b/src/mongo/db/commands/kill_op.cpp @@ -82,7 +82,7 @@ public: } static StatusWith<std::tuple<stdx::unique_lock<Client>, OperationContext*>> _findOp( - ClientBasic* client, unsigned int opId) { + Client* client, unsigned int opId) { AuthorizationSession* authzSession = AuthorizationSession::get(client); for (ServiceContext::LockedClientsCursor cursor(client->getServiceContext()); @@ -103,7 +103,7 @@ public: return Status(ErrorCodes::NoSuchKey, str::stream() << "Could not access opID: " << opId); } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/killcursors_common.cpp b/src/mongo/db/commands/killcursors_common.cpp index 879867e3690..194882feee2 100644 --- a/src/mongo/db/commands/killcursors_common.cpp +++ b/src/mongo/db/commands/killcursors_common.cpp @@ -39,7 +39,7 @@ namespace mongo { -Status KillCursorsCmdBase::checkAuthForCommand(ClientBasic* client, +Status KillCursorsCmdBase::checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { auto statusWithRequest = KillCursorsRequest::parseFromBSON(dbname, cmdObj); diff --git a/src/mongo/db/commands/killcursors_common.h b/src/mongo/db/commands/killcursors_common.h index db92c7ab21b..3f66f845ef0 100644 --- a/src/mongo/db/commands/killcursors_common.h +++ b/src/mongo/db/commands/killcursors_common.h @@ -66,7 +66,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final; diff --git a/src/mongo/db/commands/list_collections.cpp b/src/mongo/db/commands/list_collections.cpp index 23cd2ff6845..a597484666c 100644 --- a/src/mongo/db/commands/list_collections.cpp +++ b/src/mongo/db/commands/list_collections.cpp @@ -178,7 +178,7 @@ public: help << "list collections for this db"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/list_indexes.cpp b/src/mongo/db/commands/list_indexes.cpp index e8f64630240..fb32aad5a25 100644 --- a/src/mongo/db/commands/list_indexes.cpp +++ b/src/mongo/db/commands/list_indexes.cpp @@ -91,7 +91,7 @@ public: help << "list indexes for a collection"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/lock_info.cpp b/src/mongo/db/commands/lock_info.cpp index 68121448678..950533ae333 100644 --- a/src/mongo/db/commands/lock_info.cpp +++ b/src/mongo/db/commands/lock_info.cpp @@ -69,7 +69,7 @@ public: help << "show all lock info on the server"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { bool isAuthorized = AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/commands/mr.cpp b/src/mongo/db/commands/mr.cpp index 423cfeeec29..9e61b381969 100644 --- a/src/mongo/db/commands/mr.cpp +++ b/src/mongo/db/commands/mr.cpp @@ -814,7 +814,7 @@ State::~State() { void State::init() { // setup js const string userToken = - AuthorizationSession::get(ClientBasic::getCurrent())->getAuthenticatedUserNamesToken(); + AuthorizationSession::get(Client::getCurrent())->getAuthenticatedUserNamesToken(); _scope.reset(globalScriptEngine->newScopeForCurrentThread()); _scope->registerOperation(_txn); _scope->setLocalDB(_config.dbname); diff --git a/src/mongo/db/commands/oplog_note.cpp b/src/mongo/db/commands/oplog_note.cpp index 784781405b4..35062313941 100644 --- a/src/mongo/db/commands/oplog_note.cpp +++ b/src/mongo/db/commands/oplog_note.cpp @@ -60,7 +60,7 @@ public: virtual void help(stringstream& help) const { help << "Adds a no-op entry to the oplog"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/commands/parallel_collection_scan.cpp b/src/mongo/db/commands/parallel_collection_scan.cpp index 97463f6cef5..77dcfefaa26 100644 --- a/src/mongo/db/commands/parallel_collection_scan.cpp +++ b/src/mongo/db/commands/parallel_collection_scan.cpp @@ -73,7 +73,7 @@ public: return ReadWriteType::kCommand; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { ActionSet actions; diff --git a/src/mongo/db/commands/pipeline_command.cpp b/src/mongo/db/commands/pipeline_command.cpp index 372cf203166..5cb7b6ac887 100644 --- a/src/mongo/db/commands/pipeline_command.cpp +++ b/src/mongo/db/commands/pipeline_command.cpp @@ -229,7 +229,7 @@ public: << "See http://dochub.mongodb.org/core/aggregation for more details."; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { return Pipeline::checkAuthForCommand(client, dbname, cmdObj); diff --git a/src/mongo/db/commands/plan_cache_commands.cpp b/src/mongo/db/commands/plan_cache_commands.cpp index 9d347b7b6a4..dd51739de13 100644 --- a/src/mongo/db/commands/plan_cache_commands.cpp +++ b/src/mongo/db/commands/plan_cache_commands.cpp @@ -157,7 +157,7 @@ void PlanCacheCommand::help(stringstream& ss) const { ss << helpText; } -Status PlanCacheCommand::checkAuthForCommand(ClientBasic* client, +Status PlanCacheCommand::checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); diff --git a/src/mongo/db/commands/plan_cache_commands.h b/src/mongo/db/commands/plan_cache_commands.h index 87316b84178..1b6afaf2171 100644 --- a/src/mongo/db/commands/plan_cache_commands.h +++ b/src/mongo/db/commands/plan_cache_commands.h @@ -77,7 +77,7 @@ public: * - planCacheRead * - planCacheWrite */ - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); /** diff --git a/src/mongo/db/commands/rename_collection.h b/src/mongo/db/commands/rename_collection.h index a7e3c6beed4..5fd3e867cb2 100644 --- a/src/mongo/db/commands/rename_collection.h +++ b/src/mongo/db/commands/rename_collection.h @@ -36,11 +36,11 @@ namespace mongo { -class ClientBasic; +class Client; namespace rename_collection { -Status checkAuthForRenameCollectionCommand(ClientBasic* client, +Status checkAuthForRenameCollectionCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); diff --git a/src/mongo/db/commands/rename_collection_cmd.cpp b/src/mongo/db/commands/rename_collection_cmd.cpp index 746aeb49db1..1b213898805 100644 --- a/src/mongo/db/commands/rename_collection_cmd.cpp +++ b/src/mongo/db/commands/rename_collection_cmd.cpp @@ -68,7 +68,7 @@ public: virtual bool supportsWriteConcern(const BSONObj& cmd) const override { return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return rename_collection::checkAuthForRenameCollectionCommand(client, dbname, cmdObj); diff --git a/src/mongo/db/commands/rename_collection_common.cpp b/src/mongo/db/commands/rename_collection_common.cpp index d9818962cc3..7bfadbf779f 100644 --- a/src/mongo/db/commands/rename_collection_common.cpp +++ b/src/mongo/db/commands/rename_collection_common.cpp @@ -35,14 +35,14 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/privilege.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/jsobj.h" #include "mongo/db/namespace_string.h" namespace mongo { namespace rename_collection { -Status checkAuthForRenameCollectionCommand(ClientBasic* client, +Status checkAuthForRenameCollectionCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { NamespaceString sourceNS = NamespaceString(cmdObj.getStringField("renameCollection")); diff --git a/src/mongo/db/commands/repair_cursor.cpp b/src/mongo/db/commands/repair_cursor.cpp index ad8afe526bb..1e04075ab58 100644 --- a/src/mongo/db/commands/repair_cursor.cpp +++ b/src/mongo/db/commands/repair_cursor.cpp @@ -55,7 +55,7 @@ public: return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { ActionSet actions; diff --git a/src/mongo/db/commands/server_status.cpp b/src/mongo/db/commands/server_status.cpp index e567a15b18b..1872745bf24 100644 --- a/src/mongo/db/commands/server_status.cpp +++ b/src/mongo/db/commands/server_status.cpp @@ -38,7 +38,7 @@ #include "mongo/db/auth/authorization_manager.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/privilege.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/commands/server_status.h" #include "mongo/db/commands/server_status_internal.h" @@ -97,7 +97,7 @@ public: const auto runStart = clock->now(); BSONObjBuilder timeBuilder(256); - const auto authSession = AuthorizationSession::get(ClientBasic::getCurrent()); + const auto authSession = AuthorizationSession::get(Client::getCurrent()); auto canonicalizer = HostnameCanonicalizationWorker::get(service); // --- basic fields that are global diff --git a/src/mongo/db/commands/snapshot_management.cpp b/src/mongo/db/commands/snapshot_management.cpp index 9eec705e4af..5c215c4c6f4 100644 --- a/src/mongo/db/commands/snapshot_management.cpp +++ b/src/mongo/db/commands/snapshot_management.cpp @@ -53,7 +53,7 @@ public: } // No auth needed because it only works when enabled via command line. - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return Status::OK(); @@ -103,7 +103,7 @@ public: } // No auth needed because it only works when enabled via command line. - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return Status::OK(); diff --git a/src/mongo/db/commands/user_management_commands.cpp b/src/mongo/db/commands/user_management_commands.cpp index 6574e3cd8e0..5dc5bba8138 100644 --- a/src/mongo/db/commands/user_management_commands.cpp +++ b/src/mongo/db/commands/user_management_commands.cpp @@ -607,7 +607,7 @@ public: ss << "Adds a user to the system" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForCreateUserCommand(client, dbname, cmdObj); @@ -721,7 +721,7 @@ public: } } - audit::logCreateUser(ClientBasic::getCurrent(), + audit::logCreateUser(Client::getCurrent(), args.userName, args.hasHashedPassword, args.hasCustomData ? &args.customData : NULL, @@ -752,7 +752,7 @@ public: ss << "Used to update a user, for example to change its password" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUpdateUserCommand(client, dbname, cmdObj); @@ -834,7 +834,7 @@ public: } } - audit::logUpdateUser(ClientBasic::getCurrent(), + audit::logUpdateUser(Client::getCurrent(), args.userName, args.hasHashedPassword, args.hasCustomData ? &args.customData : NULL, @@ -869,7 +869,7 @@ public: ss << "Drops a single user." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropUserCommand(client, dbname, cmdObj); @@ -895,7 +895,7 @@ public: return appendCommandStatus(result, status); } - audit::logDropUser(ClientBasic::getCurrent(), userName); + audit::logDropUser(Client::getCurrent(), userName); long long nMatched; status = removePrivilegeDocuments(txn, @@ -938,7 +938,7 @@ public: ss << "Drops all users for a single database." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropAllUsersFromDatabaseCommand(client, dbname); @@ -963,7 +963,7 @@ public: return appendCommandStatus(result, status); } - audit::logDropAllUsersFromDatabase(ClientBasic::getCurrent(), dbname); + audit::logDropAllUsersFromDatabase(Client::getCurrent(), dbname); long long numRemoved; status = removePrivilegeDocuments( @@ -996,7 +996,7 @@ public: ss << "Grants roles to a user." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantRolesToUserCommand(client, dbname, cmdObj); @@ -1043,7 +1043,7 @@ public: userRoles.insert(roleName); } - audit::logGrantRolesToUser(ClientBasic::getCurrent(), userName, roles); + audit::logGrantRolesToUser(Client::getCurrent(), userName, roles); BSONArray newRolesBSONArray = roleSetToBSONArray(userRoles); status = updatePrivilegeDocument( txn, userName, BSON("$set" << BSON("roles" << newRolesBSONArray))); @@ -1070,7 +1070,7 @@ public: ss << "Revokes roles from a user." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokeRolesFromUserCommand(client, dbname, cmdObj); @@ -1117,7 +1117,7 @@ public: userRoles.erase(roleName); } - audit::logRevokeRolesFromUser(ClientBasic::getCurrent(), userName, roles); + audit::logRevokeRolesFromUser(Client::getCurrent(), userName, roles); BSONArray newRolesBSONArray = roleSetToBSONArray(userRoles); status = updatePrivilegeDocument( txn, userName, BSON("$set" << BSON("roles" << newRolesBSONArray))); @@ -1148,7 +1148,7 @@ public: ss << "Returns information about users." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUsersInfoCommand(client, dbname, cmdObj); @@ -1259,7 +1259,7 @@ public: ss << "Adds a role to the system" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForCreateRoleCommand(client, dbname, cmdObj); @@ -1349,7 +1349,7 @@ public: return appendCommandStatus(result, status); } - audit::logCreateRole(ClientBasic::getCurrent(), args.roleName, args.roles, args.privileges); + audit::logCreateRole(Client::getCurrent(), args.roleName, args.roles, args.privileges); status = insertRoleDocument(txn, roleObjBuilder.done()); return appendCommandStatus(result, status); @@ -1373,7 +1373,7 @@ public: ss << "Used to update a role" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUpdateRoleCommand(client, dbname, cmdObj); @@ -1443,7 +1443,7 @@ public: } } - audit::logUpdateRole(ClientBasic::getCurrent(), + audit::logUpdateRole(Client::getCurrent(), args.roleName, args.hasRoles ? &args.roles : NULL, args.hasPrivileges ? &args.privileges : NULL); @@ -1471,7 +1471,7 @@ public: ss << "Grants privileges to a role" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantPrivilegesToRoleCommand(client, dbname, cmdObj); @@ -1552,7 +1552,7 @@ public: BSONObjBuilder updateBSONBuilder; updateObj.writeTo(&updateBSONBuilder); - audit::logGrantPrivilegesToRole(ClientBasic::getCurrent(), roleName, privilegesToAdd); + audit::logGrantPrivilegesToRole(Client::getCurrent(), roleName, privilegesToAdd); status = updateRoleDocument(txn, roleName, updateBSONBuilder.done()); // Must invalidate even on bad status - what if the write succeeded but the GLE failed? @@ -1578,7 +1578,7 @@ public: ss << "Revokes privileges from a role" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokePrivilegesFromRoleCommand(client, dbname, cmdObj); @@ -1660,7 +1660,7 @@ public: return appendCommandStatus(result, status); } - audit::logRevokePrivilegesFromRole(ClientBasic::getCurrent(), roleName, privilegesToRemove); + audit::logRevokePrivilegesFromRole(Client::getCurrent(), roleName, privilegesToRemove); BSONObjBuilder updateBSONBuilder; updateObj.writeTo(&updateBSONBuilder); @@ -1688,7 +1688,7 @@ public: ss << "Grants roles to another role." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantRolesToRoleCommand(client, dbname, cmdObj); @@ -1752,7 +1752,7 @@ public: directRoles.push_back(*it); } - audit::logGrantRolesToRole(ClientBasic::getCurrent(), roleName, rolesToAdd); + audit::logGrantRolesToRole(Client::getCurrent(), roleName, rolesToAdd); status = updateRoleDocument( txn, roleName, BSON("$set" << BSON("roles" << rolesVectorToBSONArray(directRoles)))); @@ -1779,7 +1779,7 @@ public: ss << "Revokes roles from another role." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokeRolesFromRoleCommand(client, dbname, cmdObj); @@ -1838,7 +1838,7 @@ public: } } - audit::logRevokeRolesFromRole(ClientBasic::getCurrent(), roleName, rolesToRemove); + audit::logRevokeRolesFromRole(Client::getCurrent(), roleName, rolesToRemove); status = updateRoleDocument( txn, roleName, BSON("$set" << BSON("roles" << rolesVectorToBSONArray(roles)))); @@ -1869,7 +1869,7 @@ public: << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropRoleCommand(client, dbname, cmdObj); @@ -1969,7 +1969,7 @@ public: << status.reason())); } - audit::logDropRole(ClientBasic::getCurrent(), roleName); + audit::logDropRole(Client::getCurrent(), roleName); // Finally, remove the actual role document status = removeRoleDocuments(txn, BSON(AuthorizationManager::ROLE_NAME_FIELD_NAME @@ -2023,7 +2023,7 @@ public: << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropAllRolesFromDatabaseCommand(client, dbname); @@ -2100,7 +2100,7 @@ public: << status.reason())); } - audit::logDropAllRolesFromDatabase(ClientBasic::getCurrent(), dbname); + audit::logDropAllRolesFromDatabase(Client::getCurrent(), dbname); // Finally, remove the actual role documents status = removeRoleDocuments( txn, BSON(AuthorizationManager::ROLE_DB_FIELD_NAME << dbname), &nMatched); @@ -2144,7 +2144,7 @@ public: ss << "Returns information about roles." << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRolesInfoCommand(client, dbname, cmdObj); @@ -2219,7 +2219,7 @@ public: ss << "Invalidates the in-memory cache of user information" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForInvalidateUserCacheCommand(client); @@ -2258,7 +2258,7 @@ public: ss << "internal" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGetUserCacheGenerationCommand(client); @@ -2307,7 +2307,7 @@ public: ss << "Internal command used by mongorestore for updating user/role data" << endl; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForMergeAuthzCollectionsCommand(client, cmdObj); @@ -2373,13 +2373,13 @@ public: } if (create) { - audit::logCreateUser(ClientBasic::getCurrent(), + audit::logCreateUser(Client::getCurrent(), userName, userObj["credentials"].Obj().hasField("MONGODB-CR"), userObj.hasField("customData") ? &customData : NULL, roles); } else { - audit::logUpdateUser(ClientBasic::getCurrent(), + audit::logUpdateUser(Client::getCurrent(), userName, userObj["credentials"].Obj().hasField("MONGODB-CR"), userObj.hasField("customData") ? &customData : NULL, @@ -2399,9 +2399,9 @@ public: uassertStatusOK(auth::parseAndValidatePrivilegeArray(BSONArray(roleObj["privileges"].Obj()), &privileges)); if (create) { - audit::logCreateRole(ClientBasic::getCurrent(), roleName, roles, privileges); + audit::logCreateRole(Client::getCurrent(), roleName, roles, privileges); } else { - audit::logUpdateRole(ClientBasic::getCurrent(), roleName, &roles, &privileges); + audit::logUpdateRole(Client::getCurrent(), roleName, &roles, &privileges); } } @@ -2545,7 +2545,7 @@ public: it != usersToDrop.end(); ++it) { const UserName& userName = *it; - audit::logDropUser(ClientBasic::getCurrent(), userName); + audit::logDropUser(Client::getCurrent(), userName); status = removePrivilegeDocuments(txn, BSON(AuthorizationManager::USER_NAME_FIELD_NAME << userName.getUser().toString() @@ -2625,7 +2625,7 @@ public: it != rolesToDrop.end(); ++it) { const RoleName& roleName = *it; - audit::logDropRole(ClientBasic::getCurrent(), roleName); + audit::logDropRole(Client::getCurrent(), roleName); status = removeRoleDocuments(txn, BSON(AuthorizationManager::ROLE_NAME_FIELD_NAME << roleName.getRole().toString() @@ -2874,7 +2874,7 @@ public: ss << "Upgrades the auth data storage schema"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForAuthSchemaUpgradeCommand(client); diff --git a/src/mongo/db/commands/user_management_commands.h b/src/mongo/db/commands/user_management_commands.h index 8ae4e233db9..60c833505d6 100644 --- a/src/mongo/db/commands/user_management_commands.h +++ b/src/mongo/db/commands/user_management_commands.h @@ -42,7 +42,7 @@ class AuthorizationManager; class AuthorizationSession; struct BSONArray; class BSONObj; -class ClientBasic; +class Client; class OperationContext; namespace auth { @@ -74,74 +74,74 @@ Status checkAuthorizedToRevokePrivileges(AuthorizationSession* authzSession, // checkAuthFor*Command methods // -Status checkAuthForCreateUserCommand(ClientBasic* client, +Status checkAuthForCreateUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForUpdateUserCommand(ClientBasic* client, +Status checkAuthForUpdateUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForGrantRolesToUserCommand(ClientBasic* client, +Status checkAuthForGrantRolesToUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForCreateRoleCommand(ClientBasic* client, +Status checkAuthForCreateRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForUpdateRoleCommand(ClientBasic* client, +Status checkAuthForUpdateRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForGrantRolesToRoleCommand(ClientBasic* client, +Status checkAuthForGrantRolesToRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForGrantPrivilegesToRoleCommand(ClientBasic* client, +Status checkAuthForGrantPrivilegesToRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForDropAllUsersFromDatabaseCommand(ClientBasic* client, const std::string& dbname); +Status checkAuthForDropAllUsersFromDatabaseCommand(Client* client, const std::string& dbname); -Status checkAuthForRevokeRolesFromUserCommand(ClientBasic* client, +Status checkAuthForRevokeRolesFromUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForRevokeRolesFromRoleCommand(ClientBasic* client, +Status checkAuthForRevokeRolesFromRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForDropUserCommand(ClientBasic* client, +Status checkAuthForDropUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForDropRoleCommand(ClientBasic* client, +Status checkAuthForDropRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForUsersInfoCommand(ClientBasic* client, +Status checkAuthForUsersInfoCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForRevokePrivilegesFromRoleCommand(ClientBasic* client, +Status checkAuthForRevokePrivilegesFromRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForDropAllRolesFromDatabaseCommand(ClientBasic* client, const std::string& dbname); +Status checkAuthForDropAllRolesFromDatabaseCommand(Client* client, const std::string& dbname); -Status checkAuthForRolesInfoCommand(ClientBasic* client, +Status checkAuthForRolesInfoCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); -Status checkAuthForInvalidateUserCacheCommand(ClientBasic* client); +Status checkAuthForInvalidateUserCacheCommand(Client* client); -Status checkAuthForGetUserCacheGenerationCommand(ClientBasic* client); +Status checkAuthForGetUserCacheGenerationCommand(Client* client); -Status checkAuthForMergeAuthzCollectionsCommand(ClientBasic* client, const BSONObj& cmdObj); +Status checkAuthForMergeAuthzCollectionsCommand(Client* client, const BSONObj& cmdObj); -Status checkAuthForAuthSchemaUpgradeCommand(ClientBasic* client); +Status checkAuthForAuthSchemaUpgradeCommand(Client* client); } // namespace auth } // namespace mongo diff --git a/src/mongo/db/commands/user_management_commands_common.cpp b/src/mongo/db/commands/user_management_commands_common.cpp index 72ef7f1d033..6b3fc2f4b19 100644 --- a/src/mongo/db/commands/user_management_commands_common.cpp +++ b/src/mongo/db/commands/user_management_commands_common.cpp @@ -110,7 +110,7 @@ Status checkAuthorizedToRevokePrivileges(AuthorizationSession* authzSession, return Status::OK(); } -Status checkAuthForCreateUserCommand(ClientBasic* client, +Status checkAuthForCreateUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -130,7 +130,7 @@ Status checkAuthForCreateUserCommand(ClientBasic* client, return checkAuthorizedToGrantRoles(authzSession, args.roles); } -Status checkAuthForUpdateUserCommand(ClientBasic* client, +Status checkAuthForUpdateUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -178,7 +178,7 @@ Status checkAuthForUpdateUserCommand(ClientBasic* client, return Status::OK(); } -Status checkAuthForGrantRolesToUserCommand(ClientBasic* client, +Status checkAuthForGrantRolesToUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -193,7 +193,7 @@ Status checkAuthForGrantRolesToUserCommand(ClientBasic* client, return checkAuthorizedToGrantRoles(authzSession, roles); } -Status checkAuthForCreateRoleCommand(ClientBasic* client, +Status checkAuthForCreateRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -217,7 +217,7 @@ Status checkAuthForCreateRoleCommand(ClientBasic* client, return checkAuthorizedToGrantPrivileges(authzSession, args.privileges); } -Status checkAuthForUpdateRoleCommand(ClientBasic* client, +Status checkAuthForUpdateRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -244,7 +244,7 @@ Status checkAuthForUpdateRoleCommand(ClientBasic* client, return checkAuthorizedToGrantPrivileges(authzSession, args.privileges); } -Status checkAuthForGrantRolesToRoleCommand(ClientBasic* client, +Status checkAuthForGrantRolesToRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -259,7 +259,7 @@ Status checkAuthForGrantRolesToRoleCommand(ClientBasic* client, return checkAuthorizedToGrantRoles(authzSession, roles); } -Status checkAuthForGrantPrivilegesToRoleCommand(ClientBasic* client, +Status checkAuthForGrantPrivilegesToRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -274,7 +274,7 @@ Status checkAuthForGrantPrivilegesToRoleCommand(ClientBasic* client, return checkAuthorizedToGrantPrivileges(authzSession, privileges); } -Status checkAuthForDropUserCommand(ClientBasic* client, +Status checkAuthForDropUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -293,7 +293,7 @@ Status checkAuthForDropUserCommand(ClientBasic* client, return Status::OK(); } -Status checkAuthForDropRoleCommand(ClientBasic* client, +Status checkAuthForDropRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -312,7 +312,7 @@ Status checkAuthForDropRoleCommand(ClientBasic* client, return Status::OK(); } -Status checkAuthForDropAllUsersFromDatabaseCommand(ClientBasic* client, const std::string& dbname) { +Status checkAuthForDropAllUsersFromDatabaseCommand(Client* client, const std::string& dbname) { AuthorizationSession* authzSession = AuthorizationSession::get(client); if (!authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forDatabaseName(dbname), ActionType::dropUser)) { @@ -323,7 +323,7 @@ Status checkAuthForDropAllUsersFromDatabaseCommand(ClientBasic* client, const st return Status::OK(); } -Status checkAuthForRevokeRolesFromUserCommand(ClientBasic* client, +Status checkAuthForRevokeRolesFromUserCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -338,7 +338,7 @@ Status checkAuthForRevokeRolesFromUserCommand(ClientBasic* client, return checkAuthorizedToRevokeRoles(authzSession, roles); } -Status checkAuthForRevokeRolesFromRoleCommand(ClientBasic* client, +Status checkAuthForRevokeRolesFromRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -353,7 +353,7 @@ Status checkAuthForRevokeRolesFromRoleCommand(ClientBasic* client, return checkAuthorizedToRevokeRoles(authzSession, roles); } -Status checkAuthForUsersInfoCommand(ClientBasic* client, +Status checkAuthForUsersInfoCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -387,7 +387,7 @@ Status checkAuthForUsersInfoCommand(ClientBasic* client, return Status::OK(); } -Status checkAuthForRevokePrivilegesFromRoleCommand(ClientBasic* client, +Status checkAuthForRevokePrivilegesFromRoleCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -402,7 +402,7 @@ Status checkAuthForRevokePrivilegesFromRoleCommand(ClientBasic* client, return checkAuthorizedToRevokePrivileges(authzSession, privileges); } -Status checkAuthForDropAllRolesFromDatabaseCommand(ClientBasic* client, const std::string& dbname) { +Status checkAuthForDropAllRolesFromDatabaseCommand(Client* client, const std::string& dbname) { AuthorizationSession* authzSession = AuthorizationSession::get(client); if (!authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forDatabaseName(dbname), ActionType::dropRole)) { @@ -413,7 +413,7 @@ Status checkAuthForDropAllRolesFromDatabaseCommand(ClientBasic* client, const st return Status::OK(); } -Status checkAuthForRolesInfoCommand(ClientBasic* client, +Status checkAuthForRolesInfoCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -450,7 +450,7 @@ Status checkAuthForRolesInfoCommand(ClientBasic* client, return Status::OK(); } -Status checkAuthForInvalidateUserCacheCommand(ClientBasic* client) { +Status checkAuthForInvalidateUserCacheCommand(Client* client) { AuthorizationSession* authzSession = AuthorizationSession::get(client); if (!authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forClusterResource(), ActionType::invalidateUserCache)) { @@ -459,7 +459,7 @@ Status checkAuthForInvalidateUserCacheCommand(ClientBasic* client) { return Status::OK(); } -Status checkAuthForGetUserCacheGenerationCommand(ClientBasic* client) { +Status checkAuthForGetUserCacheGenerationCommand(Client* client) { AuthorizationSession* authzSession = AuthorizationSession::get(client); if (!authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forClusterResource(), ActionType::internal)) { @@ -468,7 +468,7 @@ Status checkAuthForGetUserCacheGenerationCommand(ClientBasic* client) { return Status::OK(); } -Status checkAuthForMergeAuthzCollectionsCommand(ClientBasic* client, const BSONObj& cmdObj) { +Status checkAuthForMergeAuthzCollectionsCommand(Client* client, const BSONObj& cmdObj) { auth::MergeAuthzCollectionsArgs args; Status status = auth::parseMergeAuthzCollectionsCommand(cmdObj, &args); if (!status.isOK()) { @@ -508,7 +508,7 @@ Status checkAuthForMergeAuthzCollectionsCommand(ClientBasic* client, const BSONO return Status::OK(); } -Status checkAuthForAuthSchemaUpgradeCommand(ClientBasic* client) { +Status checkAuthForAuthSchemaUpgradeCommand(Client* client) { AuthorizationSession* authzSession = AuthorizationSession::get(client); if (!authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forClusterResource(), ActionType::authSchemaUpgrade)) { diff --git a/src/mongo/db/commands/write_commands/write_commands.cpp b/src/mongo/db/commands/write_commands/write_commands.cpp index 97f2996baad..506709096b8 100644 --- a/src/mongo/db/commands/write_commands/write_commands.cpp +++ b/src/mongo/db/commands/write_commands/write_commands.cpp @@ -75,7 +75,7 @@ void redactTooLongLog(mutablebson::Document* cmdObj, StringData fieldName) { } } -Status checkAuthForWriteCommand(ClientBasic* client, +Status checkAuthForWriteCommand(Client* client, BatchedCommandRequest::BatchType batchType, NamespaceString ns, const BSONObj& cmdObj) { @@ -242,7 +242,7 @@ public: help << "insert documents"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { return checkAuthForWriteCommand(client, @@ -278,7 +278,7 @@ public: help << "update documents"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { return checkAuthForWriteCommand(client, @@ -346,7 +346,7 @@ public: help << "delete documents"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { return checkAuthForWriteCommand(client, diff --git a/src/mongo/db/exec/group.cpp b/src/mongo/db/exec/group.cpp index ccd2cea6991..7acaebdf7fa 100644 --- a/src/mongo/db/exec/group.cpp +++ b/src/mongo/db/exec/group.cpp @@ -33,7 +33,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/bson/dotted_path_support.h" #include "mongo/db/catalog/collection.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/exec/scoped_timer.h" #include "mongo/db/exec/working_set_common.h" #include "mongo/stdx/memory.h" @@ -93,7 +93,7 @@ GroupStage::GroupStage(OperationContext* txn, Status GroupStage::initGroupScripting() { // Initialize _scope. const std::string userToken = - AuthorizationSession::get(ClientBasic::getCurrent())->getAuthenticatedUserNamesToken(); + AuthorizationSession::get(Client::getCurrent())->getAuthenticatedUserNamesToken(); const NamespaceString nss(_request.ns); _scope = diff --git a/src/mongo/db/ftdc/ftdc_commands.cpp b/src/mongo/db/ftdc/ftdc_commands.cpp index 8fea20ee1da..e9205b1b5ab 100644 --- a/src/mongo/db/ftdc/ftdc_commands.cpp +++ b/src/mongo/db/ftdc/ftdc_commands.cpp @@ -65,7 +65,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { diff --git a/src/mongo/db/matcher/expression_where.cpp b/src/mongo/db/matcher/expression_where.cpp index 1e24dbc2501..91c7feb1a03 100644 --- a/src/mongo/db/matcher/expression_where.cpp +++ b/src/mongo/db/matcher/expression_where.cpp @@ -69,7 +69,7 @@ Status WhereMatchExpression::init(StringData dbName) { _dbName = dbName.toString(); const string userToken = - AuthorizationSession::get(ClientBasic::getCurrent())->getAuthenticatedUserNamesToken(); + AuthorizationSession::get(Client::getCurrent())->getAuthenticatedUserNamesToken(); try { _scope = globalScriptEngine->getPooledScope(_txn, _dbName, "where" + userToken); diff --git a/src/mongo/db/pipeline/pipeline.cpp b/src/mongo/db/pipeline/pipeline.cpp index d8c388eff73..a4f1325933f 100644 --- a/src/mongo/db/pipeline/pipeline.cpp +++ b/src/mongo/db/pipeline/pipeline.cpp @@ -182,9 +182,7 @@ void addPrivilegesForStage(const std::string& db, } // namespace -Status Pipeline::checkAuthForCommand(ClientBasic* client, - const std::string& db, - const BSONObj& cmdObj) { +Status Pipeline::checkAuthForCommand(Client* client, const std::string& db, const BSONObj& cmdObj) { NamespaceString inputNs(db, cmdObj.firstElement().str()); auto inputResource = ResourcePattern::forExactNamespace(inputNs); uassert(17138, diff --git a/src/mongo/db/pipeline/pipeline.h b/src/mongo/db/pipeline/pipeline.h index 531411fae60..2b4cb3faacd 100644 --- a/src/mongo/db/pipeline/pipeline.h +++ b/src/mongo/db/pipeline/pipeline.h @@ -42,7 +42,7 @@ namespace mongo { class BSONObj; class BSONObjBuilder; -class ClientBasic; +class Client; class CollatorInterface; class DocumentSource; struct ExpressionContext; @@ -77,7 +77,7 @@ public: /** * Helper to implement Command::checkAuthForCommand. */ - static Status checkAuthForCommand(ClientBasic* client, + static Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj); diff --git a/src/mongo/db/repl/repl_set_command.cpp b/src/mongo/db/repl/repl_set_command.cpp index 3d987c6d176..4bf96c23df2 100644 --- a/src/mongo/db/repl/repl_set_command.cpp +++ b/src/mongo/db/repl/repl_set_command.cpp @@ -35,7 +35,7 @@ namespace mongo { namespace repl { -Status ReplSetCommand::checkAuthForCommand(ClientBasic* client, +Status ReplSetCommand::checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/repl/repl_set_command.h b/src/mongo/db/repl/repl_set_command.h index 6c4d1bd620f..3eb2275a064 100644 --- a/src/mongo/db/repl/repl_set_command.h +++ b/src/mongo/db/repl/repl_set_command.h @@ -35,7 +35,7 @@ namespace mongo { class Status; -class ClientBasic; +class Client; class BSONObj; namespace repl { @@ -59,7 +59,7 @@ protected: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override; diff --git a/src/mongo/db/repl/replset_commands.cpp b/src/mongo/db/repl/replset_commands.cpp index 4c65ce87776..7011b1e9b9e 100644 --- a/src/mongo/db/repl/replset_commands.cpp +++ b/src/mongo/db/repl/replset_commands.cpp @@ -87,7 +87,7 @@ public: help << "Just for tests.\n"; } // No auth needed because it only works when enabled via command line. - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return Status::OK(); diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp index a642140b72c..e1540ee4c04 100644 --- a/src/mongo/db/repl/sync_tail.cpp +++ b/src/mongo/db/repl/sync_tail.cpp @@ -144,7 +144,7 @@ static TimerStats applyBatchStats; static ServerStatusMetricField<TimerStats> displayOpBatchesApplied("repl.apply.batches", &applyBatchStats); void initializePrefetchThread() { - if (!ClientBasic::getCurrent()) { + if (!Client::getCurrent()) { Client::initThreadIfNotAlready(); AuthorizationSession::get(cc())->grantInternalAuthorization(); } @@ -489,7 +489,7 @@ void applyOps(std::vector<MultiApplier::OperationPtrs>* writerVectors, void initializeWriterThread() { // Only do this once per thread - if (!ClientBasic::getCurrent()) { + if (!Client::getCurrent()) { Client::initThreadIfNotAlready(); AuthorizationSession::get(cc())->grantInternalAuthorization(); } diff --git a/src/mongo/db/repl/topology_coordinator_impl.cpp b/src/mongo/db/repl/topology_coordinator_impl.cpp index 0d6dd7ee627..d4f591e92f9 100644 --- a/src/mongo/db/repl/topology_coordinator_impl.cpp +++ b/src/mongo/db/repl/topology_coordinator_impl.cpp @@ -35,7 +35,7 @@ #include <limits> #include "mongo/db/audit.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/operation_context.h" #include "mongo/db/repl/heartbeat_response_action.h" #include "mongo/db/repl/is_master_response.h" diff --git a/src/mongo/db/s/cleanup_orphaned_cmd.cpp b/src/mongo/db/s/cleanup_orphaned_cmd.cpp index ee08330962d..37b90be8211 100644 --- a/src/mongo/db/s/cleanup_orphaned_cmd.cpp +++ b/src/mongo/db/s/cleanup_orphaned_cmd.cpp @@ -181,7 +181,7 @@ public: return false; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_add_shard_command.cpp b/src/mongo/db/s/config/configsvr_add_shard_command.cpp index 3bc7e2eeeb0..50d6f975a7c 100644 --- a/src/mongo/db/s/config/configsvr_add_shard_command.cpp +++ b/src/mongo/db/s/config/configsvr_add_shard_command.cpp @@ -76,7 +76,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( @@ -113,7 +113,7 @@ public: return appendCommandStatus(result, validationStatus); } - audit::logAddShard(ClientBasic::getCurrent(), + audit::logAddShard(Client::getCurrent(), parsedRequest.hasName() ? parsedRequest.getName() : "", parsedRequest.getConnString().toString(), parsedRequest.hasMaxSize() ? parsedRequest.getMaxSize() diff --git a/src/mongo/db/s/config/configsvr_add_shard_to_zone_command.cpp b/src/mongo/db/s/config/configsvr_add_shard_to_zone_command.cpp index bf1bfd86db3..1b0a3db4148 100644 --- a/src/mongo/db/s/config/configsvr_add_shard_to_zone_command.cpp +++ b/src/mongo/db/s/config/configsvr_add_shard_to_zone_command.cpp @@ -77,7 +77,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_commit_chunk_migration_command.cpp b/src/mongo/db/s/config/configsvr_commit_chunk_migration_command.cpp index 72760cdda65..98f026ef202 100644 --- a/src/mongo/db/s/config/configsvr_commit_chunk_migration_command.cpp +++ b/src/mongo/db/s/config/configsvr_commit_chunk_migration_command.cpp @@ -97,7 +97,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_control_balancer_command.cpp b/src/mongo/db/s/config/configsvr_control_balancer_command.cpp index eaf4223e4c0..3128023f7d6 100644 --- a/src/mongo/db/s/config/configsvr_control_balancer_command.cpp +++ b/src/mongo/db/s/config/configsvr_control_balancer_command.cpp @@ -62,7 +62,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_move_chunk_command.cpp b/src/mongo/db/s/config/configsvr_move_chunk_command.cpp index d85f29b7417..89e4a8b4a86 100644 --- a/src/mongo/db/s/config/configsvr_move_chunk_command.cpp +++ b/src/mongo/db/s/config/configsvr_move_chunk_command.cpp @@ -68,7 +68,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_remove_shard_from_zone_command.cpp b/src/mongo/db/s/config/configsvr_remove_shard_from_zone_command.cpp index 5b5f4a79c05..376bf5cfd5f 100644 --- a/src/mongo/db/s/config/configsvr_remove_shard_from_zone_command.cpp +++ b/src/mongo/db/s/config/configsvr_remove_shard_from_zone_command.cpp @@ -77,7 +77,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/config/configsvr_update_zone_key_range_command.cpp b/src/mongo/db/s/config/configsvr_update_zone_key_range_command.cpp index 8ec850654a0..09ff5f8bf74 100644 --- a/src/mongo/db/s/config/configsvr_update_zone_key_range_command.cpp +++ b/src/mongo/db/s/config/configsvr_update_zone_key_range_command.cpp @@ -79,7 +79,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/get_shard_version_command.cpp b/src/mongo/db/s/get_shard_version_command.cpp index 4420a064fae..a14732867d7 100644 --- a/src/mongo/db/s/get_shard_version_command.cpp +++ b/src/mongo/db/s/get_shard_version_command.cpp @@ -67,7 +67,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/merge_chunks_command.cpp b/src/mongo/db/s/merge_chunks_command.cpp index 510f816d56e..a309f77cb47 100644 --- a/src/mongo/db/s/merge_chunks_command.cpp +++ b/src/mongo/db/s/merge_chunks_command.cpp @@ -367,7 +367,7 @@ public: << " (opt) shardName : <shard name> }"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/move_chunk_command.cpp b/src/mongo/db/s/move_chunk_command.cpp index 493bf35ad3d..64b5d2081d4 100644 --- a/src/mongo/db/s/move_chunk_command.cpp +++ b/src/mongo/db/s/move_chunk_command.cpp @@ -119,7 +119,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/split_chunk_command.cpp b/src/mongo/db/s/split_chunk_command.cpp index 54cf2e4bb83..059f1634168 100644 --- a/src/mongo/db/s/split_chunk_command.cpp +++ b/src/mongo/db/s/split_chunk_command.cpp @@ -125,7 +125,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/s/split_vector_command.cpp b/src/mongo/db/s/split_vector_command.cpp index 5ee14dc09cf..5ed698daad1 100644 --- a/src/mongo/db/s/split_vector_command.cpp +++ b/src/mongo/db/s/split_vector_command.cpp @@ -92,7 +92,7 @@ public: " 'force' will produce one split point even if data is small; defaults to false\n" "NOTE: This command may take a while to run"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/db/server_extra_log_context.cpp b/src/mongo/db/server_extra_log_context.cpp index c056651b0cb..bce96112075 100644 --- a/src/mongo/db/server_extra_log_context.cpp +++ b/src/mongo/db/server_extra_log_context.cpp @@ -34,7 +34,7 @@ #include "mongo/bson/util/builder.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/user_set.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/server_parameters.h" #include "mongo/util/log.h" @@ -49,13 +49,13 @@ MONGO_EXPORT_STARTUP_SERVER_PARAMETER(logUserIds, bool, false); * includeEndingNull parameter. */ void appendServerExtraLogContext(BufBuilder& builder) { - ClientBasic* clientBasic = ClientBasic::getCurrent(); - if (!clientBasic) + Client* client = Client::getCurrent(); + if (!client) return; - if (!AuthorizationSession::exists(clientBasic)) + if (!AuthorizationSession::exists(client)) return; - UserNameIterator users = AuthorizationSession::get(clientBasic)->getAuthenticatedUserNames(); + UserNameIterator users = AuthorizationSession::get(client)->getAuthenticatedUserNames(); if (!users.more()) return; diff --git a/src/mongo/rpc/metadata/client_metadata.h b/src/mongo/rpc/metadata/client_metadata.h index a809484e20d..48966f529db 100644 --- a/src/mongo/rpc/metadata/client_metadata.h +++ b/src/mongo/rpc/metadata/client_metadata.h @@ -40,7 +40,6 @@ namespace mongo { class Client; -class ClientBasic; class OperationContext; constexpr auto kMetadataDocumentName = "client"_sd; diff --git a/src/mongo/rpc/metadata/client_metadata_ismaster.cpp b/src/mongo/rpc/metadata/client_metadata_ismaster.cpp index 2df2461dfa3..234f61c78e8 100644 --- a/src/mongo/rpc/metadata/client_metadata_ismaster.cpp +++ b/src/mongo/rpc/metadata/client_metadata_ismaster.cpp @@ -44,11 +44,11 @@ namespace mongo { namespace { const auto getClientMetadataIsMasterState = - ClientBasic::declareDecoration<ClientMetadataIsMasterState>(); + Client::declareDecoration<ClientMetadataIsMasterState>(); } // namespace -ClientMetadataIsMasterState& ClientMetadataIsMasterState::get(ClientBasic* client) { +ClientMetadataIsMasterState& ClientMetadataIsMasterState::get(Client* client) { return getClientMetadataIsMasterState(*client); } diff --git a/src/mongo/rpc/metadata/client_metadata_ismaster.h b/src/mongo/rpc/metadata/client_metadata_ismaster.h index eb1f92e5033..305018343d0 100644 --- a/src/mongo/rpc/metadata/client_metadata_ismaster.h +++ b/src/mongo/rpc/metadata/client_metadata_ismaster.h @@ -38,7 +38,6 @@ namespace mongo { class Client; -class ClientBasic; /** * ClientMetadataIsMasterState is responsible for tracking whether the client metadata document has @@ -50,7 +49,7 @@ class ClientMetadataIsMasterState { public: ClientMetadataIsMasterState() = default; - static ClientMetadataIsMasterState& get(ClientBasic* client); + static ClientMetadataIsMasterState& get(Client* client); /** * Get the optional client metadata object. diff --git a/src/mongo/s/cluster_last_error_info.cpp b/src/mongo/s/cluster_last_error_info.cpp index 6ff23456c6c..b474574f35b 100644 --- a/src/mongo/s/cluster_last_error_info.cpp +++ b/src/mongo/s/cluster_last_error_info.cpp @@ -34,8 +34,8 @@ namespace mongo { -const ClientBasic::Decoration<ClusterLastErrorInfo> ClusterLastErrorInfo::get = - ClientBasic::declareDecoration<ClusterLastErrorInfo>(); +const Client::Decoration<ClusterLastErrorInfo> ClusterLastErrorInfo::get = + Client::declareDecoration<ClusterLastErrorInfo>(); void ClusterLastErrorInfo::addShardHost(const std::string& shardHost) { _cur->shardHostsWritten.insert(shardHost); diff --git a/src/mongo/s/cluster_last_error_info.h b/src/mongo/s/cluster_last_error_info.h index 0fc317c660b..648ae12b8b5 100644 --- a/src/mongo/s/cluster_last_error_info.h +++ b/src/mongo/s/cluster_last_error_info.h @@ -29,7 +29,7 @@ #include <set> -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/s/write_ops/batch_write_exec.h" namespace mongo { @@ -40,7 +40,7 @@ namespace mongo { */ class ClusterLastErrorInfo { public: - static const ClientBasic::Decoration<ClusterLastErrorInfo> get; + static const Client::Decoration<ClusterLastErrorInfo> get; /** new request not associated (yet or ever) with a client */ void newRequest(); diff --git a/src/mongo/s/commands/cluster_add_shard_to_zone_cmd.cpp b/src/mongo/s/commands/cluster_add_shard_to_zone_cmd.cpp index 381328fcd91..36d504c276d 100644 --- a/src/mongo/s/commands/cluster_add_shard_to_zone_cmd.cpp +++ b/src/mongo/s/commands/cluster_add_shard_to_zone_cmd.cpp @@ -85,7 +85,7 @@ public: help << "adds a shard to zone"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_control_balancer_cmd.cpp b/src/mongo/s/commands/cluster_control_balancer_cmd.cpp index 50fbf6ba6eb..d7a1337aed0 100644 --- a/src/mongo/s/commands/cluster_control_balancer_cmd.cpp +++ b/src/mongo/s/commands/cluster_control_balancer_cmd.cpp @@ -66,7 +66,7 @@ public: help << "Starts or stops the sharding balancer."; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_current_op.cpp b/src/mongo/s/commands/cluster_current_op.cpp index dd200b08dd8..c9a307c4c39 100644 --- a/src/mongo/s/commands/cluster_current_op.cpp +++ b/src/mongo/s/commands/cluster_current_op.cpp @@ -62,7 +62,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { bool isAuthorized = AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_enable_sharding_cmd.cpp b/src/mongo/s/commands/cluster_enable_sharding_cmd.cpp index ff11011a59d..e6352a95fa1 100644 --- a/src/mongo/s/commands/cluster_enable_sharding_cmd.cpp +++ b/src/mongo/s/commands/cluster_enable_sharding_cmd.cpp @@ -37,7 +37,7 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_manager.h" #include "mongo/db/auth/authorization_session.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/s/catalog/catalog_cache.h" #include "mongo/s/catalog/sharding_catalog_client.h" @@ -71,7 +71,7 @@ public: << " { enablesharding : \"<dbname>\" }\n"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( @@ -107,7 +107,7 @@ public: Status status = grid.catalogClient(txn)->enableSharding(txn, dbname); if (status.isOK()) { - audit::logEnableSharding(ClientBasic::getCurrent(), dbname); + audit::logEnableSharding(Client::getCurrent(), dbname); } // Make sure to force update of any stale metadata diff --git a/src/mongo/s/commands/cluster_explain_cmd.cpp b/src/mongo/s/commands/cluster_explain_cmd.cpp index eddac77e971..0218e257b36 100644 --- a/src/mongo/s/commands/cluster_explain_cmd.cpp +++ b/src/mongo/s/commands/cluster_explain_cmd.cpp @@ -87,7 +87,7 @@ public: * the command that you are explaining. The auth check is performed recursively * on the nested command. */ - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (Object != cmdObj.firstElement().type()) { diff --git a/src/mongo/s/commands/cluster_find_cmd.cpp b/src/mongo/s/commands/cluster_find_cmd.cpp index 9a742c979e6..b9488073a2f 100644 --- a/src/mongo/s/commands/cluster_find_cmd.cpp +++ b/src/mongo/s/commands/cluster_find_cmd.cpp @@ -92,7 +92,7 @@ public: * In order to run the find command, you must be authorized for the "find" action * type on the collection. */ - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { NamespaceString nss(parseNs(dbname, cmdObj)); diff --git a/src/mongo/s/commands/cluster_ftdc_commands.cpp b/src/mongo/s/commands/cluster_ftdc_commands.cpp index bfe339198c4..23903e92984 100644 --- a/src/mongo/s/commands/cluster_ftdc_commands.cpp +++ b/src/mongo/s/commands/cluster_ftdc_commands.cpp @@ -64,7 +64,7 @@ public: return false; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { return Status::OK(); diff --git a/src/mongo/s/commands/cluster_get_shard_version_cmd.cpp b/src/mongo/s/commands/cluster_get_shard_version_cmd.cpp index 5cb36e28f93..eb603d27cb3 100644 --- a/src/mongo/s/commands/cluster_get_shard_version_cmd.cpp +++ b/src/mongo/s/commands/cluster_get_shard_version_cmd.cpp @@ -66,7 +66,7 @@ public: help << " example: { getShardVersion : 'alleyinsider.foo' } "; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_getmore_cmd.cpp b/src/mongo/s/commands/cluster_getmore_cmd.cpp index 270100a2b47..dff5c9c7e4a 100644 --- a/src/mongo/s/commands/cluster_getmore_cmd.cpp +++ b/src/mongo/s/commands/cluster_getmore_cmd.cpp @@ -78,7 +78,7 @@ public: help << "retrieve more documents for a cursor id"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { StatusWith<GetMoreRequest> parseStatus = GetMoreRequest::parseFromBSON(dbname, cmdObj); diff --git a/src/mongo/s/commands/cluster_index_filter_cmd.cpp b/src/mongo/s/commands/cluster_index_filter_cmd.cpp index bbd7de10711..3a0824cddbf 100644 --- a/src/mongo/s/commands/cluster_index_filter_cmd.cpp +++ b/src/mongo/s/commands/cluster_index_filter_cmd.cpp @@ -78,9 +78,7 @@ public: ss << _helpText; } - Status checkAuthForCommand(ClientBasic* client, - const std::string& dbname, - const BSONObj& cmdObj) { + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); ResourcePattern pattern = parseResourcePattern(dbname, cmdObj); diff --git a/src/mongo/s/commands/cluster_kill_op.cpp b/src/mongo/s/commands/cluster_kill_op.cpp index caa46351279..ba698426fcc 100644 --- a/src/mongo/s/commands/cluster_kill_op.cpp +++ b/src/mongo/s/commands/cluster_kill_op.cpp @@ -68,7 +68,7 @@ public: return true; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { bool isAuthorized = AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_merge_chunks_cmd.cpp b/src/mongo/s/commands/cluster_merge_chunks_cmd.cpp index c935feedc3a..d534c29aadd 100644 --- a/src/mongo/s/commands/cluster_merge_chunks_cmd.cpp +++ b/src/mongo/s/commands/cluster_merge_chunks_cmd.cpp @@ -64,7 +64,7 @@ public: << "usage: { mergeChunks : <ns>, bounds : [ <min key>, <max key> ] }"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_move_chunk_cmd.cpp b/src/mongo/s/commands/cluster_move_chunk_cmd.cpp index 0afc654b245..282667dd6eb 100644 --- a/src/mongo/s/commands/cluster_move_chunk_cmd.cpp +++ b/src/mongo/s/commands/cluster_move_chunk_cmd.cpp @@ -35,7 +35,7 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_manager.h" #include "mongo/db/auth/authorization_session.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/write_concern_options.h" #include "mongo/s/balancer/balancer_configuration.h" @@ -82,7 +82,7 @@ public: << " , to : 'shard001' }\n"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_move_primary_cmd.cpp b/src/mongo/s/commands/cluster_move_primary_cmd.cpp index 028a15179fe..5db4f4aa666 100644 --- a/src/mongo/s/commands/cluster_move_primary_cmd.cpp +++ b/src/mongo/s/commands/cluster_move_primary_cmd.cpp @@ -39,7 +39,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/catalog/document_validation.h" #include "mongo/db/client.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/operation_context.h" #include "mongo/rpc/get_status_from_command_result.h" @@ -81,7 +81,7 @@ public: help << " example: { moveprimary : 'foo' , to : 'localhost:9999' }"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_pipeline_cmd.cpp b/src/mongo/s/commands/cluster_pipeline_cmd.cpp index 2a34bd623ad..919fd3116f5 100644 --- a/src/mongo/s/commands/cluster_pipeline_cmd.cpp +++ b/src/mongo/s/commands/cluster_pipeline_cmd.cpp @@ -96,7 +96,7 @@ public: } // virtuals from Command - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { return Pipeline::checkAuthForCommand(client, dbname, cmdObj); diff --git a/src/mongo/s/commands/cluster_plan_cache_cmd.cpp b/src/mongo/s/commands/cluster_plan_cache_cmd.cpp index 65c3035d993..bb053e15f26 100644 --- a/src/mongo/s/commands/cluster_plan_cache_cmd.cpp +++ b/src/mongo/s/commands/cluster_plan_cache_cmd.cpp @@ -29,7 +29,7 @@ #include "mongo/base/error_codes.h" #include "mongo/base/init.h" #include "mongo/db/auth/authorization_session.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/query/collation/collation_spec.h" #include "mongo/s/commands/strategy.h" @@ -74,9 +74,7 @@ public: return parseNsCollectionRequired(dbname, cmdObj).ns(); } - Status checkAuthForCommand(ClientBasic* client, - const std::string& dbname, - const BSONObj& cmdObj) { + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); ResourcePattern pattern = parseResourcePattern(dbname, cmdObj); diff --git a/src/mongo/s/commands/cluster_remove_shard_from_zone_cmd.cpp b/src/mongo/s/commands/cluster_remove_shard_from_zone_cmd.cpp index 40dda76c987..a24c7a63e3b 100644 --- a/src/mongo/s/commands/cluster_remove_shard_from_zone_cmd.cpp +++ b/src/mongo/s/commands/cluster_remove_shard_from_zone_cmd.cpp @@ -85,7 +85,7 @@ public: help << "removes a shard from the zone"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_repl_set_get_status_cmd.cpp b/src/mongo/s/commands/cluster_repl_set_get_status_cmd.cpp index f019370818f..5c342b14489 100644 --- a/src/mongo/s/commands/cluster_repl_set_get_status_cmd.cpp +++ b/src/mongo/s/commands/cluster_repl_set_get_status_cmd.cpp @@ -57,7 +57,7 @@ public: help << "Not supported through mongos"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { // Require no auth since this command isn't supported in mongos diff --git a/src/mongo/s/commands/cluster_shard_collection_cmd.cpp b/src/mongo/s/commands/cluster_shard_collection_cmd.cpp index 6ce23736609..25d74323b5c 100644 --- a/src/mongo/s/commands/cluster_shard_collection_cmd.cpp +++ b/src/mongo/s/commands/cluster_shard_collection_cmd.cpp @@ -41,7 +41,7 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_manager.h" #include "mongo/db/auth/authorization_session.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/hasher.h" #include "mongo/db/operation_context.h" @@ -92,7 +92,7 @@ public: << " { enablesharding : \"<dbname>\" }\n"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( @@ -475,8 +475,7 @@ public: LOG(0) << "CMD: shardcollection: " << cmdObj; - audit::logShardCollection( - ClientBasic::getCurrent(), nss.ns(), proposedKey, careAboutUnique); + audit::logShardCollection(Client::getCurrent(), nss.ns(), proposedKey, careAboutUnique); Status status = grid.catalogClient(txn)->shardCollection(txn, nss.ns(), diff --git a/src/mongo/s/commands/cluster_split_cmd.cpp b/src/mongo/s/commands/cluster_split_cmd.cpp index ebae1fd1e07..719ea3b5aaf 100644 --- a/src/mongo/s/commands/cluster_split_cmd.cpp +++ b/src/mongo/s/commands/cluster_split_cmd.cpp @@ -81,7 +81,7 @@ public: << " NOTE: this does not move the chunks, it just creates a logical separation."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_update_zone_key_range_cmd.cpp b/src/mongo/s/commands/cluster_update_zone_key_range_cmd.cpp index c50d92f576d..a08e0d32677 100644 --- a/src/mongo/s/commands/cluster_update_zone_key_range_cmd.cpp +++ b/src/mongo/s/commands/cluster_update_zone_key_range_cmd.cpp @@ -88,7 +88,7 @@ public: help << "assigns/remove a range of a sharded collection to a zone"; } - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) override { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( diff --git a/src/mongo/s/commands/cluster_user_management_commands.cpp b/src/mongo/s/commands/cluster_user_management_commands.cpp index 93e344c766c..1a200ce6c9c 100644 --- a/src/mongo/s/commands/cluster_user_management_commands.cpp +++ b/src/mongo/s/commands/cluster_user_management_commands.cpp @@ -73,7 +73,7 @@ public: ss << "Adds a user to the system"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForCreateUserCommand(client, dbname, cmdObj); @@ -112,7 +112,7 @@ public: ss << "Used to update a user, for example to change its password"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUpdateUserCommand(client, dbname, cmdObj); @@ -162,7 +162,7 @@ public: ss << "Drops a single user."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropUserCommand(client, dbname, cmdObj); @@ -208,7 +208,7 @@ public: ss << "Drops all users for a single database."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropAllUsersFromDatabaseCommand(client, dbname); @@ -249,7 +249,7 @@ public: ss << "Grants roles to a user."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantRolesToUserCommand(client, dbname, cmdObj); @@ -297,7 +297,7 @@ public: ss << "Revokes roles from a user."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokeRolesFromUserCommand(client, dbname, cmdObj); @@ -349,7 +349,7 @@ public: ss << "Returns information about users."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUsersInfoCommand(client, dbname, cmdObj); @@ -383,7 +383,7 @@ public: ss << "Adds a role to the system"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForCreateRoleCommand(client, dbname, cmdObj); @@ -418,7 +418,7 @@ public: ss << "Used to update a role"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForUpdateRoleCommand(client, dbname, cmdObj); @@ -459,7 +459,7 @@ public: ss << "Grants privileges to a role"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantPrivilegesToRoleCommand(client, dbname, cmdObj); @@ -500,7 +500,7 @@ public: ss << "Revokes privileges from a role"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokePrivilegesFromRoleCommand(client, dbname, cmdObj); @@ -541,7 +541,7 @@ public: ss << "Grants roles to another role."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForGrantRolesToRoleCommand(client, dbname, cmdObj); @@ -582,7 +582,7 @@ public: ss << "Revokes roles from another role."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRevokeRolesFromRoleCommand(client, dbname, cmdObj); @@ -626,7 +626,7 @@ public: "removed from some user/roles but otherwise still exists."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropRoleCommand(client, dbname, cmdObj); @@ -671,7 +671,7 @@ public: "exist."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForDropAllRolesFromDatabaseCommand(client, dbname); @@ -716,7 +716,7 @@ public: ss << "Returns information about roles."; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForRolesInfoCommand(client, dbname, cmdObj); @@ -754,7 +754,7 @@ public: ss << "Invalidates the in-memory cache of user information"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForInvalidateUserCacheCommand(client); @@ -805,7 +805,7 @@ public: ss << "Internal command used by mongorestore for updating user/role data"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForMergeAuthzCollectionsCommand(client, cmdObj); @@ -903,7 +903,7 @@ public: ss << "Upgrades the auth data storage schema"; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return auth::checkAuthForAuthSchemaUpgradeCommand(client); diff --git a/src/mongo/s/commands/cluster_write_cmd.cpp b/src/mongo/s/commands/cluster_write_cmd.cpp index 19a9969de6c..317019abb01 100644 --- a/src/mongo/s/commands/cluster_write_cmd.cpp +++ b/src/mongo/s/commands/cluster_write_cmd.cpp @@ -32,7 +32,7 @@ #include "mongo/base/owned_pointer_vector.h" #include "mongo/client/remote_command_targeter.h" #include "mongo/db/client.h" -#include "mongo/db/client_basic.h" +#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/commands/write_commands/write_commands_common.h" #include "mongo/db/lasterror.h" @@ -78,7 +78,7 @@ public: return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { Status status = auth::checkAuthForWriteCommand(AuthorizationSession::get(client), diff --git a/src/mongo/s/commands/commands_public.cpp b/src/mongo/s/commands/commands_public.cpp index ef395f11d35..3b2fc9630ad 100644 --- a/src/mongo/s/commands/commands_public.cpp +++ b/src/mongo/s/commands/commands_public.cpp @@ -501,7 +501,7 @@ public: class CreateCmd : public PublicGridCommand { public: CreateCmd() : PublicGridCommand("create") {} - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -594,7 +594,7 @@ public: class RenameCollectionCmd : public PublicGridCommand { public: RenameCollectionCmd() : PublicGridCommand("renameCollection") {} - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return rename_collection::checkAuthForRenameCollectionCommand(client, dbname, cmdObj); @@ -639,7 +639,7 @@ public: virtual bool adminOnly() const { return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return copydb::checkAuthForCopydbCommand(client, dbname, cmdObj); @@ -1081,7 +1081,7 @@ public: virtual bool supportsWriteConcern(const BSONObj& cmd) const override { return false; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { if (!AuthorizationSession::get(client)->isAuthorizedForActionsOnResource( @@ -1694,7 +1694,7 @@ class CmdListCollections final : public PublicGridCommand { public: CmdListCollections() : PublicGridCommand("listCollections") {} - Status checkAuthForCommand(ClientBasic* client, + Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) final { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -1735,7 +1735,7 @@ public: class CmdListIndexes final : public PublicGridCommand { public: CmdListIndexes() : PublicGridCommand("listIndexes") {} - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { AuthorizationSession* authzSession = AuthorizationSession::get(client); @@ -1783,7 +1783,7 @@ public: virtual bool slaveOk() const { return true; } - virtual Status checkAuthForCommand(ClientBasic* client, + virtual Status checkAuthForCommand(Client* client, const std::string& dbname, const BSONObj& cmdObj) { return Status::OK(); diff --git a/src/mongo/s/commands/strategy.cpp b/src/mongo/s/commands/strategy.cpp index dbd551c908e..6deb049d7ad 100644 --- a/src/mongo/s/commands/strategy.cpp +++ b/src/mongo/s/commands/strategy.cpp @@ -108,7 +108,7 @@ void runAgainstRegistered(OperationContext* txn, return; } - Command::execCommandClientBasic(txn, c, queryOptions, ns, jsobj, anObjBuilder); + Command::execCommandClient(txn, c, queryOptions, ns, jsobj, anObjBuilder); } /** @@ -159,7 +159,7 @@ void Strategy::queryOp(OperationContext* txn, Request& request) { QueryMessage q(request.d()); NamespaceString ns(q.ns); - ClientBasic* client = txn->getClient(); + Client* client = txn->getClient(); AuthorizationSession* authSession = AuthorizationSession::get(client); Status status = authSession->checkAuthForFind(ns, false); audit::logQueryAuthzCheck(client, ns, q.query, status.code()); diff --git a/src/mongo/s/s_only.cpp b/src/mongo/s/s_only.cpp index d29eb7de7a4..18db1dd374e 100644 --- a/src/mongo/s/s_only.cpp +++ b/src/mongo/s/s_only.cpp @@ -82,18 +82,17 @@ void Command::execCommand(OperationContext* txn, std::string db = request.getDatabase().rawData(); BSONObjBuilder result; - execCommandClientBasic( - txn, command, queryFlags, request.getDatabase().rawData(), cmdObj, result); + execCommandClient(txn, command, queryFlags, request.getDatabase().rawData(), cmdObj, result); replyBuilder->setCommandReply(result.done()).setMetadata(rpc::makeEmptyMetadata()); } -void Command::execCommandClientBasic(OperationContext* txn, - Command* c, - int queryOptions, - const char* ns, - BSONObj& cmdObj, - BSONObjBuilder& result) { +void Command::execCommandClient(OperationContext* txn, + Command* c, + int queryOptions, + const char* ns, + BSONObj& cmdObj, + BSONObjBuilder& result) { std::string dbname = nsToDatabase(ns); if (cmdObj.getBoolField("help")) { diff --git a/src/mongo/s/server.cpp b/src/mongo/s/server.cpp index 155deb809c5..809164b6e04 100644 --- a/src/mongo/s/server.cpp +++ b/src/mongo/s/server.cpp @@ -147,7 +147,7 @@ static void cleanupTask() { grid.catalogClient(txn)->shutDown(txn); } - audit::logShutdown(ClientBasic::getCurrent()); + audit::logShutdown(Client::getCurrent()); } static BSONObj buildErrReply(const DBException& ex) { |