From fe86d3cf593c31de8ee1532305bb719d8c8e7c64 Mon Sep 17 00:00:00 2001 From: cutem Date: Mon, 15 Oct 2018 16:00:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E6=B3=84?= =?UTF-8?q?=E6=BC=8F=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WeChatTweak/Manager/AlfredManager.m | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/WeChatTweak/Manager/AlfredManager.m b/WeChatTweak/Manager/AlfredManager.m index 73e6a6f..ef8e905 100644 --- a/WeChatTweak/Manager/AlfredManager.m +++ b/WeChatTweak/Manager/AlfredManager.m @@ -17,6 +17,8 @@ @implementation AlfredManager +static int port = 48065; + + (instancetype)sharedInstance { static dispatch_once_t onceToken; static AlfredManager *shared; @@ -34,6 +36,14 @@ // Search contancts [self.server addHandlerForMethod:@"GET" path:@"/wechat/search" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse * _Nullable(__kindof GCDWebServerRequest * _Nonnull request) { NSString *keyword = [request.query[@"keyword"] lowercaseString] ? : @""; + + NSString *hostname = request.headers[@"Host"]; + NSString *url1 = [NSString stringWithFormat:@"127.0.0.1:%d", port]; + NSString *url2 = [NSString stringWithFormat:@"localhost:%d", port]; + if(!([hostname isEqualToString:url1] | [hostname isEqualToString:url2])){ + return [GCDWebServerResponse responseWithStatusCode:404]; + } + NSArray *contacts = ({ MMServiceCenter *serviceCenter = [objc_getClass("MMServiceCenter") defaultCenter]; ContactStorage *contactStorage = [serviceCenter getService:objc_getClass("ContactStorage")]; @@ -64,6 +74,14 @@ }]; // Start chat [self.server addHandlerForMethod:@"GET" path:@"/wechat/start" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse * _Nullable(__kindof GCDWebServerRequest * _Nonnull request) { + + NSString *hostname = request.headers[@"Host"]; + NSString *url1 = [NSString stringWithFormat:@"127.0.0.1:%d", port]; + NSString *url2 = [NSString stringWithFormat:@"localhost:%d", port]; + if(!([hostname isEqualToString:url1] | [hostname isEqualToString:url2])){ + return [GCDWebServerResponse responseWithStatusCode:404]; + } + WCContactData *contact = ({ NSString *session = request.query[@"session"]; WCContactData *contact = nil; @@ -86,7 +104,7 @@ }); return [GCDWebServerResponse responseWithStatusCode:200]; }]; - [self.server startWithOptions:@{GCDWebServerOption_Port: @(48065), + [self.server startWithOptions:@{GCDWebServerOption_Port: [NSNumber numberWithInt:port], GCDWebServerOption_BindToLocalhost: @(YES)} error:nil]; }