Fix build.sh: add proper escaping for nextcloud-mail ldflags
The build was failing with Go linker errors because special characters in user-provided credentials (especially passwords) were not being properly escaped. Added escape_ldflag() function to handle: - Backslashes - Double quotes - Spaces This ensures that any user input (including passwords with special characters) is safely passed to Go's linker without breaking the build command.
This commit is contained in:
1 parent
72b4337cc2
commit
154a93a148
1 file changed
+22
-1
@@ -105,7 +105,28 @@ echo "✓ nextcloud-calendar built successfully"
|
||||
# Build nextcloud-mail
|
||||
echo "Building nextcloud-mail..."
|
||||
cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
|
||||
go build -ldflags="-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" -o ~/bin/nextcloud-mail .
|
||||
|
||||
# Build ldflags - escape special characters in values
|
||||
escape_ldflag() {
|
||||
local value="$1"
|
||||
# Escape backslashes, double quotes, and spaces
|
||||
value="${value//\\/\\\\}"
|
||||
value="${value//\"/\\\"}"
|
||||
echo "$value"
|
||||
}
|
||||
|
||||
LDFLAGS="-X main.BuildIMAPServer=\"$(escape_ldflag "$IMAP_SERVER")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildIMAPPort=\"$(escape_ldflag "$IMAP_PORT")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildIMAPUser=\"$(escape_ldflag "$IMAP_USER")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildIMAPPassword=\"$(escape_ldflag "$IMAP_PASS")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildSMTPServer=\"$(escape_ldflag "$SMTP_SERVER")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildSMTPPort=\"$(escape_ldflag "$SMTP_PORT")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildSMTPUser=\"$(escape_ldflag "$SMTP_USER")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildSMTPPassword=\"$(escape_ldflag "$SMTP_PASS")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildUseSSL=\"$(escape_ldflag "$USE_SSL")\""
|
||||
LDFLAGS="$LDFLAGS -X main.BuildIgnoreCerts=\"$(escape_ldflag "$IGNORE_CERTS")\""
|
||||
|
||||
go build -ldflags="$LDFLAGS" -o ~/bin/nextcloud-mail .
|
||||
echo "✓ nextcloud-mail built successfully"
|
||||
|
||||
echo ""
|
||||
|
||||
Reference in new issue
Block a user