Skip to content

Instantly share code, notes, and snippets.

@tokidoki11
Last active August 12, 2016 08:25
Show Gist options
  • Save tokidoki11/668a3a6f0888c05995b5f45bb2439322 to your computer and use it in GitHub Desktop.
Save tokidoki11/668a3a6f0888c05995b5f45bb2439322 to your computer and use it in GitHub Desktop.
ReactPHP/stream pipe to Secure Gateway
$creation = 0;
$loop = React\EventLoop\Factory::create();
function create($port, $callback)
{
global $creation;
global $loop;
if ($creation == 0)
{
$server = new React\Socket\Server($loop);
$server->on('connection', function ($conn)
{
$conn->pause();
connectFarside(function($socket) use ($conn)
{
$socket->pipe($conn);
$conn->pipe($socket);
$conn->resume();
});
});
$server->listen($port);
$creation++;
$callback();
} else
{
$creation++;
$callback();
}
}
function connectFarside($callback)
{
global $loop;
$tcpConnector = new React\SocketClient\TcpConnector($loop);
$dnsResolverFactory = new React\Dns\Resolver\Factory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$dnsConnector = new React\SocketClient\DnsConnector($tcpConnector, $dns);
$secureConnector = new React\SocketClient\SecureConnector($dnsConnector, $loop, array(
'capath' => 'ca.pem',
'local_pk' => 'pk.pem',
'local_cert' => 'cert.pem'
));
try
{
$secureConnector->create('<farside hostname>', <farside port>)->then(function(React\Stream\Stream $stream) use ($callback)
{
$stream->on("error", function()
{
echo "SOCKET ERROR";
});
$callback($stream);
}, function($err)
{
echo "error connect farside: ". $err;
});
} catch (Exception $ex)
{
die("lala" . $ex);
}
}
create(60000, function()
{
$connect = ldap_connect('127.0.0.1', 60000);
if (!($connect)))
{
throw new Exception("Cannot connect to LDAP");
} else
{
try
{
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
echo "WILL BIND\n";
$bind = ldap_bind($connect, <USER>, <PASS>);
//never goes here, stuck on binding
if($bind)
{
//DO LDAP QUERY
}
}
}
});
$loop->run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment