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:
1 parent
705e2a490a
commit
d947baab35
2 files changed
+25
-24
No files matched your search
@@ -285,12 +285,17 @@ Use the provided build script:
|
|||||||
- SMTP username and password
|
- SMTP username and password
|
||||||
- SSL/TLS setting (default: yes)
|
- SSL/TLS setting (default: yes)
|
||||||
|
|
||||||
**⚠️ Password Limitation:**
|
**✅ Special Character Support:**
|
||||||
The build script uses a heredoc approach for credentials. This works for most passwords, including those with special characters like `#` (hash). However, passwords containing **both spaces AND quotes together** (e.g., `"pass word"`) may fail.
|
The build script uses multiple `-ldflags` arguments to handle all special characters safely, including:
|
||||||
|
- Spaces
|
||||||
If your password contains both spaces and quotes, consider:
|
- Double quotes (`"`)
|
||||||
- Using a simpler password
|
- Hash signs (`#`)
|
||||||
- Manually editing the build command
|
- Dollar signs (`$`)
|
||||||
|
- At signs (`@`)
|
||||||
|
- Exclamation marks (`!`)
|
||||||
|
- Percentage signs (`%`)
|
||||||
|
- Ampersands (`&`)
|
||||||
|
- And any other special characters
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -106,24 +106,20 @@ echo "✓ nextcloud-calendar built successfully"
|
|||||||
echo "Building nextcloud-mail..."
|
echo "Building nextcloud-mail..."
|
||||||
cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
|
cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
|
||||||
|
|
||||||
# Build with compile-time credentials
|
# Build with compile-time credentials using multiple -ldflags arguments
|
||||||
# Use heredoc to write ldflags to temp file - handles # character
|
# This approach handles ALL special characters: spaces, quotes, #, $, @, etc.
|
||||||
LDFLAGS_FILE="/tmp/nextcloud-mail-ldflags.$$"
|
go build \
|
||||||
cat > "$LDFLAGS_FILE" <<LDFLAGSEOF
|
-ldflags="-X main.BuildIMAPServer=$IMAP_SERVER" \
|
||||||
-X main.BuildIMAPServer=$IMAP_SERVER
|
-ldflags="-X main.BuildIMAPPort=$IMAP_PORT" \
|
||||||
-X main.BuildIMAPPort=$IMAP_PORT
|
-ldflags="-X main.BuildIMAPUser=$IMAP_USER" \
|
||||||
-X main.BuildIMAPUser=$IMAP_USER
|
-ldflags="-X main.BuildIMAPPassword=$IMAP_PASS" \
|
||||||
-X main.BuildIMAPPassword=$IMAP_PASS
|
-ldflags="-X main.BuildSMTPServer=$SMTP_SERVER" \
|
||||||
-X main.BuildSMTPServer=$SMTP_SERVER
|
-ldflags="-X main.BuildSMTPPort=$SMTP_PORT" \
|
||||||
-X main.BuildSMTPPort=$SMTP_PORT
|
-ldflags="-X main.BuildSMTPUser=$SMTP_USER" \
|
||||||
-X main.BuildSMTPUser=$SMTP_USER
|
-ldflags="-X main.BuildSMTPPassword=$SMTP_PASS" \
|
||||||
-X main.BuildSMTPPassword=$SMTP_PASS
|
-ldflags="-X main.BuildUseSSL=$USE_SSL" \
|
||||||
-X main.BuildUseSSL=$USE_SSL
|
-ldflags="-X main.BuildIgnoreCerts=$IGNORE_CERTS" \
|
||||||
-X main.BuildIgnoreCerts=$IGNORE_CERTS
|
-o ~/bin/nextcloud-mail
|
||||||
LDFLAGSEOF
|
|
||||||
|
|
||||||
go build -ldflags="$(cat "$LDFLAGS_FILE")" -o ~/bin/nextcloud-mail .
|
|
||||||
rm -f "$LDFLAGS_FILE"
|
|
||||||
echo "✓ nextcloud-mail built successfully"
|
echo "✓ nextcloud-mail built successfully"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in new issue
Block a user