diff --git a/arangod/RestServer/InitDatabaseFeature.cpp b/arangod/RestServer/InitDatabaseFeature.cpp index 580b44e73e9e..e94b371eac7f 100644 --- a/arangod/RestServer/InitDatabaseFeature.cpp +++ b/arangod/RestServer/InitDatabaseFeature.cpp @@ -34,8 +34,10 @@ using namespace arangodb::application_features; using namespace arangodb::basics; using namespace arangodb::options; -InitDatabaseFeature::InitDatabaseFeature(ApplicationServer* server) - : ApplicationFeature(server, "InitDatabase") { +InitDatabaseFeature::InitDatabaseFeature(ApplicationServer* server, + std::vector const& nonServerFeatures) + : ApplicationFeature(server, "InitDatabase"), + _nonServerFeatures(nonServerFeatures) { setOptional(false); requiresElevatedPrivileges(false); startsAfter("Logger"); @@ -62,6 +64,10 @@ void InitDatabaseFeature::validateOptions( std::shared_ptr options) { ProgramOptions::ProcessingResult const& result = options->processingResult(); _seenPassword = result.touched("database.password"); + + if (_initDatabase || _restoreAdmin) { + ApplicationServer::forceDisableFeatures(_nonServerFeatures); + } } void InitDatabaseFeature::prepare() { diff --git a/arangod/RestServer/InitDatabaseFeature.h b/arangod/RestServer/InitDatabaseFeature.h index 43fa119256a2..062613d8476b 100644 --- a/arangod/RestServer/InitDatabaseFeature.h +++ b/arangod/RestServer/InitDatabaseFeature.h @@ -29,7 +29,8 @@ namespace arangodb { class InitDatabaseFeature final : public application_features::ApplicationFeature { public: - explicit InitDatabaseFeature(application_features::ApplicationServer* server); + InitDatabaseFeature(application_features::ApplicationServer* server, + std::vector const& nonServerFeatures); public: std::string const& defaultPassword() const { return _password; } @@ -52,6 +53,7 @@ class InitDatabaseFeature final private: bool _seenPassword = false; + std::vector _nonServerFeatures; }; } diff --git a/arangod/RestServer/arangod.cpp b/arangod/RestServer/arangod.cpp index 0702c23fb20c..b9edcaa01454 100644 --- a/arangod/RestServer/arangod.cpp +++ b/arangod/RestServer/arangod.cpp @@ -120,7 +120,7 @@ static int runServer(int argc, char** argv) { server.addFeature(new FileDescriptorsFeature(&server)); server.addFeature(new FoxxQueuesFeature(&server)); server.addFeature(new FrontendFeature(&server)); - server.addFeature(new InitDatabaseFeature(&server)); + server.addFeature(new InitDatabaseFeature(&server, nonServerFeatures)); server.addFeature(new LanguageFeature(&server)); server.addFeature(new LogfileManager(&server)); server.addFeature(new LoggerBufferFeature(&server)); diff --git a/etc/arangodb3/arango-init-database.conf.in b/etc/arangodb3/arango-init-database.conf.in index 6803c5df936f..53afd4baf5d1 100644 --- a/etc/arangodb3/arango-init-database.conf.in +++ b/etc/arangodb3/arango-init-database.conf.in @@ -1,4 +1,10 @@ @include arangod +[server] +rest-server = false + +[log] +level = error + [database] -init-database = true \ No newline at end of file +init-database = true diff --git a/etc/arangodb3/arango-secure-installation.conf.in b/etc/arangodb3/arango-secure-installation.conf.in index 0c876c892675..130a6835e775 100644 --- a/etc/arangodb3/arango-secure-installation.conf.in +++ b/etc/arangodb3/arango-secure-installation.conf.in @@ -1,4 +1,10 @@ @include arangod +[server] +rest-server = false + +[log] +level = error + [database] -restore-admin = true \ No newline at end of file +restore-admin = true diff --git a/etc/relative/arango-init-database.conf b/etc/relative/arango-init-database.conf index d0fac90602d7..53afd4baf5d1 100644 --- a/etc/relative/arango-init-database.conf +++ b/etc/relative/arango-init-database.conf @@ -3,5 +3,8 @@ [server] rest-server = false +[log] +level = error + [database] init-database = true diff --git a/etc/relative/arango-secure-installation.conf b/etc/relative/arango-secure-installation.conf index 0c876c892675..130a6835e775 100644 --- a/etc/relative/arango-secure-installation.conf +++ b/etc/relative/arango-secure-installation.conf @@ -1,4 +1,10 @@ @include arangod +[server] +rest-server = false + +[log] +level = error + [database] -restore-admin = true \ No newline at end of file +restore-admin = true diff --git a/js/server/restore-admin-user.js b/js/server/restore-admin-user.js index d164c9e92949..8e7939bc150d 100644 --- a/js/server/restore-admin-user.js +++ b/js/server/restore-admin-user.js @@ -28,12 +28,9 @@ var args = global.UPGRADE_ARGS; delete global.UPGRADE_ARGS; - const users = require("@arangodb/users"); + require("internal").db._users.truncate(); - try { - users.remove("root"); - } catch (e) { - } + const users = require("@arangodb/users"); users.save("root", args.password, true); users.grantDatabase("root", "*", "rw");