Idee DistributedParis.pl: soll direkt die Phex anfragen: dazu muss PhexServerThread aber Whitelist mit erlaubten IPs haben und AES verschlüsselt kommunizieren + security token Idee: Alarm Timeout Einbauen: wenn die Funktion zu lange braucht, dann einfach rasch alles beenden und fix 10 ergebnisse zusammenstellen und diese dann zurückliefern ######################### 2.10.2008: - DistributedParis.pl : eingebaut, dass alle clients unter version 1.7.0 eine update message bekommen! 11.8.2008: - eingebaut, dass hcusertype=3 user nach einem gutschein einlösen keine fake ergebnisse mehr bekommen 4.8.2008: - createaccount protokoll hinzugefügt 3.8.2008: - Messages.pm: angepasst - paymentdetails.txt angepasst 23.7.2008: - DistributeDParis.PL: usertype=3 gekommt infomessage - MEssages.pm angepasst - L 17.7.2008: - # schließe handysocket verbindung close $HandyClientSocket; nach jedem protokoll request -> fixed AAA bug, der das bezahlen unmöglich macht 16.7.2008: - DistributedParis.pl: für Handyanmeldung User Torstens Version vom Quellenauslieferung eingebaut - LicenceManagement.pm: CreateNewUser() gibt nun neben Message auch noch ( $ResultHashRef mit korrekten daten ) zurück - LicenceManagement.pm: CheckLicence() für HandyAnmeldungUser angepasst - LicenceManagement.pm: UpdateBJParisDBSuccess() für HandyAnmeldungUser angepasst 11.7.2008: - CheckSum.pm wird ab jetzt nicht mehr verwendet - DistributedParis.pl: CheckSum.pm ausgebaut, Fake Ergebnisse für HandyAnmeldung User - LicenceManagement.pm: CheckUser angepasst 5.7.2008: - GratisFreeUser bekommt Fake Quellen 16.6.2008: - DistributedParis.pl: hält payment verbindung nun 3 minuten statt 2 minuten 4.6.2008: - DistributedParis.pl: läuft im vordergrund - DistributedParis.pl: - LicenceManager.pm: debugausgaben angestellt - LicenceManager.pm: Alle ErrorMeldungen mit Status = -1 wurden zu Status == 1 gesetzt! dh alle raupkopien gehen durch ### WICHTIG - LicenceManager.pm: web_firstlogin = 0 gesetzt auch bei erfolglosen suchen - LicenceManager.pm: wieder die errormeldungen mit status -1 zurückgegeben und bug bei web_use_firsttime gefixt 2.6.2008: - DistributedParis.pl: agb versenden protokoll geändert und eingebaut - Messages.pm: Neue Meldung eingebaut 28.5.2008: - DistributedParis.pl: fixed coupon perl api php file: ungültige gutscheine bekommen eine fehlermeldung - openssl 0.9.8h installiert auf 23.5.2008: - LicenceManagement.pm: web_firstuse = 0 gesetzt, wenn er einmal sucht 21.5.2008: - DistributedParis.pl: in RequestCounterWrite eingebaut, dass nach 50s keine suchanfragen, der counter gelöscht wird - Messages.pm angepasst und WelcomeMessageHandler programmiert, der verschiedene Nachrichten unterschiedlich ausgibt 19.5.2008: - DistributedParis.pl: payment request wird nun automatisch 2 minuten lang verlängert - DistributedParis.pl: CryptoLibrary.pm: crypto key wird nicht mehr von sql ausgelesen jedes mal sondern wird als hash hinterlegt 18.5.2008: - DistributedParis.pl: Lizenzcheck wird ignoriert bei coupon und payment request - DistributedParis.pl: neu payment request - bezahlen vom handy aus - bitjoe.de/serice_handypayment/call2pay_mobile.php -> kümmert sich um die payment requests vom DistributedParis.pl 16.5.2008: - Messages.pm: leicht verschönert - Phex.pm: beim find befehl readsocket() ausgebaut | aktuell ists wieder ausgebaut - DistributedParis.pl: current search request counter eingebaut - RequestCounterWrite/RequestCounterRead erstellt - diese speichern wieviele aktuelle suchanfragen im phex laufen - client wird benachrichtigt, wenn alle suchslots belegt sind - CryptoLibrary.pm: UniqueID() erstellt 32 bittige id, wird aktuell noch nirgendwo verwendet ... 15.5.2008: - DistributedParis.pl: nach find wird overall-1 und nach result wird success-1 wenn mehr als 5KB daten gesendet wurden, oder overall=0 ist - DistributedParis.pl: loggt suchanfragen mit - LicenceManagement.pm: UpdateBJParisDBOverall updated overall voluem | UpdateBJParisDBSuccess updated success volumen 14.5.2008: - LicenceManagement.pm: schärfere Lizenzkontrolle 13.5.2008: - Messages.pm angepasst - LicenceManagement.pm angepasst: CheckLicence() verbessert und UpdateBJParisDB() -aktualisiert das Suchvolumen- erstellt - DistributedParis.pl: angepasst ua UpdateBJParisDB() eingebaut - DistributedParis.pl: seamless update möglich - einfach neue dateien rüberkopieren und datei neu starten 8.5.2008: - DistributedParis.pl: an das neue protokoll angpasst -'coupon' - LicenceManagement.pm angepasst: an das neue protokoll - FileTypes.pm angepasst an neues protokoll 19.4.2008: - $o angepasst fürs neue Protokoll - Phex.pm, PhexSortRank.pm, FileTypes.pm, Messages.pm angepasst fürs neue Protokoll - FC MSG eingefüht , wird aktuell nur bei cliend id ausgegeben 30.3.2008: - Time.pm: angepasst - CryptoLibrary.pm angepasst: random werte erhöht - LicenceGenerator: erweitert , sicherer gemacht | musste dort encryption rausnehmen - LicenceGenerator.pl erstellt in ordner Licence - erstellt lizenzdaten für eine zeitspanne, die man im script eintragen muss 24.3.2008: - Phex.pm: find|del|status|result: Eingebaut, dass abgebrochen wird, wenn ein Timeout überschritten wird - DistributedParis.pl: Rückgabewerte der Funktionenen Phex.pm->find|result werden nun verarbeitet - später nur noch die sms benachrichtigung einstellen - IO.pm: eval um binmode gesetzt - IO.pm: binmode($socket) rauskommentiert 21.3.2008: - FileType.pm: diverse filetyp assoziationen gefixt - LiceneManagement.pm: FileType Auslesen verbessert 14.3.2008: - SMS.pm: SendCustomSMS() - sendet sms mit einer standartnachricht, die man als parameter übergeben muss { wieder auskommentiert, weil nicht korrekt funktioniert - Phex.pm: nonblocking phex kommunikation - mittels alarm timeout wird IO zum phex abgebrochen nach 2 sek, damit dies nicht mehr das ganze programm blockiert } { wieder auskommentiert, weil nicht funktionierte: - IO.pm: nonblocking bei socket kommunikation eingestellt - achtung jetzt mit dieser einstellung bringt das alarm bei Phex.pm nichts mehr und ist desshalb aus } - result Cache datei gelöscht 12.11.2008: - DistributedParis.pl: anweisung, wann ein cache gelesen werden soll verändert: zeile 566 11.3.2008: - DistributedParis.pl: MD5 Erstellung am Anfang des Programmes verbessert, zeile 186 10.3.2008: - BenchmarkSingleHost.pl : benchmarkt nur einen definierten Host ( auf dem zb 2 phex laufen können ) - DistributedParis.pl: angepasst, dass nun pro server ip mehrere ports für phexkommunikation genutzt werden können - DistributedParis.pl: find/result code abschnitte fehlertolleranter programmiert - leere IP/port anweisungen führen nicht mehr zu problemen - leere IP+PORT anweisungen werden ignoriert - DistributedParis.pl: find die datei mit der client id speichert nun den -mit deletespecialchar- bereinigten suchstring - DistributedParis.pl: ResultCache wird nun für korrekte suchanfrage geschrieben - DistributedParis.pl: fixed cache writing issue - !!! ACHTUNG: DistributedParis.pl: alle flock anweisungen auskommentiert, auch an stellen, bei denen es zu korrupierenden schreibvorgängen kommen kann - hier im speziellen beim schreiben der ResultCaches - IO.pm: icq benachrichtigunen ausgeschaltet 9.3.2008: - DistributedParis.pl: hash %ParisHostsDesc enthält alle beschreibungen der paris hosts, %ParisHosts enthält alle paris hosts mit zu nutzendem port - DistributedParis.pl: die find und result funktionen von Phex.pm nehmen nun als 2. argument einen phex port an - Phex.pm: find und result angepasst, diese nehmen jetzt ein zusätzliches argument an - den zu nutzenden paris server port - IO.pm: CreatePhexConnectionWithPort erstellt - hier wird ein socket zum paris server thread aufgebaut, dieser funktion muss dann der zu nutzenden port mit übergeben werden 7.3.2008: - deletespecialchar wieder eingebaut 6.3.2008: - alle änderungen bis einschliesslich 20.2 alles rückgängig gemacht 5.3.2008: - deleteSpecialChars() in DistributedParis.pl entfernt böse sonderzeichen - encode eingebaut ### 26.2.2008: - Benchmark.pl alpha version - Ausgabe aller treffer/quellen im distributed - ICQ.pm: versendet icq nachrichten im fehlerfall ### 20.2.2008: - \r\n reausgenommen bei Phex.pm ### 19.2.2008: - DistributedParis.pl: fixed 2 flock bugs ### 14.2.2008: - $0: No Result Try Flag: nach xtem versuch wird die anfrage aus dem phex gelöscht - Phex.pm: del() nun mit flocking support ### 13.2.2008: - Phex.pm: find und result versuchen nurnoch 1 mal ergebnisse zu holen - Phex.pm: flocking sichert sequentielles abarbeiten der find und result befehle an den phex ( phex hat probleme mit parallelen anfragen ) ### 7.2.2008: - debug meldungen - sortierung verschluckt keine ergebnisse mehr ### 31.1.008: - IntelligentDataCut muss von PhexSortRank.pm nach DistributedParis.pl ausgelagert werden, aktuell funktioniert es in *.pm nicht - intelligent cut ist nun im distributedparis.pl eingebaut, aber nicht aktiviert - phexsortrank.pm: speed tweaks - viel code entfernt - 2MB rohdaten werden auf dem quad core in 2 sec sortiert ### 30.1.2008: - DistributedParis.pl: Ergebnisse vom schnellsten Server werden zuerst ausgewertet ### 29.1.2008: - PhexSortRank.pm: IntelligentCut eingebaut ### 28.1.2008: - HandyIP Adress verbessert: es wird nun der korrekte DNS name im weiteren verlauf des programmes distributedparis.pl verwendet - wichtig ist der unique dns name, da er für das NoResultFlag verwendet wird - PhexSortRank.pm: + der Inhalt des PhexResultStringes wird nun als Scalar Referenz entgegengenommen + Der PhexResultString wird auf $MaxRawDataToProcess KBytes an Daten begrenzt, sonst kann es bei 3 stelligen RawKB Daten dazu kommen, dass der Handy keine Ergebnisse bekommt, da die Sortierung zu lange dauert - aktuell nicht aktiviert ### 26.1.2008: - Phex.pm: Bei einem Suchrequest wird jetzt anhand des gewünschten FileTypes die größebeschränkung an den Phex beim find befehl mit übergeben - DistributeParis.pl: Code Fixes beim Cachen / beim bestimmen wie oft schon erfolglos ein ergebnis abholen request gesendet wurde ( ist wichtig fürs caching ) - distributed: löscht erst dann ergebnisse im phex, wenn ergebnisse an den handy ausgeliefert wurden - phexsortrank.pm: Finales Ranking eingebaut - debug meldungen entfernt: - distributedparis.pl: entfernt, das bei keinen ergebnissen vom phex dieser noch bis zu X mal angefragt wird, ob er schon ergebnisse hat - dies führte dazu, dass das handy teilweise minutenlang auf FC 808 warten musste - distributedparis.pl: ausgabe der ergebnisse vereinfacht / flock der DB_Files bei kritischen Schreibaktionen gesetzt / cache related debugmeldungen erweitert ### 25.1.2008: - IO.pm: Funktionen zum Aufbau der Sockets zum Handy und zum Phex verbessert - Phex.pm: alle funktionen die ein readSocket() brauchen blocking resistant gemacht: ein toter server kann jetzt nicht mehr das ganze programm unterbrechen - SMS.pm: neue Funktion für Fehlermeldungsversendung via SMS programmiert ( ist in IO.pm benutzt worden ) - DistributedParis.pl: frägt nun Phex direkt an, ohne Paris.pl zu benutzen / Code Cleanup - muss erst noch auf stabilität getestet werden - alle server: neue Phex version installiert mit whitelist.conf und scam|spam filter support ### 24.1.2008: - Gzip.pm: randomized string nun sicher bei der erstellung - Filer.pm: Die Size Datei wird nun nur noch einmal eingelesen und zwar am Einbinden des Modules und nicht wie vorher bei jedem Aufruf der SizeFilter() Funktion - Filter.pm: ClassifySpamResult() geschrieben und eingebaut in SpamFilter() - DistributedParis.pl: Spam und Sizefilter aktiviert - ein als spam klassifiziertes ergebnis wird mit -10000 ranking punkten gewertet /// alarm timeout bei readSocket() eingebaut beim ergebnisabholen der Suchserver - sonst würde es zu Deadlocks kommen - SMS.pm: benachrichtigung wenn paris server down - distributedparis.pl: alarm timeout beim ergebnis abholen clever gelöst - PhexSortRank.pm: bessere debugging ausgaben / kleinere tweaks / debugmeldungen ### 23.1.2008: - PhexSortRank.pm: Finale Version, FileChecks ausgebaut - Distributed als Standart ######################## 21.1.2008: - Punktevergabe neu Überarbeitet für Paris.pl - Arbeiten an Sortierung ########## 19/20.1.2008: - Paris.pl->PhexSortRank.pm: + Arbeiten am "Ergebnisse verschlucken" Bug - es muss noch getestet werden, ob dieser nun entgültig behoben wurde: dabei immer nur ein Paris ansprechen und nicht den distributed + Keine doppelten Quellen mehr + neue Ergebnisverarbeitung: for+while statt for-for, weil letzteres nicht korrekt über alle Hash Einträge gewandert ist und somit falsche Gruppierung von Ergebnissen mit mehrere Quellen kam #################################################################### 4.10.2007: - Distributed Paris Version 0.9 Release: Abholen von ergebnissen von verschiedenen Paris Servern möglich - Sortierung der ergebnisse erfolgt erstmal nur indem alle ergebnisse von allen paris server zusammengeworfen werden und dann nach RankPunkten sortiert werden -: Todo: Sortierung sodass, die Ergebnisse von Paris Servern vermischt werden: eg: anhand der SHA1 Werte die einzenlen peerhosts in einem ergebnis zusammenfassen und RANK Updaten #################################################################### 28.4.2007: - PhexSortRank.pm: fixed sha1 compaire - ResultCache.pm: added: cache is valid for x h only #################################################################### 17.4.2007: - CryptoLibrary.pm: added support for java crypt/decrypt - changed licence sql structure #################################################################### 27.3.2007: IO.pm: removed hi message IO.pm: use IO::Handle; #################################################################### 25.3.2007: PhexSortRankpm: - removed OutOfBounceError -> now checks for valid peerhosts! - added spam filtercheck - added: if ( ( lc($OnlyFileTyp) eq lc($FileTypeHashRef->{1}) ) || ( lc($OnlyFileTyp) =~ /$FileTypeHashRef->{1}/i ) ) { instead of #DEBUG: if ( ( lc($OnlyFileTyp) eq lc "jpg" ) || ( lc($OnlyFileTyp) =~ /jpg/i ) ) { now all kinds of valid filetyps are shown as results PhexProxyNoGzip.pl: - removed "." from mobile phone search query Filter.pm: - fixed spamfilter added (\s) - todo: check+test spam filter !!! ##################################################################### 24.3.2007: fixed output result bug: entfernt CRLF, welches zuviel ist ##################################################################### 21.03.2007: temp lösung: PhexProxy::PhexSortRank.pm->max filelenght auf 150 zeichen beschränkt ############################### 4.3.2007 ############################## PhexSortRank(): release of 1. version ############################### 18.7.2006 ############################## # if ( $NoResultCounter >= $MaxNoResultTries && $CacheDifferTime <= $MaxCacheValidTime && exists($ParisResultCache{$CacheEntry}) && length($ParisResultCache{$CacheEntry}) >= 50 && $SendStringLength <= 50 ) { # if ( $CacheDifferTime <= $MaxCacheValidTime && exists($ParisResultCache{$CacheEntry}) && length($ParisResultCache{$CacheEntry}) >= 50 && $SendStringLength <= 50 ) { # if ( $CacheDifferTime <= $MaxCacheValidTime && ( $SendStringLength < 70 || $SendStringLength < length($ParisResultCache{$CacheEntry})) ) { #sub NoResultDatabaseManager(){ # # # NoResultDatabaseManager( "r", $IP.lc($SEARCH) ); # # NoResultDatabaseManager( "w", $IP.lc($SEARCH) , 1); # # my $action = shift; # "r" oder "w" # my $HashName = shift; # IP.lc($SEARCH) # my $WriteValue = shift; # zu schreibende daten # $HashName = lc($HashName); # # if ( $action eq "r" ) { # # my $ReturnFlag; # tie(%NoResultDB, 'DB_File', $NoResultDatabase, O_RDWR|O_CREAT ) || die "can't open $NoResultDatabase: $!"; # $ReturnFlag = $NoResultDB{$HashName}; # untie(%NoResultDB); # return $ReturnFlag; # # }; # if ( $action eq "r" ) { # # if ( $action eq "w" ) { # # tie(%NoResultDB, 'DB_File', $NoResultDatabase, O_RDWR|O_CREAT ) || die "can't open $NoResultDatabase: $!"; # flock(%NoResultDB,LOCK_EX); # $NoResultDB{$HashName} = $WriteValue; # flock(%NoResultDB, LOCK_UN); # untie(%NoResultDB); # return; # ## }; # if ( $action eq "w" ) { # # return; # #}; # sub NoResultDatabaseManager(){ # Zombie Catcher #sub REAPER { # # my $stiff; # while (($stiff = waitpid(-1, &WNOHANG)) > 0) { # warn ("child $stiff terminated -- status $?"); # $DONE--; # # delete $children{$stiff}; # }; # while (($stiff = waitpid(-1, &WNOHANG)) > 0) { # # $SIG{CHLD} = \&REAPER; #} #$SIG{CHLD} = \&REAPER; #### Achtung: hier erstmal alles auskommentiert lassen, da sonst bei keinen Ergebnissen zu lange gewartet wird, bis FC 808 gesendet wird # # ... darum hier noch $MaxRetryOnFailedIORead Mal versuchen Content abzuholen # for ( my $x=0; $x<=$MaxRetryOnFailedIORead; $x++) { # # last if ( length($DownloadResults) >= 50 ); # my $RandSleepTime = rand($MaxRetryOnFailedIOSleep); # select (undef, undef, undef, $RandSleepTime ); # # my $DownloadResults = $PHEX->result( $ParisHost, $ClientID, $Token); # $UnparsedResultsFromAllServer .= $DownloadResults; # # }; # for ( my $x=0; $x<=$MaxRetryOnFailedIORead; $x++) { # # # speichere, dass schon einmal erfolglos versucht wurde ergebnisse zu holen # # Eintrag zeigt Anzahl erfolgloser Versuche zur Auslieferung eines Caches an ######## ### DEBUG: START ######## # open(RESULT,">raw.txt"); # my $tmp = $UnparsedResultsFromAllServer; # $tmp =~ s/\\n/\n/ig; # $tmp =~ s/\;\!\$\#\%\&/ /ig; # print RESULT $tmp; # close RESULT; # # open(RESULT,">result.txt"); # # my $RCD = 1; # # folgende foreach schleife setzt die ergebnisse für das handy zusammen # foreach my $entry ( @{$SortedResultsArrayRef} ) { # # my ( $RANK, $PEERHOST, $SIZE, $SHA1 ) = split('###', $entry ); # # chop($SHA1) if ( length($SHA1) == 33 ); # fix für PhexProxy::SortArray->Sort_Table(); # next if ( length($RANK) <= 0 || length($SIZE) <= 0 || length($SHA1) != 32 || length($PEERHOST) <= 0); # # my $SizeKB = ( $SIZE / 1024 ); # my $SizeMB = ( $SizeKB / 1024 ); # $SizeKB = sprintf ("%.2f", $SizeKB); # $SizeMB = sprintf ("%.2f", $SizeMB); # my (@Src) = split("\r\n", $PEERHOST ); my $SOURCES = @Src; # my $Rounded = sprintf("%.0f", $RANK ); # print RESULT "\n ############ \n"; # print RESULT "RESULT: $RCD\n"; # print RESULT "DEBUG: RANK : '$RANK' || $Rounded \n"; # print RESULT "DEBUG: SIZE : '$SIZE' Bytes und $SizeKB KB| $SizeMB MB \n"; # print RESULT "DEBUG: SHA1 : '$SHA1' \n"; # print RESULT "DEBUG: HOST : '$PEERHOST' \n"; # print RESULT "DEBUG: SOURCES : '$SOURCES' \n"; # print RESULT " ############ \n"; # # # bei Ergebnissauslieferung --> truncated Points to int # # $RANK = ceil($RANK); # $RANK = sprintf("%.0f", $RANK ); # $RCD++; # # }; # foreach my $entry ( @{$SortedResultsArrayRef} ) {} # # close RESULT; ######## ### DEBUG: END ######## # definiere die paris host server hier, die angefragt werden sollen #my %ParisHosts = ( # "87.106.63.182" => 3383, # bitjoe.at # "81.169.141.129" => 3383, # phexproxy celeron # "81.169.137.179" => 3383, # Dual Core # "85.214.39.76" => 3383, # bitjoe.de / alpha64.info # "85.214.77.110" => 3383, # alleonleinshops.com # "85.214.122.130" => 3383, # usenext mirror zoozle #);