Changeset 3394
- Timestamp:
- 10/21/10 15:52:45 (14 years ago)
- Location:
- branches/2.2
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php
r3392 r3394 52 52 function open_mbox($folder = False,$force_die=true) 53 53 { 54 $folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 54 55 if (is_resource($this->mbox)) 55 return $this->mbox; 56 $folder = mb_convert_encoding($folder, "UTF7-IMAP","ISO_8859-1"); 57 if($force_die) 58 $this->mbox = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 59 else 60 $this->mbox = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password); 61 return $this->mbox; 56 { 57 if ($force_die) 58 { 59 @imap_reopen($this->mbox, "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 60 } 61 else 62 { 63 @imap_reopen($this->mbox, "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder); 64 } 65 } 66 else 67 { 68 if($force_die) 69 { 70 $this->mbox = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password) or die(serialize(array('imap_error' => $this->parse_error(imap_last_error())))); 71 } 72 else 73 { 74 $this->mbox = @imap_open("{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder, $this->username, $this->password); 75 } 76 77 } 78 return $this->mbox; 62 79 } 63 80 … … 493 510 if(!$this->mbox || !is_resource($this->mbox)) 494 511 $this->mbox = $this->open_mbox($msg_folder); 495 496 512 $header = $this->get_header($msg_number); 497 513 if (!$header) { … … 753 769 $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 754 770 $return['reply_toaddress'] = $header->reply_toaddress; 771 772 if($return_get_body['body']=='isSigned'){ 773 imap_close($this->mbox); 774 $new_mail = $this->show_decript($return_get_body,$dec = 1); 775 //$new_mail['signature'] = $return_get_body['signature']; 776 $return['body'] = $new_mail['body']; 777 $return['attachments'] = $new_mail['attachments']; 778 $return['thumbs'] = $new_mail['thumbs']; 779 $return['folder'] = $return['msg_folder']; 780 $return['original_ID'] = $return['msg_number']; 781 $return['msg_folder'] = 'INBOX'.$this->imap_delimiter.'decifradas'; 782 $return['msg_number'] = $new_mail['msg_no']; 783 //$return['signature'] = $return_get_body['signature']; 784 } 755 785 return $return; 756 786 } … … 817 847 if(!$msg->structure[$msg_number]->parts) //Simple message, only 1 piece 818 848 { 819 if( strtolower($msg->structure[$msg_number]->subtype) == 'x-pkcs7-mime'){849 if((strtolower($msg->structure[$msg_number]->subtype) == 'x-pkcs7-mime') && (count($return['signature']) == 0 ) ){ 820 850 $return['body']='isCripted'; 821 851 return $return; … … 824 854 $attachment = array(); //No attachments 825 855 826 if(strtolower($msg->structure[$msg_number]->subtype) == 'x-pkcs7-mime'){ 827 $return['body']='isCripted'; 828 return $return; 856 if (strtolower($msg->structure[$msg_number]->subtype) == "x-pkcs7-mime") 857 { 858 $return['body']='isSigned'; 859 $headers = imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number)); 860 $header_body_array = explode('MIME-Version: 1.0', $headers); 861 $show_pkcs7 = $header_body_array[0] . 'MIME-Version: 1.0' . chr(0x0D) .chr(0x0A). $return['signature'][0]; 862 $return['source']=$show_pkcs7; 863 array_shift($return['signature']); 864 $return['signature']; 865 //$return['signature'] = $this->get_signature($msg,$msg_number,$msg_folder); 866 imap_close($this->mbox); 867 return $return; 829 868 } 830 869 … … 860 899 $has_multipart = true; 861 900 $this->has_cid = false; 862 901 array_shift($return['signature']); 863 902 if (strtolower($msg->structure[$msg_number]->subtype) == "related") 864 903 $this->has_cid = true; … … 1307 1346 if(strtolower($msg->encoding[$msg_number][$index]) == 'base64') 1308 1347 { 1309 if ($ file_type == 'application/x-pkcs7-signature' || $file_type == 'application/pkcs7-signature')1348 if ($temp['ContentType'] == 'signature') 1310 1349 { 1311 1312 1350 if(!$this->mbox || !is_resource($this->mbox)) 1351 $this->mbox = $this->open_mbox($msg_folder); 1313 1352 1314 1353 $header = @imap_headerinfo($this->mbox, imap_msgno($this->mbox, $msg_number), 80, 255); … … 1319 1358 $certificado = new certificadoB(); 1320 1359 $validade = $certificado->verificar($imap_msg); 1321 1360 $sign[] = $certificado->msg_sem_assinatura; 1322 1361 if ($certificado->apresentado) 1323 1362 { … … 1584 1623 */ 1585 1624 function getMessageType($msg_number, $headers = false){ 1586 1625 include_once(dirname( __FILE__ ) ."/../../security/classes/CertificadoB.php"); 1587 1626 $contentType = "normal"; 1588 1627 if (!$headers){ 1589 1628 $headers = imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number)); 1590 1629 } 1591 //$header2 = imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number));1592 if (preg_match("/ Content-Type:.*pkcs7-signature/i", $headers) == 1){1630 1631 if (preg_match("/pkcs7-signature/i", $headers) == 1){ 1593 1632 $contentType = "signature"; 1594 } else if (preg_match("/ Content-Type:.*x-pkcs7-mime/i", $headers) == 1){1595 $contentType = "cipher";1633 } else if (preg_match("/pkcs7-mime/i", $headers) == 1){ 1634 $contentType = testa_p7m( imap_body($this->mbox, imap_msgno($this->mbox, $msg_number)) ); 1596 1635 } 1597 1636 … … 3677 3716 } 3678 3717 3679 function show_decript($params){ 3718 function show_decript($params,$dec=0){ 3719 3680 3720 $source = $params['source']; 3681 3721 //error_log("source: $source\nversao: " . PHP_VERSION, 3, '/tmp/teste.log'); 3682 $source = str_replace(" ", "+", $source,$i); 3683 3684 if (version_compare(PHP_VERSION, '5.2.0', '>=')){ 3685 if(!$source = base64_decode($source,true)) 3686 return "error ".$source."Espaços ".$i; 3687 3722 3723 if ($dec == 0) 3724 { 3725 $source = str_replace(" ", "+", $source,$i); 3726 if (version_compare(PHP_VERSION, '5.2.0', '>=')){ 3727 if(!$source = base64_decode($source,true)) 3728 return "error ".$source."Espaços ".$i; 3729 3730 } 3731 else { 3732 if(!$source = base64_decode($source)) 3733 return "error ".$source."Espaços ".$i; 3734 } 3688 3735 } 3689 else {3690 if(!$source = base64_decode($source))3691 return "error ".$source."Espaços ".$i;3692 }3693 3694 3736 $insert = $this->insert_email($source,'INBOX'.$this->imap_delimiter.'decifradas'); 3695 3737 -
branches/2.2/expressoMail1_2/js/draw_api.js
r3393 r3394 1166 1166 img_next_msg.style.cursor = 'pointer'; 1167 1167 1168 var folder_id = 0; 1169 folder_id = info_msg.original_ID ? info_msg.original_ID: info_msg.msg_number; 1170 var folder = document.getElementById(folder_id); 1168 var folder_id = ID.match(/\d+/)[0]; 1169 var folder; 1170 1171 //Correção para fazer funcionar e-mails assinados no formato encapsulado. 1172 // folder_id = info_msg.original_ID ? info_msg.original_ID: info_msg.msg_number; 1173 if ((folder = document.getElementById(info_msg.original_ID)) == null) 1174 //if ((folder = document.getElementById(info_msg.msg_number)) == null) 1175 folder = document.getElementById(info_msg.msg_number); 1171 1176 if (!folder){ 1172 1177 delete_border(ID); -
branches/2.2/security/ExpressoCert/src/br/gov/serpro/cert/DigitalCertificate.java
r3232 r3394 55 55 import br.gov.serpro.ui.DialogBuilder; 56 56 import br.gov.serpro.util.Base64Utils; 57 import com.sun.mail.util.BASE64DecoderStream;58 import java.io.InputStreamReader;59 57 import java.io.OutputStream; 60 58 import java.io.OutputStreamWriter; 61 import java.io.PipedInputStream;62 import java.io.PipedOutputStream;63 59 import java.security.AlgorithmParameters; 60 import java.util.regex.Matcher; 61 import java.util.regex.Pattern; 64 62 import javax.activation.CommandMap; 65 63 import javax.activation.MailcapCommandMap; 66 import javax.mail.BodyPart;67 64 import javax.mail.internet.ContentType; 68 65 import javax.mail.internet.MimeUtility; 69 66 import javax.mail.internet.PreencodedMimeBodyPart; 70 import org.bouncycastle.asn1.ASN1InputStream;71 import org.bouncycastle.asn1.DERObject;72 67 import org.bouncycastle.cms.CMSException; 73 68 import org.bouncycastle.cms.RecipientId; … … 623 618 } 624 619 620 // Corrige problemas com e-mails vindos do Outlook 621 // Corrige linhas que são terminadas por \n (\x0A) e deveriam ser terminadas por \r\n (\x0D\x0A) 622 Pattern p = Pattern.compile("(?<!\\r)\\n"); 623 Matcher matcher = p.matcher(retorno); 624 retorno = matcher.replaceAll(CRLF); 625 625 626 return retorno; 626 627 } else { -
branches/2.2/security/ExpressoCert/src/br/gov/serpro/setup/Setup.java
r3232 r3394 1 1 package br.gov.serpro.setup; 2 2 3 import java.applet.Applet; 3 4 import java.util.HashMap; … … 8 9 import java.util.ResourceBundle; 9 10 10 11 11 public class Setup { 12 12 13 /** 14 * 15 */ 16 private static final long serialVersionUID = -8164125429139606589L; 17 18 private Properties parameters; 19 private Properties preferences; 13 /** 14 * 15 */ 16 private static final long serialVersionUID = -8164125429139606589L; 17 private Properties parameters; 18 private Properties preferences; 20 19 private Map<String, ResourceBundle> langResources; 21 20 Locale currentLocale; 22 private Applet currentApplet; 23 21 private Applet currentApplet; 24 22 private static final String PREFERENCES_PATH; 25 23 private static final String EPASS_2000; … … 27 25 static { 28 26 29 //PrintStream ps = new PrintStream(System.out); 30 //System.getProperties().list(System.out); 31 32 if (System.getProperty("os.name").equalsIgnoreCase("linux")){ 33 EPASS_2000 = "/usr/lib/libepsng_p11.so"; 34 } 35 else { 36 EPASS_2000 = System.getenv("SystemRoot").replaceAll("\\\\", "/")+"/system32/ngp11v211.dll"; 37 //EPASS_2000 = System.getenv("ProgramFiles")+"\\Gemplus\\GemSafe Libraries\\BIN\\gclib.dll"; 38 } 27 if (System.getProperty("os.name").equalsIgnoreCase("linux")) { 28 EPASS_2000 = "/usr/lib/libepsng_p11.so"; 29 } else { 30 EPASS_2000 = System.getenv("SystemRoot").replaceAll("\\\\", "/") + "/system32/ngp11v211.dll"; 31 } 39 32 40 33 41 34 PREFERENCES_PATH = "TESTE"; 42 35 43 36 } 44 37 45 public Setup(Applet applet){38 public Setup(Applet applet) { 46 39 47 48 49 40 this.currentApplet = applet; 41 parameters = new Properties(); 42 //preferences = Do arquivo apontado por preferences_path 50 43 51 52 for (String[] parameter: getParameterInfo()){53 54 44 // Pega os parâmetros da applet 45 for (String[] parameter : getParameterInfo()) { 46 String parameterName = parameter[0]; 47 String parameterValue; 55 48 56 if (this.currentApplet.isActive()){ 57 parameterValue = this.currentApplet.getParameter(parameterName); 58 } 59 else { 60 parameterValue = null; 61 } 49 parameterValue = this.currentApplet.getParameter(parameterName); 62 50 63 //System.out.println("Parameter a ser adicionado - " + parameterName + "= " +parameterValue);51 System.out.println("parameter: "+parameterName+" value: "+parameterValue); 64 52 65 if (parameterValue != null && !parameterValue.equals("")){66 67 if (parameterName.equalsIgnoreCase("locale")) {53 if (parameterValue != null && !parameterValue.equals("")) { 54 parameters.setProperty(parameterName.toLowerCase(), parameterValue); 55 if (parameterName.equalsIgnoreCase("locale")) { 68 56 System.out.println("Locale recebido."); 69 57 } 70 } 71 else { 58 } else { 72 59 //Defaults 73 if (parameterName.equalsIgnoreCase("debug")) {60 if (parameterName.equalsIgnoreCase("debug")) { 74 61 parameters.setProperty(parameterName.toLowerCase(), "false"); 75 62 } 76 if (parameterName.equalsIgnoreCase("token")) {77 parameters.setProperty(parameterName.toLowerCase(), "Epass2000;" +EPASS_2000);63 if (parameterName.equalsIgnoreCase("token")) { 64 parameters.setProperty(parameterName.toLowerCase(), "Epass2000;" + EPASS_2000); 78 65 } 79 if (parameterName.equalsIgnoreCase("locale")) {66 if (parameterName.equalsIgnoreCase("locale")) { 80 67 System.out.println("Locale não recebido, definindo valor default."); 81 68 parameters.setProperty(parameterName.toLowerCase(), "pt_BR"); 82 69 } 83 70 } 84 71 } 85 72 86 //TODO: Pegaas preferências do arquivo de preferências se encontrado;73 //TODO: Pegar as preferências do arquivo de preferências se encontrado; 87 74 88 75 // Lang Resources … … 91 78 langResources.put("ExpressoCertMessages", ResourceBundle.getBundle("ExpressoCertMessages", currentLocale)); 92 79 93 80 } 94 81 95 public String[][] getParameterInfo(){82 public String[][] getParameterInfo() { 96 83 97 98 84 String[][] info = { 85 {"debug", "boolean", "Habilita mensagens de debug"}, 99 86 {"token", "string", "Lista de tokens suportados. Formato: nome1;caminho1,nome2;caminho2"}, 100 87 {"locale", "string", "Locale do sistema"} 101 88 }; 102 89 103 104 90 return info; 91 } 105 92 106 public String[][] getPreferencesInfo(){93 public String[][] getPreferencesInfo() { 107 94 108 109 110 95 String[][] info = { 96 {"preferedToken", "string", "Token preferencial do usuário. Formato: nome;caminho"} 97 }; 111 98 112 99 return info; 113 100 114 101 } 115 102 116 public String getParameter(String key){117 118 103 public String getParameter(String key) { 104 return parameters.getProperty(key); 105 } 119 106 120 public String getPreference(String key){121 122 107 public String getPreference(String key) { 108 return getPreference(key); 109 } 123 110 124 125 public void setPreference(String key, String value){111 //TODO: implementar PreferenceNotRegisteredException 112 public void setPreference(String key, String value) { 126 113 127 128 while (!exists){129 for (String[] preference: getPreferencesInfo()){130 if (key.equalsIgnoreCase(preference[1])){131 132 133 134 135 114 boolean exists = false; 115 while (!exists) { 116 for (String[] preference : getPreferencesInfo()) { 117 if (key.equalsIgnoreCase(preference[1])) { 118 exists = true; 119 preferences.setProperty(key, value); 120 } 121 } 122 } 136 123 137 if (!exists){124 if (!exists) { 138 125 // throws PreferenceNotRegisteredException(); 139 126 System.out.println("Preferência não existe!"); 140 141 127 } 128 } 142 129 143 Locale buildLocale(String localeCode) {130 Locale buildLocale(String localeCode) { 144 131 145 132 String[] localeItems = localeCode.split("_"); 146 133 Locale locale; 147 148 switch (localeItems.length){ 149 case 1: locale = new Locale(localeItems[0]); 150 break; 151 case 2: locale = new Locale(localeItems[0], localeItems[1]); 152 break; 153 case 3: locale = new Locale(localeItems[0], localeItems[1], localeItems[2]); 154 break; 155 default: locale = new Locale("pt", "BR"); 156 System.out.println("Locale code error, setting default locale: " + locale.toString()); 134 135 switch (localeItems.length) { 136 case 1: 137 locale = new Locale(localeItems[0]); 138 break; 139 case 2: 140 locale = new Locale(localeItems[0], localeItems[1]); 141 break; 142 case 3: 143 locale = new Locale(localeItems[0], localeItems[1], localeItems[2]); 144 break; 145 default: 146 locale = new Locale("pt", "BR"); 147 System.out.println("Locale code error, setting default locale: " + locale.toString()); 157 148 } 158 149 … … 160 151 } 161 152 162 public void addLanguageResource(String langResource) {163 System.out.println("registrando recu sro de linguagem " + langResource);153 public void addLanguageResource(String langResource) { 154 System.out.println("registrando recurso de linguagem " + langResource); 164 155 langResources.put(langResource, ResourceBundle.getBundle(langResource, currentLocale)); 165 156 } 166 157 167 public String getLang(String langResource, String message) {158 public String getLang(String langResource, String message) { 168 159 169 160 ResourceBundle resource = langResources.get(langResource); … … 172 163 try { 173 164 i18nText = resource.getString(message); 174 } 175 catch (MissingResourceException e){ 165 } catch (MissingResourceException e) { 176 166 e.printStackTrace(); 177 167 } … … 182 172 } 183 173 184 // TODO: Not Implemented Yet 185 public boolean savePreferences(){ 186 return false; 187 } 188 174 // TODO: Not Implemented Yet 175 public boolean savePreferences() { 176 return false; 177 } 189 178 }
Note: See TracChangeset
for help on using the changeset viewer.