Add VariableManager, RpcClient classes, and cache enhancements

This commit is contained in:
netkas 2024-09-30 03:00:02 -04:00
parent 38092a639e
commit e55f4d57f9
27 changed files with 606 additions and 56 deletions

View file

@ -2,13 +2,18 @@
namespace Socialbox\Classes\CliCommands;
use Exception;
use LogLib\Log;
use PDOException;
use Socialbox\Abstracts\CacheLayer;
use Socialbox\Classes\Configuration;
use Socialbox\Classes\Cryptography;
use Socialbox\Classes\Database;
use Socialbox\Classes\Resources;
use Socialbox\Enums\DatabaseObjects;
use Socialbox\Exceptions\DatabaseOperationException;
use Socialbox\Interfaces\CliCommandInterface;
use Socialbox\Managers\VariableManager;
class InitializeCommand implements CliCommandInterface
{
@ -23,7 +28,14 @@ class InitializeCommand implements CliCommandInterface
return 1;
}
print("Initializing Socialbox...\n");
Log::info('net.nosial.socialbox', 'Initializing Socialbox...');
if(Configuration::getConfiguration()['cache']['enabled'])
{
Log::verbose('net.nosial.socialbox', 'Clearing cache layer...');
CacheLayer::getInstance()->clear();
}
foreach(DatabaseObjects::casesOrdered() as $object)
{
Log::verbose('net.nosial.socialbox', "Initializing database object {$object->value}");
@ -46,13 +58,34 @@ class InitializeCommand implements CliCommandInterface
return 1;
}
}
catch(\Exception $e)
catch(Exception $e)
{
Log::error('net.nosial.socialbox', "Failed to initialize database object {$object->value}: {$e->getMessage()}", $e);
return 1;
}
}
try
{
if(!VariableManager::variableExists('PUBLIC_KEY') || !VariableManager::variableExists('PRIVATE_KEY'))
{
Log::info('net.nosial.socialbox', 'Generating new key pair...');
$keyPair = Cryptography::generateKeyPair();
VariableManager::setVariable('PUBLIC_KEY', $keyPair->getPublicKey());
VariableManager::setVariable('PRIVATE_KEY', $keyPair->getPrivateKey());
Log::info('net.nosial.socialbox', 'Set the DNS TXT record for the public key to the following value:');
Log::info('net.nosial.socialbox', "socialbox-key={$keyPair->getPublicKey()}");
}
}
catch(DatabaseOperationException $e)
{
Log::error('net.nosial.socialbox', "Failed to generate key pair: {$e->getMessage()}", $e);
return 1;
}
Log::info('net.nosial.socialbox', 'Socialbox has been initialized successfully');
return 0;
}