Release 1 upload
This commit is contained in:
parent
af6b95d2db
commit
ecf99ca0bc
@ -35,7 +35,7 @@ if(trim(strtolower($line)) === 'no' || trim(strtolower($line)) === "n"){
|
||||
$start = time();
|
||||
|
||||
builderLog("[COMPOSER] Running 'composer install'");
|
||||
exec("cd src ; ./composer.phar install");
|
||||
exec("cd src ; printf '\n' | ./composer.phar install");
|
||||
|
||||
if(file_exists($path."/".$filename."-".$version.".phar")){
|
||||
unlink($path."/".$filename."-".$version.".phar");
|
||||
@ -64,7 +64,7 @@ try {
|
||||
builderLog("[INFO] Phar archive created successfully");
|
||||
|
||||
builderLog("[RUN] Generating run script");
|
||||
file_put_contents("./build/run-phar.sh", 'cd '.$path.' ; printf "test\n" php -dextension=openswoole.so '.$filename.'-'.$version.'.phar');
|
||||
file_put_contents("./build/run-phar.sh", 'cd '.$path.' ; printf "test\n" | php -dextension=openswoole.so '.$filename.'-'.$version.'.phar');
|
||||
|
||||
builderLog("[RUN] Adding Permissions to run script");
|
||||
exec("chmod 777 ./build/run-phar.sh");
|
||||
|
@ -1 +1 @@
|
||||
cd build/debug ; printf "test\n" | php -dextension=openswoole.so LonaDB-4.0.0-beta.phar
|
||||
cd build/release ; printf "test\n" | php -dextension=openswoole.so LonaDB-4.0.0-stable.phar
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"filename": "LonaDB",
|
||||
"version": "4.0.0-beta",
|
||||
"version": "4.0.0-stable",
|
||||
"path": "build",
|
||||
"debug": true
|
||||
"debug": false
|
||||
}
|
25
src/LonaDB/Actions/add_permission.php
Normal file
25
src/LonaDB/Actions/add_permission.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['permission']['user']) {
|
||||
$response = json_encode(["success" => false, "err" => "missing_user", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "permission_add")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to add a permission without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$lona->UserManager->AddPermission($data['permission']['user'], $data['permission']['name'], $data['login']['name']);
|
||||
$response = json_encode(["success" => true, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
26
src/LonaDB/Actions/check_password.php
Normal file
26
src/LonaDB/Actions/check_password.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['checkPass']['name'] || !$data['checkPass']['pass']) {
|
||||
$response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "password_check")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to check a password without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$checkPassword = $lona->UserManager->CheckPassword($data['checkPass']['name'], $data['checkPass']['pass']);
|
||||
|
||||
$response = json_encode(["success" => true, "passCheck" => $checkPassword, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
26
src/LonaDB/Actions/check_permission.php
Normal file
26
src/LonaDB/Actions/check_permission.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['permission'] || !$data['permission']['name'] || !$data['permission']['user']){
|
||||
$response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "permission_check")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to check a permission without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$permission = $lona->UserManager->CheckPermission($data['permission']['user'], $data['permission']['name']);
|
||||
|
||||
$response = json_encode(["success" => true, "result" => $permission, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if (!$lona->UserManager->CheckPermission($data['login']['name'], "table_create")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to create a Table without permission");
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to create a table without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
|
37
src/LonaDB/Actions/create_user.php
Normal file
37
src/LonaDB/Actions/create_user.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['user']['name'] || !$data['user']['password']){
|
||||
$response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "user_create")){
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to create a user without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if($lona->UserManager->CheckUser($data['user']['name'])){
|
||||
$response = json_encode(["success" => false, "err" => "user_exist", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $lona->UserManager->CreateUser($data['user']['name'], $data['user']['password']);
|
||||
|
||||
$response = json_encode(["success" => $result, "process" => $data['process']]);
|
||||
|
||||
if(!$result) $response['err'] = "user_exists";
|
||||
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
47
src/LonaDB/Actions/delete_table.php
Normal file
47
src/LonaDB/Actions/delete_table.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if (!$lona->UserManager->CheckPermission($data['login']['name'], "table_delete")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to delete a table without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($data['table']['name'])) {
|
||||
$response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->TableManager->GetTable($data['table']['name'])) {
|
||||
$response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if($lona->TableManager->GetTable($data['table']['name'])->GetOwner() !== $data['login']['name']) {
|
||||
$response = json_encode(["success" => false, "err" => "not_table_owner", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$table = $lona->TableManager->DeleteTable($data['table']['name'], $data['login']['name']);
|
||||
|
||||
if(!$table){
|
||||
$response = json_encode(["success" => false, "err" => "table_doesnt_exist", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$response = json_encode(["success" => true, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
36
src/LonaDB/Actions/delete_user.php
Normal file
36
src/LonaDB/Actions/delete_user.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['user']['name']){
|
||||
$response = json_encode(["success" => false, "err" => "missing_arguments", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "user_delete")){
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to delete a user without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckUser($data['user'])){
|
||||
$response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $lona->UserManager->DeleteUser($data['user']['name'], $data['user']['password']);
|
||||
|
||||
$response = json_encode(["success" => $result, "process" => $data['process']]);
|
||||
|
||||
if(!$result) $response['err'] = "user_doesnt_exist";
|
||||
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
25
src/LonaDB/Actions/eval.php
Normal file
25
src/LonaDB/Actions/eval.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lonaEval, $data, $server, $fd) : void {
|
||||
if($data['login']['name'] !== 'root') {
|
||||
$response = json_encode(["success" => false, "err" => "not_root", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
|
||||
$evalFunc = "function evaluate_".$data['process']."(\$lona) { ";
|
||||
$evalFunc .= $data['function'];
|
||||
$evalFunc .= " }";
|
||||
|
||||
eval($evalFunc);
|
||||
|
||||
eval("\$answer = evaluate_".$data['process']."(\$lonaEval);");
|
||||
|
||||
echo $answer;
|
||||
|
||||
$response = json_encode(["success" => true, "response" => $answer, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
19
src/LonaDB/Actions/get_permissions_raw.php
Normal file
19
src/LonaDB/Actions/get_permissions_raw.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$lona->UserManager->CheckUser($data['user'])){
|
||||
$response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$permissions = $lona->UserManager->GetPermissions($data['user']);
|
||||
|
||||
if($permissions === []) $response = '{ "success": true, "list": {}, "process": "'.$data['process'].' }';
|
||||
else $response = json_encode(["success" => true, "list" => $permissions, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
26
src/LonaDB/Actions/get_table_data.php
Normal file
26
src/LonaDB/Actions/get_table_data.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$lona->TableManager->GetTable($data['table'])) {
|
||||
$response = json_encode(["success" => false, "err" => "table_missing", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->TableManager->GetTable($data['table'])->CheckPermission($data['login']['name'], "read")) {
|
||||
$response = json_encode(["success" => false, "err" => "missing_permissions", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$tableData = $lona->TableManager->GetData();
|
||||
|
||||
if($tableData === []) $response = '{ "success": true, "data": {}, "process": "'.$data['process'].' }';
|
||||
else $response = json_encode(["success" => true, "data" => $tableData, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
27
src/LonaDB/Actions/get_tables.php
Normal file
27
src/LonaDB/Actions/get_tables.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if($data['user'] !== $data['login']['name']){
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "get_tables")){
|
||||
$response = json_encode(["success" => false, "err" => "missing_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckUser($data['user'])){
|
||||
$response = json_encode(["success" => false, "err" => "user_doesnt_exist", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$tables = $lona->TableManager->ListTables($data['user']);
|
||||
|
||||
$response = json_encode(["success" => true, "tables" => $tables, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
18
src/LonaDB/Actions/get_users.php
Normal file
18
src/LonaDB/Actions/get_users.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "get_users")){
|
||||
$response = json_encode(["success" => false, "err" => "missing_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$users = $lona->UserManager->ListUsers();
|
||||
|
||||
$response = json_encode(["success" => true, "users" => $users, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if (!$data['table']['name']) {
|
||||
$response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
|
25
src/LonaDB/Actions/remove_permission.php
Normal file
25
src/LonaDB/Actions/remove_permission.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['permission']['user']) {
|
||||
$response = json_encode(["success" => false, "err" => "missing_user", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$lona->UserManager->CheckPermission($data['login']['name'], "permission_remove")) {
|
||||
$lona->Logger->Error("User '".$data['login']['name']."' tried to add a permission without permission");
|
||||
$response = json_encode(["success" => false, "err" => "no_permission", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
$lona->UserManager->RemovePermission($data['permission']['user'], $data['permission']['name'], $data['login']['name']);
|
||||
$response = json_encode(["success" => true, "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
}
|
||||
};
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if (!$data['table']['name']) {
|
||||
$response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return new class {
|
||||
public function run($lona, $data, $server, $fd) {
|
||||
public function run($lona, $data, $server, $fd) : void {
|
||||
if(!$data['table']['name']) {
|
||||
$response = json_encode(["success" => false, "err" => "bad_table_name", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
|
@ -14,57 +14,57 @@ class Logger{
|
||||
$this->LonaDB = $lonaDB;
|
||||
}
|
||||
|
||||
private function log(string $message){
|
||||
private function log(string $message) : void {
|
||||
echo($message);
|
||||
if($this->LonaDB->config["logging"]) fwrite($this->LogFile, $message);
|
||||
}
|
||||
|
||||
public function LoadLogger(){
|
||||
public function LoadLogger() : void {
|
||||
if($this->LonaDB->config["logging"]) $this->LogFile = fopen('log.txt','a');
|
||||
}
|
||||
|
||||
public function Warning($msg){
|
||||
public function Warning($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [WARNING] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function Error($msg){
|
||||
public function Error($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [ERROR] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function Create($msg){
|
||||
public function Create($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [CREATE] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function Load($msg){
|
||||
public function Load($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [LOAD] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function Info($msg){
|
||||
public function Info($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [INFO] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function Table($msg){
|
||||
public function Table($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [TABLE] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function User($msg){
|
||||
public function User($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [USER] ".$msg."\n";
|
||||
$this->log($log);
|
||||
}
|
||||
|
||||
public function InfoCache($msg){
|
||||
public function InfoCache($msg) : void {
|
||||
$log = date("Y-m-d h:i:s")." [INFO] ".$msg."\n";
|
||||
echo($log);
|
||||
$this->infoCache = $this->infoCache.$log;
|
||||
}
|
||||
|
||||
public function DropCache(){
|
||||
public function DropCache() : void {
|
||||
if($this->LonaDB->config["logging"]) fwrite($this->LogFile, $this->infoCache);
|
||||
}
|
||||
}
|
@ -74,7 +74,7 @@ class LonaDB {
|
||||
}
|
||||
}
|
||||
|
||||
private function setup() {
|
||||
private function setup() : void {
|
||||
$this->Logger->InfoCache("Invalid or missing config. Starting setup.");
|
||||
echo "Database port:\n";
|
||||
$portHandle = fopen ("php://stdin","r");
|
||||
|
@ -27,7 +27,7 @@ class Server {
|
||||
$this->startSocket();
|
||||
}
|
||||
|
||||
private function loadActions() {
|
||||
private function loadActions() : void {
|
||||
$actionFiles = scandir(__DIR__ . "/Actions/");
|
||||
foreach ($actionFiles as $file) {
|
||||
if (pathinfo($file, PATHINFO_EXTENSION) === 'php') {
|
||||
@ -38,7 +38,7 @@ class Server {
|
||||
}
|
||||
}
|
||||
|
||||
public function startSocket() {
|
||||
public function startSocket() : void {
|
||||
$this->server = new TCPServer($this->address, $this->port);
|
||||
|
||||
$this->server->on('start', function ($server)
|
||||
@ -53,7 +53,7 @@ class Server {
|
||||
$this->server->start();
|
||||
}
|
||||
|
||||
private function handleData(string $dataString, TCPServer $server, int $fd) {
|
||||
private function handleData(string $dataString, TCPServer $server, int $fd) : void {
|
||||
try {
|
||||
$data = json_decode($dataString, true);
|
||||
|
||||
@ -64,18 +64,21 @@ class Server {
|
||||
if (!$login) {
|
||||
$response = json_encode(["success" => false, "err" => "login_error", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$data['process']) {
|
||||
$response = json_encode(["success" => false, "err" => "bad_process_id", "process" => $data['process']]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->actions[$data['action']]) {
|
||||
$response = json_encode(["success" => false, "err" => "action_not_found"]);
|
||||
$server->send($fd, $response);
|
||||
$server->close($fd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -43,48 +43,55 @@ class Table{
|
||||
$this->Name = $this->file;
|
||||
}
|
||||
|
||||
public function GetOwner(string $user = ""){
|
||||
public function GetData() : array {
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
public function GetOwner(string $user = "") : string {
|
||||
if($user === "") return $this->Owner;
|
||||
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' is trying to get the owner name.");
|
||||
if($this->CheckPermission($user, "read")) return;
|
||||
|
||||
return $this->Owner;
|
||||
}
|
||||
|
||||
public function SetOwner(string $name, string $user){
|
||||
public function SetOwner(string $name, string $user) : bool {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' is trying to change the owner to '".$name."'");
|
||||
if($user !== "root" && $user !== $this->Owner) return;
|
||||
if($user !== "root" && $user !== $this->Owner) return false;
|
||||
|
||||
$this->Owner = $name;
|
||||
$this->Save();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Set(string $name, mixed $value, string $user){
|
||||
public function Set(string $name, mixed $value, string $user) : bool {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' is trying to set the variable '".$name."' to '".strval($value)."'");
|
||||
if(!$this->CheckPermission($user, "write")) return;
|
||||
if(!$this->CheckPermission($user, "write")) return false;
|
||||
|
||||
$this->data[$name] = $value;
|
||||
$this->Save();
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' set the variable '".$name."' to '".strval($value)."'");
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Delete(string $name, string $user){
|
||||
public function Delete(string $name, string $user) : bool {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' is trying to delete the variable '".$name."'");
|
||||
if(!$this->CheckPermission($user, "write")) return;
|
||||
if(!$this->CheckPermission($user, "write")) return false;
|
||||
|
||||
unset($this->data[$name]);
|
||||
$this->Save();
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' deleted the variable '".$name."'");
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Get(string $name, string $user){
|
||||
public function Get(string $name, string $user) : mixed {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") User '".$user."' is trying to get the variable '".$name."'");
|
||||
if(!$this->CheckPermission($user, "read")) return null;
|
||||
|
||||
return $this->data[$name];
|
||||
}
|
||||
|
||||
public function CheckPermission(string $user, string $permission){
|
||||
public function CheckPermission(string $user, string $permission) : bool {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Checkin permission '".$permission."' for user '".$user."'");
|
||||
|
||||
if($user === $this->Owner) return true;
|
||||
@ -94,7 +101,7 @@ class Table{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function CheckVariable(string $name, string $user){
|
||||
public function CheckVariable(string $name, string $user) : bool {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Checkin if variable '".$name."' exists for user '".$user."'");
|
||||
|
||||
if(!$this->CheckPermission($user, 'read')) return false;
|
||||
@ -103,25 +110,33 @@ class Table{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function AddPermission(string $name, string $permission, string $user){
|
||||
if($user !== $this->Owner && !$this->permissions[$user]["admin"]) return
|
||||
public function AddPermission(string $name, string $permission, string $user) : bool {
|
||||
if($user !== $this->Owner && !$this->permissions[$user]["admin"]) {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Missing permission! Adding permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
|
||||
if($user !== $this->Owner && $permission === "admin") return
|
||||
return false;
|
||||
}
|
||||
if($user !== $this->Owner && $permission === "admin") {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Not the Owner! Adding permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Adding permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
|
||||
$this->permissions[$name][$permission] = true;
|
||||
$this->Save();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function RemovePermission(string $name, string $permission, string $user){
|
||||
if($user !== $this->Owner && !$this->permissions[$user]["admin"]) return
|
||||
public function RemovePermission(string $name, string $permission, string $user) : bool {
|
||||
if($user !== $this->Owner && !$this->permissions[$user]["admin"]) {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Missing permission! Removing permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
return false;
|
||||
}
|
||||
|
||||
if($user !== $this->Owner && $permission === "admin") return
|
||||
if($user !== $this->Owner && $permission === "admin") {
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Not the Owner! Removing permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
return galse;
|
||||
}
|
||||
|
||||
$this->LonaDB->Logger->Table("(".$this->file.") Removing permission '".$permission."' for user '".$name."', requested by '".$user."'");
|
||||
|
||||
|
@ -30,13 +30,14 @@ class TableManager{
|
||||
}
|
||||
}
|
||||
|
||||
public function GetTable(string $name){
|
||||
public function GetTable(string $name) : mixed {
|
||||
if(!$this->Tables[$name]) return false;
|
||||
return $this->Tables[$name];
|
||||
}
|
||||
|
||||
public function ListTables(string $user = ""){
|
||||
public function ListTables(string $user = "") : array {
|
||||
$tables = array();
|
||||
|
||||
if($user !== ""){
|
||||
foreach($this->Tables as $table){
|
||||
if($table->CheckPermission($user, "write")) array_push($tables, $table->Name);
|
||||
@ -52,7 +53,7 @@ class TableManager{
|
||||
return $tables;
|
||||
}
|
||||
|
||||
public function CreateTable(string $name, string $owner){
|
||||
public function CreateTable(string $name, string $owner) : bool {
|
||||
$this->LonaDB->Logger->Table("Trying to create table '" . $name . "', owned by user '" . $owner . "'");
|
||||
if($this->Tables[$name]) {
|
||||
$this->LonaDB->Logger->Error("Table '" . $name . "' already exists");
|
||||
@ -63,18 +64,21 @@ class TableManager{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function DeleteTable(string $name, string $user){
|
||||
public function DeleteTable(string $name, string $user) : bool {
|
||||
$this->LonaDB->Logger->Table("Trying to delete table '" . $name . "', requested by user '" . $user . "'");
|
||||
if(!$this->Tables[$name]) {
|
||||
$this->LonaDB->Logger->Error("Table '" . $name . "' doesn't exist");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if($user !== $this->Tables[$name]->GetOwner()) return
|
||||
if($user !== $this->Tables[$name]->GetOwner()) {
|
||||
$this->LonaDB->Logger->Table("Not the owner! Trying to delete table '" . $name . "', requested by user '" . $user . "'");
|
||||
return false;
|
||||
}
|
||||
|
||||
unlink("data/".$name.".json");
|
||||
unset($this->Tables[$name]);
|
||||
$this->LonaDB->Logger->Table("Deleted table '" . $name . "', requested by user '" . $user . "'");
|
||||
return true;
|
||||
}
|
||||
}
|
@ -30,7 +30,7 @@ class UserManager{
|
||||
$this->Users = json_decode(openssl_decrypt($parts[0], AES_256_CBC, $this->LonaDB->config["encryptionKey"], 0, base64_decode($parts[1])), true);
|
||||
}
|
||||
|
||||
public function CheckPassword(string $name, string $password){
|
||||
public function CheckPassword(string $name, string $password) : bool {
|
||||
$this->LonaDB->Logger->User("Trying to check password for user '" . $name . "'");
|
||||
if($name === "root" && $password === $this->LonaDB->config["root"]) return true;
|
||||
|
||||
@ -44,8 +44,24 @@ class UserManager{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function CreateUser(string $name, string $password){
|
||||
if($name === "root") return;
|
||||
public function CheckUser(string $name) : bool {
|
||||
if($name === "root") return true;
|
||||
if(!$this->Users[$name]) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function ListUsers() : array {
|
||||
$users = [];
|
||||
|
||||
foreach($this->Users as $name => $user){
|
||||
array_push($users, $name);
|
||||
}
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
public function CreateUser(string $name, string $password) : bool {
|
||||
if($name === "root") return false;
|
||||
$this->LonaDB->Logger->User("Trying to create user '" . $name . "'");
|
||||
if($this->Users[$name]) {
|
||||
$this->LonaDB->Logger->Error("User '" . $name . "' already exists");
|
||||
@ -55,33 +71,41 @@ class UserManager{
|
||||
$this->Users[$name] = array(
|
||||
"role" => "user",
|
||||
"password" => $password,
|
||||
"permissions" => []
|
||||
"permissions" => [
|
||||
"default" => true
|
||||
]
|
||||
);
|
||||
|
||||
$this->LonaDB->Logger->User("User '" . $name . "' has been created");
|
||||
|
||||
$this->Save();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function DeleteUser(string $name){
|
||||
if($name === "root") return;
|
||||
public function DeleteUser(string $name) : bool {
|
||||
if($name === "root") return false;
|
||||
$this->LonaDB->Logger->User("Trying to delete user '" . $name . "'");
|
||||
|
||||
if(!$this->Users[$name]) {
|
||||
$this->LonaDB->Logger->Error("User '" . $name . "' doesn't exist");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
unset($this->Users[$name]);
|
||||
$this->LonaDB->Logger->User("Deleted user '" . $name . "'");
|
||||
$this->Save();
|
||||
}
|
||||
|
||||
public function CheckPermission(string $name){
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Save(){
|
||||
public function CheckPermission(string $name, string $permission, string $user = "") : bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function GetPermissions(string $name) : array {
|
||||
return $this->Users[$name]['permissions'];
|
||||
}
|
||||
|
||||
public function Save() : void {
|
||||
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(AES_256_CBC));
|
||||
|
||||
$encrypted = openssl_encrypt(json_encode($this->Users), AES_256_CBC, $this->LonaDB->config["encryptionKey"], 0, $iv);
|
||||
|
Loading…
Reference in New Issue
Block a user