CHttpServer::CHttpServer(int Port, QObject* qObject) { m_Port = Port; if(!Listen(Port)) LogLine(LOG_ERROR, tr("Failed to listen on http port")); m_TransferBufferSize = KB2B(4); m_KeepAlive = 115; // seconds }
bool CTorrent::MakeTorrent(uint64 uPieceLength, bool bMerkle, const QString& Name, bool bPrivate) { CFile* pFile = GetFile(); if(!pFile->IsComplete()) { LogLine(LOG_DEBUG | LOG_ERROR, tr("A torrent can not be made form an Incompelte file %1").arg(pFile->GetFileName())); return false; } if(uPieceLength < KB2B(16)) //if(!uPieceLength) { uPieceLength = pFile->GetFileSize() / (KB2B(40) / 20); // target hast set size 40 KB uint64 i = KB2B(16); for (; i < MB2B(32); i *= 2) { if (i >= uPieceLength) break; } uPieceLength = i; } m_TorrentInfo = new CTorrentInfo(this); m_TorrentInfo->SetTorrentName(Name.isEmpty() ? pFile->GetFileName() : Name); m_TorrentInfo->SetTotalLength(pFile->GetFileSize()); if(bPrivate) m_TorrentInfo->SetPrivate(); m_TorrentInfo->SetProperty("CreationTime", QDateTime::currentDateTime()); ASSERT(m_pHash.isNull()); if(bMerkle) m_pHash = CFileHashPtr(new CFileHashTree(HashTorrent, m_TorrentInfo->GetTotalLength(), uPieceLength)); else m_pHash = CFileHashPtr(new CFileHashSet(HashTorrent, m_TorrentInfo->GetTotalLength(), uPieceLength)); return true; }
CFileHashSet::CFileHashSet(EFileHashType eType, uint64 TotalSize, uint64 PartSize) : CFileHashEx(eType, TotalSize), m_SetMutex(QReadWriteLock::Recursive) { switch(eType) { case HashEd2k: ASSERT(PartSize == -1 || PartSize == ED2K_PARTSIZE); m_PartSize = ED2K_PARTSIZE; break; case HashTorrent: if(PartSize == -1 ) m_PartSize = KB2B(64); else m_PartSize = PartSize; break; default: m_PartSize = -1; ASSERT(0); } }
void CUDTSocketSession::Process() { if(!IsValid()) return; UDTSTATUS Value = UDT::getsockstate(m_Client); if(Value == CONNECTING) return; else if(Value != CONNECTED) { m_LastActivity = 0; // timeout now return; } for(;;) // repeat untill all data is read { /*timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; UDT::UDSET readfds; UD_ZERO(&readfds); UD_SET(m_Client, &readfds); int res = UDT::select(0, &readfds, NULL, NULL, &tv); // this is soooo slow if (!((res != UDT::ERROR) && (UD_ISSET(m_Client, &readfds)))) break;*/ const uint64 Size = KB2B(16); char Buffer[Size]; int Recived = UDT::recv(m_Client, (char*)Buffer, Size, 0); if (UDT::ERROR == Recived) { LogLine(LOG_ERROR, L"recv: %S", UDT::getlasterror().getErrorMessage()); break; } else if(Recived == 0) break; // hothing (more) to be read StreamIn((byte*)Buffer, Recived); m_LastActivity = GetCurTick(); } CSocketSession::Process(); for(;m_Sending.GetSize() > 0;) // repeat untill all data is sent { /*timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; UDT::UDSET writefds; UD_ZERO(&writefds); UD_SET(m_Client, &writefds); int res = UDT::select(0, NULL, &writefds, NULL, &tv); if (!((res != UDT::ERROR) && (UD_ISSET(m_Client, &writefds)))) break;*/ /*uint32_t InBuffer = 0; int InSize = sizeof(InBuffer); UDT::getsockopt(m_Client, 0, UDT_SNDDATA, &InBuffer, &InSize); if(InBuffer > 0) break;*/ int ToGo = m_Sending.GetSize(); /*if(ToGo > KB2B(10)) ToGo = KB2B(10);*/ int Sent = UDT::send(m_Client, (char*)m_Sending.GetBuffer(), ToGo, 0); if (UDT::ERROR == Sent) { LogLine(LOG_ERROR, L"recv: %S", UDT::getlasterror().getErrorMessage()); break; } m_Sending.ShiftData(Sent); m_LastActivity = GetCurTick(); if(Sent < ToGo) break; } }
QMap<QString, CSettings::SSetting> CNeoCore::GetDefaultCoreSettings() { QMap<QString, CSettings::SSetting> Settings; // For values with limits is Default, Minimum, Maximum Settings.insert("Log/Merge", CSettings::SSetting(true)); Settings.insert("Log/Store", CSettings::SSetting(false)); Settings.insert("Log/Limit", CSettings::SSetting(10000,1000,100000)); Settings.insert("Log/Level", CSettings::SSetting(1)); // 0 basic, 1 normal, 2 verbose #ifdef _DEBUG Settings.insert("Modules/AutoStart",CSettings::SSetting(0)); #else Settings.insert("Modules/AutoStart",CSettings::SSetting(1)); #endif Settings.insert("Modules/NeoKad",CSettings::SSetting("NeoKad")); Settings.insert("Modules/MuleKad",CSettings::SSetting("MuleKad")); Settings.insert("Content/SaveInterval", CSettings::SSetting(MIN2S(5))); Settings.insert("Content/Temp", CSettings::SSetting("")); Settings.insert("Content/Incoming", CSettings::SSetting("")); Settings.insert("Content/UnifyedDirs", CSettings::SSetting(0)); Settings.insert("Content/Shared", CSettings::SSetting(QStringList(""))); Settings.insert("Content/VerifyTime", CSettings::SSetting(30)); Settings.insert("Content/VerifySize", CSettings::SSetting(MB2B(5))); Settings.insert("Content/CacheLimit", CSettings::SSetting(MB2B(256), MB2B(128), MB2B(1024))); Settings.insert("Content/AddPaused", CSettings::SSetting(false)); Settings.insert("Content/ShareNew", CSettings::SSetting(true)); //Settings.insert("Content/ShowTemp", CSettings::SSetting(false)); Settings.insert("Content/MagnetDomain", CSettings::SSetting("http://link.neoloader.to/")); Settings.insert("Content/MagnetRetry", CSettings::SSetting(MIN2S(10))); #ifdef DECODER Settings.insert("Content/MagnetTimeLimit", CSettings::SSetting(MIN2S(60))); Settings.insert("Content/MagnetVolumeLimit", CSettings::SSetting(15)); Settings.insert("Content/MagnetAllowDisplay", true); #endif Settings.insert("Content/EndGameVolume", CSettings::SSetting(5,0,10)); //Settings.insert("Content/AlwaysEndGame", CSettings::SSetting(true)); Settings.insert("Content/FuseMount", CSettings::SSetting("")); #ifndef WIN32 Settings.insert("Content/FuseOptions", CSettings::SSetting("-o|allow_other")); #endif Settings.insert("Content/IgnoreLastModified", CSettings::SSetting(0)); Settings.insert("Content/ShareRatio", CSettings::SSetting(0)); // 0 means no ratio Settings.insert("Content/ShareTime", CSettings::SSetting(0)); // 0 means no limit Settings.insert("Content/AutoP2P", CSettings::SSetting(false)); Settings.insert("Content/PreparePreview", CSettings::SSetting(false)); Settings.insert("Content/Streamable", CSettings::SSetting("(mp4|m4v|divx|avi|mkv|mov|wmv|asf|mped|mpg|flv)")); Settings.insert("Content/FrontLoadSize", CSettings::SSetting(MB2B(8))); Settings.insert("Content/BackLoadSize", CSettings::SSetting(MB2B(2))); Settings.insert("Content/Preallocation", CSettings::SSetting(MB2B(100))); Settings.insert("Content/CalculateHashes", CSettings::SSetting(true)); Settings.insert("Content/SaveSearch", CSettings::SSetting(true)); #ifdef _DEBUG Settings.insert("Other/PreventStandby", CSettings::SSetting(false)); #else Settings.insert("Other/PreventStandby", CSettings::SSetting(true)); #endif Settings.insert("Bandwidth/Upload", CSettings::SSetting(-1)); Settings.insert("Bandwidth/Download", CSettings::SSetting(-1)); #ifdef _DEBUG Settings.insert("Bandwidth/UseUPnP",CSettings::SSetting(false)); #else Settings.insert("Bandwidth/UseUPnP",CSettings::SSetting(true)); #endif Settings.insert("Bandwidth/UseIPv6",CSettings::SSetting(false)); Settings.insert("Bandwidth/DefaultNIC",CSettings::SSetting("")); Settings.insert("Bandwidth/WebProxy", CSettings::SSetting("")); Settings.insert("Bandwidth/MaxConnections", CSettings::SSetting(2500)); Settings.insert("Bandwidth/MaxNewPer5Sec", CSettings::SSetting(250)); Settings.insert("Bandwidth/TransportLimiting", CSettings::SSetting(true)); Settings.insert("Bandwidth/FrameOverhead", CSettings::SSetting(18)); Settings.insert("Upload/HistoryDepth", CSettings::SSetting(10,50,100)); Settings.insert("Upload/UpWaitTime", CSettings::SSetting(HR2S(3),HR2S(1),HR2S(5))); Settings.insert("Upload/SlotSpeed", CSettings::SSetting(KB2B(8))); //Settings.insert("Upload/SlotFocus", CSettings::SSetting(false)); Settings.insert("Upload/TrickleVolume", CSettings::SSetting(2)); Settings.insert("Upload/TrickleSpeed", CSettings::SSetting(KB2B(1))); Settings.insert("Upload/DropBlocking", CSettings::SSetting(false)); Settings.insert("Pinger/MinSpeed", CSettings::SSetting(KB2B(10))); // 10 kb/s Settings.insert("Pinger/MaxSpeed", CSettings::SSetting(-1)); Settings.insert("Pinger/HostsToTrace", CSettings::SSetting(10)); Settings.insert("Pinger/MaxFails", CSettings::SSetting(60)); Settings.insert("Pinger/InitialPings", CSettings::SSetting(10)); Settings.insert("Pinger/ToleranceVal", CSettings::SSetting("")); Settings.insert("Pinger/UpDivider", CSettings::SSetting(10)); Settings.insert("Pinger/DownDivider", CSettings::SSetting(10)); Settings.insert("Pinger/Average", CSettings::SSetting(3)); Settings.insert("Pinger/Host", CSettings::SSetting("")); Settings.insert("PeerWatch/Enable",CSettings::SSetting(2)); Settings.insert("PeerWatch/BlockTime", CSettings::SSetting(MIN2S(10),MIN2S(5),MIN2S(60))); Settings.insert("PeerWatch/BanTime", CSettings::SSetting(HR2S(2),HR2S(1),HR2S(6))); //Settings.insert("PeerWatch/IPFilter",CSettings::SSetting("")); Settings.insert("NeoShare/IdleTimeout",CSettings::SSetting(MIN2S(2),MIN2S(1),MIN2S(5))); Settings.insert("NeoShare/KeepAlive",CSettings::SSetting(60,30,MIN2S(3))); Settings.insert("NeoShare/ConnectTimeout",CSettings::SSetting(20,10,120)); Settings.insert("NeoShare/RouteTimeout", CSettings::SSetting(MIN2S(5),MIN2S(1),MIN2S(15))); Settings.insert("NeoShare/MaxEntities", CSettings::SSetting(250)); Settings.insert("NeoShare/RequestInterval",CSettings::SSetting(MIN2S(20),MIN2S(10),MIN2S(60))); Settings.insert("NeoShare/RequestLimit",CSettings::SSetting(100,10,250)); Settings.insert("NeoShare/SaveInterval", CSettings::SSetting(MIN2S(5))); Settings.insert("NeoShare/SaveEntities",CSettings::SSetting(false)); Settings.insert("NeoShare/KadPublishmentVolume",CSettings::SSetting(10,5,100)); Settings.insert("NeoShare/KadLookupVolume",CSettings::SSetting(20,5,100)); Settings.insert("NeoShare/KadLookupInterval",CSettings::SSetting(MIN2S(20),MIN2S(10),MIN2S(60))); Settings.insert("NeoShare/HubCheckoutInterval",CSettings::SSetting(MIN2S(40),MIN2S(20),MIN2S(120))); Settings.insert("NeoShare/LoadTreshold", CSettings::SSetting(75,50,100)); Settings.insert("NeoShare/SaturationLimit", CSettings::SSetting(10,5,20)); Settings.insert("NeoShare/Enable", CSettings::SSetting(true)); Settings.insert("NeoShare/Anonymity", CSettings::SSetting(0, 0, 4)); Settings.insert("NeoShare/Upload", CSettings::SSetting(-1)); Settings.insert("NeoShare/Download", CSettings::SSetting(-1)); Settings.insert("NeoShare/Priority", CSettings::SSetting(0)); Settings.insert("NeoKad/Port", CSettings::SSetting(GetRandomInt(9000, 9999))); Settings.insert("NeoKad/TargetID", CSettings::SSetting("")); Settings.insert("NeoKad/LastDistance", CSettings::SSetting(0)); Settings.insert("NeoKad/EntityKey", CSettings::SSetting("")); Settings.insert("NeoKad/StoreKey", CSettings::SSetting("")); Settings.insert("BitTorrent/Tracking", CSettings::SSetting("All-Tiers")); // "No-Trackers" "One-Tracker" "All-Trackers" "All-Tiers" Settings.insert("BitTorrent/MaxPeers", CSettings::SSetting(500, 10, 1000)); Settings.insert("BitTorrent/ServerPort", CSettings::SSetting(GetRandomInt(6800, 6900))); Settings.insert("BitTorrent/AnnounceInterval",CSettings::SSetting(MIN2S(5),MIN2S(1),MIN2S(60))); Settings.insert("BitTorrent/AnnounceWanted",CSettings::SSetting(200,1,1000)); Settings.insert("BitTorrent/ConnectTimeout",CSettings::SSetting(20,10,30)); Settings.insert("BitTorrent/IdleTimeout",CSettings::SSetting(90,15,320)); Settings.insert("BitTorrent/KeepAlive",CSettings::SSetting(30,15,60)); Settings.insert("BitTorrent/RequestTimeout",CSettings::SSetting(60,15,120)); Settings.insert("BitTorrent/RequestLimit",CSettings::SSetting(250,100,250)); //Settings.insert("BitTorrent/RetryInterval",CSettings::SSetting(MIN2S(10),MIN2S(1),MIN2S(58))); Settings.insert("BitTorrent/Encryption", CSettings::SSetting("Support")); Settings.insert("BitTorrent/uTP", CSettings::SSetting(true)); Settings.insert("BitTorrent/MaxRendezvous", CSettings::SSetting(5,3,10)); Settings.insert("BitTorrent/CryptTCPPaddingLength",CSettings::SSetting(127,0,511)); Settings.insert("BitTorrent/EnableTracker",CSettings::SSetting(1)); // 0 off, 1 on, 2 on but only for own torrents Settings.insert("BitTorrent/SavePeers",CSettings::SSetting(false)); Settings.insert("BitTorrent/Enable", CSettings::SSetting(true)); Settings.insert("BitTorrent/MaxTorrents", CSettings::SSetting(5)); Settings.insert("BitTorrent/Upload", CSettings::SSetting(-1)); Settings.insert("BitTorrent/Download", CSettings::SSetting(-1)); Settings.insert("BitTorrent/Priority", CSettings::SSetting(0)); Settings.insert("MainlineDHT/NodeID", CSettings::SSetting("")); Settings.insert("MainlineDHT/Address", CSettings::SSetting("")); Settings.insert("MainlineDHT/RouterNodes", CSettings::SSetting(QString("router.bittorrent.com:6881|router.utorrent.com:6881").split("|"))); Settings.insert("Ed2kMule/UserHash", CSettings::SSetting("")); Settings.insert("Ed2kMule/NickName", CSettings::SSetting("http://neoloader.to")); Settings.insert("Ed2kMule/MaxSources", CSettings::SSetting(500, 50, 5000)); Settings.insert("Ed2kMule/TCPPort", CSettings::SSetting(GetRandomInt(4600, 4700))); Settings.insert("Ed2kMule/UDPPort", CSettings::SSetting(GetRandomInt(4700, 4800))); Settings.insert("Ed2kMule/CheckFWInterval", CSettings::SSetting(MIN2S(15), MIN2S(10), MIN2S(60))); Settings.insert("Ed2kMule/ConnectTimeout",CSettings::SSetting(20,10,30)); Settings.insert("Ed2kMule/IdleTimeout",CSettings::SSetting(60,15,320)); Settings.insert("Ed2kMule/IncomingTimeOut",CSettings::SSetting(MIN2S(10),MIN2S(5),MIN2S(60))); Settings.insert("Ed2kMule/ReaskInterval",CSettings::SSetting(MIN2S(29),MIN2S(10),MIN2S(58))); Settings.insert("Ed2kMule/LanMode", CSettings::SSetting(false)); Settings.insert("Ed2kMule/Obfuscation", CSettings::SSetting("Support")); Settings.insert("Ed2kMule/CryptTCPPaddingLength",CSettings::SSetting(127,0,254)); Settings.insert("Ed2kMule/NatTraversal", CSettings::SSetting(true)); Settings.insert("Ed2kMule/KadLookupInterval",CSettings::SSetting(MIN2S(29),MIN2S(10),MIN2S(58))); Settings.insert("Ed2kMule/KadMaxLookup",CSettings::SSetting(5,5,50)); Settings.insert("Ed2kMule/SXInterval",CSettings::SSetting(MIN2S(10),MIN2S(5),MIN2S(40))); Settings.insert("Ed2kMule/SXVolume",CSettings::SSetting(20,5,50)); Settings.insert("Ed2kMule/SaveSources",CSettings::SSetting(false)); Settings.insert("Ed2kMule/Enable", CSettings::SSetting(true)); Settings.insert("Ed2kMule/ShareDefault", CSettings::SSetting(false)); Settings.insert("Ed2kMule/Upload", CSettings::SSetting(-1)); Settings.insert("Ed2kMule/Download", CSettings::SSetting(-1)); Settings.insert("Ed2kMule/Priority", CSettings::SSetting(0)); Settings.insert("Ed2kMule/HashMode", CSettings::SSetting("Random-Secure")); // Random, Static, Random-Secure, Static-Secure Settings.insert("Ed2kMule/SUIKey", CSettings::SSetting("")); Settings.insert("Ed2kMule/HashAge", CSettings::SSetting("")); Settings.insert("Ed2kMule/UseServers", CSettings::SSetting("Static")); // None, Custom, Static, One, Booth Settings.insert("Ed2kMule/StaticServers", CSettings::SSetting(QString("ed2k://|server|91.200.42.46|1176|/\r\ned2k://|server|91.200.42.47|3883|/\r\ned2k://|server|91.200.42.119|9939|/\r\ned2k://|server|176.103.48.36|4184|/\r\ned2k://|server|77.120.115.66|5041|/\r\ned2k://|server|46.105.126.71|4661|/").split("\r\n"))); Settings.insert("Ed2kMule/KeepServers",CSettings::SSetting(MIN2S(10),MIN2S(5),MIN2S(58))); Settings.insert("Ed2kMule/MinHordeSlots",CSettings::SSetting(1,0,10)); Settings.insert("Hoster/MinWebTasks", CSettings::SSetting(10)); Settings.insert("Hoster/MaxNewPer5Sec", CSettings::SSetting(25)); Settings.insert("Hoster/MaxWebTasks", CSettings::SSetting(100)); Settings.insert("Hoster/AccessFailedTimeOut", CSettings::SSetting(10)); Settings.insert("Hoster/ServerBanTime", CSettings::SSetting(HR2S(2))); Settings.insert("Hoster/ServerBanTreshold", CSettings::SSetting(20)); Settings.insert("Hoster/ServerDownTreshold", CSettings::SSetting(4)); Settings.insert("Hoster/MaxUploads", CSettings::SSetting(1)); Settings.insert("Hoster/MaxDownloads", CSettings::SSetting(5)); Settings.insert("Hoster/MaxChecks", CSettings::SSetting(5)); Settings.insert("Hoster/ReCheckInterval", CSettings::SSetting(HR2S(24),HR2S(1),HR2S(240))); Settings.insert("Hoster/AutoReUpload", CSettings::SSetting(true)); Settings.insert("Hoster/MaxCheckouts", CSettings::SSetting(3)); Settings.insert("Hoster/CheckoutInterval", CSettings::SSetting(MIN2S(60),MIN2S(30),HR2S(6))); Settings.insert("Hoster/MaxTransferRetry", CSettings::SSetting(3)); Settings.insert("Hoster/ServerRetryDelay", CSettings::SSetting(MIN2S(2))); Settings.insert("Hoster/CaptchaRetryDelay", CSettings::SSetting(MIN2S(20))); Settings.insert("Hoster/MaxBadCaptcha", CSettings::SSetting(3)); Settings.insert("Hoster/ManualCaptcha", CSettings::SSetting(1)); Settings.insert("Hoster/AutoCleanUp", CSettings::SSetting(true)); Settings.insert("Hoster/Encap", CSettings::SSetting("7z")); Settings.insert("Hoster/RarPath", CSettings::SSetting("")); Settings.insert("Hoster/RarComment", CSettings::SSetting("")); #ifdef CRAWLER Settings.insert("Hoster/DecapCleanup", CSettings::SSetting("*.url;*.lnk;thumbs.db")); Settings.insert("Hoster/KeepSingleArchives", CSettings::SSetting(false)); #else Settings.insert("Hoster/KeepSingleArchives", CSettings::SSetting(true)); #endif Settings.insert("Hoster/EncryptUploads", CSettings::SSetting("RC4")); Settings.insert("Hoster/ProtectLinks", CSettings::SSetting(true)); Settings.insert("Hoster/Enable", CSettings::SSetting(true)); Settings.insert("Hoster/UseCaptcha", CSettings::SSetting(false)); Settings.insert("Hoster/PartSize", CSettings::SSetting(0)); Settings.insert("Hoster/MaxArcTasks", CSettings::SSetting(5)); Settings.insert("Hoster/Upload", CSettings::SSetting(-1)); Settings.insert("Hoster/Download", CSettings::SSetting(-1)); Settings.insert("Hoster/Priority", CSettings::SSetting(0)); Settings.insert("HosterCache/CacheMode", CSettings::SSetting("Off")); // Off, On, All Settings.insert("HosterCache/SelectionMode", CSettings::SSetting("Auto")); // All, Auto, Selected - hosters Settings.insert("HosterCache/PartSize", CSettings::SSetting(MB2B(100))); Settings.insert("HosterCache/MaxAvail", CSettings::SSetting(3)); Settings.insert("HosterCache/MaxJoints", CSettings::SSetting(1)); Settings.insert("HashInspector/Majority",CSettings::SSetting(90,80,100)); Settings.insert("HashInspector/Quorum",CSettings::SSetting(10,5,20)); Settings.insert("CorruptionLogger/MonitorTime", CSettings::SSetting(HR2S(4),HR2S(2),HR2S(16))); Settings.insert("CorruptionLogger/DropRatio", CSettings::SSetting(40, 10, 100)); //Settings.insert("Script/AutoUpdate", CSettings::SSetting(true)); //Settings.insert("Script/UserName", CSettings::SSetting("")); //Settings.insert("Script/Password", CSettings::SSetting("")); Settings.insert("Browser/MaxRetries", CSettings::SSetting(3)); Settings.insert("Browser/TimeoutSecs", CSettings::SSetting(30)); Settings.insert("Browser/ReplyBuffer", CSettings::SSetting(MB2B(4),KB2B(256),MB2B(64))); Settings.insert("Browser/TransferBuffer",CSettings::SSetting(KB2B(16),KB2B(4),KB2B(256))); return Settings; }