X1ng1 commited on
Commit
43b32ba
·
1 Parent(s): 4047270

pleeeaaassseee

Browse files
Files changed (2) hide show
  1. discord_oauth.py +6 -6
  2. discord_service.py +12 -8
discord_oauth.py CHANGED
@@ -23,13 +23,13 @@ def get_discord_api_url():
23
  try:
24
  # Try standard URL first
25
  socket.gethostbyname("discord.com")
26
- return "https://discord.com/api/v10/oauth2/token", {}
27
  except socket.gaierror:
28
  # DNS resolution failed, use Cloudflare IP for discord.com
29
  # This is a known Cloudflare IP that discord.com resolves to
30
  logger.warning("discord.com DNS resolution failed, using IP address workaround")
31
- # Use IP with Host header to make it work
32
- return "https://162.159.128.233/api/v10/oauth2/token", {"Host": "discord.com"}
33
 
34
  class OAuthCallbackRequest(BaseModel):
35
  code: str
@@ -50,15 +50,15 @@ async def discord_oauth_callback(request: OAuthCallbackRequest):
50
  logger.info(f"Discord OAuth callback - Code: {request.code[:20]}..., Redirect URI: {request.redirect_uri}")
51
 
52
  # Get Discord API URL with DNS fallback
53
- api_url, extra_headers = get_discord_api_url()
54
- logger.info(f"Using Discord API URL: {api_url}")
55
 
56
  # Exchange code for token
57
  # Use explicit timeout and retry settings for better reliability
58
  async with httpx.AsyncClient(
59
  timeout=30.0,
60
  limits=httpx.Limits(max_keepalive_connections=5, max_connections=10),
61
- verify=True # Still verify SSL even when using IP
62
  ) as client:
63
  headers = {"Content-Type": "application/x-www-form-urlencoded"}
64
  headers.update(extra_headers)
 
23
  try:
24
  # Try standard URL first
25
  socket.gethostbyname("discord.com")
26
+ return "https://discord.com/api/v10/oauth2/token", {}, True
27
  except socket.gaierror:
28
  # DNS resolution failed, use Cloudflare IP for discord.com
29
  # This is a known Cloudflare IP that discord.com resolves to
30
  logger.warning("discord.com DNS resolution failed, using IP address workaround")
31
+ # Use IP with Host header - need to disable SSL verify since cert is for discord.com not IP
32
+ return "https://162.159.128.233/api/v10/oauth2/token", {"Host": "discord.com"}, False
33
 
34
  class OAuthCallbackRequest(BaseModel):
35
  code: str
 
50
  logger.info(f"Discord OAuth callback - Code: {request.code[:20]}..., Redirect URI: {request.redirect_uri}")
51
 
52
  # Get Discord API URL with DNS fallback
53
+ api_url, extra_headers, verify_ssl = get_discord_api_url()
54
+ logger.info(f"Using Discord API URL: {api_url}, SSL verify: {verify_ssl}")
55
 
56
  # Exchange code for token
57
  # Use explicit timeout and retry settings for better reliability
58
  async with httpx.AsyncClient(
59
  timeout=30.0,
60
  limits=httpx.Limits(max_keepalive_connections=5, max_connections=10),
61
+ verify=verify_ssl # Disable SSL verification when using IP address
62
  ) as client:
63
  headers = {"Content-Type": "application/x-www-form-urlencoded"}
64
  headers.update(extra_headers)
discord_service.py CHANGED
@@ -13,10 +13,10 @@ def get_discord_base_url():
13
  """Get Discord API base URL with DNS fallback"""
14
  try:
15
  socket.gethostbyname("discord.com")
16
- return "https://discord.com/api/v10", {}
17
  except socket.gaierror:
18
  logger.warning("discord.com DNS resolution failed, using IP address workaround")
19
- return "https://162.159.128.233/api/v10", {"Host": "discord.com"}
20
 
21
 
22
  class DiscordService:
@@ -29,13 +29,13 @@ class DiscordService:
29
  Args:
30
  access_token: Discord OAuth access token
31
  """
32
- self.base_url, self.extra_headers = get_discord_base_url()
33
  self.headers = {
34
  "Authorization": f"Bearer {access_token}",
35
  "Content-Type": "application/json"
36
  }
37
  self.headers.update(self.extra_headers)
38
- logger.info(f"Discord service initialized with base URL: {self.base_url}")
39
 
40
  def test_connection(self) -> Dict:
41
  """
@@ -47,7 +47,8 @@ class DiscordService:
47
  try:
48
  response = requests.get(
49
  f"{self.base_url}/users/@me",
50
- headers=self.headers
 
51
  )
52
  data = response.json()
53
 
@@ -80,7 +81,8 @@ class DiscordService:
80
  try:
81
  response = requests.get(
82
  f"{self.base_url}/users/@me/guilds",
83
- headers=self.headers
 
84
  )
85
 
86
  if response.status_code == 200:
@@ -105,7 +107,8 @@ class DiscordService:
105
  try:
106
  response = requests.get(
107
  f"{self.base_url}/guilds/{guild_id}/channels",
108
- headers=self.headers
 
109
  )
110
 
111
  if response.status_code == 200:
@@ -144,7 +147,8 @@ class DiscordService:
144
  response = requests.get(
145
  f"{self.base_url}/channels/{channel_id}/messages",
146
  headers=self.headers,
147
- params=params
 
148
  )
149
 
150
  if response.status_code == 200:
 
13
  """Get Discord API base URL with DNS fallback"""
14
  try:
15
  socket.gethostbyname("discord.com")
16
+ return "https://discord.com/api/v10", {}, True
17
  except socket.gaierror:
18
  logger.warning("discord.com DNS resolution failed, using IP address workaround")
19
+ return "https://162.159.128.233/api/v10", {"Host": "discord.com"}, False
20
 
21
 
22
  class DiscordService:
 
29
  Args:
30
  access_token: Discord OAuth access token
31
  """
32
+ self.base_url, self.extra_headers, self.verify_ssl = get_discord_base_url()
33
  self.headers = {
34
  "Authorization": f"Bearer {access_token}",
35
  "Content-Type": "application/json"
36
  }
37
  self.headers.update(self.extra_headers)
38
+ logger.info(f"Discord service initialized with base URL: {self.base_url}, SSL verify: {self.verify_ssl}")
39
 
40
  def test_connection(self) -> Dict:
41
  """
 
47
  try:
48
  response = requests.get(
49
  f"{self.base_url}/users/@me",
50
+ headers=self.headers,
51
+ verify=self.verify_ssl
52
  )
53
  data = response.json()
54
 
 
81
  try:
82
  response = requests.get(
83
  f"{self.base_url}/users/@me/guilds",
84
+ headers=self.headers,
85
+ verify=self.verify_ssl
86
  )
87
 
88
  if response.status_code == 200:
 
107
  try:
108
  response = requests.get(
109
  f"{self.base_url}/guilds/{guild_id}/channels",
110
+ headers=self.headers,
111
+ verify=self.verify_ssl
112
  )
113
 
114
  if response.status_code == 200:
 
147
  response = requests.get(
148
  f"{self.base_url}/channels/{channel_id}/messages",
149
  headers=self.headers,
150
+ params=params,
151
+ verify=self.verify_ssl
152
  )
153
 
154
  if response.status_code == 200: