Fix for upcomming lan
This commit is contained in:
parent
5339f95a40
commit
f076fea2b8
4 changed files with 29 additions and 7 deletions
4
.env
4
.env
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>()
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue