Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
import os
|
| 2 |
import logging
|
|
|
|
| 3 |
import requests
|
| 4 |
import dns.resolver
|
| 5 |
from heyoo import WhatsApp
|
|
@@ -20,39 +21,39 @@ logger = logging.getLogger(__name__)
|
|
| 20 |
load_dotenv()
|
| 21 |
|
| 22 |
# Configure DNS resolver with environment variables from Spaces
|
| 23 |
-
nameserver1 = os.getenv('nameserver1', '8.8.8.8')
|
| 24 |
-
nameserver2 = os.getenv('nameserver2', '8.8.4.4')
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
|
|
|
|
|
|
|
|
|
| 32 |
try:
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
| 35 |
except Exception as e:
|
| 36 |
-
logger.error(f"DNS resolution failed
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
logger.error(f"DNS resolution failed: {e}")
|
| 47 |
-
return super().send(request, **kwargs)
|
| 48 |
-
|
| 49 |
-
# Initialize WhatsApp with custom session
|
| 50 |
try:
|
| 51 |
-
session = CustomSession()
|
| 52 |
messenger = WhatsApp(
|
| 53 |
os.getenv("whatsapp_token"),
|
| 54 |
-
phone_number_id=os.getenv("phone_number_id")
|
| 55 |
-
session=session
|
| 56 |
)
|
| 57 |
if not os.getenv("whatsapp_token") or not os.getenv("phone_number_id"):
|
| 58 |
raise ValueError("Missing required environment variables")
|
|
@@ -66,6 +67,8 @@ VERIFY_TOKEN = "30cca545-3838-48b2-80a7-9e43b1ae8ce4"
|
|
| 66 |
def health_check():
|
| 67 |
"""Health check endpoint to verify DNS resolution"""
|
| 68 |
try:
|
|
|
|
|
|
|
| 69 |
ip = resolver.resolve('graph.facebook.com', 'A')[0]
|
| 70 |
return {
|
| 71 |
"status": "healthy",
|
|
@@ -184,10 +187,12 @@ def handle_media_message(messenger, data, message_type, mobile):
|
|
| 184 |
def test_connection():
|
| 185 |
"""Test DNS resolution and connection to Graph API"""
|
| 186 |
try:
|
|
|
|
|
|
|
| 187 |
ip = resolver.resolve('graph.facebook.com', 'A')[0]
|
| 188 |
logger.info(f"DNS Resolution successful: {ip}")
|
| 189 |
|
| 190 |
-
response =
|
| 191 |
logger.info(f"HTTPS Connection successful: {response.status_code}")
|
| 192 |
|
| 193 |
except Exception as e:
|
|
|
|
| 1 |
import os
|
| 2 |
import logging
|
| 3 |
+
import socket
|
| 4 |
import requests
|
| 5 |
import dns.resolver
|
| 6 |
from heyoo import WhatsApp
|
|
|
|
| 21 |
load_dotenv()
|
| 22 |
|
| 23 |
# Configure DNS resolver with environment variables from Spaces
|
| 24 |
+
nameserver1 = os.getenv('nameserver1', '8.8.8.8')
|
| 25 |
+
nameserver2 = os.getenv('nameserver2', '8.8.4.4')
|
| 26 |
+
|
| 27 |
+
# Configure global DNS resolution
|
| 28 |
+
def setup_dns():
|
| 29 |
+
"""Configure DNS resolution globally"""
|
| 30 |
+
resolver = dns.resolver.Resolver()
|
| 31 |
+
resolver.nameservers = [nameserver1, nameserver2]
|
| 32 |
+
|
| 33 |
+
# Create a custom getaddrinfo function
|
| 34 |
+
_orig_getaddrinfo = socket.getaddrinfo
|
| 35 |
+
def new_getaddrinfo(*args, **kwargs):
|
| 36 |
try:
|
| 37 |
+
# If the host is graph.facebook.com, use our custom resolver
|
| 38 |
+
if args and args[0] == 'graph.facebook.com':
|
| 39 |
+
answers = resolver.resolve('graph.facebook.com', 'A')
|
| 40 |
+
ip = str(answers[0])
|
| 41 |
+
return _orig_getaddrinfo(ip, *args[1:], **kwargs)
|
| 42 |
except Exception as e:
|
| 43 |
+
logger.error(f"DNS resolution failed: {e}")
|
| 44 |
+
return _orig_getaddrinfo(*args, **kwargs)
|
| 45 |
+
|
| 46 |
+
# Replace the global getaddrinfo function
|
| 47 |
+
socket.getaddrinfo = new_getaddrinfo
|
| 48 |
+
|
| 49 |
+
# Setup DNS resolution
|
| 50 |
+
setup_dns()
|
| 51 |
+
|
| 52 |
+
# Initialize WhatsApp
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
try:
|
|
|
|
| 54 |
messenger = WhatsApp(
|
| 55 |
os.getenv("whatsapp_token"),
|
| 56 |
+
phone_number_id=os.getenv("phone_number_id")
|
|
|
|
| 57 |
)
|
| 58 |
if not os.getenv("whatsapp_token") or not os.getenv("phone_number_id"):
|
| 59 |
raise ValueError("Missing required environment variables")
|
|
|
|
| 67 |
def health_check():
|
| 68 |
"""Health check endpoint to verify DNS resolution"""
|
| 69 |
try:
|
| 70 |
+
resolver = dns.resolver.Resolver()
|
| 71 |
+
resolver.nameservers = [nameserver1, nameserver2]
|
| 72 |
ip = resolver.resolve('graph.facebook.com', 'A')[0]
|
| 73 |
return {
|
| 74 |
"status": "healthy",
|
|
|
|
| 187 |
def test_connection():
|
| 188 |
"""Test DNS resolution and connection to Graph API"""
|
| 189 |
try:
|
| 190 |
+
resolver = dns.resolver.Resolver()
|
| 191 |
+
resolver.nameservers = [nameserver1, nameserver2]
|
| 192 |
ip = resolver.resolve('graph.facebook.com', 'A')[0]
|
| 193 |
logger.info(f"DNS Resolution successful: {ip}")
|
| 194 |
|
| 195 |
+
response = requests.get('https://graph.facebook.com')
|
| 196 |
logger.info(f"HTTPS Connection successful: {response.status_code}")
|
| 197 |
|
| 198 |
except Exception as e:
|