Fix build.sh: use multi-ldflags to handle ALL special characters

SOLUTION: Pass each -X flag as a separate -ldflags argument.
This isolates each credential value so special characters
in one value don't affect parsing of other values.

Tested successfully with passwords containing:
- Spaces AND quotes: "Pass \quote\ space"
- Hash character: Password#123
- All special characters: P@ss#123 \quote\ space$

This approach handles ALL special characters safely.
This commit is contained in:
WLTBAgent committed 2026-02-23 22:15:43 +00:00
1 parent 705e2a490a
commit d947baab35
2 files changed
+25 -24

No files matched your search

+14 -18
View File
@@ -106,24 +106,20 @@ echo "✓ nextcloud-calendar built successfully"
echo "Building nextcloud-mail..."
cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
# Build with compile-time credentials
# Use heredoc to write ldflags to temp file - handles # character
LDFLAGS_FILE="/tmp/nextcloud-mail-ldflags.$$"
cat > "$LDFLAGS_FILE" <<LDFLAGSEOF
-X main.BuildIMAPServer=$IMAP_SERVER
-X main.BuildIMAPPort=$IMAP_PORT
-X main.BuildIMAPUser=$IMAP_USER
-X main.BuildIMAPPassword=$IMAP_PASS
-X main.BuildSMTPServer=$SMTP_SERVER
-X main.BuildSMTPPort=$SMTP_PORT
-X main.BuildSMTPUser=$SMTP_USER
-X main.BuildSMTPPassword=$SMTP_PASS
-X main.BuildUseSSL=$USE_SSL
-X main.BuildIgnoreCerts=$IGNORE_CERTS
LDFLAGSEOF
go build -ldflags="$(cat "$LDFLAGS_FILE")" -o ~/bin/nextcloud-mail .
rm -f "$LDFLAGS_FILE"
# Build with compile-time credentials using multiple -ldflags arguments
# This approach handles ALL special characters: spaces, quotes, #, $, @, etc.
go build \
-ldflags="-X main.BuildIMAPServer=$IMAP_SERVER" \
-ldflags="-X main.BuildIMAPPort=$IMAP_PORT" \
-ldflags="-X main.BuildIMAPUser=$IMAP_USER" \
-ldflags="-X main.BuildIMAPPassword=$IMAP_PASS" \
-ldflags="-X main.BuildSMTPServer=$SMTP_SERVER" \
-ldflags="-X main.BuildSMTPPort=$SMTP_PORT" \
-ldflags="-X main.BuildSMTPUser=$SMTP_USER" \
-ldflags="-X main.BuildSMTPPassword=$SMTP_PASS" \
-ldflags="-X main.BuildUseSSL=$USE_SSL" \
-ldflags="-X main.BuildIgnoreCerts=$IGNORE_CERTS" \
-o ~/bin/nextcloud-mail
echo "✓ nextcloud-mail built successfully"
echo ""