#!/bin/bash echo "╔══════════════════════════════════════════════════════════════╗" echo "║ MongoDB Connection Verification ║" echo "╚══════════════════════════════════════════════════════════════╝" echo "" # 1. Check MongoDB Service echo "[1/5] MongoDB Service Status" if systemctl is-active --quiet mongod; then echo " ✅ MongoDB service is running" UPTIME=$(systemctl show mongod --property=ActiveEnterTimestamp --value) echo " 📅 Uptime: $UPTIME" else echo " ❌ MongoDB service is NOT running" exit 1 fi echo "" # 2. Check MongoDB Port echo "[2/5] MongoDB Network Binding" if sudo ss -tulpn | grep -q 27017; then echo " ✅ MongoDB listening on port 27017" BIND=$(sudo ss -tulpn | grep 27017 | awk '{print $5}') echo " 🔌 Binding: $BIND" else echo " ❌ MongoDB NOT listening on port 27017" exit 1 fi echo "" # 3. Test Direct Connection echo "[3/5] Direct MongoDB Connection Test" if mongosh --quiet --eval "db.version()" SkyArtShopDB >/dev/null 2>&1; then VERSION=$(mongosh --quiet --eval "db.version()" SkyArtShopDB 2>/dev/null) echo " ✅ Can connect to MongoDB" echo " 📦 Version: $VERSION" COLLECTIONS=$(mongosh --quiet --eval "db.getCollectionNames().length" SkyArtShopDB 2>/dev/null) echo " 📚 Collections: $COLLECTIONS" PRODUCTS=$(mongosh --quiet --eval "db.Products.countDocuments()" SkyArtShopDB 2>/dev/null) echo " 🛍️ Products: $PRODUCTS" else echo " ❌ Cannot connect to MongoDB" exit 1 fi echo "" # 4. Check Application Configuration echo "[4/5] Application MongoDB Configuration" if [ -f /var/www/SkyArtShop/publish/appsettings.Production.json ]; then CONN_STRING=$(grep -A 1 "ConnectionString" /var/www/SkyArtShop/publish/appsettings.Production.json | grep -oP '(?<=": ")[^"]+') DB_NAME=$(grep -A 2 "MongoDB" /var/www/SkyArtShop/publish/appsettings.Production.json | grep "DatabaseName" | grep -oP '(?<=": ")[^"]+') echo " ✅ Configuration file found" echo " 🔗 Connection: $CONN_STRING" echo " 💾 Database: $DB_NAME" else echo " ❌ Configuration file NOT found" exit 1 fi echo "" # 5. Test Website Data Retrieval echo "[5/5] Website Data Retrieval Test" PRODUCTS_ON_PAGE=$(curl -s https://skyarts.ddns.net/Shop 2>&1 | grep -c "product-card") if [ "$PRODUCTS_ON_PAGE" -gt 0 ]; then echo " ✅ Website retrieving data from MongoDB" echo " 📦 Products displayed: $PRODUCTS_ON_PAGE" # Test admin dashboard curl -c /tmp/mongo-test.txt -b /tmp/mongo-test.txt -X POST "https://skyarts.ddns.net/admin/login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "email=admin@skyartshop.com&password=Admin123!" \ -k -s -o /dev/null 2>&1 if curl -b /tmp/mongo-test.txt "https://skyarts.ddns.net/admin/products" -k -s 2>&1 | grep -q "product"; then echo " ✅ Admin backend accessing MongoDB" fi rm -f /tmp/mongo-test.txt else echo " ❌ Website NOT retrieving data" fi echo "" # Summary echo "╔══════════════════════════════════════════════════════════════╗" echo "║ ✅ CONNECTION VERIFIED ║" echo "╚══════════════════════════════════════════════════════════════╝" echo "" echo "Architecture:" echo " 🖥️ Linux Server: $(hostname)" echo " 🌐 Web Application: ASP.NET Core 8.0 (localhost:5000)" echo " 💾 MongoDB: Local (127.0.0.1:27017)" echo " 🔒 Nginx Proxy: Public (skyarts.ddns.net:443)" echo "" echo "Data Flow:" echo " Browser → Nginx (SSL) → ASP.NET App → MongoDB" echo " (All running on the same Linux server)" echo "" echo "✅ Website is properly connected to MongoDB on this Linux server" echo ""