Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

fgets(): supplied argument is not a valid stream resource - zasto?

[es] :: PHP :: fgets(): supplied argument is not a valid stream resource - zasto?

[ Pregleda: 2154 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

urkozamanje
Milosavljevic Marko

Član broj: 36977
Poruke: 138
195.252.108.*



Profil

icon fgets(): supplied argument is not a valid stream resource - zasto?20.10.2006. u 14:50 - pre 181 meseci
aplikacija je pravljena za windows okruzenje, ja sam je preradio za SuSE Linux Desktop 10. Na jednoj stanici sam uspeo da je ispeglam i sve radi. Ali kada sam pokusao da je prebacim na drugu stanicu tako sto sam jednostavno prekopirao sledece fajlove :

- backup.php

Code:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL ^ E_NOTICE);
$script_folder=str_replace("\\","/",dirname(__FILE__));
$podesavanja_fajl=$script_folder."/backup.cfg";
if (file_exists($script_folder."/backup.rut"))
{
    $rdfp=fopen($script_folder."/backup.rut","rb");
    $unvf_rut=fread($rdfp,filesize($script_folder."/backup.rut"));
    if (file_exists(trim($unvf_rut)))
    {
        $rutdir=strtoupper(substr($unvf_rut,0,1)).substr($unvf_rut,1);
    }
    else
    {
        echo "Ne postoji osnovni direktorijum podesen za backup!\n";
        sleep(60);
    }
}
else
{
    echo "Ne postoje podesavanja za osnovni direktorijum za backup!\n";
    sleep(60);}
fclose($rdfp);
if(!(substr($rutdir, -1)=="/" || substr($rutdir, -1)=="\\"))
{
    $rutdir.="/";
}
chdir($rutdir);

/*chdir(dirname($_SERVER["PHP_SELF"]));
error_reporting(E_ALL ^ E_NOTICE);
$podesavanja_fajl="backup.cfg";
*/
if (version_compare(phpversion(),'4.3.0','<'))
{
    define('STDIN',fopen("php://stdin","r"));
    define('STDOUT',fopen("php://stout","r"));
    define('STDERR',fopen("php://sterr","r"));
    register_shutdown_function( create_function( '' , 'fclose(STDIN); fclose(STDOUT); fclose(STDERR); return true;' ) );
}

class podesavanja
{
    // FTP server:
    var $ftp_server="10.1.1.7";
    // Port na FTP serveru:
    var $ftp_port="21";
    // Username korisnika na FTP serveru:
    var $user_id="backup-user";
    // Lozinka za korisnika FTP-a:
    var $ftp_pass="backup-pass";
    // Direktorijum u koji ce na root-u FTP-a za korisnika biti smesten BACKUP,
    // ako ne postoji, bice napravljen:
    var $ftp_folder="backup";
    // Podesavanja za bazu:
    var $mysql_server="10.1.1.19";
    var $mysql_port="3306";
    var $mysql_database="backup_qatar";
    var $mysql_user="nemanja";
    var $mysql_pass="nemanja7";

    function otpakuj()
    {
        $fp=fopen($GLOBALS['podesavanja_fajl'],"rb");
        $data=fread($fp,filesize($GLOBALS['podesavanja_fajl']));
        fclose($fp);
        return unserialize(~$data);

    }
    function zapakuj()
    {
        $fp=fopen($GLOBALS['podesavanja_fajl'],"wb");
        $data=~serialize($this);
        fwrite($fp,$data,strlen($data));
        fclose($fp);
    }
}
//Ovde dodeljivanja iz confa.php, manipulacije sa podesavanjima:
$conf=new podesavanja();

if (file_exists($podesavanja_fajl) && get_class($conf=podesavanja::otpakuj())=="podesavanja")
{
    if ($argv[1]=="u") // podesavane servera
    {
        echo "Unesi lozinku za user-a $conf->user_id: ";
        while($conf->ftp_pass!=($temp_pass=trim(fgets(STDIN,256))))
        {
            echo "Pogresna lozinka za user-a $conf->user_id, pokusaj ponovo: ";
        }

        echo "Lozinka je OK, novo korisnicko ime: ";
        $conf->user_id=trim(fgets(STDIN,256));
        do
        {
            printf("Unesi lozinku za user-a %s: ",$conf->user_id);
            $conf->ftp_pass=trim(fgets(STDIN,256));
            echo "Ponovi lozinku: ";
            $temp=trim(fgets(STDIN,256));
            $chek1=$conf->ftp_pass!=$temp;
            if ($chek1)
                echo "Lozinke se ne poklapaju! Unesite ih ponovo!\n";
        } while ($chek1);
        $conf->zapakuj();
        echo sprintf("Snimljena podesavanja za user-a %s\n",$conf->user_id);
        sleep(2);
        die();
    }
    else if($argv[1]=="s") //Podesavanje usera ako je vec podesen
    {
        echo "Unesi lozinku za user-a $conf->user_id: ";
        while($conf->ftp_pass!=($temp_pass=trim(fgets(STDIN,256))))
        {
            echo "Pogresna lozinka za user-a $conf->user_id, pokusaj ponovo: ";
        }

        echo "FTP server ($conf->ftp_server): ";
        $tempin=fgets(STDIN,256);
        $conf->ftp_server=($tempin=="\r\n"?$conf->ftp_server:trim($tempin));
        echo "FTP port ($conf->ftp_port): ";
        $tempin=fgets(STDIN,256);
        $conf->ftp_port=($tempin=="\r\n"?$conf->ftp_port:trim($tempin));
        echo "FTP folder ($conf->ftp_folder): ";
        $tempin=fgets(STDIN,256);
        $conf->ftp_folder=($tempin=="\r\n"?$conf->ftp_folder:trim($tempin));
        echo "MySQL server ($conf->mysql_server): ";
        $tempin=fgets(STDIN,256);
        $conf->mysql_server=($tempin=="\r\n"?$conf->mysql_server:trim($tempin));
        echo "MySQL port ($conf->mysql_port): ";
        $tempin=fgets(STDIN,256);
        $conf->mysql_port=($tempin=="\r\n"?$conf->mysql_port:trim($tempin));
        echo "MySQL database ($conf->mysql_database): ";
        $tempin=fgets(STDIN,256);
        $conf->mysql_database=($tempin=="\r\n"?$conf->mysql_database:trim($tempin));
        echo "MySQL user ($conf->mysql_user): ";
        $tempin=fgets(STDIN,256);
        $conf->mysql_user=($tempin=="\r\n"?$conf->mysql_user:trim($tempin));
        echo "MySQL pass ($conf->mysql_pass): ";
        $tempin=fgets(STDIN,256);
        $conf->mysql_pass=($tempin=="\r\n"?$conf->mysql_pass:trim($tempin));
        $conf->zapakuj();
        echo "Podesavanja servera su snimljena\n";
        sleep(2);
        die();
    }
    $ftp_server=$conf->ftp_server;
    $ftp_port=$conf->ftp_port;
    $user_id=$conf->user_id;
    $ftp_pass=$conf->ftp_pass;
    $ftp_folder=$conf->ftp_folder;
    $mysql_server=$conf->mysql_server;
    $mysql_port=$conf->mysql_port;
    $mysql_database=$conf->mysql_database;
    $mysql_user=$conf->mysql_user;
    $mysql_pass=$conf->mysql_pass;
}
else //podesavanje user-a po prvi put
{
    echo "Unesi korisnicko ime: ";
    $conf->user_id=trim(fgets(STDIN,256));
    do
    {
        printf("Unesi lozinku za user-a %s: ",$conf->user_id);
        $conf->ftp_pass=trim(fgets(STDIN,256));
        echo "Ponovi lozinku: ";
        $temp=trim(fgets(STDIN,256));
        $chek=$conf->ftp_pass!=$temp;
        if ($chek)
            echo "Lozinke se ne poklapaju! Unesite ih ponovo!\n";
    } while ($chek);
    $conf->zapakuj();
    echo sprintf("Snimljena podesavanja za user-a %s\n",$conf->user_id);
    sleep(2);
    die();
}


//--------------------------------------------------------------
$ftp_veza=FALSE;
$mysql_veza=FALSE;
$ftp_user=$user_id;

$niz_id=array();
$niz_ime_fajla=array();
$niz_folder=array();
$niz_vreme=array();
$upit_insert="INSERT INTO `$user_id` (ime_fajla,folder,vreme,vreme_backupa) VALUES ";//(1,2,3),(4,5,6)";
$upit_update="";
$upit_zapisnik="INSERT INTO log (poruka,korisnik) VALUES ";

$broj_insert=0;
$broj_update=0;
$broj_ukupno=0;
$broj_zapisa=0;
clearstatcache();
//zamena za SCANDIR F-ju ako ne postoji
if (!function_exists("scandir"))
{
    function scandir($dir = './', $sort = 0) 
    {
        $dir_open = @ opendir($dir);
        if (! $dir_open)
            return false;
        while (($dir_content = readdir($dir_open)) !== false)
            $files[] = $dir_content;
        if ($sort == 1)
            rsort($files, SORT_STRING);
        else
            sort($files, SORT_STRING);
        return $files;
    }
}



function otvori_ftp()
{
    zapisnik("Otvaranje FTP-a");
    $ftp_server=&$GLOBALS['ftp_server'];
    $ftp_veza=&$GLOBALS['ftp_veza'];
    $ftp_user=&$GLOBALS['ftp_user'];
    $ftp_pass=&$GLOBALS['ftp_pass'];
    $ftp_folder=&$GLOBALS['ftp_folder'];
    $user_id=&$GLOBALS['user_id'];
    if (!($ftp_veza = ftp_connect($ftp_server,$GLOBALS['ftp_port'])))
        die("Nije uspelo kacenje na FTP: $ftp_server");
    @ftp_login($ftp_veza, $ftp_user,$ftp_pass) or die("Nije uspelo logovanje na FTP: User: $ftp_user, Pass: $ftp_pass\n");
    ftp_pasv($ftp_veza,TRUE);
    @ftp_mkdir($ftp_veza,$ftp_folder);
//  @ftp_mkdir($ftp_veza,$ftp_folder."/".$user_id);
}

function otvaranje_baze()
{
    $GLOBALS['mysql_veza'][email protected]_connect($GLOBALS['mysql_server'],$GLOBALS['mysql_user'],$GLOBALS['mysql_pass']) or die("Nije uspelo kacenje na bazu: ".sprintf("Server: %s, User: %s, Pass: %s\n",$GLOBALS['mysql_server'],$GLOBALS['mysql_user'],$GLOBALS['mysql_pass'])."MySQL greska: ".mysql_error()."\n");
    mysql_select_db($GLOBALS['mysql_database'],$GLOBALS['mysql_veza']) or die("Nije uspelo selektovanje baze: ".$GLOBALS['mysql_database']."\n");
    zapisnik("----->Otvaranje baze");
}

function zatvaranje_baze()
{
    zapisnik("----->Zatvaranje baze");
    izvrsi_upite();
    mysql_close($GLOBALS['mysql_veza']);
}

function postoji_tabela($table)
{
   $exists = @mysql_query('SHOW TABLES FROM `'.$GLOBALS['mysql_database'].'` LIKE \''.$table.'\'', $GLOBALS['mysql_veza']);
   
   return @mysql_num_rows($exists) == 1;
}

function zatvori_ftp()
{
    ftp_close($GLOBALS['ftp_veza']);
    zapisnik("Zatvaranje FTP-a");
}

function pokupi_listu()
{
    zapisnik("Kupljenje liste");
    if (!postoji_tabela($GLOBALS['user_id']))
    {
       mysql_query("CREATE TABLE `".$GLOBALS['user_id']."` (
                           `id` int(10) unsigned NOT NULL auto_increment,
                           `ime_fajla` text NOT NULL,
                           `folder` text NOT NULL,
                           `vreme` timestamp NOT NULL default '0000-00-00 00:00:00',
                           `vreme_backupa` timestamp NOT NULL default '0000-00-00 00:00:00',
                           PRIMARY KEY  (`id`)
                         ) ENGINE=InnoDB DEFAULT CHARSET=utf8",$GLOBALS['mysql_veza']);
       echo "Otvaranje novog korisnika: ".$GLOBALS['user_id']."\n";
       zapisnik("Nov korisnik");
       return 0;
    }
    else
    {
        $temp_rset=mysql_query("SELECT * FROM `".$GLOBALS['user_id']."`;",$GLOBALS['mysql_veza']);
//        echo "SELECT * FROM `".$GLOBALS['user_id']."`;";
        if (mysql_num_rows($temp_rset)==0)
           return 0;
        else
        {
            while($temp_red=mysql_fetch_assoc($temp_rset))
            {
                array_push($GLOBALS['niz_id'],$temp_red['id']);
                array_push($GLOBALS['niz_ime_fajla'],$temp_red['ime_fajla']);
                array_push($GLOBALS['niz_folder'],$temp_red['folder']);
                array_push($GLOBALS['niz_vreme'],$temp_red['vreme']);
            }
        }

    }
}

function otvori_zapisnik()
{
    if (!postoji_tabela("log"))
    {
        @mysql_query("CREATE TABLE `log` (
                            `id` bigint(20) NOT NULL auto_increment,
                            `poruka` varchar(255) NOT NULL default '',
                            `korisnik` varchar(50) NOT NULL default '',
                            `vreme` timestamp NULL default CURRENT_TIMESTAMP,
                            PRIMARY KEY  (`id`)
                            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;",$GLOBALS['mysql_veza']);
    }
    @mysql_query("DELETE FROM log WHERE vreme<DATE_SUB(NOW(),INTERVAL 30 DAY);",$GLOBALS['mysql_veza']);
}

function zapisnik($sta)
{
    if ($GLOBALS['broj_zapisa']>0)
       $GLOBALS['upit_zapisnik'].=",";
    $GLOBALS['upit_zapisnik'].=sprintf("(\"%s\",\"%s\")",$sta,$GLOBALS['user_id']);
    $GLOBALS['broj_zapisa']++;
}

function status_fajla($foldername,$fajlname)
{
/*
0-ne postoji fajl u bazi
1-u bazi je starija verzija
2-u bazi je ista ili novija verzija
*/
    $i_ime=array();
    $i_ime=array_keys($GLOBALS['niz_ime_fajla'],$fajlname);
    if (count($i_ime)==0)
    {
        return 0;
    }
    else
    {
        foreach($i_ime as $temp_index)
        {
            if ($GLOBALS['niz_folder'][$temp_index]==$foldername)
            {
                //echo " ".$GLOBALS['niz_vreme'][$temp_index]." ".date("Y-m-d H:i:s",filemtime($foldername.$fajlname))." ";

                if ($GLOBALS['niz_vreme'][$temp_index]>=date("Y-m-d H:i:s",filemtime($foldername.$fajlname)))
                {
                    return 2;
                }
                else
                {
                    return 1;
                }
            }
            
        }
        return 0;
    }

    $vreme=date("YmdHis",filemtime($foldername.$fajlname));


}

function izvrsi_upite()
{
    mysql_query($GLOBALS['upit_insert'],$GLOBALS['mysql_veza']);
    mysql_query($GLOBALS['upit_zapisnik'],$GLOBALS['mysql_veza']);

}

function ftp_recur($putanja=".")
{
    if($putanja==".")
        $temp_p="";
    else
        $temp_p=$putanja."/";

    //Kreiranje ftp direktorijuma:
    $niska_dirova=explode("/",$GLOBALS['ftp_folder']."/".strtoupper(substr($GLOBALS['rutdir'],0,1))."/".str_replace("\\","/",substr($GLOBALS['rutdir'],1)).$temp_p);
    $tftd="";
    for($jjb=0;$jjb<count($niska_dirova);$jjb++)
    {
            if ($jjb==count($niska_dirova)-1)
                $tftd.=$niska_dirova[$jjb];
            else
                $tftd.=$niska_dirova[$jjb]."/";
            @ftp_mkdir($GLOBALS['ftp_veza'],$tftd);
            //echo "Kreiranje direktorijuma: ".$tftd."\n";
    }

    $niz_foldera_local=scandir($putanja);
    for ($brojac=0;$brojac<count($niz_foldera_local);$brojac++)
    {
        if($niz_foldera_local[$brojac]=="." || $niz_foldera_local[$brojac]==".."/* || (($niz_foldera_local[$brojac]=="backup.php" || $niz_foldera_local[$brojac]=="info.txt" || $niz_foldera_local[$brojac]=="conf.php")&& $temp_p=="")*/)
        {
            //Nista
        }
        else
        {
            if(is_file($temp_p.$niz_foldera_local[$brojac]))
            {
                $GLOBALS['broj_ukupno']++;
                $status=status_fajla(str_replace("\\","/",$GLOBALS['rutdir']).$temp_p,$niz_foldera_local[$brojac]);
                $lokalna_putanja=str_replace("\\","/",$GLOBALS['rutdir']).$temp_p.$niz_foldera_local[$brojac];
 
               $serverska_putanja=$GLOBALS['ftp_folder'].strtoupper(substr($GLOBALS['rutdir'],0,1)).substr($GLOBALS['rutdir'],1).$temp_p.(substr($niz_foldera_local[$brojac],0,1)=="."?ltrim($niz_foldera_local[$brojac],"."):$niz_foldera_local[$brojac]);

/*        echo "******".$serverska_putanja."********";   */

 /*               $serverska_putanja=$GLOBALS['ftp_folder']."/".strtoupper(substr($GLOBALS['rutdir'],0,1))."/".str_replace("\\","/",substr($GLOBALS['rutdir'],3)).$temp_p.(substr($niz_foldera_local[$brojac],0,1)=="."?ltrim($niz_foldera_local[$brojac],"."):$niz_foldera_local[$brojac]);*/

                if ($status==0)
                {
                    if ($GLOBALS['broj_insert']>0)
                        $GLOBALS['upit_insert'].=", ";
                    $fajl=fopen($lokalna_putanja,"rb");
                    if([email protected]_fput($GLOBALS['ftp_veza'], $serverska_putanja, $fajl, FTP_BINARY))
                    {
                        echo "Neuspelo kopiranje: FTP: $serverska_putanja Local: $lokalna_putanja\n";
                    }
                    fclose($fajl);
                    $GLOBALS['upit_insert'].=sprintf("(\"%s\",\"%s\",\"%s\",NOW())",quotemeta($niz_foldera_local[$brojac]),str_replace("\\","/",$GLOBALS['rutdir']).$temp_p,date("Y-m-d H:i:s",filemtime($temp_p.$niz_foldera_local[$brojac])));
                    echo "Kopiranje fajla: ".$lokalna_putanja."\n";
                    zapisnik("Kopiranje fajla: ".$lokalna_putanja);
                    $GLOBALS['broj_insert']++;
                }
                else if($status==1)
                {
                    $fajl=fopen($lokalna_putanja,"rb");
                    if([email protected]_fput($GLOBALS['ftp_veza'], $serverska_putanja, $fajl, FTP_BINARY))
                    {
                        echo "Neuspelo kopiranje: FTP: $serverska_putanja Local: $lokalna_putanja\n";
                    }
                    fclose($fajl);
                    mysql_query(sprintf("UPDATE `%s` SET vreme=\"%s\",vreme_backupa=NOW() WHERE ime_fajla=\"%s\" AND folder=\"%s\"; ",$GLOBALS['user_id'],date("Y-m-d H:i:s", filemtime($temp_p.$niz_foldera_local[$brojac])),$niz_foldera_local[$brojac],str_replace("\\","/",$GLOBALS['rutdir']).$temp_p),$GLOBALS['mysql_veza']);
                    echo "Update-ovanje fajla: ".$lokalna_putanja."\n";
                    zapisnik("Update-ovanje fajla: ".$lokalna_putanja);
                    $GLOBALS['broj_update']++;
                }
                else
                {
                    echo "Fajl je up-to-date: ".$lokalna_putanja."\n";
                }



            }
            else
            {
                //$tftd=$GLOBALS['ftp_folder']."/".strtoupper(substr($GLOBALS['rutdir'],0,1))."/".str_replace("\\","/",substr($GLOBALS['rutdir'],3)).$temp_p.$niz_foldera_local[$brojac];
                /*$niska_dirova=explode("/",$tftd);
                $tftd="";
                for($jjb=0;$jjb<count($niska_dirova);$jjb++)
                {
                    if ($jjb==count($niska_dirova)-1)
                        $tftd.=$niska_dirova[$jjb];
                    else
                        $tftd.=$niska_dirova[$jjb]."/";
                    @ftp_mkdir($GLOBALS['ftp_veza'],$tftd);
                    echo "Kreiranje direktorijuma: ".$tftd."\n";
                }*/
                ftp_recur($temp_p.$niz_foldera_local[$brojac]);
            }

        }
    }
}

otvaranje_baze();
otvori_zapisnik();
otvori_ftp();
pokupi_listu();
if(file_exists($script_folder."/backup.lst"))
{//Citenje i izvrsavanje podesavanja
    ftp_recur();
    $lst_fp=fopen($script_folder."/backup.lst","rb");
    while($lst_buff=fgets($lst_fp,4096))
    {
        if(trim($lst_buff)=="")
        {
            //Nista
        }
        else
        {
            $lst_niz[]=str_replace("\\","/",trim($lst_buff));
        }
    }
    fclose($lst_fp);
//    print_r($lst_niz);
    if (count($lst_niz)>0)
    {
        foreach($lst_niz as $lst_dir)
        {
            if(file_exists($lst_dir))
            {
                $rutdir=strtoupper(substr($lst_dir,0,1)).substr($lst_dir,1);
                if(!(substr($rutdir, -1)=="/" || substr($rutdir, -1)=="\\"))
                {
                    $rutdir.="/";
                }
                echo "Backup dodatnog direktorijuma: ".str_replace("\\","/",$rutdir)."\n";
                @ftp_mkdir($ftp_veza,$ftp_folder."/".strtoupper(substr($rutdir,0,1)));
                chdir($rutdir);
                ftp_recur();
            }
            else
            {
                echo "Dodatni direktorijum za backup ne postoji: ".$lst_dir."!\n";
            }
        }
    }
}
else
{//Bez dodatnih direktorijuma
    ftp_recur();
}

zatvori_ftp();
zapisnik("Ukupan broj fajlova: $broj_ukupno, kopiranih: $broj_insert, update-ovanih: $broj_update");
zatvaranje_baze();
echo "Ukupan broj fajlova: $broj_ukupno, kopiranih: $broj_insert, update-ovanih: $broj_update\n";
sleep(2);
?>


- backup.rut
Code:
/root/Desktop/sled/backup_dir/


Iskopirao sam ih u dir /root/Desktop/sled/bckp (ne verujem da je lokacija bitna ali eto..) i odatle ih pokrecem :

Code:
g1020:~/Desktop/sled/bckp # php backup.php
X-Powered-By: PHP/5.1.5
Content-type: text/html

<br />
<b>Warning</b>:  chdir() [<a href='function.chdir'>function.chdir</a>]: No such file or directory (errno 2) in <b>/root/Desktop/sled/bckp/backup.php</b> on line <b>30</b><br />
Unesi korisnicko ime: <br />
<b>Warning</b>:  fgets(): supplied argument is not a valid stream resource in <b>/root/Desktop/sled/bckp/backup.php</b> on line <b>161</b><br />
Unesi lozinku za user-a : <br />
<b>Warning</b>:  fgets(): supplied argument is not a valid stream resource in <b>/root/Desktop/sled/bckp/backup.php</b> on line <b>165</b><br />
Ponovi lozinku: <br />
<b>Warning</b>:  fgets(): supplied argument is not a valid stream resource in <b>/root/Desktop/sled/bckp/backup.php</b> on line <b>167</b><br />
Snimljena podesavanja za user-a
g1020:~/Desktop/sled/bckp #


vidim da je problem sa (STDIN,256), ali posto sam delove koda vadio iz raznih modula nisam propisno upoznat sa STDIN konceptom. moze li mi iko reci koji je ovde tacno problem i kako da ga resim?

unapred hvala i pozdrav.

---- nasa online podrska je trenutno offline ----

 
Odgovor na temu

radusan
Srbija

Član broj: 98817
Poruke: 23
*.dynamic.sbb.co.yu.



Profil

icon Re: fgets(): supplied argument is not a valid stream resource - zasto?24.10.2006. u 08:05 - pre 181 meseci
brate slatki, dal mislis da ce neko da cita ovoliki kod ??
 
Odgovor na temu

[es] :: PHP :: fgets(): supplied argument is not a valid stream resource - zasto?

[ Pregleda: 2154 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.