mirror of
https://github.com/uroni/urbackup_backend.git
synced 2025-10-26 11:36:50 +00:00
Added default client backup dirs setting
This commit is contained in:
parent
659808a00c
commit
cd7a09f644
@ -1231,6 +1231,8 @@ void ClientConnector::getBackupDirs(int version)
|
||||
std::string msg;
|
||||
for(size_t i=0;i<res.size();++i)
|
||||
{
|
||||
if(res[i][L"name"]==L"*") continue;
|
||||
|
||||
msg+=Server->ConvertToUTF8(res[i][L"id"])+"\n";
|
||||
if(version!=0)
|
||||
{
|
||||
@ -1244,13 +1246,19 @@ void ClientConnector::getBackupDirs(int version)
|
||||
db->destroyAllQueries();
|
||||
}
|
||||
|
||||
bool ClientConnector::saveBackupDirs(str_map &args)
|
||||
bool ClientConnector::saveBackupDirs(str_map &args, bool server_default)
|
||||
{
|
||||
IDatabase *db=Server->getDatabase(Server->getThreadID(), URBACKUPDB_CLIENT);
|
||||
db->BeginTransaction();
|
||||
db_results backupdirs=db->Prepare("SELECT name, path FROM backupdirs")->Read();
|
||||
db->Prepare("DELETE FROM backupdirs")->Write();
|
||||
IQuery *q=db->Prepare("INSERT INTO backupdirs (name, path) VALUES (?, ?)");
|
||||
IQuery *q=db->Prepare("INSERT INTO backupdirs (name, path, server_default) VALUES (?, ? ,"+nconvert(server_default?1:0)+")");
|
||||
if(server_default==false)
|
||||
{
|
||||
q->Bind(L"*"); q->Bind(L"*");;
|
||||
q->Write();
|
||||
q->Reset();
|
||||
}
|
||||
IQuery *q2=db->Prepare("SELECT id FROM backupdirs WHERE name=?");
|
||||
std::wstring dir;
|
||||
size_t i=0;
|
||||
@ -1498,6 +1506,39 @@ void ClientConnector::updateSettings(const std::string &pData)
|
||||
}
|
||||
}
|
||||
|
||||
IDatabase *db=Server->getDatabase(Server->getThreadID(), URBACKUPDB_CLIENT);
|
||||
IQuery *q=db->Prepare("SELECT id FROM backupdirs WHERE server_default=0", false);
|
||||
db_results res=q->Read();
|
||||
db->destroyQuery(q);
|
||||
if(res.empty())
|
||||
{
|
||||
std::wstring default_dirs;
|
||||
if(!new_settings->getValue(L"default_dirs", &default_dirs) )
|
||||
new_settings->getValue(L"default_dirs_def", &default_dirs);
|
||||
|
||||
if(!default_dirs.empty())
|
||||
{
|
||||
std::vector<std::wstring> def_dirs_toks;
|
||||
Tokenize(default_dirs, def_dirs_toks, L";");
|
||||
str_map args;
|
||||
for(size_t i=0;i<def_dirs_toks.size();++i)
|
||||
{
|
||||
std::wstring path=def_dirs_toks[i];
|
||||
std::wstring name;
|
||||
if(path.find(L"|")!=std::string::npos)
|
||||
{
|
||||
name=getafter(L"|", path);
|
||||
path=getuntil(L"|", path);
|
||||
}
|
||||
args[L"dir_"+convert(i)]=path;
|
||||
if(!name.empty())
|
||||
args[L"dir_"+convert(i)+L"_name"]=name;
|
||||
}
|
||||
|
||||
saveBackupDirs(args, true);
|
||||
}
|
||||
}
|
||||
|
||||
Server->destroy(curr_settings);
|
||||
Server->destroy(new_settings);
|
||||
|
||||
@ -1523,6 +1564,7 @@ void ClientConnector::updateSettings(const std::string &pData)
|
||||
void ClientConnector::replaceSettings(const std::string &pData)
|
||||
{
|
||||
ISettingsReader *new_settings=Server->createMemorySettingsReader(pData);
|
||||
|
||||
std::wstring ncname=new_settings->getValue(L"computername", L"");
|
||||
if(!ncname.empty() && ncname!=IndexThread::getFileSrv()->getServerName())
|
||||
{
|
||||
@ -1531,6 +1573,7 @@ void ClientConnector::replaceSettings(const std::string &pData)
|
||||
data.addVoidPtr(NULL);
|
||||
IndexThread::getMsgPipe()->Write(data.getDataPtr(), data.getDataSize());
|
||||
}
|
||||
|
||||
Server->destroy(new_settings);
|
||||
IFile *sf=Server->openFile("urbackup/data/settings.cfg", MODE_WRITE);
|
||||
if(sf==NULL)
|
||||
|
||||
@ -29,7 +29,7 @@ public:
|
||||
private:
|
||||
bool checkPassword(const std::wstring &cmd);
|
||||
void getBackupDirs(int version=0);
|
||||
bool saveBackupDirs(str_map &args);
|
||||
bool saveBackupDirs(str_map &args, bool server_default=false);
|
||||
void updateLastBackup(void);
|
||||
void getBackupStatus(void);
|
||||
std::string replaceChars(std::string in);
|
||||
|
||||
@ -211,7 +211,8 @@ std::vector<SBackupDir> ClientDAO::getBackupDirs(void)
|
||||
dir.tname=res[i][L"name"];
|
||||
dir.path=res[i][L"path"];
|
||||
|
||||
ret.push_back(dir);
|
||||
if(dir.tname!=L"*")
|
||||
ret.push_back(dir);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -38,6 +38,7 @@ std::vector<std::wstring> getSettingsList(void)
|
||||
ret.push_back(L"backup_window");
|
||||
ret.push_back(L"exclude_files");
|
||||
ret.push_back(L"computername");
|
||||
ret.push_back(L"default_dirs");
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -157,6 +158,7 @@ void ServerSettings::readSettingsDefault(void)
|
||||
settings.max_active_clients=settings_default->getValue("max_active_clients", 100);
|
||||
settings.max_sim_backups=settings_default->getValue("max_sim_backups", 10);
|
||||
settings.exclude_files=settings_default->getValue(L"exclude_files", L"");
|
||||
settings.default_dirs=settings_default->getValue(L"default_dirs", L"");
|
||||
}
|
||||
|
||||
void ServerSettings::readSettingsClient(void)
|
||||
@ -215,6 +217,9 @@ void ServerSettings::readSettingsClient(void)
|
||||
swtmp=settings_client->getValue(L"exclude_files", L"");
|
||||
if(!swtmp.empty())
|
||||
settings.exclude_files=swtmp;
|
||||
swtmp=settings_client->getValue(L"default_dirs", L"");
|
||||
if(!swtmp.empty())
|
||||
settings.default_dirs=swtmp;
|
||||
|
||||
stmp=settings_client->getValue("overwrite", "");
|
||||
if(!stmp.empty())
|
||||
|
||||
@ -30,6 +30,7 @@ struct SSettings
|
||||
std::string backup_window;
|
||||
std::wstring computername;
|
||||
std::wstring exclude_files;
|
||||
std::wstring default_dirs;
|
||||
};
|
||||
|
||||
struct STimeSpan
|
||||
|
||||
@ -42,6 +42,7 @@ JSON::Object getJSONClientSettings(ServerSettings &settings)
|
||||
ret.set("backup_window", settings.getSettings()->backup_window);
|
||||
ret.set("computername", settings.getSettings()->computername);
|
||||
ret.set("exclude_files", settings.getSettings()->exclude_files);
|
||||
ret.set("default_dirs", settings.getSettings()->default_dirs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user