mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-19 09:51:37 +00:00
* WIP notifications and other refactors - refactor notification channels - send notifications on events related to the servers and sites - delete server log files on server deletion - add telegram notification channel - add new icons - cache configs and icons on installation and updates - new navbar for dark mode and settings * discord channel * build assets * pint
74 lines
1.7 KiB
PHP
Executable File
74 lines
1.7 KiB
PHP
Executable File
<?php
|
|
|
|
use Illuminate\Contracts\Database\Query\Expression;
|
|
use Illuminate\Support\Str;
|
|
|
|
function random_color(): string
|
|
{
|
|
return '#'.str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
|
|
function get_hostname_from_repo($repo): string
|
|
{
|
|
$repo = Str::after($repo, '@');
|
|
|
|
return Str::before($repo, ':');
|
|
}
|
|
|
|
function generate_uid(): string
|
|
{
|
|
return hash('sha256', uniqid(rand(1111111111, 9999999999), true).Str::random(64).strtotime('now'));
|
|
}
|
|
|
|
// /**
|
|
// * @param $privateKeyPath
|
|
// * @return array|string|string[]
|
|
// */
|
|
// function generate_public_key($privateKeyPath)
|
|
// {
|
|
// $privateKey = openssl_pkey_get_private(file_get_contents($privateKeyPath));
|
|
// $publicKey = openssl_pkey_get_details($privateKey);
|
|
//
|
|
// return $publicKey['key'];
|
|
// }
|
|
|
|
function generate_public_key($privateKeyPath, $publicKeyPath): void
|
|
{
|
|
chmod($privateKeyPath, 0400);
|
|
exec("ssh-keygen -y -f {$privateKeyPath} > {$publicKeyPath}");
|
|
}
|
|
|
|
function generate_key_pair($path): void
|
|
{
|
|
exec("ssh-keygen -t ed25519 -m PEM -N '' -f {$path}");
|
|
chmod($path, 0400);
|
|
}
|
|
|
|
function make_bash_script($commands): string
|
|
{
|
|
$script = '';
|
|
foreach (preg_split("/((\r?\n)|(\r\n?))/", $commands) as $line) {
|
|
$script .= 'if ! '.$line."; then\n echo 'VITO_SSH_ERROR' && exit 1 \nfi"."\n";
|
|
}
|
|
|
|
return $script;
|
|
}
|
|
|
|
/**
|
|
* @throws Exception
|
|
*/
|
|
function date_with_timezone($date, $timezone): string
|
|
{
|
|
$dt = new DateTime('now', new DateTimeZone($timezone));
|
|
$dt->setTimestamp(strtotime($date));
|
|
|
|
return $dt->format('Y-m-d H:i:s');
|
|
}
|
|
|
|
function cast_to_json(array $json): Illuminate\Database\Query\Expression|Expression
|
|
{
|
|
$json = addslashes(json_encode($json));
|
|
|
|
return DB::raw("CAST('{$json}' AS JSON)");
|
|
}
|