Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
- From: Olivier Salaun - CRU <adresse@cachée>
- To: adresse@cachée
- Subject: Re: [sympa-fr] Re: [sympa-fr] urlize
- Date: Mon, 15 Mar 2004 14:00:35 +0100
Nous venons de changer cette fonctionnalité pour que la partie MIME remplaçant un attachement "urlizé" soit définie par un template (urlized_part.tpl). Le défaut étant une partie text/plain. La taille minimum (en octets) des parties à "urlizer" est maintenant définie dans un nouveau paramètre de sympa.conf (urlize_min_size).
Voila qui devrait rendre cette fonctionnalité utilisable...
Pour ceux qui voudraient tester, un patch ci-joint.
Olivier Salaun - CRU a écrit :
Sympa gère le mode de réception URLIZE en définissant des parties MIME message/external-body (définies dans le RFC1873).
Ce content-type permet au client de messagerie de rendre transparent pour l'utilisateur le fait que le document attaché est distant.
On nous a déja signalé que ce content-type n'est pas reconnu par Outlook et il ne semble pas reconnu par les versions récente de Mozilla (je viens de tester). Il est peut-être envisageable de modifier cette fonctionnalité pour qu'elle ajoute des parties MIME plus facilement interprétables par les navigateurs (text/plain) ou lieu des parties message/external-body...
[...]
--
Olivier Salaun
Comite Reseau des Universites
? src/aliaswrapper
? src/bouncequeue
? src/queue
? src/virtualwrapper
Index: src/Conf.pm
===================================================================
RCS file: /home/sympa/cvsroot/sympa/src/Conf.pm,v
retrieving revision 1.82
diff -u -r1.82 Conf.pm
--- src/Conf.pm 30 Jan 2004 13:57:11 -0000 1.82
+++ src/Conf.pm 15 Mar 2004 12:48:59 -0000
@@ -54,7 +54,7 @@
antivirus_path antivirus_args antivirus_notify
anonymous_header_fields
dark_color light_color text_color bg_color error_color
selected_color shaded_color
ldap_export_name ldap_export_host ldap_export_suffix
ldap_export_password
- ldap_export_dnmanager ldap_export_connection_timeout
+ ldap_export_dnmanager ldap_export_connection_timeout
urlize_min_size
list_check_smtp list_check_suffixes spam_protection
web_archive_spam_protection soap_url
);
@@ -172,7 +172,8 @@
'bounce_delay' => 0,
'default_bounce_level1_rate' => 45,
'default_bounce_level2_rate' => 75,
- 'soap_url' => ''
+ 'soap_url' => '',
+ 'urlize_min_size' => 10240 ## 10Kb
);
my $wwsconf;
Index: src/List.pm
===================================================================
RCS file: /home/sympa/cvsroot/sympa/src/List.pm,v
retrieving revision 1.425
diff -u -r1.425 List.pm
--- src/List.pm 3 Mar 2004 15:16:30 -0000 1.425
+++ src/List.pm 15 Mar 2004 12:48:59 -0000
@@ -2313,9 +2313,18 @@
return 0;
}
my $mime_types = &tools::load_mime_types();
- for (my $i=0 ; $i < $url_msg->parts ; $i++) {
- &_urlize_part ($url_msg->parts ($i), $expl, $dir1, $i,
$mime_types, $name, &Conf::get_robot_conf($robot, 'wwsympa_url')) ;
+ my @parts = $url_msg->parts();
+
+ foreach my $i (0..$#parts) {
+ my $entity = &_urlize_part ($url_msg->parts ($i), $self, $dir1,
$i, $mime_types, &Conf::get_robot_conf($robot, 'wwsympa_url')) ;
+ if (defined $entity) {
+ $parts[$i] = $entity;
+ }
}
+
+ ## Replace message parts
+ $url_msg->parts (\@parts);
+
## Add a footer
my $new_msg = $self->add_parts($url_msg);
if (defined $new_msg) {
@@ -7818,17 +7827,19 @@
sub _urlize_part {
my $message = shift;
- my $expl = shift;
+ my $list = shift;
+ my $expl = $list->{'dir'}.'/urlized';
+ my $robot = $list->{'domain'};
my $dir = shift;
my $i = shift;
my $mime_types = shift;
- my $list = shift;
+ my $listname = $list->{'name'};
my $wwsympa_url = shift;
my $head = $message->head ;
my $encoding = $head->mime_encoding ;
-## name of the linked file
+ ## name of the linked file
my $fileExt = $mime_types->{$head->mime_type};
if ($fileExt) {
$fileExt = '.'.$fileExt;
@@ -7851,7 +7862,7 @@
&do_log('notice', "Unable to open $expl/$dir/$filename") ;
return undef ;
}
-
+
if ($encoding =~
/^binary|7bit|8bit|base64|quoted-printable|x-uu|x-uuencode|x-gzip64$/ ) {
open TMP, ">$expl/$dir/$filename.$encoding";
$message->print_body (\*TMP);
@@ -7867,30 +7878,31 @@
close (OFILE);
my $file = "$expl/$dir/$filename";
my $size = (-s $file);
+
+ ## Only URLize files with a moderate size
+ if ($size < $Conf{'urlize_min_size'}) {
+ unlink "$expl/$dir/$filename";
+ return undef;
+ }
## Delete files created twice or more (with Content-Type.name and
Content-Disposition.filename)
$message->purge ;
- if ($i !=0) {
- ## add the content type /external body
- ## and the phantom body with content-type
- ## and delete the 'old' body
- my $body = 'Content-type: '.$head->get('Content-type');
- $head->delete('Content-type');
- if ($head->get('Content-Transfer-Encoding')) {
- $body .= 'Content-Transfer-Encoding:
'.$head->get('Content-Transfer-Encoding');
- $head->delete('Content-Transfer-Encoding');
- }
- $head->delete('Content-Disposition');
- # it seems that the 'name=' option doesn't work
- # if the file name has got an extension like '.xxx'-> '.' is replaced
with '_'
- (my $file_name = $filename) =~ s/\./\_/g;
- $head->add('Content-type', "message/external-body; access-type=URL;
URL=\"$wwsympa_url/attach/$list$dir/$filename\"; name=\"$file_name\";
size=\"$size\"");
+ (my $file_name = $filename) =~ s/\./\_/g;
+ my $file_url = "$wwsympa_url/attach/$listname$dir/$filename";
+
+ my $parser = new MIME::Parser;
+ $parser->output_to_core(1);
+ my @new_part;
+ &parser::parse_tpl({'file_name' => $file_name,
+ 'file_url' => $file_url,
+ 'file_size' => $size },
+ &tools::get_filename('etc',
'templates/urlized_part.'.$list->{'admin'}{'lang'}.'.tpl', $robot, $list),
+ \@new_part);
- $message->parts([]);
- $message->bodyhandle (new MIME::Body::Scalar "$body" );
+ my $entity = $parser->parse_data(\@new_part);
- }
+ return $entity;
}
sub store_subscription_request {
Index: src/tools.pl
===================================================================
RCS file: /home/sympa/cvsroot/sympa/src/tools.pl,v
retrieving revision 1.129
diff -u -r1.129 tools.pl
--- src/tools.pl 10 Mar 2004 10:04:40 -0000 1.129
+++ src/tools.pl 15 Mar 2004 12:48:59 -0000
@@ -1502,7 +1502,7 @@
}
}
foreach my $f (@try) {
- &do_log('debug3','get_filname : NAME: %s ; DIR %s', $name, $dir);
+ &do_log('debug3','get_filname : NAME: %s ; DIR %s', $name, $f );
if (-r $f) {
return $f;
}
Index: src/etc/templates/fr/urlized_part.fr.tpl
===================================================================
RCS file: src/etc/templates/fr/urlized_part.fr.tpl
diff -N src/etc/templates/fr/urlized_part.fr.tpl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/etc/templates/fr/urlized_part.fr.tpl 15 Mar 2004 12:48:59 -0000
@@ -0,0 +1,6 @@
+Content-Type: text/plain; name="[file_name]"
+Content-Disposition: inline; filename="[file_name]"
+Content-Transfer-Encoding: 8bit
+
+Le fichier [file_name] qui était joint à ce message a été gardé sur le
serveur de listes :
+[file_url]
Index: src/etc/templates/us/urlized_part.us.tpl
===================================================================
RCS file: src/etc/templates/us/urlized_part.us.tpl
diff -N src/etc/templates/us/urlized_part.us.tpl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/etc/templates/us/urlized_part.us.tpl 15 Mar 2004 12:48:59 -0000
@@ -0,0 +1,6 @@
+Content-Type: text/plain; name="[file_name]"
+Content-Disposition: inline; filename="[file_name]"
+Content-Transfer-Encoding: 8bit
+
+The [file_name] file that was initially attached to this message has been
stored of the mailing lists server :
+[file_url]
-
urlize,
Guillaume Sauvenay, 12/03/2004
-
Re: [sympa-fr] urlize,
Olivier Salaun - CRU, 12/03/2004
-
Re: [sympa-fr] urlize,
Guillaume Sauvenay, 12/03/2004
- Re: [sympa-fr] Re: [sympa-fr] urlize, Philippe YOUNG, 12/03/2004
-
Pd de visibilité...,
Philippe YOUNG, 15/03/2004
- Re: [sympa-fr] Pd de visibilité..., Olivier Salaun - CRU, 15/03/2004
- Re: [sympa-fr] Re: [sympa-fr] urlize, Olivier Salaun - CRU, 15/03/2004
-
Re: [sympa-fr] urlize,
Guillaume Sauvenay, 12/03/2004
-
Re: [sympa-fr] urlize,
Olivier Salaun - CRU, 12/03/2004
Archives gérées par MHonArc 2.6.19+.