if ($js['Type'] == 'NewTunnel') { if ($js['Payload']['Error'] != null) { ConsoleOut('隧道建立失败:' . $js['Payload']['Error']); sleep(30); } else { ConsoleOut('隧道建立成功:' . $js['Payload']['Url']); } } } //远程代理连接 if ($sockinfo['type'] == 2) { //未连接本地 if ($sockinfo['linkstate'] == 1) { if ($js['Type'] == 'StartProxy') { $loacladdr = getloacladdr($Tunnels, $js['Payload']['Url']); $newsock = connectlocal($loacladdr['lhost'], $loacladdr['lport']); if ($newsock) { $socklist[] = array('sock' => $newsock, 'linkstate' => 0, 'type' => 3, 'tosock' => $sock); //把本地连接覆盖上去 $sockinfo['tosock'] = $newsock; $sockinfo['linkstate'] = 2; } else { $body = '<!DOCTYPE html><html><head><meta charset="utf-8"><title>Web服务错误</title><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><style>html,body{height:100%%}body{margin:0;padding:0;width:100%%;display:table;font-weight:100;font-family:"Microsoft YaHei",Arial,Helvetica,sans-serif}.container{text-align:center;display:table-cell;vertical-align:middle}.content{border:1px solid #ebccd1;text-align:center;display:inline-block;background-color:#f2dede;color:#a94442;padding:30px}.title{font-size:18px}.copyright{margin-top:30px;text-align:right;color:#000}</style></head><body><div class="container"><div class="content"><div class="title">隧道 %s 无效<br>无法连接到<strong>%s</strong>. 此端口尚未提供Web服务</div></div></div></body></html>'; $html = sprintf($body, $js['Payload']['Url'], $loacladdr['lhost'] . ':' . $loacladdr['lport']); $header = "HTTP/1.0 502 Bad Gateway" . "\r\n"; $header .= "Content-Type: text/html" . "\r\n"; $header .= "Content-Length: %d" . "\r\n"; $header .= "\r\n" . "%s"; $buf = sprintf($header, strlen($html), $html); sendbuf($sock, $buf); }
$ClientId = $js['Payload']['ClientId']; $pingtime = time(); sendpack($sock, Ping()); } if ($js['Type'] == 'NewTunnel') { $Tunnels[$js['Payload']['Url']] = $js['Payload']; ConsoleOut('隧道建立成功:' . $js['Payload']['Url']); } } //远程代理连接 if ($sockinfo['type'] == 2) { //未连接本地 if ($sockinfo['linkstate'] == 1) { if ($js['Type'] == 'StartProxy') { $loacladdr = getloacladdr($Tunnels, $js['Payload']['Url']); $newsock = connectlocal($loacladdr[0], $loacladdr[1]); if ($newsock) { $socklist[] = array('sock' => $newsock, 'linkstate' => 0, 'type' => 3, 'tosock' => $sock); //把本地连接覆盖上去 $sockinfo['tosock'] = $newsock; $sockinfo['linkstate'] = 2; } else { $body = '<!DOCTYPE html><html><head><meta charset="utf-8"><title>Web服务错误</title><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><style>html,body{height:100%%}body{margin:0;padding:0;width:100%%;display:table;font-weight:100;font-family:"Microsoft YaHei",Arial,Helvetica,sans-serif}.container{text-align:center;display:table-cell;vertical-align:middle}.content{border:1px solid #ebccd1;text-align:center;display:inline-block;background-color:#f2dede;color:#a94442;padding:30px}.title{font-size:18px}.copyright{margin-top:30px;text-align:right;color:#000}</style></head><body><div class="container"><div class="content"><div class="title">隧道 %s 无效<br>无法连接到<strong>%s</strong>. 此端口尚未提供Web服务</div></div></div></body></html>'; $html = sprintf($body, $js['Payload']['Url'], $loacladdr[0] . ':' . $loacladdr[1]); $header = "HTTP/1.0 502 Bad Gateway" . "\r\n"; $header .= "Content-Type: text/html" . "\r\n"; $header .= "Content-Length: %d" . "\r\n"; $header .= "\r\n" . "%s"; $buf = sprintf($header, strlen($html), $html); sendbuf($sock, $buf); }