To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

F.A.Q. - Najczęściej Zadawane Pytania - [Problem] Gadu-Gadu na forum - POPRAWKA DO WERSJI 1.12.6p2

joli - 01-02-2009, 23:53

Poprawke dodamy do paczki na dniach. Na razie, kto chce, moze skorzystac.
Dziekujemy

securian - 07-02-2009, 17:20

Ja tylko tak formalnie, kiedy paczka zostanie uaktualniona ?
tosiek - 08-02-2009, 16:39

Jakby ktoś chciał bramka z poprawkami w załączniku.


I mam pytanie czemu adres forum w wiadomości jest ocenzurowany ? :)

Radek - 09-02-2009, 14:06

Ze względu na filtry które kiedyś wprowadziło GG. Takie zabezpieczenie przed spamem.
They2 - 09-02-2009, 14:09

widze ze nadal nie pomoze, a myslalem.

Kod:
PROBLEM Z POLACZENIEM: 110 - Przekroczony czas oczekiwania na połączenie

pewnie jakas funkcja na swoim serwerze jest wylaczona czy zablokowana?
jesli tak to jaka funkcja?

Radek - 09-02-2009, 14:13

They2,
includes/functions_gg.php
Kod:
    function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x22)
    {
        $this->fp = @fsockopen($host, $port, $errno, $errstr, 10);

Usuń małpę sprzed fsockopen. Powinno wywalić jakiś błąd, pewnie IP serwera gg jest złe.

Żeby ta bramka działała cały czas, należy jeszcze poprawić funkcję znajdz_serwer() w klasie GaduGadu.

They2 - 09-02-2009, 14:49

owszem wywala blad
Kod:
Warning: fsockopen() [function.fsockopen]: unable to connect to 217.17.41.88:8074 (Przekroczony czas oczekiwania na połączenie) in /home/alldeaf/public_html/forum/includes/functions_gg.php on line 126


[ Dodano: 09-02-2009, 14:52 ]
skoro to IP, mozna sprawdzic ktore IP GG sa online:
http://www.kadu.net/monitor/

[ Dodano: 09-02-2009, 14:58 ]
niestety sprobowalem zmienic IP i nie wyszlo, nadal ten sam blad funkcji fsockopen z IP jak wyzej i tez "problem z polaczeniem..."

oto proba zmiany:
Kod:
        $ip = array(85, 86, 88, 89);
        $host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)];

zamienilem na
Kod:
        $ip = array(4, 5, 6, 7);
        $host = '91.197.13.'.$ip[rand(0,sizeof($ip)-1)];

Radek - 09-02-2009, 15:22

IP powinno być pobierane z serwera GG, a nie ustalane w skrypcie na sztywno.
Dlatego ja proponuję zamienić kod:
Kod:
    function znajdz_serwer($numer)
    {
        $http_fp = @fsockopen('appmsg.gadu-gadu.pl', 80, $errno, $errstr, 3);
        if ( !$http_fp )
        {
            $this->debug("Nie mozna polaczyć z serwerem Gadu-Gadu: $errno - $errstr");
        }
        else
        {
            $get = "GET /appsvc/appmsg.asp?fmnumber=<$numer> HTTP/1.0\r\n";
            $get.= "Host: appmsg.gadu-gadu.pl\r\n";
            $get.= "User-Agent: Mozilla/4.7 [en] (Win98; I)\r\n";
            $get.= "Pragma: no-cache\r\n\r\n";
            fputs($http_fp, $get);
            fgets($http_fp, 128); fgets($http_fp, 128); $tmp = fgets($http_fp, 128);
            fclose($http_fp);
            if ( preg_match("/\s([\d\.]{8,16})\:([\d]{1,5})\s/", $tmp, $addres) )
            {
                $host = $addres[1];
                $port = $addres[2];

                return array ($host, $port);
            }
        }

        $ip = array(85, 86, 88, 89);
        $host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)];
        $port = 8074;

        return array ($host, $port);
    }

Na taki:
Kod:
    function znajdz_serwer($numer)
    {
        $http_fp = @fsockopen('appmsg.gadu-gadu.pl', 80, $errno, $errstr, 3);
        if ( !$http_fp )
        {
            return array('91.197.13.81', '8074');
        }
        else
        {
            $headers = "GET /appsvc/appmsg4.asp?fmnumber={numer}&version=6,0,0,133&lastmsg=0 HTTP/1.0\r\nAccept-Language: pl\r\nUser-Agent: Mozilla/4.04 [en] (Win95; I ;Nav)\r\nPragma: no-cache\r\nHost: appmsg.gadu-gadu.pl\r\n\r\n";

            fwrite($http_fp, $headers);

            $data = fread($http_fp, 500);
            fclose($http_fp);

            $data = explode("\r\n", $data);
           
            $serverInfo = explode(' ', $data[3]);
            $serverInfo = explode(':', $serverInfo[2]);

            return array($serverInfo[0],$serverInfo[1]);
        }
    }

Teraz IP i port są pobierane z serwera GG. Jeżeli jednak wystąpi jakiś błąd, to użyte zostanie IP 91.197.13.81 i port 8074. Po tej poprawce + poprawki z poprzedniej strony bramka działa. Pozostaje tylko poprawić funkcję odbierz_dane() ( nie zwraca statusu wiadomości - wiadomość dochodzi ale zawsze forum wyświetla "Wiadomość nie została dostarczona, spróbuj jeszcze raz (odśwież strone)." ).

They2 - 09-02-2009, 16:07

RuseK, i wyszlo to samo problem z polaczeniem, wydaje mi sie ze to nie jedna funkcja lecz caly plik do zmiany... w function login() gdzie fsockopen tez wywala

Zostawiam w spokoju :/

Radek - 09-02-2009, 16:13

They, u mnie działa bez kłopotów. Tylko wykonaj jeszcze poprawkę z posta Krzysia Kaspruka.
They2 - 09-02-2009, 16:19

wykonalem to wczesniej i napisalem o tym wyzej.
skoro u ciebie dziala to moze i mam wylaczona funkcje na serwerze albo nie wiem.
a moze przez to fsockopen nie moze, mam wlaczona cURL.

Radek - 09-02-2009, 16:26

They2, a usuń małpę sprzed wszystkich fsockopen i powiedz co wywala. Gdyby ta funkcja byla wylaczona to blad bylby inny, ale u Ciebie powinno byc ok.

Ostatnio w ogole myslalem o napisaniu od nowa tej klasy gg. Jak znajde czas to moze cos napisze.

They2 - 09-02-2009, 16:53

RuseK, to 2 funkcje z fsockopenem znajdz_serwer() i login()

wynik bledu jest ten sam jak wyzej lecz inny IP ktore podales wyzej
Kod:
Warning: fsockopen() [function.fsockopen]: unable to connect to 91.197.13.78:8074 (Przekroczony czas oczekiwania na połączenie) in /home/alldeaf/public_html/forum/includes/functions_gg.php on line 154
ten blad w linii 154 nalezal do funkcji login() czyli to:
Kod:
    function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x21)
    {
        $this->fp = fsockopen($host, $port, $errno, $errstr, 10);

tylko jeden blad, a drugi w funkcji znajdz_serwer() nie pokazal.

Zico - 27-03-2009, 20:27

Po zainstalowaniu poprawionych plików z paczki bramka wprawdzie działa i wiadomości są dostarczane, ale pokazuje się następujący błąd:
Kod:
Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /.../.../.../.../includes/functions_gg.php on line 194

Co to znaczy i w jaki sposób można to naprawić?

lui754 - 27-03-2009, 20:32

Jest sporo postów na temat Twojego błędów:

http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack

+ przeczytaj ten temat są te błędy tutaj zamieszczone



Powered by phpBB modified by Przemo © 2003 phpBB Group