@@ -82,6 +82,7 @@ namespace hcpp
8282 // X509_NAME_oneline(X509_get_subject_name(cert), subject_name, sizeof(subject_name)); });
8383 };
8484 }
85+
8586 awaitable<void > mitm_svc::make_memory (std::string svc_host, std::string svc_service)
8687 {
8788 try
@@ -98,14 +99,14 @@ namespace hcpp
9899 {
99100 ssl_m->set_sni (sni_host_);
100101 }
101- // XXX 这里不能用shared_from_this,因为回调会一直保持当前对象的智能指针,不释放
102- auto verify_fun = [verify_fun_= verify_fun_, host = svc_host](bool preverified, auto &v_ctx)
102+ // XXX 这里不能用shared_from_this,因为回调会一直保持当前对象的智能指针,不释放
103+ auto verify_fun = [verify_fun_ = verify_fun_, host = svc_host](bool preverified, auto &v_ctx)
103104 {
104105 if (ssl::host_name_verification (host)(preverified, v_ctx))
105106 {
106107 if (verify_fun_)
107108 {
108- log::info (" mitm_svc::make_memory: 校验{}开始" ,host);
109+ log::info (" mitm_svc::make_memory: 校验{}开始" , host);
109110 return verify_fun_ (preverified, v_ctx);
110111 }
111112 return true ;
@@ -116,6 +117,7 @@ namespace hcpp
116117 }
117118 };
118119 ssl_m->set_verify_callback (verify_fun);
120+ // XXX 这里的async_handshake会阻塞住线程,因此要在单独的协程里再进行.所以当前函数不能调用在监听连接的时候
119121 co_await ssl_m->async_handshake ();
120122 m_ = ssl_m;
121123 co_return ;
@@ -186,7 +188,6 @@ namespace hcpp
186188 chc_->service_ = service;
187189 m->check (*this );
188190 co_await channel_->async_send (asio::error_code{}, chc_);
189- log::error (" channel_tunnel::make_tunnel: 建立channel tunnel {}" , host);
190191 }
191192
192193 void channel_tunnel::make (std::unique_ptr<tcp_socket> sock)
@@ -209,6 +210,11 @@ namespace hcpp
209210 return hr;
210211 }
211212
213+ void https_client::init ()
214+ {
215+ // TODO 在这里实现创建假证书
216+ }
217+
212218 awaitable<std::shared_ptr<memory>> channel_client::make (subject_identify si) &&
213219 {
214220 auto e = co_await this_coro::executor;
0 commit comments