mirror of
https://github.com/gnh1201/caterpillar.git
synced 2025-05-11 12:11:06 +00:00
Update smtp.py
This commit is contained in:
parent
17f6802be4
commit
aefe835f69
37
smtp.py
37
smtp.py
|
@ -6,7 +6,7 @@
|
||||||
# Namyheon Go (Catswords Research) <gnh1201@gmail.com>
|
# Namyheon Go (Catswords Research) <gnh1201@gmail.com>
|
||||||
# https://github.com/gnh1201/caterpillar
|
# https://github.com/gnh1201/caterpillar
|
||||||
# Created at: 2024-03-01
|
# Created at: 2024-03-01
|
||||||
# Updated at: 2024-03-01
|
# Updated at: 2024-03-12
|
||||||
#
|
#
|
||||||
|
|
||||||
import asyncore
|
import asyncore
|
||||||
|
@ -18,12 +18,22 @@ import requests
|
||||||
from decouple import config
|
from decouple import config
|
||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
|
|
||||||
from server import extract_credentials, jsonrpc2_create_id, jsonrpc2_encode, jsonrpc2_decode
|
def extract_credentials(url):
|
||||||
|
pattern = re.compile(r'(?P<scheme>\w+://)?(?P<username>[^:/]+):(?P<password>[^@]+)@(?P<url>.+)')
|
||||||
|
match = pattern.match(url)
|
||||||
|
if match:
|
||||||
|
scheme = match.group('scheme') if match.group('scheme') else 'https://'
|
||||||
|
username = match.group('username')
|
||||||
|
password = match.group('password')
|
||||||
|
url = match.group('url')
|
||||||
|
return username, password, scheme + url
|
||||||
|
else:
|
||||||
|
return None, None, url
|
||||||
|
|
||||||
try:
|
try:
|
||||||
smtp_host = config('SMTP_HOST', default='127.0.0.1')
|
smtp_host = config('SMTP_HOST', default='127.0.0.1')
|
||||||
smtp_port = config('SMTP_PORT', default=25, cast=int)
|
smtp_port = config('SMTP_PORT', default=25, cast=int)
|
||||||
_username, _password, server_url = extract_credentials(config('SERVER_URL'))
|
_username, _password, server_url = extract_credentials(config('SERVER_URL', default=''))
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\n[*] User has requested an interrupt")
|
print("\n[*] User has requested an interrupt")
|
||||||
print("[*] Application Exiting.....")
|
print("[*] Application Exiting.....")
|
||||||
|
@ -33,6 +43,27 @@ auth = None
|
||||||
if _username:
|
if _username:
|
||||||
auth = HTTPBasicAuth(_username, _password)
|
auth = HTTPBasicAuth(_username, _password)
|
||||||
|
|
||||||
|
def jsonrpc2_create_id(data):
|
||||||
|
return hashlib.sha1(json.dumps(data).encode(client_encoding)).hexdigest()
|
||||||
|
|
||||||
|
def jsonrpc2_encode(method, params = None):
|
||||||
|
data = {
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"method": method,
|
||||||
|
"params": params
|
||||||
|
}
|
||||||
|
id = jsonrpc2_create_id(data)
|
||||||
|
data['id'] = id
|
||||||
|
return (id, json.dumps(data))
|
||||||
|
|
||||||
|
def jsonrpc2_result_encode(result, id = ''):
|
||||||
|
data = {
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"result": result,
|
||||||
|
"id": id
|
||||||
|
}
|
||||||
|
return json.dumps(data)
|
||||||
|
|
||||||
class CaterpillarSMTPServer(SMTPServer):
|
class CaterpillarSMTPServer(SMTPServer):
|
||||||
def __init__(self, localaddr, remoteaddr):
|
def __init__(self, localaddr, remoteaddr):
|
||||||
self.__class__.smtpd_hostname = "CaterpillarSMTPServer"
|
self.__class__.smtpd_hostname = "CaterpillarSMTPServer"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user