epicyon/session.py

55 lines
1.8 KiB
Python
Raw Normal View History

2019-06-28 18:55:29 +00:00
__filename__ = "session.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "0.0.1"
__maintainer__ = "Bob Mottram"
__email__ = "bob@freedombone.net"
__status__ = "Production"
import requests
2019-07-02 10:39:55 +00:00
from utils import urlPermitted
2019-06-28 18:55:29 +00:00
import json
2019-06-30 18:23:18 +00:00
baseDirectory=None
2019-07-02 09:25:29 +00:00
def createSession(domain: str, port: int, onionRoute: bool):
2019-06-28 18:55:29 +00:00
session = requests.session()
2019-07-02 17:11:59 +00:00
#if domain.startswith('127.') or domain.startswith('192.') or domain.startswith('10.'):
# session.mount('http://', SourceAddressAdapter(domain))
2019-07-02 09:25:29 +00:00
#session.mount('http://', SourceAddressAdapter((domain, port)))
2019-06-28 18:55:29 +00:00
if onionRoute:
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'
return session
2019-07-01 11:09:09 +00:00
def getJson(session,url: str,headers: {},params: {}) -> {}:
2019-06-28 18:55:29 +00:00
sessionParams={}
sessionHeaders={}
if headers:
sessionHeaders=headers
if params:
sessionParams=params
2019-07-01 21:01:43 +00:00
sessionHeaders['User-agent'] = "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv)"
2019-06-28 18:55:29 +00:00
session.cookies.clear()
2019-07-04 17:31:41 +00:00
try:
result=session.get(url, headers=sessionHeaders, params=sessionParams)
return result.json()
except:
pass
return None
2019-06-28 19:36:39 +00:00
2019-07-07 11:53:32 +00:00
def postJson(session,postJsonObject: {},federationList: [],ocapGranted: {},inboxUrl: str,headers: {},capability: str) -> str:
2019-06-28 19:36:39 +00:00
"""Post a json message to the inbox of another person
2019-07-06 11:03:51 +00:00
Supplying a capability, such as "inbox:write"
2019-06-28 19:36:39 +00:00
"""
2019-07-06 11:03:51 +00:00
# always allow capability requests
if not capability.startswith('cap'):
# check that we are posting to a permitted domain
2019-07-07 11:53:32 +00:00
if not urlPermitted(inboxUrl,federationList,ocapGranted,capability):
2019-07-06 11:03:51 +00:00
return None
2019-06-28 20:22:36 +00:00
2019-06-30 11:07:39 +00:00
postResult = session.post(url = inboxUrl, data = json.dumps(postJsonObject), headers=headers)
2019-06-28 19:36:39 +00:00
return postResult.text