Files
nextcloud-integration/build.sh
T
WLTBAgent 6a90e5f0e5 Simplify build.sh: remove complex escaping, use simple ldflags
The build script was using complex escaping mechanisms that were causing
linker failures with certain passwords.

Simplified to use the same approach as other Nextcloud tools:
- No temp files
- No escaping functions
- Direct variable substitution in ldflags

This matches the pattern used for nextcloud-client, nextcloud-contacts,
and nextcloud-calendar.

Known limitation: Passwords containing spaces, double quotes,
or $ characters may fail to build. Users with such passwords
should use a simpler password or manually modify the build command.
2026-02-23 22:02:08 +00:00

126 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
# Build Nextcloud CLI tools with compile-time credentials
# Usage: ./build.sh <server-url> <username> <token>
set -e
# Check arguments
if [ $# -ne 3 ]; then
echo "Usage: $0 <server-url> <username> <token>"
echo ""
echo "Example:"
echo " $0 https://teamworkapps.com wltbagent@shortcutsolutions.net YOUR_APP_TOKEN"
exit 1
fi
SERVER_URL="$1"
USERNAME="$2"
TOKEN="$3"
echo "Building Nextcloud CLI tools with credentials..."
echo "Server: $SERVER_URL"
echo "User: $USERNAME"
echo "Token: ${TOKEN:0:10}..."
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Email Integration Setup (IMAP/SMTP)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "Nextcloud Mail uses different credentials from the other Nextcloud tools."
echo "These are IMAP/SMTP credentials, not Nextcloud API credentials."
echo ""
# Prompt for email credentials
read -p "IMAP Server hostname (default: teamworkapps.com): " IMAP_SERVER
IMAP_SERVER=${IMAP_SERVER:-teamworkapps.com}
read -p "IMAP Port (default: 993 for SSL, 143 for STARTTLS): " IMAP_PORT
IMAP_PORT=${IMAP_PORT:-993}
read -p "IMAP Username: " IMAP_USER
read -sp "IMAP Password: " IMAP_PASS
echo ""
read -p "SMTP Server hostname (default: teamworkapps.com): " SMTP_SERVER
SMTP_SERVER=${SMTP_SERVER:-teamworkapps.com}
read -p "SMTP Port (default: 465 for SSL, 587 for STARTTLS): " SMTP_PORT
SMTP_PORT=${SMTP_PORT:-465}
read -p "SMTP Username (default: same as IMAP): " SMTP_USER
SMTP_USER=${SMTP_USER:-$IMAP_USER}
read -sp "SMTP Password (default: same as IMAP): " SMTP_PASS
echo ""
if [ -z "$SMTP_PASS" ]; then
SMTP_PASS="$IMAP_PASS"
fi
read -p "Use SSL/TLS? (Y/n, default: Y): " USE_SSL
USE_SSL=${USE_SSL:-Y}
if [ "$USE_SSL" = "Y" ] || [ "$USE_SSL" = "y" ]; then
USE_SSL="true"
else
USE_SSL="false"
fi
read -p "Ignore certificate validity errors? (y/N, default: N): " IGNORE_CERTS
IGNORE_CERTS=${IGNORE_CERTS:-N}
if [ "$IGNORE_CERTS" = "Y" ] || [ "$IGNORE_CERTS" = "y" ]; then
IGNORE_CERTS="true"
else
IGNORE_CERTS="false"
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Email Credentials Summary:"
echo " IMAP: $IMAP_USER@$IMAP_SERVER:$IMAP_PORT (SSL: $USE_SSL)"
echo " SMTP: $SMTP_USER@$SMTP_SERVER:$SMTP_PORT (SSL: $USE_SSL)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Build nextcloud-client
echo "Building nextcloud-client"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR/tools/go/nextcloud-client"
go build -ldflags="-X main.BuildServerURL=$SERVER_URL -X main.BuildUsername=$USERNAME -X main.BuildToken=$TOKEN" -o ~/bin/nextcloud-client .
echo "✓ nextcloud-client built successfully"
# Build nextcloud-contacts
echo "Building nextcloud-contacts..."
cd "$SCRIPT_DIR/tools/go/nextcloud-contacts"
go build -ldflags="-X main.BuildServerURL=$SERVER_URL -X main.BuildUsername=$USERNAME -X main.BuildToken=$TOKEN" -o ~/bin/nextcloud-contacts .
echo "✓ nextcloud-contacts built successfully"
# Build nextcloud-calendar
echo "Building nextcloud-calendar..."
cd "$SCRIPT_DIR/tools/go/nextcloud-calendar"
go build -ldflags="-X main.BuildServerURL=$SERVER_URL -X main.BuildUsername=$USERNAME -X main.BuildToken=$TOKEN" -o ~/bin/nextcloud-calendar .
echo "✓ nextcloud-calendar built successfully"
# Build nextcloud-mail
echo "Building nextcloud-mail..."
cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
# Build with compile-time credentials
# Note: This simple approach works for most passwords but may fail with
# passwords containing spaces, double quotes, or $ characters
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 .
echo "✓ nextcloud-mail built successfully"
echo ""
echo "All tools built successfully!"
echo ""
echo "Binaries installed at:"
echo " ~/bin/nextcloud-client (WebDAV file operations)"
echo " ~/bin/nextcloud-contacts (CardDAV address books)"
echo " ~/bin/nextcloud-calendar (CalDAV events)"
echo " ~/bin/nextcloud-mail (IMAP/SMTP email)"
echo ""
echo "Security Note: These binaries contain credentials in clear text."
echo "Do not distribute them outside your trusted environment."