mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-04 06:19:44 +00:00
Feature/registry package index (#2623)
* include system images in compat s9pk * wip * wip * update types * wip * fix signature serialization * Add SignatureHeader conversions * finish display impl for get --------- Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me>
This commit is contained in:
@@ -10,10 +10,11 @@ use ts_rs::TS;
|
||||
use crate::context::CliContext;
|
||||
use crate::prelude::*;
|
||||
use crate::registry::context::RegistryContext;
|
||||
use crate::registry::signer::{ContactInfo, SignerInfo, SignerKey};
|
||||
use crate::registry::signer::sign::AnyVerifyingKey;
|
||||
use crate::registry::signer::{ContactInfo, SignerInfo};
|
||||
use crate::registry::RegistryDatabase;
|
||||
use crate::rpc_continuations::RequestGuid;
|
||||
use crate::util::serde::{display_serializable, HandlerExtSerde, Pem, WithIoFormat};
|
||||
use crate::rpc_continuations::Guid;
|
||||
use crate::util::serde::{display_serializable, HandlerExtSerde, WithIoFormat};
|
||||
|
||||
pub fn admin_api<C: Context>() -> ParentHandler<C> {
|
||||
ParentHandler::new()
|
||||
@@ -48,8 +49,8 @@ fn signers_api<C: Context>() -> ParentHandler<C> {
|
||||
.subcommand("add", from_fn_async(cli_add_signer).no_display())
|
||||
}
|
||||
|
||||
impl Model<BTreeMap<RequestGuid, SignerInfo>> {
|
||||
pub fn get_signer(&self, key: &SignerKey) -> Result<RequestGuid, Error> {
|
||||
impl Model<BTreeMap<Guid, SignerInfo>> {
|
||||
pub fn get_signer(&self, key: &AnyVerifyingKey) -> Result<Guid, Error> {
|
||||
self.as_entries()?
|
||||
.into_iter()
|
||||
.map(|(guid, s)| Ok::<_, Error>((guid, s.as_keys().de()?)))
|
||||
@@ -60,7 +61,7 @@ impl Model<BTreeMap<RequestGuid, SignerInfo>> {
|
||||
.ok_or_else(|| Error::new(eyre!("unknown signer"), ErrorKind::Authorization))
|
||||
}
|
||||
|
||||
pub fn get_signer_info(&self, key: &SignerKey) -> Result<(RequestGuid, SignerInfo), Error> {
|
||||
pub fn get_signer_info(&self, key: &AnyVerifyingKey) -> Result<(Guid, SignerInfo), Error> {
|
||||
self.as_entries()?
|
||||
.into_iter()
|
||||
.map(|(guid, s)| Ok::<_, Error>((guid, s.de()?)))
|
||||
@@ -88,17 +89,15 @@ impl Model<BTreeMap<RequestGuid, SignerInfo>> {
|
||||
ErrorKind::InvalidRequest,
|
||||
));
|
||||
}
|
||||
self.insert(&RequestGuid::new(), signer)
|
||||
self.insert(&Guid::new(), signer)
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn list_signers(
|
||||
ctx: RegistryContext,
|
||||
) -> Result<BTreeMap<RequestGuid, SignerInfo>, Error> {
|
||||
pub async fn list_signers(ctx: RegistryContext) -> Result<BTreeMap<Guid, SignerInfo>, Error> {
|
||||
ctx.db.peek().await.into_index().into_signers().de()
|
||||
}
|
||||
|
||||
pub fn display_signers<T>(params: WithIoFormat<T>, signers: BTreeMap<RequestGuid, SignerInfo>) {
|
||||
pub fn display_signers<T>(params: WithIoFormat<T>, signers: BTreeMap<Guid, SignerInfo>) {
|
||||
use prettytable::*;
|
||||
|
||||
if let Some(format) = params.format {
|
||||
@@ -137,8 +136,8 @@ pub struct CliAddSignerParams {
|
||||
pub name: String,
|
||||
#[arg(long = "contact", short = 'c')]
|
||||
pub contact: Vec<ContactInfo>,
|
||||
#[arg(long = "ed25519-key")]
|
||||
pub ed25519_keys: Vec<Pem<ed25519_dalek::VerifyingKey>>,
|
||||
#[arg(long = "key")]
|
||||
pub keys: Vec<AnyVerifyingKey>,
|
||||
pub database: Option<PathBuf>,
|
||||
}
|
||||
|
||||
@@ -151,7 +150,7 @@ pub async fn cli_add_signer(
|
||||
CliAddSignerParams {
|
||||
name,
|
||||
contact,
|
||||
ed25519_keys,
|
||||
keys,
|
||||
database,
|
||||
},
|
||||
..
|
||||
@@ -160,7 +159,7 @@ pub async fn cli_add_signer(
|
||||
let signer = SignerInfo {
|
||||
name,
|
||||
contact,
|
||||
keys: ed25519_keys.into_iter().map(SignerKey::Ed25519).collect(),
|
||||
keys: keys.into_iter().collect(),
|
||||
};
|
||||
if let Some(database) = database {
|
||||
TypedPatchDb::<RegistryDatabase>::load(PatchDb::open(database).await?)
|
||||
@@ -181,8 +180,7 @@ pub async fn cli_add_signer(
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[ts(export)]
|
||||
pub struct AddAdminParams {
|
||||
#[ts(type = "string")]
|
||||
pub signer: RequestGuid,
|
||||
pub signer: Guid,
|
||||
}
|
||||
|
||||
pub async fn add_admin(
|
||||
@@ -206,7 +204,7 @@ pub async fn add_admin(
|
||||
#[command(rename_all = "kebab-case")]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct CliAddAdminParams {
|
||||
pub signer: RequestGuid,
|
||||
pub signer: Guid,
|
||||
pub database: Option<PathBuf>,
|
||||
}
|
||||
|
||||
@@ -242,7 +240,7 @@ pub async fn cli_add_admin(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn list_admins(ctx: RegistryContext) -> Result<BTreeMap<RequestGuid, SignerInfo>, Error> {
|
||||
pub async fn list_admins(ctx: RegistryContext) -> Result<BTreeMap<Guid, SignerInfo>, Error> {
|
||||
let db = ctx.db.peek().await;
|
||||
let admins = db.as_admins().de()?;
|
||||
Ok(db
|
||||
|
||||
Reference in New Issue
Block a user