Compare commits

..

1 Commits

Author SHA1 Message Date
b901c01beb feat: initial version
All checks were successful
Test Stalwart Installation Action / Error Handling Tests (pull_request) Successful in 18s
Test Stalwart Installation Action / Basic Installation (No Config) (pull_request) Successful in 46s
Test Stalwart Installation Action / Full Configuration (Domains + Users) (pull_request) Successful in 45s
Test Stalwart Installation Action / Test Summary (pull_request) Successful in 3s
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
2026-02-15 01:11:57 -05:00

View File

@@ -174,11 +174,30 @@ create_domains() {
continue continue
fi fi
# Build API payload with required structure
local payload
payload=$(echo "$domain" | jq '{
type: "domain",
quota: (.quota // 0),
name: .name,
description: (.description // ""),
secrets: [],
emails: [],
urls: [],
memberOf: [],
roles: [],
lists: [],
members: [],
enabledPermissions: [],
disabledPermissions: [],
externalMembers: []
}' 2>/dev/null)
# Create domain via API # Create domain via API
if curl -sf -X POST "${API_URL}/domain" \ if curl -sf -X POST "${API_URL}/principal" \
-u "admin:${password}" \ -u "admin:${password}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "$domain" >/dev/null 2>&1; then -d "$payload" >/dev/null 2>&1; then
log_success "✓ Created domain: $domain_name" log_success "✓ Created domain: $domain_name"
created=$((created + 1)) created=$((created + 1))
else else
@@ -234,17 +253,61 @@ create_users() {
continue continue
fi fi
# Build API payload (name, password, description, quota) # Hash the password if provided
local hashed_password=""
local raw_password
raw_password=$(echo "$user" | jq -r '.password // empty' 2>/dev/null)
if [ -n "$raw_password" ]; then
if command -v mkpasswd >/dev/null 2>&1; then
hashed_password=$(mkpasswd -m sha-512 "$raw_password")
elif command -v openssl >/dev/null 2>&1; then
hashed_password=$(openssl passwd -6 "$raw_password")
else
log_warning "Cannot hash password for $email - no mkpasswd or openssl found"
fi
fi
# Build API payload with required structure
local payload local payload
payload=$(echo "$user" | jq '{ if [ -n "$hashed_password" ]; then
name: .email, payload=$(echo "$user" | jq --arg email "$email" --arg pwd "$hashed_password" '{
password: .password, type: "individual",
description: (.name // .email), quota: (.quota // 0),
quota: (.quota // 1073741824) name: $email,
}' 2>/dev/null) description: (.name // ""),
secrets: [$pwd],
emails: [$email],
urls: [],
memberOf: [],
roles: [],
lists: [],
members: [],
enabledPermissions: [],
disabledPermissions: [],
externalMembers: []
}' 2>/dev/null)
else
payload=$(echo "$user" | jq --arg email "$email" '{
type: "individual",
quota: (.quota // 0),
name: $email,
description: (.name // ""),
secrets: [],
emails: [$email],
urls: [],
memberOf: [],
roles: [],
lists: [],
members: [],
enabledPermissions: [],
disabledPermissions: [],
externalMembers: []
}' 2>/dev/null)
fi
# Create user via API # Create user via API
if curl -sf -X POST "${API_URL}/account" \ if curl -sf -X POST "${API_URL}/principal" \
-u "admin:${password}" \ -u "admin:${password}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "$payload" >/dev/null 2>&1; then -d "$payload" >/dev/null 2>&1; then