From 64d35e9c5ff15248760aedca69fe36d64d313bbd Mon Sep 17 00:00:00 2001 From: Martin Raiber Date: Thu, 17 Feb 2011 19:31:21 +0100 Subject: [PATCH] Make client autoupdate configurable --- urbackup/server_cleanup.cpp | 14 ++++++++++++-- urbackup/server_get.cpp | 8 ++++++-- urbackup/server_settings.cpp | 1 + urbackup/server_settings.h | 1 + urbackup/serverinterface/settings.cpp | 8 +++++++- urbackup/www/templates/settings_general.htm | 4 ++++ 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/urbackup/server_cleanup.cpp b/urbackup/server_cleanup.cpp index 5d037f46..38dc39a8 100644 --- a/urbackup/server_cleanup.cpp +++ b/urbackup/server_cleanup.cpp @@ -57,11 +57,14 @@ void ServerCleanupThread::operator()(void) destroyQueries(); } + if( settings->getValue("autoupdate_clients", "true")=="true" ) { IScopedLock lock(a_mutex); ServerUpdate upd; upd(); } + + Server->destroy(settings); } while(true) @@ -102,14 +105,21 @@ void ServerCleanupThread::operator()(void) { IScopedLock lock(a_mutex); + ISettingsReader *settings=Server->createDBSettingsReader(db, "settings"); + ScopedActiveThread sat; - ServerUpdate upd; - upd(); + if( settings->getValue("autoupdate_clients", "true")=="true" ) + { + ServerUpdate upd; + upd(); + } createQueries(); do_cleanup(); destroyQueries(); + + Server->destroy(settings); } } } diff --git a/urbackup/server_get.cpp b/urbackup/server_get.cpp index db841b94..4aea6bd2 100644 --- a/urbackup/server_get.cpp +++ b/urbackup/server_get.cpp @@ -116,8 +116,9 @@ void BackupServerGet::operator ()(void) if(!b) { pipe->Write("ok"); - Server->Log("server_get Thread for client "+clientname+" finished, because the identity was not recognized"); + Server->Log("server_get Thread for client "+clientname+" finished, because the identity was not recognized", LL_INFO); + ServerStatus::setWrongIdent(clientname, true); ServerLogger::reset(clientid); delete this; return; @@ -191,7 +192,10 @@ void BackupServerGet::operator ()(void) ServerLogger::Log(clientid, "Sending backup incr intervall...", LL_DEBUG); sendClientBackupIncrIntervall(); - checkClientVersion(); + if(server_settings->getSettings()->autoupdate_clients) + { + checkClientVersion(); + } sendClientLogdata(); diff --git a/urbackup/server_settings.cpp b/urbackup/server_settings.cpp index efc58759..501babd3 100644 --- a/urbackup/server_settings.cpp +++ b/urbackup/server_settings.cpp @@ -148,6 +148,7 @@ void ServerSettings::readSettingsDefault(void) settings.client_overwrite=true; settings.autoshutdown=false; settings.startup_backup_delay=settings_default->getValue("startup_backup_delay", 0); + settings.autoupdate_clients=(settings_default->getValue("autoupdate_clients", "true")=="true"); } void ServerSettings::readSettingsClient(void) diff --git a/urbackup/server_settings.h b/urbackup/server_settings.h index a4225970..f27481d2 100644 --- a/urbackup/server_settings.h +++ b/urbackup/server_settings.h @@ -24,6 +24,7 @@ struct SSettings bool client_overwrite; bool autoshutdown; int startup_backup_delay; + bool autoupdate_clients; }; class ServerSettings diff --git a/urbackup/serverinterface/settings.cpp b/urbackup/serverinterface/settings.cpp index 8980ee40..79603d6d 100644 --- a/urbackup/serverinterface/settings.cpp +++ b/urbackup/serverinterface/settings.cpp @@ -44,10 +44,11 @@ JSON::Object getJSONClientSettings(ServerSettings &settings) struct SGeneralSettings { - SGeneralSettings(void): no_images(false), autoshutdown(false) {} + SGeneralSettings(void): no_images(false), autoshutdown(false), autoupdate_clients(true) {} std::wstring backupfolder; bool no_images; bool autoshutdown; + bool autoupdate_clients; }; struct SClientSettings @@ -72,6 +73,8 @@ SGeneralSettings getGeneralSettings(IDatabase *db) ret.no_images=true; else if(key==L"autoshutdown" && value==L"true") ret.autoshutdown=true; + else if(key==L"autoupdate_clients" && value==L"false") + ret.autoupdate_clients=false; } return ret; } @@ -123,6 +126,7 @@ void saveGeneralSettings(SGeneralSettings settings, IDatabase *db) updateSetting(L"backupfolder", settings.backupfolder, q_get, q_update, q_insert); updateSetting(L"no_images", settings.no_images?L"true":L"false", q_get, q_update, q_insert); updateSetting(L"autoshutdown", settings.autoshutdown?L"true":L"false", q_get, q_update, q_insert); + updateSetting(L"autoupdate_clients", settings.autoupdate_clients?L"true":L"false", q_get, q_update, q_insert); } void saveClientSettings(SClientSettings settings, IDatabase *db, int clientid) @@ -455,6 +459,7 @@ ACTION_IMPL(settings) settings.backupfolder=GET[L"backupfolder"]; settings.no_images=(GET[L"no_images"]==L"true"); settings.autoshutdown=(GET[L"autoshutdown"]==L"true"); + settings.autoupdate_clients=(GET[L"autoupdate_clients"]==L"true"); updateClientSettings(0, GET, db); saveGeneralSettings(settings, db); @@ -474,6 +479,7 @@ ACTION_IMPL(settings) obj.set("backupfolder", settings.backupfolder); obj.set("no_images", settings.no_images); obj.set("autoshutdown", settings.autoshutdown); + obj.set("autoupdate_clients", settings.autoupdate_clients); ret.set("settings", obj); } diff --git a/urbackup/www/templates/settings_general.htm b/urbackup/www/templates/settings_general.htm index 64ced98d..33744d0d 100644 --- a/urbackup/www/templates/settings_general.htm +++ b/urbackup/www/templates/settings_general.htm @@ -12,6 +12,10 @@ #{tAutomatically shut down server}: + +#{tAutoupdate clients}: + + #{settings_inv}