Updates for the 1.5.1 version
This commit is contained in:
parent
dd8ea1c8d9
commit
7ff7d01cd3
@ -156,7 +156,9 @@ const std::vector<ErrorType> ts::availableErrors = {
|
|||||||
{0x0D01, "server_connect_banned" , "connection failed, you are banned" },
|
{0x0D01, "server_connect_banned" , "connection failed, you are banned" },
|
||||||
{0x0D03, "ban_flooding" , "flood ban" },
|
{0x0D03, "ban_flooding" , "flood ban" },
|
||||||
|
|
||||||
{0x0F00, "token_invalid_id" , "invalid privilege key" },
|
define_error_description(token_invalid_id, "token unknown"),
|
||||||
|
define_error_description(token_expired, "token has been expired"),
|
||||||
|
define_error_description(token_use_limit_exceeded, "token has reached its use limit"),
|
||||||
|
|
||||||
{0x1000, "web_handshake_invalid" , "Invalid handshake" },
|
{0x1000, "web_handshake_invalid" , "Invalid handshake" },
|
||||||
{0x1001, "web_handshake_unsupported" , "Handshake intention unsupported" },
|
{0x1001, "web_handshake_unsupported" , "Handshake intention unsupported" },
|
||||||
@ -260,6 +262,7 @@ void command_result::build_error_response(ts::command_builder &builder, const st
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(bulks->empty()) {
|
if(bulks->empty()) {
|
||||||
assert(false);
|
assert(false);
|
||||||
builder.put_unchecked(0, idKey, (uint32_t) error::ok);
|
builder.put_unchecked(0, idKey, (uint32_t) error::ok);
|
||||||
|
10
src/Error.h
10
src/Error.h
@ -163,7 +163,11 @@ namespace ts {
|
|||||||
accounting_slot_limit_reached = 0xb01,
|
accounting_slot_limit_reached = 0xb01,
|
||||||
server_connect_banned = 0xd01,
|
server_connect_banned = 0xd01,
|
||||||
ban_flooding = 0xd03,
|
ban_flooding = 0xd03,
|
||||||
|
|
||||||
token_invalid_id = 0xf00,
|
token_invalid_id = 0xf00,
|
||||||
|
token_expired = 0xf10,
|
||||||
|
token_use_limit_exceeded = 0xf11,
|
||||||
|
|
||||||
web_handshake_invalid = 0x1000,
|
web_handshake_invalid = 0x1000,
|
||||||
web_handshake_unsupported = 0x1001,
|
web_handshake_unsupported = 0x1001,
|
||||||
web_handshake_identity_unsupported = 0x1002,
|
web_handshake_identity_unsupported = 0x1002,
|
||||||
@ -378,8 +382,9 @@ namespace ts {
|
|||||||
explicit command_result_bulk(command_result&& result) { this->results.push_back(std::forward<command_result>(result)); }
|
explicit command_result_bulk(command_result&& result) { this->results.push_back(std::forward<command_result>(result)); }
|
||||||
|
|
||||||
~command_result_bulk() {
|
~command_result_bulk() {
|
||||||
for(auto& result : this->results)
|
for(auto& result : this->results) {
|
||||||
result.release_data();
|
result.release_data();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t length() const {
|
inline size_t length() const {
|
||||||
@ -399,7 +404,8 @@ namespace ts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void set_result(size_t index, ts::command_result&& result) {
|
inline void set_result(size_t index, ts::command_result&& result) {
|
||||||
this->results[index].reset(std::forward<ts::command_result>(result));
|
auto& result_container = this->results[index];
|
||||||
|
result_container.reset(std::forward<ts::command_result>(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void emplace_result(permission::PermissionType permission) {
|
inline void emplace_result(permission::PermissionType permission) {
|
||||||
|
@ -46,10 +46,11 @@ deque<std::shared_ptr<PermissionTypeEntry>> ts::permission::availablePermissions
|
|||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_custom_search, PermissionGroup::vs_info, "b_virtualserver_custom_search", "Find custom fields"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_custom_search, PermissionGroup::vs_info, "b_virtualserver_custom_search", "Find custom fields"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_start, PermissionGroup::vs_admin, "b_virtualserver_start", "Start own virtual server"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_start, PermissionGroup::vs_admin, "b_virtualserver_start", "Start own virtual server"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_stop, PermissionGroup::vs_admin, "b_virtualserver_stop", "Stop own virtual server"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_stop, PermissionGroup::vs_admin, "b_virtualserver_stop", "Stop own virtual server"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_list, PermissionGroup::vs_admin, "b_virtualserver_token_list", "List privilege keys available"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_list_all, PermissionGroup::vs_admin, "b_virtualserver_token_list_all", "Allows the client to list all tokens and not only his own"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_add, PermissionGroup::vs_admin, "b_virtualserver_token_add", "Create new privilege keys"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_edit_all, PermissionGroup::vs_admin, "b_virtualserver_token_edit_all", "Edit all generated tokens"),
|
||||||
|
make_shared<PermissionTypeEntry>(PermissionType::i_virtualserver_token_limit, PermissionGroup::vs_admin, "i_virtualserver_token_limit", "Max number of pending tokens a client could have"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_use, PermissionGroup::vs_admin, "b_virtualserver_token_use", "Use a privilege keys to gain access to groups"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_use, PermissionGroup::vs_admin, "b_virtualserver_token_use", "Use a privilege keys to gain access to groups"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_delete, PermissionGroup::vs_admin, "b_virtualserver_token_delete", "Delete a privilege key"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_token_delete_all, PermissionGroup::vs_admin, "b_virtualserver_token_delete_all", "Allows the client to delete all tokens and not only the owned ones"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_log_view, PermissionGroup::vs_admin, "b_virtualserver_log_view", "Retrieve virtual server log"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_log_view, PermissionGroup::vs_admin, "b_virtualserver_log_view", "Retrieve virtual server log"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_log_add, PermissionGroup::vs_admin, "b_virtualserver_log_add", "Write to virtual server log"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_log_add, PermissionGroup::vs_admin, "b_virtualserver_log_add", "Write to virtual server log"),
|
||||||
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_join_ignore_password, PermissionGroup::vs_admin, "b_virtualserver_join_ignore_password", "Join virtual server ignoring its password"),
|
make_shared<PermissionTypeEntry>(PermissionType::b_virtualserver_join_ignore_password, PermissionGroup::vs_admin, "b_virtualserver_join_ignore_password", "Join virtual server ignoring its password"),
|
||||||
@ -527,10 +528,10 @@ i_group_modify_power,
|
|||||||
b_channel_delete_flag_force,
|
b_channel_delete_flag_force,
|
||||||
b_client_set_flag_talker,
|
b_client_set_flag_talker,
|
||||||
b_channel_create_with_needed_talk_power,
|
b_channel_create_with_needed_talk_power,
|
||||||
b_virtualserver_token_list,
|
b_virtualserver_token_list_all,
|
||||||
b_virtualserver_token_add,
|
i_virtualserver_token_limit,
|
||||||
b_virtualserver_token_use,
|
b_virtualserver_token_use,
|
||||||
b_virtualserver_token_delete,
|
b_virtualserver_token_delete_all,
|
||||||
|
|
||||||
b_video_screen,
|
b_video_screen,
|
||||||
b_video_camera,
|
b_video_camera,
|
||||||
@ -1442,9 +1443,11 @@ const std::vector<v2::PermissionDBUpdateEntry> v2::PermissionManager::flush_db_u
|
|||||||
{
|
{
|
||||||
lock_guard use_lock(this->block_use_count_lock);
|
lock_guard use_lock(this->block_use_count_lock);
|
||||||
size_t block_count = 0;
|
size_t block_count = 0;
|
||||||
for (auto &block_container : block_containers)
|
for (auto &block_container : block_containers) {
|
||||||
if (block_container)
|
if (block_container) {
|
||||||
block_count++;
|
block_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
result.reserve(block_count * PERMISSIONS_BULK_ENTRY_COUNT);
|
result.reserve(block_count * PERMISSIONS_BULK_ENTRY_COUNT);
|
||||||
|
|
||||||
for(size_t block_index = 0; block_index < BULK_COUNT; block_index++) {
|
for(size_t block_index = 0; block_index < BULK_COUNT; block_index++) {
|
||||||
|
@ -89,10 +89,11 @@ namespace ts {
|
|||||||
/* virtual_server::administration */
|
/* virtual_server::administration */
|
||||||
b_virtualserver_start,
|
b_virtualserver_start,
|
||||||
b_virtualserver_stop,
|
b_virtualserver_stop,
|
||||||
b_virtualserver_token_list,
|
b_virtualserver_token_list_all,
|
||||||
b_virtualserver_token_add,
|
i_virtualserver_token_limit,
|
||||||
|
b_virtualserver_token_edit_all,
|
||||||
b_virtualserver_token_use,
|
b_virtualserver_token_use,
|
||||||
b_virtualserver_token_delete,
|
b_virtualserver_token_delete_all,
|
||||||
b_virtualserver_log_view,
|
b_virtualserver_log_view,
|
||||||
b_virtualserver_log_add,
|
b_virtualserver_log_add,
|
||||||
b_virtualserver_join_ignore_password,
|
b_virtualserver_join_ignore_password,
|
||||||
|
@ -194,13 +194,13 @@ namespace ts {
|
|||||||
case 2:
|
case 2:
|
||||||
/* we're already executing now but we need a new execute */
|
/* we're already executing now but we need a new execute */
|
||||||
new_state = 3;
|
new_state = 3;
|
||||||
break;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} while(!inner_->schedule_kind.compare_exchange_weak(current_state, new_state));
|
} while(!inner_->schedule_kind.compare_exchange_weak(current_state, new_state, std::memory_order_relaxed, std::memory_order_relaxed));
|
||||||
}
|
}
|
||||||
|
|
||||||
task_id task_id_;
|
task_id task_id_;
|
||||||
@ -261,7 +261,7 @@ namespace ts {
|
|||||||
assert(false);
|
assert(false);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
} while(!inner->schedule_kind.compare_exchange_weak(current_state, new_state));
|
} while(!inner->schedule_kind.compare_exchange_weak(current_state, new_state, std::memory_order_relaxed, std::memory_order_relaxed));
|
||||||
|
|
||||||
if(new_state == 1) {
|
if(new_state == 1) {
|
||||||
/* a reschedule was requested */
|
/* a reschedule was requested */
|
||||||
|
@ -337,8 +337,10 @@ namespace ts {
|
|||||||
required_size += entry.size() + 1;
|
required_size += entry.size() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
result.append(this->identifier_);
|
if(!this->identifier_.empty()) {
|
||||||
result.push_back(' ');
|
result.append(this->identifier_);
|
||||||
|
result.push_back(' ');
|
||||||
|
}
|
||||||
|
|
||||||
for(auto it = this->bulks.begin(); it != this->bulks.end(); it++) {
|
for(auto it = this->bulks.begin(); it != this->bulks.end(); it++) {
|
||||||
if(it->empty() && !with_empty) {
|
if(it->empty() && !with_empty) {
|
||||||
@ -364,8 +366,9 @@ namespace ts {
|
|||||||
inline void reserve_bulks(size_t count) { this->bulks.reserve(count); }
|
inline void reserve_bulks(size_t count) { this->bulks.reserve(count); }
|
||||||
|
|
||||||
[[nodiscard]] inline command_builder_bulk bulk(size_t index) {
|
[[nodiscard]] inline command_builder_bulk bulk(size_t index) {
|
||||||
while(this->bulks.size() <= index)
|
while(this->bulks.size() <= index) {
|
||||||
this->bulks.emplace_back("").reserve(expected_bulk_size);
|
this->bulks.emplace_back("").reserve(expected_bulk_size);
|
||||||
|
}
|
||||||
|
|
||||||
return command_builder_bulk{this->flag_changed, this->bulks[index]};
|
return command_builder_bulk{this->flag_changed, this->bulks[index]};
|
||||||
}
|
}
|
||||||
@ -396,8 +399,9 @@ namespace ts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void set_bulk(size_t index, standalone_command_builder_bulk&& bulk) {
|
inline void set_bulk(size_t index, standalone_command_builder_bulk&& bulk) {
|
||||||
while(this->bulks.size() <= index)
|
while(this->bulks.size() <= index) {
|
||||||
this->bulks.emplace_back("").reserve(expected_bulk_size);
|
this->bulks.emplace_back("").reserve(expected_bulk_size);
|
||||||
|
}
|
||||||
this->bulks[index] = std::move(bulk.buffer());
|
this->bulks[index] = std::move(bulk.buffer());
|
||||||
this->flag_changed = true;
|
this->flag_changed = true;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ using namespace std;
|
|||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
|
|
||||||
namespace sql {
|
namespace sql {
|
||||||
result result::success = result("", 0, "success");
|
result result::success = result("", 0, -1, "success");
|
||||||
sql::command model::command() { return ::sql::command(*this); }
|
sql::command model::command() { return ::sql::command(*this); }
|
||||||
sql::model model::copy() { return sql::model(this->_data); }
|
sql::model model::copy() { return sql::model(this->_data); }
|
||||||
model::model(const std::shared_ptr<CommandData>& data) : command_base(data->handle->copyCommandData(data)) {}
|
model::model(const std::shared_ptr<CommandData>& data) : command_base(data->handle->copyCommandData(data)) {}
|
||||||
|
@ -35,6 +35,8 @@ namespace sql {
|
|||||||
static result success;
|
static result success;
|
||||||
|
|
||||||
result() : result{success} { }
|
result() : result{success} { }
|
||||||
|
result(int code, std::string msg)
|
||||||
|
: code_{code}, msg_{std::move(msg)}, sql_{""}, last_insert_rowid_{-1} { }
|
||||||
result(std::string query, int code, int64_t last_insert_rowid, std::string msg)
|
result(std::string query, int code, int64_t last_insert_rowid, std::string msg)
|
||||||
: code_{code}, msg_{std::move(msg)}, sql_{std::move(query)}, last_insert_rowid_{last_insert_rowid} { }
|
: code_{code}, msg_{std::move(msg)}, sql_{std::move(query)}, last_insert_rowid_{last_insert_rowid} { }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user