ďťż

Ładny brzuch

jak w php napisać bramkę gg, czy wogóle takie coś jest możliwe??



GG nie wiem ale na pewno do Tlenu tak tlen.pl i jest generator tylko niewiem czy kod koncowy jest w php. I spróbuj z Modami od phpBB2.
Links:
http://phpbb.pl/?m=mods
http://plus.tlen.pl/panel.php

M@t3u5z
_________________________
ZMIENIŁEM DZIEDZINE NA C++
_________________________
Kadu-Kadu="6932078"
TlenID="zelek13"
email="zelek13@tlen.pl"

Okna rozmowy można wywołać za pomocą poleceń.

Tlen.pl
tlen://chat|login|

GG
gg:numer

Jeśli chcesz bramki to sobie najlepiej je ściągnij (poszukaj na google lub szukaj na stronach PHPBB, itd...).

Ferrari - szybkie i niezawodne! :)

Poszukaj sobie info o EKG (GG na linuxy) oraz informacji o bibliotece libgadu (dolaczona do EKG) masz w niej udostepniony kod w C ktory realizuje polaczenia z serwerami GG. Jesli znasz sie na PHP, to bez problemu powinienes przelozyc ten kod na ten wlasnie jezyk.

Poszutaj sobie ten dokument:
http://dev.null.pl/e...s/protocol.html

..:: Unknow ::..
www: www.unknow.glt.pl
irc: #plhack, #pomoc
gg: 5123512



<!-- masz kod bramki GG powina działac ale niewiem bo nie testowałem -->

<?php //$gdebug_on=1;
# BRAMKA WWW2GG V1.4 W CALOSCI W PHP A WIEC MULIPLATFORMOWA
# MOZLIWA DO ZAMIESZCZENIA NA SERWERACH BEZ OBSLUGI CGI
#
# © Copyright 2001, 2002 Piotr Mach <pm@gadu-gadu.com>
#
# Piotr Pawłow (http://pp.siedziba.pl) napisał procedure
# obliczajac? hash hasła
#
# Podziękowania dla wzika <wzik@wp.pl> za opis formatowania tekstu
#
# Bramka powstala dzięki opisowi protokołu gadu-gadu
# z projektu EKG http://dev.null.pl/ekg/

# nazwy pakietów pochodz? w większo?ci z EKG
define("GG_WELCOME", 0x0001);
define("GG_LOGIN", 0x000c);
define("GG_LOGIN_OK", 0x0003);
define("GG_LOGIN_FAILED", 0x0009);
define("GG_NEW_STATUS", 0x0002);
define("GG_STATUS_NOT_AVAIL",0x0001);
define("GG_STATUS_AVAIL", 0x0002);
define("GG_STATUS_BUSY", 0x0003);
define("GG_STATUS_INVISIBLE",0x0014);
define("GG_NOTIFY", 0x0010);
define("GG_NOTIFY_REPLY", 0x000c);
define("GG_SEND_MSG", 0x000b);
define("GG_CLASS_MSG", 0x0004);
define("GG_CLASS_CHAT", 0x0008);
define("GG_SEND_MSG_ACK", 0x0005);
define("GG_ACK_DELIVERED", 0x0002);
define("GG_ACK_QUEUED", 0x0003);
define("GG_RECV_MSG", 0x000a);
define("GG_LOGIN_FAILED2", 0x000B);
define("GG_ACK_MBOXFULL", 0x0004);

function Debug($info)
{
global $gdebug_on;
if ($gdebug_on) {
flush();
if (is_array($info))
print_r($info);
else
echo "<BR>DEBUG: $info";
}
}

function oblicz_hash_hasla($haslo, $klucz) { # Autor: Piotr Pawłow
$temphi = 0;
$templo = 1;
for ($i = 0; $i < strlen($haslo); $i++) {
$znak = ord($haslo[$i]);
$templo *= $znak + 1;
$temphi = ($temphi * ($znak + 1) + ($templo >> 16)) & 0xffff;
$templo &= 0xffff;
}
$hashlo = $templo * ($klucz & 0x7fff);
$hashhi = (($temphi * ($klucz & 0x7fff)) & 0xffff) + ($hashlo >> 16);
$hashlo &= 0xffff;
if ($klucz & 0x8000) {
$hashlo += ($templo & 1) << 15;
$hashhi += (($temphi & 1) << 15) + ($templo >> 1) + ($hashlo >> 16);
$hashlo &= 0xffff;
}
$hashhi &= 0xffff;
$hash = sprintf("%04x%04x", $hashhi, $hashlo);
$hash = hexdec($hash);
settype($hash, 'integer');

return $hash;
}

function znajdz_serwer($numer, &$host, &$port)
{
$fp = fsockopen("appmsg.gadu-gadu.pl", 80, $errno, $errstr, 10); //timeout=3s
if (!$fp) {
Debug
("BRAK POLACZENA Z APPMSG.GADU-GADU.PL, MOZE BYC PRZECIAZONY: $errno - $errstr<BR>n");
} else {
$get = "GET /appsvc/appmsg.asp?fmnumber=<$numer> HTTP/1.0rn";
$get.= "Host: appmsg.gadu-gadu.plrn";
$get.= "User-Agent: Mozilla/4.7 [en] (Win98; I)rn";
$get.= "Pragma: no-cachernrn";
fputs($fp, $get);
fgets($fp, 128); fgets($fp, 128); $tmp = fgets($fp, 128); // trzecia linijka
fclose($fp);
if (preg_match("/s([d.]{8,16}):([d]{1,5})s/", $tmp, $addres)) {
$host = $addres[1];
$port = $addres[2];
Debug("Uzyskano adres hosta z appmsg.gadu-gadu.pl: ".$host.":".$port);

return 1;
}
}
# Losowanie jednego z trzech hostow gadu-gadu w przypadku gdy nie udaje sie uzyskać
# adresu hosta z appmsg.gadu-gadu.pl, ta lista może się w przyszło?ci zmienić
$host = '217.17.41.'.rand(82, 85);
$port = 8074;
Debug ("Nie udalo sie uzyskac hosta od appmsg uzyto domyslnego $host:$port");

return 1;
}

function gg_login($numer, $haslo, &$fp, $host, $port)
{
$fp = fsockopen($host, $port, $errno, $errstr, 30); //timeout = 10s
Debug("Logowanie do $host:$port ...");
if (!$fp) {
Debug("PROBLEM Z POLACZENIEM: $errno - $errstr<BR>n");
return 0;
}
if (!$data = fread($fp, 12)) {

Debug("Polaczenie nieoczekiwanie zamkniete<BR>n");
return 0;
}
$tab = unpack("Vtyp/Vrozmiar/Vklucz", $data);
Debug("Otrzymano pakiet z kluczem hasla: ");
Debug($tab);
$hash = oblicz_hash_hasla($haslo, $tab['klucz']);
Debug("Obliczono hash hasla ");//.dechex($hash));
$data = pack("VVVVVVVv", GG_LOGIN, 0x16, $numer, $hash, GG_STATUS_AVAIL, 0x0b, 0, 0);
fwrite($fp, $data);

# Przy podaniu zlego hasla moze natychmiast zerwac polaczenie
if (!$data1 = fread($fp, 8))
return GG_LOGIN_FAILED2;
Debug("Wyslano pakiet: ".bin2hex($data));
$tab = unpack("Vlogin_status/Vrozmiar", $data1);
Debug("Odpowiedz na logowanie ");
Debug($tab);

return $tab['login_status']; //Wynik logowania GG_LOGIN_OK lub GG_LOGIN_FAILED
}

function wyslij_wiadomosc($adresat, $tresc, &$fp, $pokaz)
{
mt_srand((double)microtime() * 1000000);
$seq = mt_rand();

$format = "VVVVVa".strlen($tresc)."C";
$data = pack($format, GG_SEND_MSG, 0x0d + strlen($tresc), $adresat,
$seq, GG_CLASS_MSG, $tresc, 0);
Debug("Wyslano pakiet: ".bin2hex($data));
fwrite($fp, $data);

# Obieranie wiadomosci lub potwierdzenia
if (!$data = fread($fp, 8))
return 0;
$tab = unpack("Vtyp/Vrozmiar", $data);

# Odebranie wszystkich oczekujacych wiadomosci i warunkowe wyswietlenie
while ($tab['typ'] == GG_RECV_MSG) {
$data = fread($fp, $tab['rozmiar']);
$tab = unpack("Vnadawca/Vseq/Vtime/Vclass/A*wiadomosc", $data);
Debug("Otrzymano wiadomosc");
Debug($tab);
# Wyswietlenie wiadomosci tylko gdy wyslano z wlasnego numeru
if ($pokaz)
wyswietl_wiadomosc($tab['nadawca'], $tab['time'], $tab['wiadomosc']);
$data = fread($fp, 8);
$tab = unpack("Vtyp/Vrozmiar", $data);
}
if (!$data = fread($fp, $tab['rozmiar']))
return 0;
Debug("Otrzymano potwierdzenie wiadomosci ");
Debug($tab);
$tab = unpack("Vstatus/Vadresat/Vseq", $data);
if ($tab['seq'] != $seq)
return 0;
return $tab['status'];
}

function wyswietl_wiadomosc($nadawca, $czas, $wiadomosc)
{
# Wykrycue formatowania tekstu w nowszych wersjach i przerobienie go na html
if (strpos($wiadomosc, "")+1 < strlen($wiadomosc)) {
$fmt = substr($wiadomosc, strpos($wiadomosc, ""));
$wiadomosc = substr($wiadomosc, 0, strpos($wiadomosc, ""));
$wiadomosc = konwertuj_formatowanie_na_html($wiadomosc, $fmt);
}
$wiadomosc = nl2br($wiadomosc);
# Ułożenie htmla do wy?wietlenia
$html = "<BR><B>".$nadawca."</B> ".strftime("(%H:%M)<BR>n",$czas);
$html.= cp2iso($wiadomosc)."<HR>n";
echo $html;flush();
}

function konwertuj_formatowanie_na_html($tresc, $fmt)
{
Debug('<PRE>');
# Rozbijamy formatowenie na bajty i wstawiamy do tablicy
$fmt = preg_split('//', $fmt, -1, PREG_SPLIT_NO_EMPTY);
$i = 1; // Wskaznik aktualnego znaku
$tab = unpack("Ctyp/vsize", $fmt[$i++].$fmt[$i++].$fmt[$i++]);
# Rozmiar format. i typ=2
$size = $tab['size'];
Debug("Rozmiar formatowania: $sizen");
$nr = 0;
$kawalek = "";

# Tekst składa się z kawałków o innym formatowaniu
while ($i < $size + 2) {
$nr++;
$tab = unpack("vpoz/Cmaska", $fmt[$i++].$fmt[$i++].$fmt[$i++]);
$kawalek[$nr]['pozycja'] = $tab['poz'];
$kawalek[$nr]['maska'] = $tab['maska'];

if ($tab['maska'] & 1)
$kawalek[$nr]['bold'] = 1;
if ($tab['maska'] & 2)
$kawalek[$nr]['italic'] = 1;
if ($tab['maska'] & 4)
$kawalek[$nr]['underline'] = 1;
if ($tab['maska'] & 8) {
$tab = unpack("CR/CG/CB", $fmt[$i++].$fmt[$i++].$fmt[$i++]);
$kawalek[$nr]['R'] = $tab['R'];
$kawalek[$nr]['G'] = $tab['G'];
$kawalek[$nr]['B'] = $tab['B'];
}
}

# Tworzymy pomocniczy kawalek z pozycja rowna dlugosci tresci
$poz = 0;
$kawalek[$nr + 1]['pozycja'] = strlen($tresc);

# Znalezienie granic textu n podstawie pozycji i dodanie html'a;
for ($i = 1; $i <= $nr; $i++) {
$kawalek[$i]['tekst'] = substr($tresc, $poz, $kawalek[$i + 1]['pozycja'] - $poz);
$poz = $kawalek[$i + 1]['pozycja'];
$kawalek[$i]['html'] = $kawalek[$i]['tekst'];
if ($kawalek[$i]['bold'])
$kawalek[$i]['html'] = '<B>'.$kawalek[$i]['html'].'</B>';
if ($kawalek[$i]['italic'])
$kawalek[$i]['html'] = '<I>'.$kawalek[$i]['html'].'</I>';
if ($kawalek[$i]['underline'])
$kawalek[$i]['html'] = '<U>'.$kawalek[$i]['html'].'</U>';
$rgb = sprintf("%02X%02X%02X", $kawalek[$i]['R'],
$kawalek[$i]['G'], $kawalek[$i]['B']);
$kawalek[$i]['html'] = '<FONT COLOR="'.$rgb.'">'.$kawalek[$i]['html'].'</FONT>';
$tresc_html.= $kawalek[$i]['html'];
}
array_pop($kawalek); //Wywalamy pomocniczy kawalek
Debug($kawalek);
Debug('</PRE>');

return $tresc_html;
}

function gg_logoff(&$fp)
{
$pakiet = pack('VVV', GG_NEW_STATUS, 0x04, GG_STATUS_NOT_AVAIL);
fwrite($fp, $pakiet);
Debug("Wyslano pakiet logoff : ".bin2hex($pakiet));
fclose($fp);
}

function cp2iso($co) {
return strtr($co, "xA5x8Cx8FxB9x9Cx9F", "xA1xA6xACxB1xB6xBC"); }

function iso2cp($co) {
return strtr($co, "xA1xA6xACxB1xB6xBC", "xA5x8Cx8FxB9x9Cx9F"); }

/* zmiana linków np moj@email.pl na moj@ email. pl zeby uniknac usunięcia */
function odlinkuj ($text) {
return preg_replace("/(S+([@.])+?S+)|(S+://)/e",
"dodajspacje('13')",$text);
}
function dodajspacje ($text) { return preg_replace("/([.@:])/","1 ","$text"); }

?>

M@t3u5z
_________________________
ZMIENIŁEM DZIEDZINE NA C++
_________________________
Kadu-Kadu="6932078"
TlenID="zelek13"
email="zelek13@tlen.pl"

Takie cos juz zostalo napisane
wejdz na strone http://gg.wha.la i tam do pobrania jest pelny kod zrodlowy bramki

Rafal

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •