From 0f74821c942483c7ef44ba99d5286ee1638d5d4e Mon Sep 17 00:00:00 2001 From: AI Bot Date: Sat, 5 Sep 2026 16:03:28 -0500 Subject: [PATCH] feat: configure official domain drip-zone.online and email info@drip-zone.online across web and native app --- .../java/co/dripzone/app/api/ApiClient.kt | 18 +++------- .../app/ui/OrderVerificationBottomSheet.kt | 2 +- dripzone-app/capacitor.config.ts | 2 +- .../src/app/api/webhook/whatsapp/route.ts | 2 +- dripzone-app/src/config/brands.ts | 2 +- dripzone-app/src/lib/data-service.ts | 6 ++-- dripzone-app/src/lib/evolution-api.ts | 14 ++++---- scripts/check_vps.py | 33 ++++++++++++++----- scripts/deploy_vps.py | 3 ++ scripts/inspect_routing.py | 28 ++++++++++++++++ 10 files changed, 75 insertions(+), 35 deletions(-) create mode 100644 scripts/inspect_routing.py diff --git a/dripzone-app/android/app/src/main/java/co/dripzone/app/api/ApiClient.kt b/dripzone-app/android/app/src/main/java/co/dripzone/app/api/ApiClient.kt index 1afd9cc..be3d2f8 100644 --- a/dripzone-app/android/app/src/main/java/co/dripzone/app/api/ApiClient.kt +++ b/dripzone-app/android/app/src/main/java/co/dripzone/app/api/ApiClient.kt @@ -23,18 +23,10 @@ object ApiClient { private const val TAG = "DripApiClient" private const val CACHE_KEY_PRODUCTS = "cached_products_json" - fun getBaseUrl(): String { - return try { - val addr = java.net.InetAddress.getByName("drip-zone.online") - if (addr != null && !addr.hostAddress.isNullOrBlank()) { - "https://drip-zone.online" - } else { - "https://dripzone.almeira.com.co" - } - } catch (e: Exception) { - "https://dripzone.almeira.com.co" - } - } + const val PRIMARY_BASE_URL = "https://drip-zone.online" + const val FALLBACK_BASE_URL = "https://dripzone.almeira.com.co" + + fun getBaseUrl(): String = PRIMARY_BASE_URL private fun getPrimaryProductsUrl(): String = "${getBaseUrl()}/api/products" private const val FALLBACK_URL = "https://news.almeira.com.co/api/products" @@ -183,7 +175,7 @@ object ApiClient { withContext(Dispatchers.IO) { try { val request = Request.Builder() - .url("https://dripzone.almeira.com.co/api/cities") + .url("${getBaseUrl()}/api/cities") .header("Accept", "application/json") .build() val response = client.newCall(request).execute() diff --git a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt index e5e930a..bfc6c41 100644 --- a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt +++ b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt @@ -112,7 +112,7 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() { } binding.btnOpenWhatsAppChat.setOnClickListener { - val message = "¡Hola Carlos! Acabo de registrar mi pedido en la app oficial de DripZone con la orden *$createdOrderId*. ¿Me confirmas la programación del despacho contraentrega a ${selectedCity.name}?" + val message = "¡Hola DripZone! Acabo de registrar mi pedido en la app oficial con la orden *$createdOrderId*. ¿Me confirman la programación del despacho contraentrega a ${selectedCity.name}?" SecurityManager.openWhatsApp( requireContext(), SecurityManager.WHATSAPP_STORE_PHONE, diff --git a/dripzone-app/capacitor.config.ts b/dripzone-app/capacitor.config.ts index 8d18087..ed9bae9 100644 --- a/dripzone-app/capacitor.config.ts +++ b/dripzone-app/capacitor.config.ts @@ -5,7 +5,7 @@ const config: CapacitorConfig = { appName: 'DripZone', webDir: 'public', server: { - url: 'https://dripzone.almeira.com.co', + url: 'https://drip-zone.online', cleartext: true, androidScheme: 'https', }, diff --git a/dripzone-app/src/app/api/webhook/whatsapp/route.ts b/dripzone-app/src/app/api/webhook/whatsapp/route.ts index dc41700..0ef9139 100644 --- a/dripzone-app/src/app/api/webhook/whatsapp/route.ts +++ b/dripzone-app/src/app/api/webhook/whatsapp/route.ts @@ -203,7 +203,7 @@ export async function POST(request: Request) { // Construcción de la URL de streaming en Alta Definición Full HD const relativeImageUrl = `/api/whatsapp-media?id=${encodeURIComponent(whatsappMessageId)}&remoteJid=${encodeURIComponent(remoteJid)}`; - const fullMediaUrl = `https://dripzone.almeira.com.co/api/whatsapp-media?id=${encodeURIComponent(whatsappMessageId)}&remoteJid=${encodeURIComponent(remoteJid)}`; + const fullMediaUrl = `https://drip-zone.online/api/whatsapp-media?id=${encodeURIComponent(whatsappMessageId)}&remoteJid=${encodeURIComponent(remoteJid)}`; // 6. CREACIÓN Y PUBLICACIÓN DEL PRODUCTO EN LA APP Y CATÁLOGO const newProduct: Product = { diff --git a/dripzone-app/src/config/brands.ts b/dripzone-app/src/config/brands.ts index 7bfd838..f989454 100644 --- a/dripzone-app/src/config/brands.ts +++ b/dripzone-app/src/config/brands.ts @@ -127,7 +127,7 @@ export const BRANDS: Record = { tagline: 'Ropa urbana y zapatillas deportivas', badge: 'Edición Limitada', couponCode: 'DRIP-VIP', - whatsappNumber: '573167455877', + whatsappNumber: '573106390296', colors: { primaryGradient: 'from-purple-600 via-fuchsia-500 to-pink-600', secondaryGradient: 'from-purple-500 to-pink-500', diff --git a/dripzone-app/src/lib/data-service.ts b/dripzone-app/src/lib/data-service.ts index d2e4c78..611f16b 100644 --- a/dripzone-app/src/lib/data-service.ts +++ b/dripzone-app/src/lib/data-service.ts @@ -853,9 +853,9 @@ class DataService { private settings: StoreSettings = { storeName: 'DripZone', slogan: 'Luxury Streetwear & Collectibles', - email: 'carlos.andres.lasso@gmail.com', - phone: '3167455877', - whatsappNumber: '573167455877', + email: 'info@drip-zone.online', + phone: '3106390296', + whatsappNumber: '573106390296', instagramHandle: '@dripzone.co', address: 'Bodega Central / Cali', city: 'Cali, Colombia', diff --git a/dripzone-app/src/lib/evolution-api.ts b/dripzone-app/src/lib/evolution-api.ts index 42b5124..ee0e246 100644 --- a/dripzone-app/src/lib/evolution-api.ts +++ b/dripzone-app/src/lib/evolution-api.ts @@ -133,7 +133,7 @@ export async function notifyNewProductPublished( `📏 *Tallas Disponibles:* ${sizesText}\n` + `📍 *Grupo Proveedor:* ${sourceGroup || 'Canal Mayorista'}\n\n` + `🌐 *Ver en la Tienda Web:*\n` + - `👉 https://dripzone.almeira.com.co\n\n` + + `👉 https://drip-zone.online\n\n` + `📱 *Disponible de inmediato en la aplicación móvil DripZone para todos los clientes.*\n` + `━━━━━━━━━━━━━━━━━━━━━━` ); @@ -145,12 +145,12 @@ export async function notifyNewProductPublished( if (rawImg.startsWith('http://') || rawImg.startsWith('https://')) { resolvedMediaUrl = rawImg; } else if (rawImg.startsWith('/')) { - resolvedMediaUrl = `https://dripzone.almeira.com.co${rawImg}`; + resolvedMediaUrl = `https://drip-zone.online${rawImg}`; } else { - resolvedMediaUrl = `https://dripzone.almeira.com.co/${rawImg}`; + resolvedMediaUrl = `https://drip-zone.online/${rawImg}`; } } else if (resolvedMediaUrl && !resolvedMediaUrl.startsWith('http')) { - resolvedMediaUrl = `https://dripzone.almeira.com.co${resolvedMediaUrl.startsWith('/') ? '' : '/'}${resolvedMediaUrl}`; + resolvedMediaUrl = `https://drip-zone.online${resolvedMediaUrl.startsWith('/') ? '' : '/'}${resolvedMediaUrl}`; } const dispatchedTo: string[] = []; @@ -259,7 +259,7 @@ export async function notifyAdminNewOrder(order: any): Promise { `• *Saldo a Cobrar Contraentrega:* *${formatCOP(order.balanceDue || order.totalAmount || 0)}*\n` + `━━━━━━━━━━━━━━━━━━━━━━\n` + `⚡ *Gestionar en el Panel de Administración:*\n` + - `👉 https://dripzone.almeira.com.co/admin/pedidos` + `👉 https://drip-zone.online/admin/pedidos` ); // Extraer y resolver la URL absoluta de la fotografía del calzado @@ -270,9 +270,9 @@ export async function notifyAdminNewOrder(order: any): Promise { if (rawImage.startsWith('http://') || rawImage.startsWith('https://')) { resolvedImageUrl = rawImage; } else if (rawImage.startsWith('/')) { - resolvedImageUrl = `https://dripzone.almeira.com.co${rawImage}`; + resolvedImageUrl = `https://drip-zone.online${rawImage}`; } else { - resolvedImageUrl = `https://dripzone.almeira.com.co/${rawImage}`; + resolvedImageUrl = `https://drip-zone.online/${rawImage}`; } } diff --git a/scripts/check_vps.py b/scripts/check_vps.py index 518e842..9535283 100644 --- a/scripts/check_vps.py +++ b/scripts/check_vps.py @@ -1,10 +1,27 @@ import paramiko +import sys -client = paramiko.SSHClient() -client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) -client.connect('161.97.93.156', username='carlos', password='Innova1978+*?', timeout=20) -stdin, stdout, stderr = client.exec_command('docker inspect dripzone-production --format "{{.Config.WorkingDir}} - {{.Config.Cmd}}"') -print("dripzone-production cmd:", stdout.read().decode('utf-8')) -stdin, stdout, stderr = client.exec_command('docker inspect bfmnoga3lb0ckomhdmxe0rco-021053217798 --format "{{.Config.WorkingDir}} - {{.Config.Cmd}}"') -print("coolify dripzone cmd:", stdout.read().decode('utf-8')) -client.close() +HOST = "161.97.93.156" +USER = "carlos" +PASSWORD = "Innova1978+*?" + +try: + ssh = paramiko.SSHClient() + ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + ssh.connect(HOST, username=USER, password=PASSWORD, timeout=10) + + stdin, stdout, stderr = ssh.exec_command('docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"') + print("=== DOCKER PS ===") + print(stdout.read().decode('utf-8')) + + stdin, stdout, stderr = ssh.exec_command('docker logs --tail 30 dripzone-production 2>&1') + print("=== DRIPZONE PRODUCTION LOGS ===") + print(stdout.read().decode('utf-8')) + + stdin, stdout, stderr = ssh.exec_command('ps aux | grep -E "docker|build" | grep -v grep') + print("=== RUNNING BUILDS / PROCESSES ===") + print(stdout.read().decode('utf-8')) + + ssh.close() +except Exception as e: + print("Error:", e) diff --git a/scripts/deploy_vps.py b/scripts/deploy_vps.py index e42ed95..ef50515 100644 --- a/scripts/deploy_vps.py +++ b/scripts/deploy_vps.py @@ -27,9 +27,11 @@ FILES_TO_SYNC = [ "src/lib/data-service.ts", "src/lib/evolution-api.ts", "src/lib/bold-service.ts", + "src/config/brands.ts", "src/app/api/bold/create-payment/route.ts", "src/app/api/bold/status/route.ts", "src/app/api/webhook/bold/route.ts", + "src/app/api/webhook/whatsapp/route.ts", "src/app/api/whatsapp-media/route.ts", "src/app/api/whatsapp-feed/route.ts", "src/app/api/whatsapp-groups/route.ts", @@ -40,6 +42,7 @@ FILES_TO_SYNC = [ "src/components/store/ProductModal.tsx", "src/components/custom-requests/CustomRequestModal.tsx", "docker-compose.prod.yml", + "capacitor.config.ts", ".env.local", "public/DripZone.apk", ] diff --git a/scripts/inspect_routing.py b/scripts/inspect_routing.py new file mode 100644 index 0000000..4d8dca6 --- /dev/null +++ b/scripts/inspect_routing.py @@ -0,0 +1,28 @@ +import paramiko + +HOST = "161.97.93.156" +USER = "carlos" +PASSWORD = "Innova1978+*?" + +ssh = paramiko.SSHClient() +ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) +ssh.connect(HOST, username=USER, password=PASSWORD, timeout=10) + +# Check labels of coolify container +stdin, stdout, stderr = ssh.exec_command("docker ps --filter 'name=bfmnoga3' --format '{{.Names}}'") +coolify_c_name = stdout.read().decode('utf-8').strip() +print("Coolify container name:", coolify_c_name) + +if coolify_c_name: + stdin, stdout, stderr = ssh.exec_command(f"docker inspect {coolify_c_name} --format '{{{{json .Config.Labels}}}}'") + print("Coolify labels:", stdout.read().decode('utf-8')) + +# Check dripzone-production labels +stdin, stdout, stderr = ssh.exec_command("docker inspect dripzone-production --format '{{json .Config.Labels}}'") +print("\ndripzone-production labels:", stdout.read().decode('utf-8')) + +# Test curl locally on the VPS +stdin, stdout, stderr = ssh.exec_command("curl -I -k -H 'Host: drip-zone.online' https://127.0.0.1:443") +print("\nCurl drip-zone.online via localhost:443:\n", stdout.read().decode('utf-8')) + +ssh.close()