Update of /cvsroot/gnucula/Gnucula In directory sc8-pr-cvs1:/tmp/cvs-serv9738 Modified Files: Conversions.cpp Conversions.h FileLock.cpp GnuAltLoc.cpp GnuAltLoc.h GnuCache.cpp GnuCache.h Log Message: more changes to bring gnucula up to date with gnucdnaR2. Index: Conversions.cpp =================================================================== RCS file: /cvsroot/gnucula/Gnucula/Conversions.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Conversions.cpp 11 Jul 2003 02:44:55 -0000 1.9 --- Conversions.cpp 20 Jan 2004 21:45:31 -0000 1.10 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall This library is free software; you can redistribute it and/or *************** *** 54,58 **** { '8', 0x8 }, { '9', 0x9 }, ! { ':', 0x9 }, { ';', 0x9 }, { '<', 0x9 }, --- 54,58 ---- { '8', 0x8 }, { '9', 0x9 }, ! { ':', 0x9 }, { ';', 0x9 }, { '<', 0x9 }, *************** *** 118,132 **** ! /* Function: CharString DWrdtoStr(UINT in) * ! * Description: Uses sprintf() to format the unsigned integer, in, into the character array, buff. ! * (%u is format for unsigned int.) */ ! CharString DWrdtoStr(UINT in) { char buff[16]; ! ::sprintf(buff, "%u", in); return buff; --- 118,131 ---- ! /* Function: CharString NumtoStr(int in) * ! * Description: Uses sprintf() to format the integer, in, into the character array, buff. */ ! CharString NumtoStr(int in) { char buff[16]; ! ::sprintf(buff, "%d", in); return buff; *************** *** 151,154 **** --- 150,155 ---- } + // Eliminated in shift to G2 + #if 0 CharString ExIPtoStr(ExIP in) { *************** *** 179,183 **** ExIP out; out.a = a; out.b = b; out.c = c; out.d = d; ! CharString mode(rawMode); --- 180,184 ---- ExIP out; out.a = a; out.b = b; out.c = c; out.d = d; ! CharString mode(rawMode); *************** *** 191,194 **** --- 192,196 ---- } #endif + #endif CharString EncodeBase16(const unsigned char* buffer, unsigned int bufLen) *************** *** 246,262 **** } CharString EncodeBase32(const unsigned char* buffer, unsigned int bufLen) { ! CharString Base32Buff; ! unsigned int i, index; unsigned char word; - int pos = 0; ! for (i = 0, index = 0; i < bufLen; ) ! { ! // Is the current word going to span a byte boundary? ! if (index > 3) ! { word = (buffer[i] & (0xFF >> index)); index = (index + 5) % 8; --- 248,264 ---- } + // ?? does this fix issues with open string class ?? (no OES...) CharString EncodeBase32(const unsigned char* buffer, unsigned int bufLen) { ! int bufflen = EncodeLengthBase32(bufLen); ! char* encbuff = new char[bufflen]; ! int encsize = 0; ! // could be moved to local to the for {} unsigned char word; ! for (unsigned int i = 0, index = 0, buffpos = 0; i < bufLen; ) { ! /* Is the current word going to span a byte boundary? */ ! if (index > 3) { word = (buffer[i] & (0xFF >> index)); index = (index + 5) % 8; *************** *** 266,272 **** i++; ! } ! else ! { word = (buffer[i] >> (8 - (index + 5))) & 0x1F; index = (index + 5) % 8; --- 268,272 ---- i++; ! } else { word = (buffer[i] >> (8 - (index + 5))) & 0x1F; index = (index + 5) % 8; *************** *** 275,288 **** } ! // assert(word < 32); ! #ifdef OPENGCC // no EOS, += doesn't work; neither does this workaround... ! Base32Buff.AddString(base32Chars[word], 1); ! #else ! Base32Buff += base32Chars[word]; ! #endif //*(base32Buffer++) = (char) base32Chars[word]; ! } // end for ! return Base32Buff; } --- 275,296 ---- } ! // assert(word < 32); ! ! if (buffpos < bufflen) { ! encbuff[buffpos++] = (char) base32Chars[word]; ! encsize++; ! } ! else ! ASSERT(0); //*(base32Buffer++) = (char) base32Chars[word]; ! } ! ! // construct a new string from the buffer ! CharString encStr(encbuff, encsize); ! ! delete [] encbuff; ! ! return encStr; } *************** *** 298,302 **** lookup = toupper(base32Buffer[i]) - '0'; ! // Check to make sure that the given word falls inside a valid range if (lookup < 0 || lookup >= BASE32_LOOKUP_MAX) word = 0xFF; --- 306,310 ---- lookup = toupper(base32Buffer[i]) - '0'; ! // Check to make sure that the given word falls inside a valid range if (lookup < 0 || lookup >= BASE32_LOOKUP_MAX) word = 0xFF; *************** *** 377,381 **** temp = CTime(Year, Month, Day, Hour, Min, 0, 0); ! if (tolower(str[16]) == 'z') { return temp; --- 385,389 ---- temp = CTime(Year, Month, Day, Hour, Min, 0, 0); ! if (tolowerex(str[16]) == 'z') { return temp; *************** *** 403,406 **** --- 411,416 ---- } + // Eliminated in G2 change. + #if 0 BlockedHost StrtoBlocked(CharString strBlocked) { *************** *** 429,433 **** CharString strLine = strBlocked.Mid(BreakPos + 1); ! BreakPos = strLine.Find(':'); --- 439,443 ---- CharString strLine = strBlocked.Mid(BreakPos + 1); ! BreakPos = strLine.Find(':'); *************** *** 452,455 **** --- 462,466 ---- return strBlocked; } + #endif #endif // OPENGCC *************** *** 489,493 **** return HASH_MD4_ED2K; ! if (Tag.CompareNoCase("tree:tiger:") == 0) return HASH_TIGERTREE; --- 500,504 ---- return HASH_MD4_ED2K; ! if (Tag.CompareNoCase("tree:tiger/:") == 0 || Tag.CompareNoCase("tree:tiger:") == 0) return HASH_TIGERTREE; *************** *** 498,513 **** } ! CharString CommaIze(CharString in) { ! int Len = in.GetLength(); ! ! if (Len > 3) ! { ! CharString out; ! for (int pos = Len % 4; pos < Len; pos + 4, Len++) ! out.Insert(pos, ","); ! return out; ! } else return in; --- 509,518 ---- } ! // FIXME: These functions should be moved to the string class, ! // and a wrapper provided for CStrings. CharString CommaIze(CharString in) { ! if (in.GetLength() > 3) ! return CommaIze(in.Left(in.GetLength() - 3)) + "," + in.Right(3); else return in; *************** *** 524,537 **** CharString strNumber(FloatToString(dNumber)); ! //CharString strNumber(_fcvt(dNumber, 2, &decimal, &sign)); ! ! // if (decimal == 0) ! // strNumber.Insert(0, "0."); ! // else if (decimal == -1) ! // strNumber.Insert(0, "0.0"); ! // else if (decimal < -1) ! // return "0.00"; ! // else ! // strNumber.Insert(decimal, '.'); return strNumber; --- 529,540 ---- CharString strNumber(FloatToString(dNumber)); ! if (decimal == 0) ! strNumber.Insert(0, "0."); ! else if (decimal == -1) ! strNumber.Insert(0, "0.0"); ! else if (decimal < -1) ! return "0.00"; ! else ! strNumber.Insert(decimal, '.'); return strNumber; *************** *** 591,596 **** { copy++; ! Front = Front.Left(spacepos) + " "; ! Front += DWrdtoStr(copy); } } --- 594,598 ---- { copy++; ! Front = Front.Left(spacepos) + " " + NumtoStr(copy); } } *************** *** 667,708 **** VendorID.MakeUpper(); ! if (VendorID == "ARES") ! return "Ares"; ! if (VendorID == "BEAR") ! return "BearShare"; ! if (VendorID == "CULT") ! return "Cultiv8r"; ! if (VendorID == "GNOT") ! return "Gnotella"; ! if (VendorID == "GNUC") ! return "Gnucleus"; ! if (VendorID == "GNUT") ! return "Gnut"; ! if (VendorID == "GTKG") ! return "Gtk-Gnutella"; ! if (VendorID == "HSLG") ! return "Hagelslag"; ! if (VendorID == "LIME") ! return "LimeWire"; ! if (VendorID == "MACT") ! return "Mactella"; ! if (VendorID == "MNAP") ! return "MyNapster"; ! if (VendorID == "MRPH") ! return "Morpheus"; ! if (VendorID == "NAPS") ! return "NapShare"; ! if (VendorID == "OCFG") ! return "OCFolders"; ! if (VendorID == "QTEL") ! return "Qtella"; ! if (VendorID == "RAZA") ! return "Shareaza"; ! if (VendorID == "SNUT") ! return "SwapNut"; ! if (VendorID == "TOAD") ! return "ToadNode"; ! if (VendorID == "XOLO") ! return "Xolox"; return VendorID; --- 669,692 ---- VendorID.MakeUpper(); ! if(VendorID == "ARES") return "Ares"; ! if(VendorID == "BEAR") return "BearShare"; ! if(VendorID == "CULT") return "Cultiv8r"; ! if(VendorID == "GNOT") return "Gnotella"; ! if(VendorID == "GNUC") return "Gnucleus"; ! if(VendorID == "GNUT") return "Gnut"; ! if(VendorID == "GTKG") return "Gtk-Gnutella"; ! if(VendorID == "HSLG") return "Hagelslag"; ! if(VendorID == "LIME") return "LimeWire"; ! if(VendorID == "MACT") return "Mactella"; ! if(VendorID == "MNAP") return "MyNapster"; ! if(VendorID == "MMMM") return "Morpheus v2"; ! if(VendorID == "MRPH") return "Morpheus v3"; ! if(VendorID == "NAPS") return "NapShare"; ! if(VendorID == "OCFG") return "OCFolders"; ! if(VendorID == "QTEL") return "Qtella"; ! if(VendorID == "RAZA") return "Shareaza"; ! if(VendorID == "SNUT") return "SwapNut"; ! if(VendorID == "TOAD") return "ToadNode"; ! if(VendorID == "XOLO") return "Xolox"; return VendorID; *************** *** 730,787 **** char *FloatToString(double in) { // check that this works; untested ! int i; ! int temp_int = (int) in; ! char *part_one = IntToString(temp_int); ! in = (in - temp_int) * 100000; ! temp_int = (int) in; ! char *part_two = IntToString(temp_int); ! for (i = 0; *(part_one + i) != '\0'; i++) { ! ; } ! temp_int = i; ! for (i = 0; *(part_two + i) != '\0'; i++) { ! ; } ! temp_int += i + 1; // +1 for '.' ! char return_array[temp_int]; ! char *return_me = return_array; ! for (i = 0; *(part_one + i) != '\0'; i++) ! *(return_me + i) = *(part_one + i); ! temp_int = i + 1; ! *(return_me + temp_int) = '.'; ! for (i = 0; *(part_two + i) != '\0'; i++) ! *(return_me + i + temp_int) = *(part_one + i); ! *(return_me + i + temp_int) = '\0'; return return_me; } char *IntToString(int number) { // with significant thanks owed to other open implementations... ! static char buf[21]; ! char *p = buf + 20; ! if (number >= 0) ! { ! do ! { ! *--p = '0' + (number % 10); ! number /= 10; } while (number != 0); ! return p; ! } ! else /* number < 0 */ ! { ! do ! { ! *--p = '0' - (number % 10); ! number /= 10; } while (number != 0); ! *--p = '-'; } ! return p; } float StringToFloat(char *convert_me) --- 714,776 ---- char *FloatToString(double in) { // check that this works; untested ! int i; ! int temp_int = (int) in; ! char *part_one = IntToString(temp_int); ! in = (in - temp_int) * 100000; ! temp_int = (int) in; ! char *part_two = IntToString(temp_int); ! for (i = 0; *(part_one + i) != '\0'; i++) { ; } ! temp_int = i; ! for (i = 0; *(part_two + i) != '\0'; i++) { ; } ! ! temp_int += i + 1; // +1 for '.' ! ! char return_array[temp_int]; ! char *return_me = return_array; ! ! for (i = 0; *(part_one + i) != '\0'; i++) ! return_array[i] = *(part_one + i); ! ! temp_int = i + 1; ! *(return_me + temp_int) = '.'; ! ! for (i = 0; *(part_two + i) != '\0'; i++) ! return_array[i + temp_int] = *(part_two + i); ! ! *(return_me + i + temp_int) = '\0'; return return_me; } + // NumtoStr(int) negates need for this. + #if 0 char *IntToString(int number) { // with significant thanks owed to other open implementations... ! static char buf[21]; ! char *p = buf + 20; ! ! if (number >= 0) { ! do { ! *--p = '0' + (number % 10); ! number /= 10; } while (number != 0); ! return p; ! } else { ! /* number < 0 */ ! do { ! *--p = '0' - (number % 10); ! number /= 10; } while (number != 0); ! *--p = '-'; } ! ! return p; } + #endif float StringToFloat(char *convert_me) Index: Conversions.h =================================================================== RCS file: /cvsroot/gnucula/Gnucula/Conversions.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Conversions.h 11 Jul 2003 02:44:55 -0000 1.11 --- Conversions.h 20 Jan 2004 21:45:31 -0000 1.12 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall This library is free software; you can redistribute it and/or *************** *** 38,42 **** // Functions ! CharString DWrdtoStr(UINT); // Convert DWORD to a CharString #ifndef OPENGCC // need IP and CTime workarounds --- 38,42 ---- // Functions ! CharString NumtoStr(int); // Convert DWORD to a CharString #ifndef OPENGCC // need IP and CTime workarounds *************** *** 44,61 **** IP StrtoIP(CharString in); // Convert CharString to an IP - ExIP StrtoExIP(CharString in); // String to extended IP - CharString ExIPtoStr(ExIP in); // ExtendedIP to String - CTime StrToCTime(CharString& str); // Converts a string representation to a CTime CharString CTimeToStr(CTime& time); // reverse of above #endif ! CharString EncodeBase16(const byte* buffer, unsigned int bufLen); ! void DecodeBase16(const char *base16Buffer, unsigned int base16BufLen, byte *buffer); int EncodeLengthBase16(int rawLength); int DecodeLengthBase16(int base16Length); ! CharString EncodeBase32(const byte* buffer, unsigned int bufLen); ! void DecodeBase32(const char *base32Buffer, unsigned int base32BufLen, byte *buffer); int EncodeLengthBase32(int rawLength); int DecodeLengthBase32(int base32Length); --- 44,58 ---- IP StrtoIP(CharString in); // Convert CharString to an IP CTime StrToCTime(CharString& str); // Converts a string representation to a CTime CharString CTimeToStr(CTime& time); // reverse of above #endif ! CharString EncodeBase16(const byte* buffer, unsigned int bufLen); ! void DecodeBase16(const char *base16Buffer, unsigned int base16BufLen, byte *buffer); int EncodeLengthBase16(int rawLength); int DecodeLengthBase16(int base16Length); ! CharString EncodeBase32(const byte* buffer, unsigned int bufLen); ! void DecodeBase32(const char *base32Buffer, unsigned int base32BufLen, byte *buffer); int EncodeLengthBase32(int rawLength); int DecodeLengthBase32(int base32Length); *************** *** 64,72 **** CharString GetSpeedString(DWORD dwSpeed); - #ifndef OPENGCC - BlockedHost StrtoBlocked(CharString strBlocked); - CharString BlockedtoStr(BlockedHost badHost); - #endif - CharString HashIDtoTag(int HashID); int TagtoHashID(CharString Tag); --- 61,64 ---- Index: FileLock.cpp =================================================================== RCS file: /cvsroot/gnucula/Gnucula/FileLock.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FileLock.cpp 28 May 2003 05:18:09 -0000 1.4 --- FileLock.cpp 20 Jan 2004 21:45:31 -0000 1.5 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2002 John Marshall, Filelock code - Makslane Araujo Rodrigues --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall, Filelock code - Makslane Araujo Rodrigues Index: GnuAltLoc.cpp =================================================================== RCS file: /cvsroot/gnucula/Gnucula/GnuAltLoc.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** GnuAltLoc.cpp 8 Jul 2003 08:32:30 -0000 1.5 --- GnuAltLoc.cpp 20 Jan 2004 21:45:31 -0000 1.6 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall This library is free software; you can redistribute it and/or Index: GnuAltLoc.h =================================================================== RCS file: /cvsroot/gnucula/Gnucula/GnuAltLoc.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** GnuAltLoc.h 9 Jul 2003 05:50:08 -0000 1.8 --- GnuAltLoc.h 20 Jan 2004 21:45:31 -0000 1.9 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall This library is free software; you can redistribute it and/or Index: GnuCache.cpp =================================================================== RCS file: /cvsroot/gnucula/Gnucula/GnuCache.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** GnuCache.cpp 8 Jul 2003 08:32:30 -0000 1.9 --- GnuCache.cpp 20 Jan 2004 21:45:31 -0000 1.10 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall [...1767 lines suppressed...] + } + else + { + if (!NotRecent(StrtoIP(ActiveNode.Host))) + return; + + if (itIP != m_AlreadyTried.end()) + if (m_RealNodes.size() > m_MaxCacheSize / 2) + return; + + while (m_RealNodes.size() > m_MaxCacheSize) + m_RealNodes.pop_back(); + + m_RealNodes.push_front(ActiveNode); + } + } + } + #endif + + Index: GnuCache.h =================================================================== RCS file: /cvsroot/gnucula/Gnucula/GnuCache.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** GnuCache.h 9 Jul 2003 05:50:08 -0000 1.10 --- GnuCache.h 20 Jan 2004 21:45:31 -0000 1.11 *************** *** 2,6 **** Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2003 John Marshall This library is free software; you can redistribute it and/or --- 2,6 ---- Gnucula - A Gnutella Library Based on GnucDNA ! Copyright (C) 2000-2004 John Marshall This library is free software; you can redistribute it and/or *************** *** 24,27 **** --- 24,30 ---- ********************************************************************************/ + #ifndef GNU_CACHE_H + #define GNU_CACHE_H + #ifndef OPENGCC *************** *** 32,38 **** #endif - #ifndef GNU_CACHE_H - #define GNU_CACHE_H - class CGnuCore; --- 35,38 ---- *************** *** 43,46 **** --- 43,51 ---- #define DEAD 2 #define UNTESTED 3 + #define GWCERROR 4 + + #define GWC_VERSION1 1 + #define GWC_VERSION2 2 + struct AltWebCache *************** *** 48,56 **** CharString URL; int State; ! AltWebCache(CharString nURL = "", int nState = UNTESTED) ! { ! URL = nURL; State = nState; }; }; --- 53,71 ---- CharString URL; int State; + CTime LastRef; + int ErrCount; + int GWCVer; ! AltWebCache(CharString nURL = "", ! int nState = UNTESTED, ! CTime nLastRef = CTime::GetCurrentTime(), ! int nErrCount = 0, ! int nGWCVer = GWC_VERSION1) ! { ! URL = nURL; State = nState; + LastRef = nLastRef; + ErrCount = nErrCount; + GWCVer = nGWCVer; }; }; *************** *** 59,74 **** { public: ! CGnuCache(CGnuCore*); virtual ~CGnuCache(); void endThreads(); ! void LoadNodes(CharString); ! void LoadUltraNodes(CharString); ! void SaveNodes(CharString); ! void SaveUltraNodes(CharString); bool NotRecent(IP); - bool NotRecentSuperNodes(IP); - void UpdateCache(Node ActiveNode, bool Super=false); void RemoveIP(CharString); --- 74,89 ---- { public: ! CGnuCache(CGnuNetworks*); virtual ~CGnuCache(); void endThreads(); ! void LoadCache(CString); ! void SaveCache(CString); ! void WriteCache(CStdioFile&, std::list<Node>&); ! ! void AddKnown(Node ActiveNode); ! void AddWorking(Node WorkingNode); bool NotRecent(IP); void RemoveIP(CharString); *************** *** 76,85 **** void WriteLinkList(); - bool m_LinkListActivated; - int m_LinkListUpdateSec; - // Web Cache funtions ! void LoadWebCacheList(CharString); ! void SaveWebCacheList(CharString); void WebCacheRequest(bool HostFileOnly=false); --- 91,97 ---- void WriteLinkList(); // Web Cache funtions ! void LoadWebCaches(CharString); ! void SaveWebCaches(CharString); void WebCacheRequest(bool HostFileOnly=false); *************** *** 88,94 **** --- 100,112 ---- CharString WebCacheDoRequest(CharString); + void WebCacheGetRequest(CharString network = "gnutella"); void MarkWebCache(CharString, bool); void DebugDumpWebCaches(); + CString WebCacheDoRequest(CString); + bool WebCacheParseResponse(CString, CString); + void MarkWebCache(CString URL, bool isAlive, int GWCVer = GWC_VERSION1); + void DebugDumpWebCaches(); + bool ValidURL(CharString); CharString EscapeEncode(CharString &what); *************** *** 100,115 **** int m_MaxWebCacheSize; ! std::list<Node> m_PermNodes; // Nodes used for finding connections ! std::list<Node> m_RealNodes; // Most recent nodes on the network ! std::list<Node> m_UltraNodes; // Ultranodes! ! std::list<Node> m_LinkList; ! std::list<IP> m_RecentIPs; ! std::list<IP> m_RecentSuperIPs; ! std::map<UINT, bool> m_AlreadyTried; UINT m_WebMode; CharString m_WebCommand; CharString m_NewSite; --- 118,132 ---- int m_MaxWebCacheSize; ! std::list<Node> m_GnuPerm; ! std::list<Node> m_GnuReal; ! std::list<Node> m_G2Perm; ! std::list<Node> m_G2Real; ! std::list<IP> m_RecentIPs; UINT m_WebMode; CharString m_WebCommand; + CharString m_WebNetwork; CharString m_NewSite; *************** *** 128,138 **** std::vector<CharString> m_WebTransferList; ! CGnuCore* m_pCore; ! CGnuPrefs* m_pPrefs; private: - - - }; --- 145,153 ---- std::vector<CharString> m_WebTransferList; ! CGnuCore* m_pCore; ! CGnuNetworks* m_pNet; ! CGnuPrefs* m_pPrefs; private: }; |