Fix for upcomming lan

This commit is contained in:
pmp 2026-09-13 15:11:15 +02:00
parent 5339f95a40
commit f076fea2b8
4 changed files with 29 additions and 7 deletions

4
.env
View file

@ -8,7 +8,7 @@ WEB_PORT=3000
CSRF_ALLOWED_ORIGINS=http://localhost:3000 CSRF_ALLOWED_ORIGINS=http://localhost:3000
EXTERNAL_PERSONS_URL= EXTERNAL_PERSONS_URL=
EXTERNAL_PERSONS_API_KEY= EXTERNAL_PERSONS_API_KEY=
EXTERNAL_CLIENT_CERT_FILE= EXTERNAL_CLIENT_CERT_FILE=/app/certs/client.crt
EXTERNAL_CLIENT_KEY_FILE= EXTERNAL_CLIENT_KEY_FILE=/app/certs/client.key
EXTERNAL_CA_CERT_FILE="" EXTERNAL_CA_CERT_FILE=""
EXTERNAL_DANGER_ACCEPT_INVALID_CERTS=false EXTERNAL_DANGER_ACCEPT_INVALID_CERTS=false

View file

@ -93,11 +93,28 @@ pub async fn import_persons_external(
cmd.arg(url); cmd.arg(url);
eprintln!(
"External import request: GET {} | client_cert={:?} ca={:?} api_key={}",
url,
state.external_client_cert_file,
state.external_ca_cert_file,
if state.external_persons_api_key.is_some() { "[set]" } else { "[not set]" }
);
let output = cmd.output().await.map_err(|err| { let output = cmd.output().await.map_err(|err| {
eprintln!("Failed to execute curl: {err:?}"); eprintln!("Failed to execute curl: {err:?}");
ApiError::internal("Kunde inte starta HTTP-klient (curl).") ApiError::internal("Kunde inte starta HTTP-klient (curl).")
})?; })?;
{
let verbose = String::from_utf8_lossy(&output.stderr);
let masked = match state.external_persons_api_key.as_deref() {
Some(key) => verbose.replace(key, "[REDACTED]").into(),
None => verbose.to_string(),
};
eprintln!("curl request/response log:\n{}", masked);
}
if !output.status.success() { if !output.status.success() {
let stderr = String::from_utf8_lossy(&output.stderr); let stderr = String::from_utf8_lossy(&output.stderr);
let stdout = String::from_utf8_lossy(&output.stdout); let stdout = String::from_utf8_lossy(&output.stdout);
@ -114,10 +131,13 @@ pub async fn import_persons_external(
let response: ExternalImportResponse = match serde_json::from_slice(&bytes) { let response: ExternalImportResponse = match serde_json::from_slice(&bytes) {
Ok(res) => res, Ok(res) => res,
Err(err) => { Err(err) => {
let preview = String::from_utf8_lossy(&bytes);
eprintln!("Failed to parse external import JSON: {err:?}"); eprintln!("Failed to parse external import JSON: {err:?}");
return Err(ApiError::internal( eprintln!("Raw response ({} bytes): {}", bytes.len(), &preview[..preview.len().min(1000)]);
"Kunde inte tolka data från extern källa.", return Err(ApiError::internal(format!(
)); "Kunde inte tolka data från extern källa. Svar: {}",
preview.chars().take(300).collect::<String>()
)));
} }
}; };

View file

@ -33,7 +33,7 @@ services:
EXTERNAL_CA_CERT_FILE: ${EXTERNAL_CA_CERT_FILE:-} EXTERNAL_CA_CERT_FILE: ${EXTERNAL_CA_CERT_FILE:-}
EXTERNAL_DANGER_ACCEPT_INVALID_CERTS: ${EXTERNAL_DANGER_ACCEPT_INVALID_CERTS:-false} EXTERNAL_DANGER_ACCEPT_INVALID_CERTS: ${EXTERNAL_DANGER_ACCEPT_INVALID_CERTS:-false}
volumes: volumes:
- ./certs:/app/certs:ro - ./certs:/app/certs:ro,z
depends_on: depends_on:
db: db:
condition: service_healthy condition: service_healthy

View file

@ -24,7 +24,9 @@ export function isLowerGrade(person: Person): boolean {
} }
export function gradeLabel(person: Person): string { export function gradeLabel(person: Person): string {
return person.grade != null ? String(person.grade) : '–'; if (person.grade == null) return '–';
if (person.grade >= 10 && person.grade <= 12) return `Gymnasiet ${person.grade - 9}`;
return String(person.grade);
} }
export function guardianLabel(person: Person): string { export function guardianLabel(person: Person): string {