Skip to content

Commit

Permalink
应用hosts成功后保存设置
Browse files Browse the repository at this point in the history
  • Loading branch information
iamhefang committed Jul 30, 2019
1 parent 0e75c4d commit 6c5a124
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 23 deletions.
2 changes: 1 addition & 1 deletion mHosts.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
"version": "1.0.3",
"registry": {
"type": "list",
"url": "https://github.com/iamhefang/mHosts/releases"
Expand Down
44 changes: 23 additions & 21 deletions src/servers/httpHelpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,52 +15,54 @@ def parseHttpHeader(rawBytes: bytes):
headerLines = rawBytes.split(b"\r\n\r\n")[0].decode("utf-8").split("\r\n")
headers = {}
for header in headerLines:
if not header:
continue
index = headerLines.index(header)
if index == 0:
values = header.split(" ")
if values[0].startswith("HTTP/"):
headers["http-version"] = values[0]
headers["code"] = int(values[1])
headers["message"] = " ".join(values[2:])
headers["Http-version"] = values[0]
headers["Code"] = int(values[1])
headers["Message"] = " ".join(values[2:])
else:
headers["method"] = values[0]
headers["url"] = values[1]
headers["http-version"] = values[2]
headers["Method"] = values[0]
headers["Url"] = values[1]
headers["Http-Version"] = values[2]
else:
values = header.split(": ")
key = values[0].lower()
if key == "host":
if key == "Host":
(host, port) = parseAddr(values[1])
headers["host"] = host
headers["port"] = port
headers["Host"] = host
headers["Port"] = port
else:
headers[key] = values[1]
if "content-length" in headers:
headers["content-length"] = int(headers["content-length"])
if "Content-Length" in headers:
headers["Content-Length"] = int(headers["Content-Length"])
return headers


def parseResponseBody(rawData: bytes) -> bytes:
return rawData.split(b"\r\n\r\n")[1]
return rawData.split(b"\r\n\r\n")[1] if b"\r\n\r\n" in rawData else None


def makeRequestHeader(option: dict) -> bytes:
headers = "%s %s %s" % (
option["method"], option["url"], option["http-version"]
option["Method"], option["Url"], option["Http-Version"]
)
for key, value in option.items():
if key == "method" or key == "url" or key == "http-version":
if key == "Method" or key == "Url" or key == "Http-Version":
continue
headers += "\r\n%s: %s" % (key, value)
return (headers + "\r\n\r\n").encode("utf-8")


class HttpClient:
__opt: dict = {
"method": 'GET',
"http-version": "HTTP/1.1",
"connection": "keep-alive",
"user-agent": "HttpClientPython/1.0.0"
"Method": 'GET',
"Http-Version": "HTTP/1.1",
"Connection": "keep-alive",
"User-Agent": "HttpClientPython/1.0.0"
}

def __init__(self, option: dict = None):
Expand All @@ -69,8 +71,8 @@ def __init__(self, option: dict = None):
def request(self, url: str):
(scheme, netloc, path, params, query, fragment) = urlparse(url)
address = parseAddr(netloc)
self.__opt["host"] = netloc
self.__opt["url"] = url
self.__opt["Host"] = netloc
self.__opt["Url"] = url
client = socket(AF_INET, SOCK_STREAM)
client.connect(address)
data = makeRequestHeader(self.__opt)
Expand All @@ -86,4 +88,4 @@ def request(self, url: str):
return resHeaders, resBody


print(HttpClient().request("http://qq.com"))
print(HttpClient().request("http://10.8.241.47:8000/api/v1/Amon/UnitTemplate/"))
1 change: 0 additions & 1 deletion src/servers/proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ def __init__(self, server, conn, addr):
self.__addr = addr

def run(self) -> None:
# self.run2()
try:
data = self.__conn.recv(409600000)
headers = parseHttpHeader(data)
Expand Down
1 change: 1 addition & 0 deletions src/views/MainWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ def ApplyHosts(self, hostsId: int):
else:
MessageBox("保存失败", "提示", ICON_ERROR)
self.InitHostsTree(ID_SYSTEM_HOSTS)
Settings.Save()
except Exception as e:
message = str(e)
if "Permission denied" in message:
Expand Down

0 comments on commit 6c5a124

Please sign in to comment.