This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

58
yproxy/YProxyServer.cpp Normal file
View File

@@ -0,0 +1,58 @@
#include <yproxy/yProxyServer.hpp>
#include <socket/hostent.hpp>
#include <socket/servent.hpp>
#include <socket/inaddr.hpp>
String YProxyServer::smHostName="localhost";
bool YProxyServer::start(const String &remoteHost,const String &user,const String &password)
{
HostEnt hostEntry;
ServEnt serverEntry;
String stringData;
message(String("[YProxyServer::start]Trying host'")+smHostName+String("'..."));
if(!mWSASystem.isInitialized()){message("[YProxySever::start]WINSOCK initialization failure.");return FALSE;}
InternetAddress internetAddress(smHostName);
if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){message(String("[YProxyServer::start]no DNS entry for ")+smHostName);return FALSE;}}
else if(!hostEntry.hostByName(smHostName)){message(String("[YProxyServer::start]no DNS entry for ")+smHostName);return FALSE;}
message(String("[YProxyServer::start]connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")"));
if(!serverEntry.serviceByName("nntp","tcp")){message("[YProxyServer::start]cannot determine port number for nntp session");return false;}
mINETSocketAddress.internetAddress((hostEntry.addresses())[0]);
mINETSocketAddress.family(PF_INET);
mINETSocketAddress.port(serverEntry.port());
while(TRUE)
{
INETSocketAddress internetSocketAddress;
message(String("[YProxyServer::start] host='")+(hostEntry.addresses())[0]+String("' port=")+String().fromInt(serverEntry.port()));
if(!mSocketControl.create()){message("[YProxyServer::start] socket initialization failure.");return FALSE;}
mSocketControl.reuseAddress();
if(!mSocketControl.bind(mINETSocketAddress)){message("[YProxyServer::start] bind failed");return FALSE;}
String strLocalHost((String)mINETSocketAddress.internetAddress());
message(String("[YProxyServer::start] waiting for connection on ")+strLocalHost+String(":")+String().fromInt(serverEntry.port()));
if(!mSocketControl.listen()){message("[YProxyServer::start] listen failed");return FALSE;}
mProxyThreads.insert(&SmartPointer<YProxyThread>());
PYProxyThread &yProxyThread=mProxyThreads[mProxyThreads.size()-1];
yProxyThread=::new YProxyThread();
yProxyThread.disposition(PointerDisposition::Delete);
yProxyThread->accept(mSocketControl,remoteHost,user,password);
}
message("[YProxyServer::start]terminating connection");
return TRUE;
}
// virtuals
void YProxyServer::acceptHandler(void)
{
}
void YProxyServer::stringHandler(const String &string)
{
message(String("[YProxyServer::stringHandler]Received:")+string);
}
void YProxyServer::message(const String &message)
{
::printf("%s\n",message.str());
}