[PHP] status gadugadu - wredny blad

0

jak wiadomo, od dawna nie dzialaja statusy gg na www, wiec trzeba napisac wlasny skrypt... mozna sie posluzyc skryptami z:

http://4programmers.net/Forum/293695#id293695
http://4programmers.net/Forum/262790#id262790

ale niestety (przynajmniej u mnie) dziala toto tylko jak mam ustawiony jakiś opis... brak opisu = szara ikonka albo w ogole blad skryptu :(

prosze o jakas sugestie, jakos nie trafia do mnie opis protokolu gg, albo nie ten co trzeba przegladalem :(

0

ale jak to nie działają? mi tam http://status.gadu-gadu.pl/users/status.asp?id=3251322&styl=1 działa poprawnie :-)

0

Nie udało się nawiązać połączenia
Firefox nie może nawiązać połączenia z serwerem status.gadu-gadu.pl.

potrzebuje rozwiazania niezawodnego :-/. a w ogole, to ajchetniej bym porzucil GG, jakby wszyscy z tego nie korzystali :(. Przynajmniej niedlugo sobie zmienie na cos alternatywnego, co obsluguje gg-owska siec...

tak czy inaczej status potrzebny - ogolnie to chodzi chyba o sposob dekodowania odpowiedzi!

0
tomkiewicz napisał(a)

Firefox nie może nawiązać połączenia z serwerem status.gadu-gadu.pl.

Hmmm, no dziwne bo u mnie i na IE i na FF dziala niezawodnie :P
A to ze czasem serwery gadu padaja, to nie masz na to wplywu i nic nie poradzisz, zaden "niezawodny" skrypt Ci w tym nie pomorze :d

BTW: co do zmiany komunikatora, polecam Tlena ;) Mam wszystko to samo co GG + jeszcze full innych przydatnych i fajnych rzeczy

0
desperat napisał(a)

to ze czasem serwery gadu padaja

tyle, ze u mnie (i u wielu innych osob) ten skrypt nie dziala nigdy :/

desperat napisał(a)

zaden "niezawodny" skrypt Ci w tym nie pomorze

a wlasnie, ze pomoze :). Jezeli taki skrypt nie bedzie mogl sie zalogowac na gg, bo wszystkie serwery beda padniete, to znaczy, ze ja takze nie jestem zalogowany! Poza tym nie dalem pytania, zeby dyskutowac nad dzialaniem / nie dzialaniem serwerow / skryptow GG, ale zeby ktos podpowiedzial, jak rozpakowac pakiet przetrzymujacy zwrocony status...

EDIT: na IE takze nie dziala, to nie wina przegladarki - moze serwer GG banuje niektore sieci (takze moj serwer www :/)

0

oj lenistwo, lenistwo
nie wiem na jaki ty opis protokołu patrzałeś ... za to ten http://dev.null.pl/ekg/docs/protocol.html jest bardzo przyzwoicie napisany, wystarczy go przepisać na php

no ale dobra, trochę zmodyfikowałem ten skrypt, zaktualizowałem pasywną listę serwerów gg, dodałem obsługę trzech pakietów nie wiem po jakie jajo, ustawiłem timeout bo jak ktoś jest niedostępny to chamski serwer gg nic nam nie wysyła, dodałem parę poprawek - w tym też poprawkę "wylogowywującą" by Marooned - wydaje mi się że lepiej działa:

<?php

function oblicz_hash ($haslo, $klucz){
        $x0=0; $x1=0; $y0=0; $y1=0; $z=0; $tmp=0;
        $y0 = ($klucz << 16) >> 16; $y1 = $klucz >> 16 ;
        for ($i=0; $i<strlen($haslo); $i++){
            $x0 = ($x0 & 0xFF00) | ord($haslo[$i]); $x1 &= 0xFFFF;
            $y0 ^= $x0; $y1 ^= $x1;
            $y0 += $x0; $y1 += $x1;
            $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
            $y0 ^= $x0; $y1 ^= $x1;
            $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
            $y0 -= $x0; $y1 -= $x1;
            $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
            $y0 ^= $x0; $y1 ^= $x1;
            $z = $y0 & 0x1F;
            $y0 &= 0xFFFF; $y1 &= 0xFFFF;
            if ($z <= 16){
                $tmp= ($y1 << $z) | ($y0 >> (16-$z));
                $y0 = ($y1 >> (16-$z)) | ($y0 << $z);
                $y1 = $tmp;    
            } else {
                $tmp= $y0 << ($z-16);
                $y0 = ($y0 >> (32-$z)) | ( (($y1 << $z) >> $z) << ($z-16) );
                $y1 = ($y1 >> (32-$z)) | $tmp;
            }
            $y0 &= 0xFFFF; $y1 &= 0xFFFF;
        }
        $hash = hexdec(sprintf("%04x%04x", $y1, $y0));
        settype($hash, 'integer');
        return $hash;
    }
...
// przykład:

$statusy = Array(
  0x000 => 'błąd',
  0x001 => 'niedostępny',
  0x015 => 'niedostępny z opisem: ',
  0x002 => 'dostępny',
  0x004 => 'dostępny z opisem: ',
  0x003 => 'zaraz wracam',
  0x005 => 'zaraz wracam z opisem: ',
  0x006 => 'zablokowany',
  0x014 => 'niewidoczny',
  0x016 => 'niewidoczny z opisem: ');
// ostatnie dwa są możliwe do uzyskania tylko przy sprawdzaniu własnego statusu

$twojnumer = 12345;
$twojehaslo = 'tajneheslo';
$numerdosprawdzenia = 54321;

$status = statusGG($twojnumer, $twojehaslo, $numerdosprawdzenia);

echo $statusy[$status[0]];
if(!empty($status[1]))
  echo $status[1];

?>

na IE takze nie dziala, to nie wina przegladarki - moze serwer GG banuje niektore sieci (takze moj serwer www :/)

jak już to nie twój serwer www tylko twoje IP, albo ew. twoja strona (referer)

0

wielkie dzieki, wszystko nareszcie dziala jak trzeba :)

Adamo napisał(a)

jak już to nie twój serwer www tylko twoje IP, albo ew. twoja strona (referer)

referer nie, bo mi na zadnej stronie obrazki sie nie pokazuja. Moze i moje IP banuje (mialbym w takim razie zbanowane i stare i nowe, ktore mam od chyba 2 tygodni) oraz IP moich obu serwerow (hostings.pl i avx.pl) - odpalalem na nich skrypty PHP pobierajace obrazki gg...

tak czy inaczej skrypt od gg jest bardzo dziwny, a ten jest wlasnie taki jak trzeba :)

EDIT: sie okazalo, ze u mnie sie nie wyswetlalo, bo mam w firewallu zabanowany serwer reklam gg (przy okazji zabanowalem niechcacy serwer statusu), a status przy pobieraniu z serwera niedawno zaczal sie dac sciagac... tyle, ze jest kolejny problem - pokazuje sie tylko czerwone sloneczko... ale juz z tym sobie poradze, bo napisze wlasny "status.asp" :P

0

hmmmm, a za co jest odpowiedzialne:
$t['powrot'] ??

0

za powrót, nie korzystałeś nigdy z gg ?
przykładowe wykorzystanie:

if(!empty($status[2])) echo ' - Będę '.date('d-m-Y \o H:i', $status[2]);
0

thx

Adamo napisał(a)

nie korzystałeś nigdy z gg ?
daaaaawno temu i nie kojaze zeby takie cos bylo :d

1 użytkowników online, w tym zalogowanych: 0, gości: 1