Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 192ebbd47f | |||
| 050439ee14 | |||
| 0b12ded1cf | |||
| 0296cf9c51 | |||
| 604b31b937 | |||
| 89e572faf8 | |||
| 78f5304214 |
16
Cargo.lock
generated
16
Cargo.lock
generated
@ -2043,7 +2043,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "migrate-secrets"
|
name = "migrate-secrets"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"hex",
|
"hex",
|
||||||
@ -2548,7 +2548,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-agent-client"
|
name = "pm-agent-client"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -2565,7 +2565,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-auth"
|
name = "pm-auth"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"argon2",
|
"argon2",
|
||||||
@ -2593,7 +2593,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-ca"
|
name = "pm-ca"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -2617,7 +2617,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-core"
|
name = "pm-core"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -2641,7 +2641,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-reports"
|
name = "pm-reports"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -2661,7 +2661,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-web"
|
name = "pm-web"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"axum",
|
"axum",
|
||||||
@ -2702,7 +2702,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pm-worker"
|
name = "pm-worker"
|
||||||
version = "0.1.9"
|
version = "0.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
|||||||
@ -12,7 +12,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.1.9"
|
version = "0.2.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Echo <echo@moon-dragon.us>"]
|
authors = ["Echo <echo@moon-dragon.us>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
@ -120,7 +120,7 @@ pub async fn login(
|
|||||||
let user: Option<DbUser> = sqlx::query_as(
|
let user: Option<DbUser> = sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, username, display_name, role, auth_provider,
|
SELECT id, username, display_name, role, auth_provider,
|
||||||
password_hash, totp_secret, mfa_enabled, is_active, force_password_reset,
|
password_hash, totp_secret_encrypted, totp_secret_nonce, mfa_enabled, is_active, force_password_reset,
|
||||||
failed_login_attempts, locked_until
|
failed_login_attempts, locked_until
|
||||||
FROM users
|
FROM users
|
||||||
WHERE username = $1 AND auth_provider = 'local'
|
WHERE username = $1 AND auth_provider = 'local'
|
||||||
@ -278,7 +278,7 @@ pub async fn refresh_session(
|
|||||||
let user: DbUser = sqlx::query_as(
|
let user: DbUser = sqlx::query_as(
|
||||||
r#"
|
r#"
|
||||||
SELECT id, username, display_name, role, auth_provider,
|
SELECT id, username, display_name, role, auth_provider,
|
||||||
password_hash, totp_secret, mfa_enabled, is_active, force_password_reset,
|
password_hash, totp_secret_encrypted, totp_secret_nonce, mfa_enabled, is_active, force_password_reset,
|
||||||
failed_login_attempts, locked_until
|
failed_login_attempts, locked_until
|
||||||
FROM users WHERE id = $1
|
FROM users WHERE id = $1
|
||||||
"#,
|
"#,
|
||||||
|
|||||||
@ -553,7 +553,7 @@ impl CertAuthority {
|
|||||||
FROM certificates \
|
FROM certificates \
|
||||||
WHERE status = 'revoked'::cert_status \
|
WHERE status = 'revoked'::cert_status \
|
||||||
AND revoked_at IS NOT NULL \
|
AND revoked_at IS NOT NULL \
|
||||||
AND not_after > NOW() \
|
AND expires_at > NOW() \
|
||||||
ORDER BY revoked_at ASC",
|
ORDER BY revoked_at ASC",
|
||||||
)
|
)
|
||||||
.fetch_all(db)
|
.fetch_all(db)
|
||||||
|
|||||||
@ -435,7 +435,7 @@ async fn disable_mfa(
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
sqlx::query("UPDATE users SET totp_secret = NULL, mfa_enabled = FALSE WHERE id = $1")
|
sqlx::query("UPDATE users SET totp_secret_encrypted = NULL, totp_secret_nonce = NULL, mfa_enabled = FALSE WHERE id = $1")
|
||||||
.bind(auth_user.user_id)
|
.bind(auth_user.user_id)
|
||||||
.execute(&state.db)
|
.execute(&state.db)
|
||||||
.await
|
.await
|
||||||
|
|||||||
@ -186,7 +186,7 @@ async fn approve_enrollment(
|
|||||||
|
|
||||||
// Check for FQDN/IP collision in hosts table
|
// Check for FQDN/IP collision in hosts table
|
||||||
if let Some(existing_host) = sqlx::query_as::<_, Host>(
|
if let Some(existing_host) = sqlx::query_as::<_, Host>(
|
||||||
"SELECT id, fqdn, ip_address::text, display_name, os_family, os_name, arch, agent_version, health_status, last_health_at, last_patch_at, agent_port, notes, registered_at, updated_at FROM hosts WHERE fqdn = $1 OR ip_address = $2::inet"
|
"SELECT id, fqdn, ip_address::text, display_name, os_family, os_name, arch, agent_version, health_status, last_health_at, last_patch_at, agent_port, notes, registered_at, updated_at, crl_status, crl_age_seconds, crl_next_update FROM hosts WHERE fqdn = $1 OR ip_address = $2::inet"
|
||||||
)
|
)
|
||||||
.bind(&enrollment_request.fqdn)
|
.bind(&enrollment_request.fqdn)
|
||||||
.bind(enrollment_request.ip_address.to_string())
|
.bind(enrollment_request.ip_address.to_string())
|
||||||
|
|||||||
@ -132,7 +132,7 @@ async fn list_hosts(
|
|||||||
THEN 'some_unhealthy'
|
THEN 'some_unhealthy'
|
||||||
ELSE 'all_healthy'
|
ELSE 'all_healthy'
|
||||||
END AS health_check_status,
|
END AS health_check_status,
|
||||||
h.registered_at
|
h.registered_at,
|
||||||
h.crl_status
|
h.crl_status
|
||||||
FROM hosts h
|
FROM hosts h
|
||||||
LEFT JOIN host_patch_data hpd ON hpd.host_id = h.id
|
LEFT JOIN host_patch_data hpd ON hpd.host_id = h.id
|
||||||
@ -166,7 +166,7 @@ async fn list_hosts(
|
|||||||
THEN 'some_unhealthy'
|
THEN 'some_unhealthy'
|
||||||
ELSE 'all_healthy'
|
ELSE 'all_healthy'
|
||||||
END AS health_check_status,
|
END AS health_check_status,
|
||||||
h.registered_at
|
h.registered_at,
|
||||||
h.crl_status
|
h.crl_status
|
||||||
FROM hosts h
|
FROM hosts h
|
||||||
LEFT JOIN host_patch_data hpd ON hpd.host_id = h.id
|
LEFT JOIN host_patch_data hpd ON hpd.host_id = h.id
|
||||||
@ -434,7 +434,7 @@ async fn update_host(
|
|||||||
SELECT id, fqdn, host(ip_address)::text AS ip_address, display_name,
|
SELECT id, fqdn, host(ip_address)::text AS ip_address, display_name,
|
||||||
os_family, os_name, arch, agent_version, health_status,
|
os_family, os_name, arch, agent_version, health_status,
|
||||||
last_health_at, last_patch_at, agent_port, notes,
|
last_health_at, last_patch_at, agent_port, notes,
|
||||||
registered_at, updated_at
|
registered_at, updated_at, crl_status, crl_age_seconds, crl_next_update
|
||||||
FROM hosts WHERE id = (SELECT id FROM updated)
|
FROM hosts WHERE id = (SELECT id FROM updated)
|
||||||
) h
|
) h
|
||||||
"#,
|
"#,
|
||||||
|
|||||||
Reference in New Issue
Block a user