- Build script now shows summary of embedded credentials after build - quick-test.sh now checks if binary has credentials before running - This prevents the "dial tcp :143" empty server error Tests if help output shows empty string in default values.
175 lines
6.3 KiB
Bash
Executable File
175 lines
6.3 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"
|
|
|
|
# Verification: Show what credentials were embedded
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " Build Verification Summary"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " IMAP Server: $IMAP_SERVER"
|
|
echo " IMAP Port: $IMAP_PORT"
|
|
echo " IMAP Username: $IMAP_USER"
|
|
echo " IMAP Password: [$(echo "$IMAP_PASS" | sed 's/./*/g')]"
|
|
echo " SMTP Server: $SMTP_SERVER"
|
|
echo " SMTP Port: $SMTP_PORT"
|
|
echo " SMTP Username: $SMTP_USER"
|
|
echo " SMTP Password: [$(echo "$SMTP_PASS" | sed 's/./*/g')]"
|
|
echo " Use SSL: $USE_SSL"
|
|
echo " Ignore Certs: $IGNORE_CERTS"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
if [ -z "$IMAP_USER" ] || [ -z "$IMAP_PASS" ]; then
|
|
echo "⚠️ Warning: IMAP username or password appears to be empty!"
|
|
echo " The binary was built but may not work correctly."
|
|
echo " If this is incorrect, please rebuild with valid credentials."
|
|
fi
|
|
|
|
echo ""
|
|
|
|
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."
|