mirror of
https://github.com/uroni/urbackup_backend.git
synced 2025-10-26 11:36:50 +00:00
70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
#include "action_header.h"
|
|
#include "../ClientMain.h"
|
|
|
|
ACTION_IMPL(add_client)
|
|
{
|
|
Helper helper(tid, &POST, &PARAMS);
|
|
JSON::Object ret;
|
|
|
|
SUser *session = helper.getSession();
|
|
if (session != NULL && session->id == SESSION_ID_INVALID) return;
|
|
if (session != NULL && helper.getRights("add_client")=="all")
|
|
{
|
|
if (POST["clientname"].empty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
int p_group_id = -1;
|
|
str_map::iterator group_id = POST.find("group_id");
|
|
if (group_id != POST.end())
|
|
{
|
|
p_group_id = watoi(group_id->second);
|
|
}
|
|
else
|
|
{
|
|
str_map::iterator group_name = POST.find("group_name");
|
|
if (group_name != POST.end())
|
|
{
|
|
IQuery* q = helper.getDatabase()->Prepare("SELECT id FROM settings_db.si_client_groups WHERE name=?");
|
|
q->Bind(group_name->second);
|
|
db_results res = q->Read();
|
|
q->Reset();
|
|
|
|
if (!res.empty())
|
|
{
|
|
p_group_id = watoi(res[0]["id"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool new_client = false;
|
|
std::string new_authkey;
|
|
int id = ClientMain::getClientID(helper.getDatabase(), POST["clientname"], NULL,
|
|
&new_client, &new_authkey, p_group_id>0 ? &p_group_id : NULL);
|
|
if (new_client)
|
|
{
|
|
ServerSettings settings(helper.getDatabase());
|
|
|
|
SSettings* s = settings.getSettings();
|
|
|
|
ret.set("new_clientid", id);
|
|
ret.set("new_clientname", POST["clientname"]);
|
|
ret.set("new_authkey", new_authkey);
|
|
ret.set("internet_server", s->internet_server);
|
|
ret.set("internet_server_port", s->internet_server_port);
|
|
ret.set("internet_server_proxy", s->internet_server_proxy);
|
|
ret.set("added_new_client", true);
|
|
}
|
|
else
|
|
{
|
|
ret.set("already_exists", true);
|
|
}
|
|
ret.set("ok", true);
|
|
}
|
|
else
|
|
{
|
|
ret.set("error", 1);
|
|
}
|
|
helper.Write(ret.stringify(false));
|
|
} |