Ticket #615: regras2.diff

File regras2.diff, 1.8 KB (added by fpcorrea, 15 years ago)

Nova solução para o problema

  • class.ScriptS.inc.php

     
    176176                 
    177177                // Escreve a nova regra; 
    178178                $this->reply = $this->SieveS->getscript(); 
    179                  
     179                /* 
    180180                if($this->reply){ 
    181181                        $this->errstr = $this->SieveS->deletescript($this->scriptfile);          
    182182                } 
     183                */ 
    183184 
    184185                //Escreve a(s) nova(s) regra(s); 
    185                 $this->errstr = $this->SieveS->putscript($this->scriptfile,$this->write_rule()); 
     186                $newrule = $this->write_rule(); 
     187                if (strlen($newrule) > 0) 
     188                        $this->errstr = $this->SieveS->putscript($this->scriptfile,$newrule); 
     189                else 
     190                        return "Invalid rule\n" . $this->teste; 
    186191                 
    187192                //Ativa o script; 
    188193                $this->errstr = $this->SieveS->activatescript($this->scriptfile); 
     
    202207      $special_char = false; 
    203208          for ( $i = 0; $i < strlen($input); $i++ ) 
    204209          { 
    205               if ( preg_match('/[ÁáÉéÍíÓóÚúÀàÈèÌìÒòÙùüÇçÃãÕõÂâÊêÔô®©§ªºÐ¹²³°¢¿Æ£µøæß«»Ø÷±¬]/', $input[$i]) ) 
     210                  //if ( preg_match('/[^a-zA-z0-9.@~_+=&\'*^\"-]/', $input[$i]) ) 
     211                if ( preg_match('/[^a-z0-9.@~_+=&\'*^"-]/i', $input[$i]) ) 
    206212              { 
    207213                  $special_char = true; 
    208                   $input = preg_replace('/'.$input[$i].'/', '=' . bin2hex($input[$i]), $input); 
     214                  $input = preg_replace('/\\'.$input[$i].'/', '=' . bin2hex($input[$i]), $input); 
    209215              } 
    210216          }    
    211217       
     
    226232       return($input); 
    227233    } 
    228234 
    229         // Grava a nova regra; 
     235        // build the rule 
    230236        function write_rule(){ 
    231237 
    232238                // Variaveis; 
     
    345351                    } 
    346352          
    347353                } 
    348           
    349                 // Ações 
     354                // Don't write half rule! 
     355                if (strlen($newruletext) == 0)  
     356                        return false; 
     357                // Actions 
    350358                if (!$rule['unconditional']) $newruletext .= ") {\n\t"; 
    351359         
    352360                if (preg_match("/folder/i",$rule['action']))