|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Przesunięty przez: arcy 23-01-2009, 11:30 |
[Problem] Gadu-Gadu na forum - POPRAWKA DO WERSJI 1.12.6p2 |
Autor |
Wiadomość |
joli
Yollien +Styler
![zasłużony](templates/subSilver/images/ranks/zasluzeni.gif)
![](images/avatars/177.png)
Pomógł: 2988 razy Posty: 16981
|
Wysłany: 05-12-2008, 22:33 [Problem] Gadu-Gadu na forum - POPRAWKA DO WERSJI 1.12.6p2
|
|
|
Jesli mamy problemy z GG, warto skorzystać z poprawki
http://www.przemo.org/php...p=405999#405999 |
_________________
Walczę z warezami. Więc jak masz forum warezowe, nie proś mnie o pomoc i nie wchodź pod rękę, bo zniszczę.
Nie pisz do mnie na GG i PW,(chyba że proszę) bo nie odpowiem, a Ty dostaniesz bonusik. Masz forum do zadawania pytań!!! Poza forum pomagam TYLKO odpłatnie.
liberte d'expression pour tout le monde... OFICJALNY DOWNLOAD STYLÓW - style ogólnodostępne i na zamówienie - PORTFOLIO JOLI |
Ostatnio zmieniony przez lui754 06-06-2009, 12:55, w całości zmieniany 4 razy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Gadatliwa Kasia
|
|
|
|
Kubos
Posty: 97
|
Wysłany: 19-12-2008, 16:22 [Problem] Gadu-Gadu na forum
|
|
|
Witam. Kiedy chcę wysłać przez forum wiadomość gg, to wyskakuje mi taki błąd po kliknięciu "Wyślij":
Kod: | PROBLEM Z POLACZENIEM: 110 - Przekroczony czas oczekiwania na połączenie |
Wie ktoś co trzeba pozmieniać, żeby to działało? |
|
|
|
![](templates/subSilver/images/spacer.gif) |
MagicalFire
![](images/avatars/126768873048afb0bb3b270.jpg)
Pomógł: 980 razy Posty: 4353
|
Wysłany: 19-12-2008, 16:27
|
|
|
to ze twój serwer nie ma takiej opcji
zmienić hosting
a poza tym masz ustawione dane w panelu ?? |
_________________ nie za takie Przemo walczyliśmy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Kubos
Posty: 97
|
Wysłany: 19-12-2008, 17:47
|
|
|
MagicalFire napisał/a: | zmienić hosting |
Hehe, to się obejdzie bez gg
MagicalFire napisał/a: | a poza tym masz ustawione dane w panelu ?? |
No podałem mój nr. gg i hasło. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
MagicalFire
![](images/avatars/126768873048afb0bb3b270.jpg)
Pomógł: 980 razy Posty: 4353
|
Wysłany: 19-12-2008, 17:48
|
|
|
Kubos, no to hosting nie obsługuje |
_________________ nie za takie Przemo walczyliśmy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Petermechanic
![](images/avatars/81984063643ee1624dfa72.jpg)
Posty: 18
|
Wysłany: 19-12-2008, 18:09
|
|
|
Nigdy się nie wyśle, GG zmieniło IP serwerów. Aby naprawić:
Cytat: |
->Otwórz includes/functions_gg,php
->Znajdź:
Kod: |
$ip = array(85, 86, 88, 89);
$host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)];
|
->Zamień na:
Kod: |
$ip = array(24, 33, 6, 7, 4, 5);
$host = '91.197.13.'.$ip[rand(0,sizeof($ip)-1)];
|
->Otwórz includes/functions_gg_notice,php
->Znajdź:
Kod: |
$ip = array(85, 86, 88, 89);
$host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)];
|
->Zamień na:
Kod: |
$ip = array(24, 33, 6, 7, 4, 5);
$host = '91.197.13.'.$ip[rand(0,sizeof($ip)-1)];
|
->Zapisz i zamknij wszystkie pliki
|
Pozdrawiam |
_________________ Pozdrawiam, Petermechanic. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Kaito
Posty: 1
|
Wysłany: 01-01-2009, 23:24
|
|
|
@up Witam. Po zmianie adresów ip wyskakuje mi taki błąd Kod: | Warning:unpack() [function.unpack]: Type V: not enough input, need 4, have 1 in /.../..../ftp/includes/functions_gg.php on line 177 |
Oczywiście wiąże się to z komunikatem iż wiadomość nie została wysłana proszę spróbować puźniej |
|
|
|
![](templates/subSilver/images/spacer.gif) |
redox
Pomógł: 4 razy Posty: 16
|
Wysłany: 02-01-2009, 13:42
|
|
|
A mi nadal pisze to co na początku ;/ co zrobiC? |
|
|
|
![](templates/subSilver/images/spacer.gif) |
bomber
Posty: 8
|
Wysłany: 12-01-2009, 13:50
|
|
|
mam ten sam komunikat
Kod: |
[<a href='function.unpack'>function.unpack</a>]: Type V: not enough input, need 4, have 1 in ../public_html/forum/includes/functions_gg.php on line 179
|
|
|
|
|
![](templates/subSilver/images/spacer.gif) |
MagicalFire
![](images/avatars/126768873048afb0bb3b270.jpg)
Pomógł: 980 razy Posty: 4353
|
Wysłany: 12-01-2009, 13:52
|
|
|
bomber, daj tu plik functions_gg.php |
_________________ nie za takie Przemo walczyliśmy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
bomber
Posty: 8
|
|
|
|
![](templates/subSilver/images/spacer.gif) |
MagicalFire
![](images/avatars/126768873048afb0bb3b270.jpg)
Pomógł: 980 razy Posty: 4353
|
Wysłany: 12-01-2009, 14:30
|
|
|
bomber napisał/a: | myslalem ze stara wersja i to tego wina wiec zamienilem na plik z 1.12.6 |
te pliki sa takie same w tych wersjach |
_________________ nie za takie Przemo walczyliśmy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
bomber
Posty: 8
|
Wysłany: 12-01-2009, 14:45
|
|
|
co nie zmienia faktu ze nie tylko mi to nie dziala
[ Dodano: 13-01-2009, 12:13 ]
Hm. Przyszlo mi cos jeszcze do glowy. phpbb2 korzysta z www2gg 2.2 a ta bramka ktora wkleilem wczesniej to www2gg 2.2.1. I to i to stoi na tym samym serwerze. Wersja php na dmkproject to 5.2.3.
Podejrzewam wiec ze www2gg 2.2 ma na niektorych serwerach problem? A 2.2.1 go nie ma?
Czy ktos jeszcze ma tutaj podobny problem na dmk?
[ Dodano: 20-01-2009, 10:55 ]
częsciowa poprawka
functions_gg.php
Kod: |
function odbierz_dane()
{
if ( !$data = fread($this->fp, 8) ) return FALSE;
$tab = unpack("Vtyp/Vrozmiar", $data);
while ($tab['typ'] == 0x0011 || $tab['typ'] == 0x0002)
{
$data = @fread($this->fp, $tab['rozmiar']);
switch($tab['typ'])
{
case 0x0002:
case 0x0011:
$tab = unpack("Vuin/Vstatus", $data);
break;
}
$data = @fread($this->fp, 8);
$tab = unpack("Vtyp/Vrozmiar", $data);
}
if ( !$data = @fread($this->fp, $tab['rozmiar']) ) return FALSE;
if ( $tab['typ'] == 0x0005 )
{
$tab = unpack("Vstatus/Vadresat/Vseq", $data);
$this->status_dostarczenia[$tab['seq']] = $tab['status'];
}
else if ( $tab['typ'] == 0x000e )
{
$tab = unpack("Cunknown/Vczas/A*results", $data);
$this->wyniki_szukania = $tab['results'];
}
return TRUE;
}
|
zamienic na:
Kod: |
function odbierz_dane($auto_odpowiedz = "")
{
if ( !$data = fread($this->fp, 8) ) return FALSE;
$tab = unpack("Vtyp/Vrozmiar", $data);
while ($tab['typ'] == 0x0011 || $tab['typ'] == 0x0002)
{
$data = @fread($this->fp, $tab['rozmiar']);
switch($tab['typ'])
{
case 0x0002:
case 0x0011:
$tab = unpack("Vuin/Vstatus", $data);
$this->Debug("Otrzymano wiadomosc ", $tab);
if ($auto_odpowiedz)
$this->wyslij_wiadomosc($tab['nadawca'], $auto_odpowiedz, FALSE); //bez potwierdzen
array_push($this->wiadomosci, $tab);
break;
}
$data = @fread($this->fp, 8);
$tab = unpack("Vtyp/Vrozmiar", $data);
}
if ( !$data = @fread($this->fp, $tab['rozmiar']) ) return FALSE;
if ( $tab['typ'] == 0x0005 )
{
$tab = unpack("Vstatus/Vadresat/Vseq", $data);
$this->status_dostarczenia[$tab['seq']] = $tab['status'];
}
else if ( $tab['typ'] == 0x000e )
{
$tab = unpack("Cunknown/Vczas/A*results", $data);
$this->wyniki_szukania = $tab['results'];
}
return TRUE;
}
|
oraz
Kod: |
case 0x0003:
if ( $seq = $this->wyslij_wiadomosc($adresat, $tresc) )
{
if ( $this->odbierz_dane() ) $this->logoff("");
return $seq;
}
else
{
$this->debug("Polaczenie zerwane po zalogowaniu");
break;
}
|
zamienic na:
Kod: |
case 0x0003:
if ($this->wyslij_liste_kontaktow ($adresat)) {
if ( $seq = $this->wyslij_wiadomosc($adresat, $tresc) )
if ($this->odbierz_dane($this->auto_odpowiedz)) // czy wysylac odp. ze bramka
$this->logoff($this->OPIS_W_STATUSIE_PO_WYLOGOWANIU);
return $seq;
}
else
{
$this->debug("Polaczenie zerwane po zalogowaniu");
// break;
}
|
Umozliwy to wysylanie wiadomosci do innych uzytkownikow. [Dziala prawie zawsze ;P mimo blednego komunikatu]
Powiadomienia uzytkownikow/adminow wciaz nie dzialaja. [functions_gg_notice.php nie poprawione] |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Krzyś Kaspruk
Pomógł: 1 raz Posty: 2
|
Wysłany: 23-01-2009, 11:27
|
|
|
bomber napisał/a: | (...) częsciowa poprawka (...) | poprawka wygląda na robioną na zasadzie "wstawię w losowym miejscu wywołanie losowej metody i zobaczę czy działa".
Gadu-Gadu nieznacznie zmodyfikowało protokół, a w zasadzie wykorzystało niedokładną implementację tegoż w bramce gg. Od teraz klient po zalogowaniu dostaje pakiet GG_LOGIN_OK o długości 1 z polem o wartości 0x1F o nieznanym przeznaczeniu (nawet dla wersji GG starszych od 6.0 Build 140). Niestety nasza bramka była na tyle niechlujnie napisana, że nie fatygowała się sprawdzać jakichkolwiek długości pakietów, co skwapliwie wykorzystała firma Gadu-Gadu, i dlatego dopiero w późniejszej części kodu ta wartość była odczytywana ze strumienia (i stąd ten błąd z funkcją unpack). Poprawka tego niedociągnięcia wygląda następująco:
w pliku functions_gg.php w funkcji login fragment Kod: | if ( !$data1 = fread($this->fp, 8) ) return 0x000B;
$tab = unpack("Vlogin_status/Vrozmiar", $data1);
return $tab['login_status']; | zamieniamy na: Kod: | if ( !$data1 = fread($this->fp, 8) ) return 0x000B;
$tab = unpack("Vlogin_status/Vrozmiar", $data1);
if ($tab['rozmiar']>0)
$dummy = fread($this->fp, $tab['rozmiar']);
return $tab['login_status']; | Następnym problemem - zauważonym przez mojego przedmówcę - jest fakt, że serwery GG oczekują albo na listę kontaktów (pakiety typu GG_NOTIFY_FIRST bądź GG_NOTIFY_LAST), albo na informację o pustej liście (pakiet GG_LIST_EMPTY). Przedmówca zaproponował wysłać listę kontaktów z jednym kontaktem - adresatem wiadomości, ja proponuję zamiast tego wysłać pustą listę. W tym celu w pliku functions_gg.php, w klasie GaduGadu, np. pod funkcją function wyslij_liste_kontaktow ($uin), należy zdefiniować funkcję pusta_lista_kontaktow w następujący sposób: Kod: | function pusta_lista_kontaktow ()
{
$data = pack ("VV",0x0012, 0);
return @fwrite($this->fp,$data);
} | Następnie, by informacja o pustej liście kontaktów została wysłana tuż po zalogowaniu, należy w funkcji wiadomosc (znajdującej się w klasie www2gg zamienić następujący fragment: Kod: | list ($host, $port) = $this->znajdz_serwer($this->numer);
switch ($this->login($this->numer, $this->haslo, $host, $port, ""))
{
case 0x0003:
if ( $seq = $this->wyslij_wiadomosc($adresat, $tresc) ) | na: Kod: | list ($host, $port) = $this->znajdz_serwer($this->numer);
switch ($this->login($this->numer, $this->haslo, $host, $port, ""))
{
case 0x0003:
$this->pusta_lista_kontaktow();
if ( $seq = $this->wyslij_wiadomosc($adresat, $tresc) ) | Ponowna próba wysłania wiadomości wewnątrz metody odbierz_dane i w dodatku w rozgałęzieniu dotyczącym powiadomienia o statusie osób z naszej listy kontaktów (tak jak to zrobił mój przedmówca) wydaje mi się nieporozumieniem.
Po tych zmianach należy jeszcze ustawić starszą wersję protokołu wykorzystywanego przez skrypt - w sygnaturze funkcji login w klasie GaduGadu trzeba zmniejszyć nr wersji o 1 - czyli było: Kod: | function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x22) | a powinno być: Kod: | function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x21) | Czemu przy nowszej wersji protokołu nie chce działać, nie chciało mi się sprawdzać.
Teraz kolej na functions_gg_notice.php. W ciele funkcji wiadomosc_gg zmieniamy początkową wartość zmiennej $wersja na 0x21 (analogicznie jak poprzednio), czyli: to:zmieniamy na:Analogicznie jak poprzednio należy również przed wysłaniem wiadomości wysłać na serwer listę kontaktów bądź pakiet informujący o jej braku - fragment Kod: | @fwrite($fp, @pack("VVVVVVvVvVvCCa".strlen($opis), 0x0015, 0x20 + strlen($opis), $numer, $hash, ($opis)?0x0004:0x0014, $wersja, 0, 0, 0, 0, 0, 0x14, 0xbe , $opis ));
if ( is_array($list_addressats) )
{
for($i = 0; $i < count($list_addressats); $i++)
| zamieniamy na: Kod: | @fwrite($fp, @pack("VVVVVVvVvVvCCa".strlen($opis), 0x0015, 0x20 + strlen($opis), $numer, $hash, ($opis)?0x0004:0x0014, $wersja, 0, 0, 0, 0, 0, 0x14, 0xbe , $opis ));
@fwrite($fp, @pack("VV", 0x0012, 0));
if ( is_array($list_addressats) )
{
for($i = 0; $i < count($list_addressats); $i++) | Po takich poprawkach - o ile o niczym nie zapomniałem - (+ oczywiście poprawki dotyczące adresów IP - bramka powinna chyba nie mieć adresów na sztywno, tylko je odczytywać z odpowiedzi serwera?) powiadamianie oraz bramka wydają się działać. |
Ostatnio zmieniony przez Przemo 02-02-2009, 00:36, w całości zmieniany 3 razy |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Gadatliwa Kasia
|
|
|
|
Przemo
![Administrator](templates/subSilver/images/ranks/rank_group.gif)
![](images/avatars/79546136355fc8ea50c54e.jpg)
Pomógł: 210 razy Posty: 3148
|
Wysłany: 01-02-2009, 18:12
|
|
|
Krzyś Kaspruk, wielkie dzięki za poprawke, działa !! |
|
|
|
![](templates/subSilver/images/spacer.gif) |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 15 | |
![](images/spacer.gif) |
|