142
150
std::cerr << "(CRemoteSettings) Got unidentified exception" << std::endl;
145
if ( nextUpdate > time(NULL) + (time_t)expireTime )
146
nextUpdate = time(NULL) + (time_t)expireTime ;
153
time_t tmp_next = time(NULL) + (time_t)m_expireTime ;
154
if ( m_nextUpdate > tmp_next )
155
m_nextUpdate = tmp_next;
148
157
// std::cout << "---------------- After reading -----------------" << std::endl;
149
158
//PrintAllValues();
152
164
CRemoteSettings::~CRemoteSettings() {
165
// wxMutexLocker rmLock(m_mutex); // Mr Hyde: per evitare casini di accessi concorrenti
153
166
// std::cout << "---------------- On close -----------------" << std::endl;
154
167
//PrintAllValues();
158
cfg = NULL; // Mr Hyde
170
delete m_pFileConfig;
171
m_pFileConfig = NULL; // Mr Hyde
161
174
void CRemoteSettings::PrintAllValues() {
162
175
#if ADU_BETA_MAJ > 0
163
std::cout << "kadRepublishTimeK: " << kadRepublishTimeK << '\n'
164
<< "kadRepublishTimeS: " << kadRepublishTimeS << '\n'
165
<< "kadRepublishTimeN: " << kadRepublishTimeN << '\n'
166
<< "kadIndexLifeK: " << kadIndexLifeK << '\n' // Mr Hyde all. eMule Adu 3.15b74
167
<< "kadIndexLifeS: " << kadIndexLifeS << '\n' // Mr Hyde all. eMule Adu 3.15b74
168
<< "kadTotalStoreKey: " << kadTotalStoreKey << '\n'
169
<< "kadTotalStoreSrc: " << kadTotalStoreSrc << '\n'
170
<< "kadTotalStoreNotes: " << kadTotalStoreNotes << '\n'
171
<< "kadTotalSearchFile: " << kadTotalSearchFile << '\n'
172
<< "kadMaxSrcFile: " << kadMaxSrcFile << '\n'
173
<< "kadMaxNotFile: " << kadMaxNotFile << '\n'
174
<< "kadFreshGuess_Tol: " << kadFreshGuess_Tol << '\n'
175
<< "kadFreshGuess_Weight: " << kadFreshGuess_Weight << '\n'
176
<< "kadFreshGuess_LowNorm: " << kadFreshGuess_LowNorm << '\n'
177
<< "kadFreshGuess_NoNorm: " << kadFreshGuess_NoNorm << '\n'
178
<< "maxSrc: " << maxSrc << '\n'
179
<< "maxSrcUdp: " << maxSrcUdp << '\n'
180
<< "kadFindValue: " << kadFindValue << '\n'
181
<< "kadStore: " << kadStore << '\n'
182
<< "kadFindNode: " << kadFindNode << '\n'
183
<< "kadReaskTime: " << kadReaskTime << '\n'
184
<< "kadReaskIncs: " << kadReaskIncs << '\n'
185
<< "kadPubTime: " << kadPubTime << '\n'
186
<< "mVer: " << mVer << '\n'
187
<< "opcodes Norm: " << std::hex << (unsigned short) kadOpcode << '\n'
188
<< "Zip: " << std::hex << (unsigned short) kadZOpcode << std::dec << '\n'
189
<< "- nextUpdate in: " << nextUpdate-time(NULL) << " seconds\n"
190
<< "- expireTime: " << expireTime << '\n'
191
<< "- recheckTime: " << recheckTime << '\n'
192
<< "failCount: " << failCount << '\n'
193
<< "updating from: " << (const char*)unicode2char(UpdateURL) << '\n';
176
std::cout << "kadRepublishTimeK: " << m_KADUSettings.m_kadRepublishTimeK << '\n'
177
<< "kadRepublishTimeS: " << m_KADUSettings.m_kadRepublishTimeS << '\n'
178
<< "kadRepublishTimeN: " << m_KADUSettings.m_kadRepublishTimeN << '\n'
179
<< "kadIndexLifeK: " << m_KADUSettings.m_kadIndexLifeK << '\n' // Mr Hyde all. eMule Adu 3.15b74
180
<< "kadIndexLifeS: " << m_KADUSettings.m_kadIndexLifeS << '\n' // Mr Hyde all. eMule Adu 3.15b74
181
<< "kadTotalStoreKey: " << m_KADUSettings.m_kadTotalStoreKey << '\n'
182
<< "kadTotalStoreSrc: " << m_KADUSettings.m_kadTotalStoreSrc << '\n'
183
<< "kadTotalStoreNotes: " << m_KADUSettings.m_kadTotalStoreNotes << '\n'
184
<< "kadTotalSearchFile: " << m_KADUSettings.m_kadTotalSearchFile << '\n'
185
<< "kadMaxSrcFile: " << m_KADUSettings.m_kadMaxSrcFile << '\n'
186
<< "kadMaxNotFile: " << m_KADUSettings.m_kadMaxNotFile << '\n'
187
<< "kadFreshGuess_Tol: " << m_KADUSettings.m_kadFreshGuess_Tol << '\n'
188
<< "kadFreshGuess_Weight: " << m_KADUSettings.m_kadFreshGuess_Weight << '\n'
189
<< "kadFreshGuess_LowNorm: " << m_KADUSettings.m_kadFreshGuess_LowNorm << '\n'
190
<< "kadFreshGuess_NoNorm: " << m_KADUSettings.m_kadFreshGuess_NoNorm << '\n'
191
<< "maxSrc: " << m_maxSrc << '\n'
192
<< "maxSrcUdp: " << m_maxSrcUdp << '\n'
193
<< "kadFindValue: " << m_KADUSettings.m_kadFindValue << '\n'
194
<< "kadStore: " << m_KADUSettings.m_kadStore << '\n'
195
<< "kadFindNode: " << m_KADUSettings.m_kadFindNode << '\n'
196
<< "kadReaskTime: " << m_KADUSettings.m_kadReaskTime << '\n'
197
<< "kadReaskIncs: " << m_KADUSettings.m_kadReaskIncs << '\n'
198
<< "kadPubTime: " << m_KADUSettings.m_kadPubTime << '\n'
199
<< "mVer: " << m_KADUSettings.m_mVer << '\n'
200
<< "opcodes Norm: " << std::hex << (unsigned short) m_KADUSettings.m_kadOpcode << '\n'
201
<< "Zip: " << std::hex << (unsigned short) m_KADUSettings.m_kadZOpcode << std::dec << '\n'
202
<< "- nextUpdate in: " << m_nextUpdate-time(NULL) << " seconds\n"
203
<< "- expireTime: " << m_expireTime << '\n'
204
<< "- recheckTime: " << m_recheckTime << '\n'
205
<< "failCount: " << m_failCount << '\n'
206
<< "AduValRipBanda_Std: " << m_AduValRipBanda_Std << '\n' // Mr Hyde allineamento 3.16, ripartitore banda
207
<< "updating from: " << (const char*)unicode2char(m_UpdateURL) << '\n';
195
209
// Mr Hyde allineamento eMule 3.15 (mods da bannare)
196
210
if (m_badMods.empty())
217
231
void CRemoteSettings::ReadSettings(const wxConfigBase& docfg) {
218
docfg.Read(wxT("/Adunanza/expireTime") , &expireTime, expireTime);
219
docfg.Read(wxT("/Adunanza/recheckTime") , &recheckTime, recheckTime);
220
docfg.Read(wxT("/Adunanza/UpdateURL") , &UpdateURL, UpdateURL);
222
if (expireTime > RSEXPIRETIME)
223
expireTime = RSEXPIRETIME;
225
if (recheckTime > RSRECHECKTIME)
226
recheckTime = RSRECHECKTIME;
232
long kadRepublishTimeK = theApp->get_kadRepublishTimeK() ;
233
long kadRepublishTimeS = theApp->get_kadRepublishTimeS() ;
234
long kadRepublishTimeN = theApp->get_kadRepublishTimeN() ;
236
long kadIndexLifeK = theApp->get_kadIndexLifeK() ; // Mr Hyde per allineamento a eMule 3.15b74
237
long kadIndexLifeS = theApp->get_kadIndexLifeS() ; // Mr Hyde per allineamento a eMule 3.15b74
239
uint32_t kadTotalStoreKey = theApp->get_kadTotalStoreKey() ; // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
240
uint32_t kadTotalStoreSrc = theApp->get_kadTotalStoreSrc() ; // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
241
uint32_t kadTotalStoreNotes = theApp->get_kadTotalStoreNotes() ; // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
243
long kadTotalSearchFile = theApp->get_kadTotalSearchFile() ;
245
long kadMaxSrcFile = theApp->get_kadMaxSrcFile() ;
246
long kadMaxNotFile = theApp->get_kadMaxNotFile() ;
248
double kadFreshGuess_Tol = theApp->get_kadFreshGuess_Tol() ;
249
double kadFreshGuess_Weight = theApp->get_kadFreshGuess_Weight() ;
250
long kadFreshGuess_NoNorm = theApp->get_kadFreshGuess_NoNorm() ;
251
long kadFreshGuess_LowNorm = theApp->get_kadFreshGuess_LowNorm() ;
253
long kadFindValue = theApp->get_kadFindValue() ;
254
long kadStore = theApp->get_kadStore() ;
255
long kadFindNode = theApp->get_kadFindNode() ;
257
long kadReaskTime = theApp->get_kadReaskTime() ;
258
long kadPubTime = theApp->get_kadPubTime() ;
260
long kadReaskIncs = theApp->get_kadReaskIncs() ;
262
long mVer = theApp->get_mVer() ;
264
unsigned char kadOpcode = theApp->get_kadOpcode() ;
265
unsigned char kadZOpcode = theApp->get_kadZOpcode() ;
269
docfg.Read(wxT("/Adunanza/expireTime") , &m_expireTime, m_expireTime);
270
docfg.Read(wxT("/Adunanza/recheckTime") , &m_recheckTime, m_recheckTime);
271
docfg.Read(wxT("/Adunanza/UpdateURL") , &m_UpdateURL, m_UpdateURL);
273
if (m_expireTime > RSEXPIRETIME) m_expireTime = RSEXPIRETIME;
275
if (m_recheckTime > RSRECHECKTIME) m_recheckTime = RSRECHECKTIME;
228
277
docfg.Read(wxT("/Adunanza/kadRepublishTimeK") , &kadRepublishTimeK, kadRepublishTimeK);
229
278
docfg.Read(wxT("/Adunanza/kadRepublishTimeS") , &kadRepublishTimeS, kadRepublishTimeS);
235
284
long long_kadTotalStoreKey = 0;
236
285
long long_kadTotalStoreSrc = 0;
237
286
long long_kadTotalStoreNotes = 0;
238
docfg.Read(wxT("/Adunanza/kadTotalStoreKey") , &long_kadTotalStoreKey, long_kadTotalStoreKey);
239
docfg.Read(wxT("/Adunanza/kadTotalStoreSrc") , &long_kadTotalStoreSrc, long_kadTotalStoreSrc);
287
long long_AduValRipBanda_Std = ADUNANZA_DEF_BW_EXT; // Mr Hyde allineamento 3.16, ripartitore banda
289
docfg.Read(wxT("/Adunanza/kadTotalStoreKey") , &long_kadTotalStoreKey, long_kadTotalStoreKey);
290
docfg.Read(wxT("/Adunanza/kadTotalStoreSrc") , &long_kadTotalStoreSrc, long_kadTotalStoreSrc);
240
291
docfg.Read(wxT("/Adunanza/kadTotalStoreNotes") , &long_kadTotalStoreNotes, long_kadTotalStoreNotes);
241
kadTotalStoreKey = static_cast<uint32_t>(long_kadTotalStoreKey);
242
kadTotalStoreSrc = static_cast<uint32_t>(long_kadTotalStoreSrc);
243
kadTotalStoreNotes = static_cast<uint32_t>(long_kadTotalStoreNotes);
292
docfg.Read(wxT("/Adunanza/AduValRipBandaStd") , &long_AduValRipBanda_Std, long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, ripartitore banda
294
kadTotalStoreKey = static_cast<uint32_t>(long_kadTotalStoreKey);
295
kadTotalStoreSrc = static_cast<uint32_t>(long_kadTotalStoreSrc);
296
kadTotalStoreNotes = static_cast<uint32_t>(long_kadTotalStoreNotes);
297
m_AduValRipBanda_Std = static_cast<uint32_t>(long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, ripartitore banda
245
299
docfg.Read(wxT("/Adunanza/kadTotalSearchFile") , &kadTotalSearchFile, kadTotalSearchFile);
247
301
docfg.Read(wxT("/Adunanza/kadMaxSrcFile") , &kadMaxSrcFile, kadMaxSrcFile);
248
302
docfg.Read(wxT("/Adunanza/kadMaxNotFile") , &kadMaxNotFile, kadMaxNotFile);
277
331
// le mod sono separatre dal carattere ";" (punto e virgola)
278
332
wxString modName;
279
333
wxStringTokenizer tkz(allBadMods, wxT(";"));
280
while ( tkz.HasMoreTokens() )
334
while ( tkz.HasMoreTokens() ) {
282
335
wxString token = tkz.GetNextToken();
283
336
m_badMods.push_back(token);
340
m_KADUSettings.assign(kadRepublishTimeK,
352
kadFreshGuess_Weight,
353
kadFreshGuess_NoNorm,
354
kadFreshGuess_LowNorm,
366
QUESTO NON POSSO CHIAMARLO QUI: le statistiche potrebbero non essere ancora partite
367
e io avrei un errore di lock. Vedo di chiamarlo in amule.cpp
368
Devo studiare il come ri-farlo quando viene ricaricato RemoteSettings ciclicamente
370
// Per ripartitore di banda: mi assicuro di calcolare i Ratio
371
if (thePrefs::ADU_GetRipBanda()) {
372
thePrefs::ADU_SetValueRipBanda(m_AduValRipBanda_Std);
374
CAdunanzAUtilities::CalcolaRatio(false);
289
378
void CRemoteSettings::SaveSettings() {
290
if (!cfg) return; // Mr Hyde
291
cfg->Write(wxT("/Adunanza/nextUpdate") , wxString::Format(wxT("%ul"),nextUpdate));
292
cfg->Write(wxT("/Adunanza/failCount") , failCount);
293
cfg->Write(wxT("/Adunanza/UpdateURL") , UpdateURL);
294
cfg->Write(wxT("/Adunanza/expireTime") , expireTime);
295
cfg->Write(wxT("/Adunanza/recheckTime") , recheckTime);
297
cfg->Write(wxT("/Adunanza/kadRepublishTimeK") , kadRepublishTimeK);
298
cfg->Write(wxT("/Adunanza/kadRepublishTimeS") , kadRepublishTimeS);
299
cfg->Write(wxT("/Adunanza/kadRepublishTimeN") , kadRepublishTimeN);
301
cfg->Write(wxT("/Adunanza/kadIndexLifeK") , kadIndexLifeK); // Mr Hyde all emule Adu 3.15b74
302
cfg->Write(wxT("/Adunanza/kadIndexLifeS") , kadIndexLifeS); // Mr Hyde all emule Adu 3.15b74
304
long long_kadTotalStoreKey = static_cast<long>(kadTotalStoreKey);
305
long long_kadTotalStoreSrc = static_cast<long>(kadTotalStoreSrc);
306
long long_kadTotalStoreNotes = static_cast<long>(kadTotalStoreNotes);
307
cfg->Write(wxT("/Adunanza/kadTotalStoreKey") , long_kadTotalStoreKey);
308
cfg->Write(wxT("/Adunanza/kadTotalStoreSrc") , long_kadTotalStoreSrc);
309
cfg->Write(wxT("/Adunanza/kadTotalStoreNotes") , long_kadTotalStoreNotes);
311
cfg->Write(wxT("/Adunanza/kadTotalSearchFile") , kadTotalSearchFile);
313
cfg->Write(wxT("/Adunanza/kadMaxSrcFile") , kadMaxSrcFile);
314
cfg->Write(wxT("/Adunanza/kadMaxNotFile") , kadMaxNotFile);
316
cfg->Write(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(kadFreshGuess_Tol * 10000));
317
cfg->Write(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(kadFreshGuess_Weight * 10000));
318
cfg->Write(wxT("/Adunanza/kadFreshGuess_LowNorm") , kadFreshGuess_LowNorm);
319
cfg->Write(wxT("/Adunanza/kadFreshGuess_NoNorm") , kadFreshGuess_NoNorm);
321
cfg->Write(wxT("/Adunanza/maxSrc") , maxSrc);
322
cfg->Write(wxT("/Adunanza/maxSrcUdp") , maxSrcUdp);
324
cfg->Write(wxT("/Adunanza/kadFindValue") , kadFindValue);
325
cfg->Write(wxT("/Adunanza/kadStore") , kadStore);
326
cfg->Write(wxT("/Adunanza/kadFindNode") , kadFindNode);
328
cfg->Write(wxT("/Adunanza/kadReaskTime") , kadReaskTime);
329
cfg->Write(wxT("/Adunanza/kadReaskIncs") , kadReaskIncs);
330
cfg->Write(wxT("/Adunanza/kadPubTime") , kadPubTime);
331
cfg->Write(wxT("/Adunanza/mVer") , mVer);
333
cfg->Write(wxT("/Adunanza/kadOpcode"), (long)kadOpcode);
334
cfg->Write(wxT("/Adunanza/kadZOpcode"), (long)kadZOpcode);
336
if (!m_badMods.empty())
379
// e' assurdo tenere aperto il file di configurazione per tutto il tempo,
380
// queste NON sono le preferenze.
383
if (!m_pFileConfig) return; // Mr Hyde
384
m_pFileConfig->Write(wxT("/Adunanza/nextUpdate") , wxString::Format(wxT("%ul"),m_nextUpdate));
385
m_pFileConfig->Write(wxT("/Adunanza/failCount") , m_failCount);
386
m_pFileConfig->Write(wxT("/Adunanza/UpdateURL") , m_UpdateURL);
387
m_pFileConfig->Write(wxT("/Adunanza/expireTime") , m_expireTime);
388
m_pFileConfig->Write(wxT("/Adunanza/recheckTime") , m_recheckTime);
390
m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeK") , theApp->get_kadRepublishTimeK());
391
m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeS") , theApp->get_kadRepublishTimeS());
392
m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeN") , theApp->get_kadRepublishTimeN());
394
m_pFileConfig->Write(wxT("/Adunanza/kadIndexLifeK") , theApp->get_kadIndexLifeK()); // Mr Hyde all emule Adu 3.15b74
395
m_pFileConfig->Write(wxT("/Adunanza/kadIndexLifeS") , theApp->get_kadIndexLifeS()); // Mr Hyde all emule Adu 3.15b74
397
long long_kadTotalStoreKey = static_cast<long>(theApp->get_kadTotalStoreKey());
398
long long_kadTotalStoreSrc = static_cast<long>(theApp->get_kadTotalStoreSrc());
399
long long_kadTotalStoreNotes = static_cast<long>(theApp->get_kadTotalStoreNotes());
400
long long_AduValRipBanda_Std = static_cast<long>(m_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, riparitore banda
402
m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreKey") , long_kadTotalStoreKey);
403
m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreSrc") , long_kadTotalStoreSrc);
404
m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreNotes") , long_kadTotalStoreNotes);
405
m_pFileConfig->Write(wxT("/Adunanza/AduValRipBanda") , long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, riparitore banda
407
m_pFileConfig->Write(wxT("/Adunanza/kadTotalSearchFile") , theApp->get_kadTotalSearchFile());
409
m_pFileConfig->Write(wxT("/Adunanza/kadMaxSrcFile") , theApp->get_kadMaxSrcFile());
410
m_pFileConfig->Write(wxT("/Adunanza/kadMaxNotFile") , theApp->get_kadMaxNotFile());
412
m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(theApp->get_kadFreshGuess_Tol() * 10000));
413
m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(theApp->get_kadFreshGuess_Weight() * 10000));
414
m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_LowNorm") , theApp->get_kadFreshGuess_LowNorm());
415
m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_NoNorm") , theApp->get_kadFreshGuess_NoNorm());
417
m_pFileConfig->Write(wxT("/Adunanza/maxSrc") , m_maxSrc);
418
m_pFileConfig->Write(wxT("/Adunanza/maxSrcUdp") , m_maxSrcUdp);
420
m_pFileConfig->Write(wxT("/Adunanza/kadFindValue") , theApp->get_kadFindValue());
421
m_pFileConfig->Write(wxT("/Adunanza/kadStore") , theApp->get_kadStore());
422
m_pFileConfig->Write(wxT("/Adunanza/kadFindNode") , theApp->get_kadFindNode());
424
m_pFileConfig->Write(wxT("/Adunanza/kadReaskTime") , theApp->get_kadReaskTime());
425
m_pFileConfig->Write(wxT("/Adunanza/kadReaskIncs") , theApp->get_kadReaskIncs());
426
m_pFileConfig->Write(wxT("/Adunanza/kadPubTime") , theApp->get_kadPubTime());
427
m_pFileConfig->Write(wxT("/Adunanza/mVer") , theApp->get_mVer());
429
m_pFileConfig->Write(wxT("/Adunanza/kadOpcode"), (long)theApp->get_kadOpcode());
430
m_pFileConfig->Write(wxT("/Adunanza/kadZOpcode"), (long)theApp->get_kadZOpcode());
432
if (!m_badMods.empty()) {
338
433
wxString tmpBadMods;
340
for (i = 0; i < (m_badMods.size() - 1); i++)
435
for (i = 0; i < (m_badMods.size() - 1); i++) {
342
436
tmpBadMods << m_badMods[i] << wxChar(';');
344
438
tmpBadMods << m_badMods[i];
345
cfg->Write(wxT("/Adunanza/modstringban") , tmpBadMods);
439
m_pFileConfig->Write(wxT("/Adunanza/modstringban") , tmpBadMods);
350
444
void CRemoteSettings::CheckUpdate() {
351
if (time(NULL) < (time_t)nextUpdate)
445
if (time(NULL) < (time_t)m_nextUpdate)
354
448
//printf("---------------- Before update -----------------\n");
355
449
//PrintAllValues();
357
wxString strURL(UpdateURL);
451
wxString strURL(m_UpdateURL);
359
453
if (wxURL(strURL).GetError() == wxURL_NOERR) { // Mr Hyde: validate URL
360
wxString tmpFile(ConfigDir + wxT(ADURM_TMPFILE));
454
wxString tmpFile(m_configDir + wxT(ADURM_TMPFILE));
361
455
if (wxFileExists(tmpFile)) {
362
456
wxRemoveFile(tmpFile);