Add proxy support
This commit is contained in:
parent
0c72e6fb1e
commit
860c17a1bd
@ -35,7 +35,7 @@ from .validators import ClickValidator, Required
|
||||
def with_http(func):
|
||||
@functools.wraps(func)
|
||||
async def wrapper(*args, **kwargs):
|
||||
async with aiohttp.ClientSession() as sess:
|
||||
async with aiohttp.ClientSession(trust_env=True) as sess:
|
||||
try:
|
||||
return await func(*args, sess=sess, **kwargs)
|
||||
except aiohttp.ClientError as e:
|
||||
@ -50,7 +50,7 @@ def with_authenticated_http(func):
|
||||
server, token = get_token(server)
|
||||
if not token:
|
||||
return
|
||||
async with aiohttp.ClientSession(headers={"Authorization": f"Bearer {token}"}) as sess:
|
||||
async with aiohttp.ClientSession(headers={"Authorization": f"Bearer {token}"}, trust_env=True) as sess:
|
||||
try:
|
||||
return await func(*args, sess=sess, server=server, **kwargs)
|
||||
except aiohttp.ClientError as e:
|
||||
|
@ -139,7 +139,7 @@ class Client(DBClient):
|
||||
self._postinited = True
|
||||
self.cache[self.id] = self
|
||||
self.log = self.log.getChild(self.id)
|
||||
self.http_client = ClientSession(loop=self.maubot.loop)
|
||||
self.http_client = ClientSession(loop=self.maubot.loop, trust_env=True)
|
||||
self.references = set()
|
||||
self.started = False
|
||||
self.sync_ok = True
|
||||
|
@ -14,6 +14,7 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
from aiohttp import client as http, web
|
||||
from urllib.request import getproxies
|
||||
|
||||
from ...client import Client
|
||||
from .base import routes
|
||||
@ -45,8 +46,10 @@ async def proxy(request: web.Request) -> web.StreamResponse:
|
||||
headers["X-Forwarded-For"] = f"{host}:{port}"
|
||||
|
||||
data = await request.read()
|
||||
proxies = getproxies()
|
||||
async with http.request(
|
||||
request.method, f"{client.homeserver}/{path}", headers=headers, params=query, data=data
|
||||
request.method, f"{client.homeserver}/{path}", headers=headers, params=query, data=data,
|
||||
proxy=proxies["https"] if "https" in proxies else None
|
||||
) as proxy_resp:
|
||||
response = web.StreamResponse(status=proxy_resp.status, headers=proxy_resp.headers)
|
||||
await response.prepare(request)
|
||||
|
@ -235,7 +235,7 @@ if appservice_listener:
|
||||
|
||||
|
||||
async def main():
|
||||
http_client = ClientSession(loop=loop)
|
||||
http_client = ClientSession(loop=loop, trust_env=True)
|
||||
|
||||
global client, bot
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user