diff --git a/src/LonaDB/Actions/add_function.php b/src/LonaDB/Actions/add_function.php index 206503b..35bf611 100644 --- a/src/LonaDB/Actions/add_function.php +++ b/src/LonaDB/Actions/add_function.php @@ -2,19 +2,22 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if the user is allowed to create functions if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "create_function")) { + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Create function $function = $LonaDB->FunctionManager->Create($data['function']['name'], $data['function']['content']); - + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "functionCreate", [ "name" => $data['function']['name'], "content" => $data['function']['content'] ]); } diff --git a/src/LonaDB/Actions/add_permission.php b/src/LonaDB/Actions/add_permission.php index 82986d3..2c98987 100644 --- a/src/LonaDB/Actions/add_permission.php +++ b/src/LonaDB/Actions/add_permission.php @@ -2,26 +2,32 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if user has been defined if(!$data['permission']['user']) { + //Create response array $response = json_encode(["success" => false, "err" => "missing_user", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user has the permission so add permissions to others if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "permission_add")) { $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to add a permission without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Add permission to user $LonaDB->UserManager->AddPermission($data['permission']['user'], $data['permission']['name'], $data['login']['name']); + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "permissionAdd", [ "user" => $data['permission']['user'], "name" => $data['permission']['name'] ]); } diff --git a/src/LonaDB/Actions/check_password.php b/src/LonaDB/Actions/check_password.php index b5d3da1..ec2801e 100644 --- a/src/LonaDB/Actions/check_password.php +++ b/src/LonaDB/Actions/check_password.php @@ -2,30 +2,40 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if the user and password to check have been set if(!$data['checkPass']['name'] || !$data['checkPass']['pass']) { + //Create response array $response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } + //Hash the process ID $key = hash('sha256', $data['process'], true); + //Split encrypted password from IV $parts = explode(':', $data['checkPass']['pass']); $iv = hex2bin($parts[0]); $ciphertext = hex2bin($parts[1]); + //Decrypt password $password = openssl_decrypt($ciphertext, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); + //Check if user has permission to check passwords if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "password_check")) { $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to check a password without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check the password $checkPassword = $LonaDB->UserManager->CheckPassword($data['checkPass']['name'], $password); - + //Create response array $response = json_encode(["success" => true, "passCheck" => $checkPassword, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/check_permission.php b/src/LonaDB/Actions/check_permission.php index 4202a50..63f6c0c 100644 --- a/src/LonaDB/Actions/check_permission.php +++ b/src/LonaDB/Actions/check_permission.php @@ -2,24 +2,30 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if needed parameters have been set if(!$data['permission'] || !$data['permission']['name'] || !$data['permission']['user']){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user has the needed permissions if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "permission_check")) { $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to check a permission without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if the user has the permission $permission = $LonaDB->UserManager->CheckPermission($data['permission']['user'], $data['permission']['name'], $data['login']['name']); - + //Create response array $response = json_encode(["success" => true, "result" => $permission, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/create_table.php b/src/LonaDB/Actions/create_table.php index 5ff66c4..0820bc9 100644 --- a/src/LonaDB/Actions/create_table.php +++ b/src/LonaDB/Actions/create_table.php @@ -2,41 +2,49 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if user is allowed to create tables if (!$LonaDB->UserManager->CheckPermission($data['login']['name'], "table_create")) { $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to create a table without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if table name has been set if (empty($data['table']['name'])) { + //Create response array $response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user is trying to create a system table and if they are root if(str_starts_with($data['table']['name'], "system.") && $data['login']['name'] !== "root"){ + //Create response array $response = json_encode(["success" => false, "err" => "not_root", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if table already exists $table = $LonaDB->TableManager->CreateTable($data['table']['name'], $data['login']['name']); - if(!$table){ + //Create response array $response = json_encode(["success" => false, "err" => "table_exists", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "tableCreate", [ "name" => $data['table']['name'] ]); } diff --git a/src/LonaDB/Actions/create_user.php b/src/LonaDB/Actions/create_user.php index 0089a99..c24fdc0 100644 --- a/src/LonaDB/Actions/create_user.php +++ b/src/LonaDB/Actions/create_user.php @@ -2,44 +2,49 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if username and password have been set if(!$data['user']['name'] || !$data['user']['password']){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Hash process ID $key = hash('sha256', $data['process'], true); + //Split encrypted password from IV $parts = explode(':', $data['user']['password']); $iv = hex2bin($parts[0]); $ciphertext = hex2bin($parts[1]); + //Decrypt password $password = openssl_decrypt($ciphertext, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); - + //Check if user is allowed to create new users if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "user_create")){ $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to create a user without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - - + //Check if a user with that name already exists if($LonaDB->UserManager->CheckUser($data['user']['name'])){ + //Create response array $response = json_encode(["success" => false, "err" => "user_exist", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Create user $result = $LonaDB->UserManager->CreateUser($data['user']['name'], $password); - + //Create response array $response = json_encode(["success" => $result, "process" => $data['process']]); - - if(!$result) $response['err'] = "user_exists"; - + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "userCreate", [ "name" => $data['user']['name'] ]); } diff --git a/src/LonaDB/Actions/delete_function.php b/src/LonaDB/Actions/delete_function.php index 3d9392a..ebe07fa 100644 --- a/src/LonaDB/Actions/delete_function.php +++ b/src/LonaDB/Actions/delete_function.php @@ -2,19 +2,22 @@ return new class { public function run($LonaDB, $data, $client) : void { - if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "create_function")) { + //Check if user is allowed to delete functions + if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "delete_function")) { + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Delete the function $function = $LonaDB->FunctionManager->Delete($data['function']['name']); - + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "functionDelete", [ "name" => $data['function']['name'] ]); } diff --git a/src/LonaDB/Actions/delete_table.php b/src/LonaDB/Actions/delete_table.php index 312e827..eda5f67 100644 --- a/src/LonaDB/Actions/delete_table.php +++ b/src/LonaDB/Actions/delete_table.php @@ -2,48 +2,49 @@ return new class { public function run($LonaDB, $data, $client) : void { - if (!$LonaDB->UserManager->CheckPermission($data['login']['name'], "table_delete")) { - $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to delete a table without permission"); - $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Check if the table name is in the parameters if (empty($data['table']['name'])) { + //Create response array $response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user is allowed to delete tables + if (!$LonaDB->UserManager->CheckPermission($data['login']['name'], "table_delete")) { + //Create response array + $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket + socket_write($client, $response); + socket_close($client); + return; + } + //Check if the table exists if(!$LonaDB->TableManager->GetTable($data['table']['name'])) { + //Create response array $response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user owns the table if($LonaDB->TableManager->GetTable($data['table']['name'])->GetOwner() !== $data['login']['name'] && $LonaDB->UserManager->GetRole($data['login']['name']) !== "Administrator" && $LonaDB->UserManager->GetRole($data['login']['name']) !== "Superuser") { + //Create response array $response = json_encode(["success" => false, "err" => "not_table_owner", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Delete the table $table = $LonaDB->TableManager->DeleteTable($data['table']['name'], $data['login']['name']); - - if(!$table){ - $response = json_encode(["success" => false, "err" => "table_doesnt_exist", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "tableDelete", [ "name" => $data['table']['name'] ]); } diff --git a/src/LonaDB/Actions/delete_user.php b/src/LonaDB/Actions/delete_user.php index 6a7e72c..1260876 100644 --- a/src/LonaDB/Actions/delete_user.php +++ b/src/LonaDB/Actions/delete_user.php @@ -2,37 +2,40 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if name has been set if(!$data['user']['name']){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user is allowed to delete users if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "user_delete")){ - $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to delete a user without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user exists if(!$LonaDB->UserManager->CheckUser($data['user']['name'])){ + //Create response array $response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Delete user $result = $LonaDB->UserManager->DeleteUser($data['user']['name'], $data['user']['password']); - + //Create response array $response = json_encode(["success" => $result, "process" => $data['process']]); - - if(!$result) $response['err'] = "user_doesnt_exist"; - + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "userDelete", [ "name" => $data['table']['name'] ]); } diff --git a/src/LonaDB/Actions/eval.php b/src/LonaDB/Actions/eval.php index 124a22a..2e4293b 100644 --- a/src/LonaDB/Actions/eval.php +++ b/src/LonaDB/Actions/eval.php @@ -5,11 +5,14 @@ use LonaDB\LonaDB; return new class { public function run($LonaDB, $data, $client) : void { - if ($data['login']['name'] !== 'root') { + //Check if user is root (only root is allowed to use eval) + if ($LonaDB->UserManager->GetRole($data['login']['name']) !== "Superuser") { + //Send response $this->sendErrorResponse($client, "not_root", $data['process']); return; } + //Generate eval script to create a class with the desired function $functionName = $data['process']; $evalFunction = " \$functions['$functionName'] = new class { @@ -20,35 +23,42 @@ return new class { "; try { + //Run the script eval($evalFunction); try { + //Execute the function $answer = $functions[$functionName]->Execute($LonaDB); } catch (Exception $e) { + //Catch errors $answer = $e->getMessage(); } } catch (Exception $e) { + //Catch errors $answer = $e->getMessage(); } + //Send response and close socket $this->sendSuccessResponse($client, $answer, $data['process']); - socket_close($client); - // Remove the function from the $functions array unset($functions[$functionName]); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "eval", [ "content" => $data['function'] ]); } private function sendErrorResponse($client, $error, $process): void { + //Create response array $response = json_encode(["success" => false, "err" => $error, "process" => $process]); + //Send response and close socket socket_write($client, $response); socket_close($client); } private function sendSuccessResponse($client, $response, $process): void { + //Create response array $response = json_encode(["success" => true, "response" => $response, "process" => $process]); + //Send response and close socket socket_write($client, $response); + socket_close($client); } }; \ No newline at end of file diff --git a/src/LonaDB/Actions/execute_function.php b/src/LonaDB/Actions/execute_function.php index 78eaf4e..9ed6f4e 100644 --- a/src/LonaDB/Actions/execute_function.php +++ b/src/LonaDB/Actions/execute_function.php @@ -2,10 +2,10 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Get function from FunctionManager $function = $LonaDB->FunctionManager->GetFunction($data['name']); - + //Execute function $function->Execute($LonaDB, $data, $client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "functionExecute", [ "name" => $data['name'] ]); } diff --git a/src/LonaDB/Actions/get_permissions_raw.php b/src/LonaDB/Actions/get_permissions_raw.php index 87a75de..f43fd3d 100644 --- a/src/LonaDB/Actions/get_permissions_raw.php +++ b/src/LonaDB/Actions/get_permissions_raw.php @@ -2,24 +2,30 @@ return new class { public function run($LonaDB, $data, $client) : void { - if($data['login']['name'] !== "root" && $LonaDB->UserManager->GetRole($data['login']['name']) !== "Administrator"){ + //Check if user is Administrator or Superuser + if($LonaDB->UserManager->GetRole($data['login']['name']) !== "Superuser" && $LonaDB->UserManager->GetRole($data['login']['name']) !== "Administrator"){ + //Create response array $response = json_encode(["success" => false, "err" => "not_allowed", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user exists if(!$LonaDB->UserManager->CheckUser($data['user'])){ + //Create response array $response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Get permissions array $permissions = $LonaDB->UserManager->GetPermissions($data['user']); - + //Create response array if($permissions === []) $response = '{ "success": true, "list": {}, "role": "' . $LonaDB->UserManager->GetRole($data['user']) . '", "process": "'.$data['process'].'" }'; else $response = json_encode(["success" => true, "list" => $permissions, "role" => $LonaDB->UserManager->GetRole($data['user']), "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/get_table_data.php b/src/LonaDB/Actions/get_table_data.php index bcd7729..a342cf5 100644 --- a/src/LonaDB/Actions/get_table_data.php +++ b/src/LonaDB/Actions/get_table_data.php @@ -2,24 +2,30 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if table exists if(!$LonaDB->TableManager->GetTable($data['table'])) { + //Create response array $response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user has read permissions on desired table if(!$LonaDB->TableManager->GetTable($data['table'])->CheckPermission($data['login']['name'], "read")) { + //Create response array $response = json_encode(["success" => false, "err" => "missing_permissions", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Get table data array $tableData = $LonaDB->TableManager->getTable($data['table'])->GetData(); - + //Create response array if($tableData === []) $response = '{ "success": true, "data": {}, "process": "'.$data['process'].'" }'; else $response = json_encode(["success" => true, "data" => $tableData, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/get_tables.php b/src/LonaDB/Actions/get_tables.php index 56bdaa5..47220a6 100644 --- a/src/LonaDB/Actions/get_tables.php +++ b/src/LonaDB/Actions/get_tables.php @@ -2,29 +2,34 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if tables for executing user have been requested $user = null; if(!$data['user']) $user = $data['login']['name']; else $user = $data['user']; - + //If checking for someone else if($user !== $data['login']['name']){ + //If user isn't allowed to request table array if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "get_tables")){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_permission", "process" => $data['process']]); + //Send response and close socket + socket_write($client, $response); + socket_close($client); + return; + } + //Check if requested user exists + if(!$LonaDB->UserManager->CheckUser($user)){ + $response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]); socket_write($client, $response); socket_close($client); return; } } - - if(!$LonaDB->UserManager->CheckUser($user)){ - $response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Get tables array $tables = $LonaDB->TableManager->ListTables($user); - + //Create response array $response = json_encode(["success" => true, "tables" => $tables, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/get_users.php b/src/LonaDB/Actions/get_users.php index 185e440..4e5238b 100644 --- a/src/LonaDB/Actions/get_users.php +++ b/src/LonaDB/Actions/get_users.php @@ -2,16 +2,20 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if user is allowed to request a users array if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "get_users")){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Get users array $users = $LonaDB->UserManager->ListUsers(); - + //Create response array $response = json_encode(["success" => true, "users" => $users, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); } diff --git a/src/LonaDB/Actions/get_variable.php b/src/LonaDB/Actions/get_variable.php index 25aec22..85f7d07 100644 --- a/src/LonaDB/Actions/get_variable.php +++ b/src/LonaDB/Actions/get_variable.php @@ -2,36 +2,36 @@ return new class { public function run($LonaDB, $data, $client) : void { - if (!$data['table']['name']) { - $response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]); + //Check if parameters have been set + if (!$data['table']['name'] || !$data['variable']['name']) { + //Create response array + $response = json_encode(["success" => false, "err" => "missing_parameters", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if table exists if(!$LonaDB->TableManager->GetTable($data['table']['name'])) { + //Create response array $response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user is allowed to read in desired table if (!$LonaDB->TableManager->GetTable($data['table']['name'])->CheckPermission($data['login']['name'], "read")){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_permissions", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - - if (!$data['variable']['name']) { - $response = json_encode(["success" => false, "err" => "bad_variable_name", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Get variable value $value = $LonaDB->TableManager->GetTable($data['table']['name'])->Get($data['variable']['name'], $data['login']['name']); - + //Create response array $response = [ "variable" => [ "name" => $data['variable']['name'], @@ -40,28 +40,30 @@ return new class { "success" => false, "process" => $data['process'] ]; - + //Check if there has been an error if (is_array($value) && isset($value['err'])) { $value['process'] = $data['process']; + //Send response and close socket socket_write($client, json_encode($value)); socket_close($client); return; } - + //Check if variable exists if ($value === null) { + //Create response array $response = [ "success" => false, "err" => "variable_undefined", "process" => $data['process'] ]; - + //Send response and close socket socket_write($client, json_encode($response)); socket_close($client); return; } else { $response['variable']['value'] = $value; $response['success'] = true; - + //Send response and close socket socket_write($client, json_encode($response)); socket_close($client); return; diff --git a/src/LonaDB/Actions/remove_permission.php b/src/LonaDB/Actions/remove_permission.php index 33de6a7..190408c 100644 --- a/src/LonaDB/Actions/remove_permission.php +++ b/src/LonaDB/Actions/remove_permission.php @@ -2,26 +2,31 @@ return new class { public function run($LonaDB, $data, $client) : void { + //Check if username has been set if(!$data['permission']['user']) { + //Create response array $response = json_encode(["success" => false, "err" => "missing_user", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if user is allowed to remove permissions if(!$LonaDB->UserManager->CheckPermission($data['login']['name'], "permission_remove")) { - $LonaDB->Logger->Error("User '".$data['login']['name']."' tried to add a permission without permission"); + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Remove permission $LonaDB->UserManager->RemovePermission($data['permission']['user'], $data['permission']['name'], $data['login']['name']); + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "permissionRemove", [ "user" => $data['permission']['user'], "name" => $data['permission']['name'] ]); } diff --git a/src/LonaDB/Actions/remove_variable.php b/src/LonaDB/Actions/remove_variable.php index c3dc478..58c13bf 100644 --- a/src/LonaDB/Actions/remove_variable.php +++ b/src/LonaDB/Actions/remove_variable.php @@ -2,51 +2,52 @@ return new class { public function run($LonaDB, $data, $client) : void { - if (!$data['table']['name']) { - $response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]); + //Check if parameters exist + if (!$data['table']['name'] || !$data['variable']['name']) { + //Create response array + $response = json_encode(["success" => false, "err" => "missing_parameters", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if table exists if(!$LonaDB->TableManager->GetTable($data['table']['name'])) { + //Create response array $response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - - if (!$data['variable']['name']) { - $response = json_encode(["success" => false, "err" => "bad_variable_name", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Check if user has read permissions on the desired table if (!$LonaDB->TableManager->GetTable($data['table']['name'])->CheckPermission($data['login']['name'], "read")) { + //Create response array $response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Check if variable exists if(!$LonaDB->TableManager->GetTable($data['table']['name'])->CheckVariable($data['variable']['name'], $data['login']['name'])){ + //Create response array $response = json_encode(["success" => false, "err" => "missing_variable", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Delete variable $LonaDB->TableManager->GetTable($data['table']['name'])->Delete($data['variable']['name'], $data['login']['name']); - + //Create response array $response = [ "success" => true, "process" => $data['process'] ]; - + //Send response and close socket socket_write($client, json_encode($response)); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "valueRemove", [ "name" => $data['variable']['name'] ]); return; diff --git a/src/LonaDB/Actions/set_variable.php b/src/LonaDB/Actions/set_variable.php index 3454e87..c9c2c03 100644 --- a/src/LonaDB/Actions/set_variable.php +++ b/src/LonaDB/Actions/set_variable.php @@ -2,54 +2,47 @@ return new class { public function run($LonaDB, $data, $client) : void { - if (empty($data['table']['name'])) { + //Check if parameter has been set + if (empty($data['table']['name']) || empty($data['variable']['name']) || empty($data['variable']['value'])) { + //Create response array $response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Grab table name $tableName = $data['table']['name']; - + //Check if table exists if (!$LonaDB->TableManager->GetTable($tableName)) { + //Create response array $response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - + //Get table instance $table = $LonaDB->TableManager->GetTable($tableName); - + //Check if user has write permissions on desired table if (!$table->CheckPermission($data['login']['name'], "write")) { + //Create response array $response = json_encode(["success" => false, "err" => "missing_permissions", "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); return; } - - if (empty($data['variable']['name'])) { - $response = json_encode(["success" => false, "err" => "bad_variable_name", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - - if (empty($data['variable']['value'])) { - $response = json_encode(["success" => false, "err" => "bad_variable_value", "process" => $data['process']]); - socket_write($client, $response); - socket_close($client); - return; - } - + //Prepare variable $variableName = $data['variable']['name']; $variableValue = $data['variable']['value']; - + //Push to table $table->Set($variableName, $variableValue, $data['login']['name']); - + //Create response array $response = json_encode(["success" => true, "process" => $data['process']]); + //Send response and close socket socket_write($client, $response); socket_close($client); - //Run plugin event $LonaDB->PluginManager->RunEvent($data['login']['name'], "valueSet", [ "name" => $data['variable']['name'], "value" => $data['variable']['value'] ]); }