Build script now validates that IMAP username and password are not empty before proceeding with the build. This prevents the binary from being built with empty credentials which would cause connection errors like: "dial tcp :143" (empty hostname)
149 lines
5.1 KiB
Bash
Executable File
149 lines
5.1 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
|
|
if [ -z "$IMAP_USER" ]; then
|
|
echo "❌ Error: IMAP username cannot be empty"
|
|
exit 1
|
|
fi
|
|
|
|
read -sp "IMAP Password: " IMAP_PASS
|
|
if [ -z "$IMAP_PASS" ]; then
|
|
echo "❌ Error: IMAP password cannot be empty"
|
|
exit 1
|
|
fi
|
|
|
|
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
|
|
if [ -z "$SMTP_PASS" ]; then
|
|
SMTP_PASS="$IMAP_PASS"
|
|
fi
|
|
|
|
if [ -z "$SMTP_PASS" ]; then
|
|
echo "❌ Error: SMTP password cannot be empty (IMAP password also empty)"
|
|
exit 1
|
|
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 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 ""
|
|
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."
|