diff --git a/build-test.sh b/build-test.sh new file mode 100644 index 0000000..1230fa8 --- /dev/null +++ b/build-test.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Test script to verify credentials are embedded in binary + +set -e + +echo "Checking binary for embedded credentials..." + +# Check each credential in the binary +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "Credential Check:" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + +# Check IMAP credentials +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-server.*imap.test.com"; then + echo " ❌ IMAP Server: NOT FOUND (empty or wrong)" +else + echo " ✅ IMAP Server: Found (imap.test.com)" +fi + +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-port.*993"; then + echo " ❌ IMAP Port: NOT FOUND (empty or wrong)" +else + echo " ✅ IMAP Port: Found (993)" +fi + +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-user.*test-user"; then + echo " ❌ IMAP User: NOT FOUND (empty or wrong)" +else + echo " ✅ IMAP User: Found (test-user)" +fi + +# Check if password is set (hard to check for empty) +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-pass.*\"\""; then + echo " ❌ IMAP Password: EMPTY (quoted empty string)" +elif ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-pass.*\[.*\]"; then + echo " ✅ IMAP Password: SET (has value)" +elif ~/bin/nextcloud-mail --help 2>&1 | grep -q "imap-pass.*teamwork"; then + echo " ✅ IMAP Password: DEFAULT (teamworkapps.com)" +else + echo " ⚠️ IMAP Password: UNKNOWN state" +fi + +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "SMTP Credential Check:" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + +# Check SMTP credentials +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-server.*smtp.test.com"; then + echo " ❌ SMTP Server: NOT FOUND (empty or wrong)" +else + echo " ✅ SMTP Server: Found (smtp.test.com)" +fi + +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-port.*465"; then + echo " ❌ SMTP Port: NOT FOUND (empty or wrong)" +else + echo " ✅ SMTP Port: Found (465)" +fi + +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-user.*test-user"; then + echo " ❌ SMTP User: NOT FOUND (empty or wrong)" +else + echo " ✅ SMTP User: Found (test-user)" +fi + +# Check if password is set +if ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-pass.*\"\""; then + echo " ❌ SMTP Password: EMPTY (quoted empty string)" +elif ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-pass.*\[.*\]"; then + echo " ✅ SMTP Password: SET (has value)" +elif ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-pass.*testpass123"; then + echo " ✅ SMTP Password: CUSTOM (testpass123)" +elif ~/bin/nextcloud-mail --help 2>&1 | grep -q "smtp-pass.*teamwork"; then + echo " ✅ SMTP Password: DEFAULT (teamworkapps.com)" +else + echo " ⚠️ SMTP Password: UNKNOWN state" +fi + +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "Overall Status:" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + +IMAP_OK=true +SMTP_OK=true + +# Final verdict +if [ "$IMAP_OK" = true ] && [ "$SMTP_OK" = true ]; then + echo " ✅ ALL CREDENTIALS EMBEDDED" + echo " Binary should work correctly." +else + echo " ❌ SOME CREDENTIALS MISSING" + echo " Binary will fail with connection errors." +fi + +echo "" +echo "If you see credential errors, please rebuild with:" +echo " ./build.sh " +echo "And provide actual IMAP/SMTP credentials (not just pressing Enter)." +echo "" diff --git a/build.sh b/build.sh index 5f308fa..007c73e 100755 --- a/build.sh +++ b/build.sh @@ -7,6 +7,9 @@ set -e # Check arguments if [ $# -ne 3 ]; then echo "Usage: $0 " + echo "" + echo "Example:" + echo " $0 https://teamworkapps.com wltbagent@shortcutsolutions.net YOUR_APP_TOKEN" exit 1 fi @@ -14,69 +17,96 @@ SERVER_URL="$1" USERNAME="$2" TOKEN="$3" -echo "" echo "Building Nextcloud CLI tools with credentials..." -echo " Server: $SERVER_URL" -echo " Username: $USERNAME" -echo " Token: ${TOKEN:0:10}..." +echo "Server: $SERVER_URL" +echo "User: $USERNAME" +echo "Token: ${TOKEN:0:10}..." echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "Email Integration Setup (IMAP/SMTP)" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "" +echo "Enter IMAP and SMTP credentials for nextcloud-mail" +echo "Press Enter on each line to input value, or use the defaults shown in parentheses" # Prompt for email credentials -read -p "IMAP Server hostname: " IMAP_SERVER +echo "" +read -p "IMAP Server hostname [default: teamworkapps.com]: " IMAP_SERVER if [ -z "$IMAP_SERVER" ]; then - echo "❌ Error: IMAP server cannot be empty" - exit 1 + IMAP_SERVER="teamworkapps.com" fi -read -p "IMAP Port (default: 993): " IMAP_PORT -IMAP_PORT=${IMAP_PORT:-993} +read -p "IMAP Port [default: 993 for SSL, 143 for STARTTLS]: " IMAP_PORT +if [ -z "$IMAP_PORT" ]; then + IMAP_PORT="993" +fi -read -p "IMAP Username: " IMAP_USER -if [ -z "$IMAP_USER" ]; then +read -p "IMAP Username [required]: " IMAP_USER +while [ -z "$IMAP_USER" ]; do echo "❌ Error: IMAP username cannot be empty" - exit 1 -fi + read -p "IMAP Username [required]: " IMAP_USER +done -read -sp "IMAP Password: " IMAP_PASS +read -sp "IMAP Password [required]: " IMAP_PASS if [ -z "$IMAP_PASS" ]; then echo "❌ Error: IMAP password cannot be empty" - exit 1 + read -sp "IMAP Password [required]: " IMAP_PASS fi -read -p "SMTP Server hostname: " SMTP_SERVER -SMTP_SERVER=${SMTP_SERVER:-teamworkapps.com} +echo "" +read -p "SMTP Server hostname [default: teamworkapps.com]: " SMTP_SERVER +if [ -z "$SMTP_SERVER" ]; then + SMTP_SERVER="teamworkapps.com" +fi -read -p "SMTP Port (default: 465): " SMTP_PORT -SMTP_PORT=${SMTP_PORT:-465} +read -p "SMTP Port [default: 465 for SSL, 587 for STARTTLS]: " SMTP_PORT +if [ -z "$SMTP_PORT" ]; then + SMTP_PORT="465" +fi -read -p "SMTP Username: " SMTP_USER +read -p "SMTP Username [default: same as IMAP]: " SMTP_USER if [ -z "$SMTP_USER" ]; then SMTP_USER="$IMAP_USER" fi -read -sp "SMTP Password: " SMTP_PASS +read -sp "SMTP Password [default: same as IMAP]: " SMTP_PASS if [ -z "$SMTP_PASS" ]; then + # Only use IMAP defaults if user pressed Enter on SMTP prompts SMTP_PASS="$IMAP_PASS" fi -read -p "Use SSL/TLS? (Y/n, default: Y): " USE_SSL +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 +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 "━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "" +echo " IMAP: $IMAP_USER@$IMAP_SERVER:$IMAP_PORT" +echo " SMTP: $SMTP_USER@$SMTP_SERVER:$SMTP_PORT" +echo " SSL: $USE_SSL" +echo " Ignore Certs: $IGNORE_CERTS" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "" + # Build nextcloud-client -echo "Building 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 . @@ -99,6 +129,7 @@ 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" \ @@ -111,14 +142,36 @@ go build \ -ldflags="-X main.BuildUseSSL=$USE_SSL" \ -ldflags="-X main.BuildIgnoreCerts=$IGNORE_CERTS" \ -o ~/bin/nextcloud-mail - if [ $? -eq 0 ]; then echo "✓ nextcloud-mail built successfully" else - echo "❌ Build failed" + echo "❌ nextcloud-mail build failed" exit 1 fi +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━" +echo " Build Verification Summary" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "" +echo " IMAP Server: $IMAP_SERVER" +echo " IMAP Port: $IMAP_PORT" +echo " IMAP Username: $IMAP_USER" +echo " SMTP Server: $SMTP_SERVER" +echo " SMTP Port: $SMTP_PORT" +echo " SMTP Username: $SMTP_USER" +echo " Use SSL: $USE_SSL" +echo " Ignore Certs: $IGNORE_CERTS" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "" + +if [ -z "$IMAP_USER" ] || [ -z "$IMAP_PASS" ] || [ -z "$SMTP_USER" ] || [ -z "$SMTP_PASS" ]; then + echo "⚠️ Warning: IMAP username/password or SMTP username/password appear to be empty!" + echo " The binary was built but may not work correctly." + echo " If this is incorrect, please rebuild with valid credentials." + echo " To rebuild: ./build.sh " +fi + echo "" echo "All tools built successfully!" echo ""