2022-02-06 01:36:05 +00:00
|
|
|
<?php
|
|
|
|
namespace Makai;
|
|
|
|
|
2023-10-12 20:00:08 +00:00
|
|
|
use Index\Data\DbStatementCache;
|
2022-02-16 20:49:49 +00:00
|
|
|
use Index\Data\IDbConnection;
|
2022-02-06 01:36:05 +00:00
|
|
|
|
|
|
|
class SSHKeys {
|
2023-10-12 20:00:08 +00:00
|
|
|
private IDbConnection $dbConn;
|
|
|
|
private DbStatementCache $cache;
|
2022-02-06 01:36:05 +00:00
|
|
|
|
2023-10-12 20:00:08 +00:00
|
|
|
public function __construct(IDbConnection $dbConn) {
|
|
|
|
$this->dbConn = $dbConn;
|
|
|
|
$this->cache = new DbStatementCache($dbConn);
|
2022-02-06 01:36:05 +00:00
|
|
|
}
|
|
|
|
|
2023-10-12 20:00:08 +00:00
|
|
|
public function getKeys(
|
|
|
|
?int $minLevel = null,
|
|
|
|
?bool $deprecated = null,
|
|
|
|
): array {
|
|
|
|
$hasMinLevel = $minLevel !== null;
|
|
|
|
$hasDeprecated = $deprecated !== null;
|
|
|
|
|
|
|
|
$args = 0;
|
|
|
|
$query = 'SELECT key_id, key_level, key_algo, key_body, key_comment, UNIX_TIMESTAMP(key_created), UNIX_TIMESTAMP(key_deprecated) FROM fm_public_keys';
|
|
|
|
if($hasMinLevel) {
|
|
|
|
++$args;
|
|
|
|
$query .= ' WHERE key_level >= ?';
|
|
|
|
}
|
|
|
|
if($hasDeprecated)
|
|
|
|
$query .= sprintf(' %s key_deprecated %s NULL', ++$args > 1 ? 'AND' : 'WHERE', $deprecated ? 'IS NOT' : 'IS');
|
|
|
|
$query .= ' ORDER BY key_level DESC, key_id ASC';
|
|
|
|
|
|
|
|
$stmt = $this->cache->get($query);
|
|
|
|
if($hasMinLevel)
|
|
|
|
$stmt->addParameter(1, $minLevel);
|
2022-02-06 01:36:05 +00:00
|
|
|
$stmt->execute();
|
2023-10-12 20:00:08 +00:00
|
|
|
|
2022-02-06 01:36:05 +00:00
|
|
|
$result = $stmt->getResult();
|
2023-10-12 20:00:08 +00:00
|
|
|
$keys = [];
|
2022-02-06 01:36:05 +00:00
|
|
|
|
|
|
|
while($result->next())
|
2023-10-12 20:00:08 +00:00
|
|
|
$keys[] = new SSHKeyInfo($result);
|
2022-02-06 01:36:05 +00:00
|
|
|
|
2023-10-12 20:00:08 +00:00
|
|
|
return $keys;
|
2022-02-06 01:36:05 +00:00
|
|
|
}
|
|
|
|
}
|