From 190d328e402102f04ee0a287f9b173c52bffa341 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 2 Jul 2008 17:48:16 -0400 Subject: web commit by Petteri: Added debian.fi --- doc/ikiwikiusers.mdwn | 1 + 1 file changed, 1 insertion(+) (limited to 'doc') diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn index 8c7c872ef..9adda157c 100644 --- a/doc/ikiwikiusers.mdwn +++ b/doc/ikiwikiusers.mdwn @@ -34,6 +34,7 @@ Projects * [Query Object Framework](http://qof.alioth.debian.org/) * [Estron - Object Relational Mapping interpreter](http://estron.alioth.debian.org/) * [Public Domain collection of Debian related tips & tricks](http://dabase.com/tips/) - please add any tips too +* [Finnish Debian community](http://debian.fi) Personal sites and blogs ======================== -- cgit v1.2.3 From 84e6c4fa665703133b5778e92c045897df496e97 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 2 Jul 2008 17:30:00 -0400 Subject: add mimetype checking --- IkiWiki/Plugin/attachment.pm | 33 +++++++++++++++++++++++++++++++++ doc/plugins/attachment.mdwn | 8 +++++++- 2 files changed, 40 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index a5c42d638..5d918c43f 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -298,6 +298,39 @@ sub match_minsize ($$;@) { #{{{ } } #}}} +sub match_mimetype ($$;@) { #{{{ + shift; + my $wanted=shift; + + my %params=@_; + if (! exists $params{file}) { + return IkiWiki::FailReason->new("no file specified"); + } + + # Use ::magic to get the mime type, the idea is to only trust + # data obtained by examining the actual file contents. + eval q{use File::MimeInfo::Magic}; + if ($@) { + return IkiWiki::FailReason->new("failed to load File::MimeInfo::Magic ($@); cannot check MIME type"); + } + my $mimetype=File::MimeInfo::Magic::magic($params{file}); + if (! defined $mimetype) { + $mimetype="unknown"; + } + + # turn glob into a safe regexp + my $regexp=quotemeta($wanted); + $regexp=~s/\\\*/.*/g; + $regexp=~s/\\\?/./g; + + if ($mimetype!~/^$regexp$/i) { + return IkiWiki::FailReason->new("file MIME type is $mimetype, not $wanted"); + } + else { + return IkiWiki::SuccessReason->new("file MIME type is $mimetype"); + } +} #}}} + sub match_ispage ($$;@) { #{{{ my $filename=shift; diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn index 184f5b5df..01816cd5c 100644 --- a/doc/plugins/attachment.mdwn +++ b/doc/plugins/attachment.mdwn @@ -29,7 +29,7 @@ For example, to limit arbitrary files to 50 kilobytes, but allow larger mp3 files to be uploaded by joey, a test like this could be used: - (user(joey) and *.mp3 and maxsize(15mb)) or (!ispage() and maxsize(50kb)) + (user(joey) and *.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (!ispage() and maxsize(50kb)) The following additional tests are available: @@ -62,3 +62,9 @@ The following additional tests are available: Tests whether the attacment is being uploaded from the specified IP address. + +* mimetype(foo/bar) + + If the [[cpan File::MimeInfo::Magic]] perl module is installed, this + allows checking the mime type of the attachment. You can include a glob + in the type, for example `mimetype(image/*)`. -- cgit v1.2.3 From 2888b0355682c8dbd5bc50767210e5c0c6a700ce Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 2 Jul 2008 18:04:14 -0400 Subject: move attachment pagespec extensions docs to its own page in the basewiki, so I can link to it there --- doc/ikiwiki/pagespec/attachment.mdwn | 52 ++++++++++++++++++++++++++++++++++++ doc/plugins/attachment.mdwn | 52 ++++-------------------------------- 2 files changed, 57 insertions(+), 47 deletions(-) create mode 100644 doc/ikiwiki/pagespec/attachment.mdwn (limited to 'doc') diff --git a/doc/ikiwiki/pagespec/attachment.mdwn b/doc/ikiwiki/pagespec/attachment.mdwn new file mode 100644 index 000000000..40de91765 --- /dev/null +++ b/doc/ikiwiki/pagespec/attachment.mdwn @@ -0,0 +1,52 @@ +[[!meta robots="noindex, follow"]] +[[!if test="enabled(attachment)" + then="This wiki has attachments **enabled**." + else="This wiki has attachments **disabled**."]] + +If attachments are enabled, the wiki admin can control what types of +attachments will be accepted, by entering a [[ikiwiki/PageSpec]] in the +"Allowed Attachments" field of their preferences page. + +For example, to limit arbitrary files to 50 kilobytes, but allow +larger mp3 files to be uploaded by joey, a something like this could be +used: + + (user(joey) and *.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (!ispage() and maxsize(50kb)) + +The regular [[ikiwiki/PageSpec]] syntax is expanded with thw following +additional tests: + +* maxsize(size) + + Tests whether the attachment is no larger than the specified size. + The size defaults to being in bytes, but "kb", "mb", "gb" etc can be + used to specify the units. + +* minsize(size) + + Tests whether the attachment is no smaller than the specified size. + +* ispage() + + Tests whether the attachment will be treated by ikiwiki as a wiki page. + (Ie, if it has an extension of ".mdwn", or of any other enabled page + format). + + So, if you don't want to allow wiki pages to be uploaded as attachments, + use `!ispage()` ; if you only want to allow wiki pages to be uploaded + as attachments, use `ispage()`. + +* user(username) + + Tests whether the attachment is being uploaded by a user with the + specified username. If openid is enabled, an openid can also be put here. + +* ip(address) + + Tests whether the attacment is being uploaded from the specified IP + address. + +* mimetype(foo/bar) + + This checks the MIME type of the attachment. You can include a glob + in the type, for example `mimetype(image/*)`. diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn index 01816cd5c..daadfc348 100644 --- a/doc/plugins/attachment.mdwn +++ b/doc/plugins/attachment.mdwn @@ -20,51 +20,9 @@ Bear in mind that if you let anyone upload a particular kind of file contains html as a web page; including running any malicious javascript embedded in that page. -To provide a way to combat these abuses, the wiki admin can specify a -[[ikiwiki/PageSpec]] on their preferences page, to control what types of -attachments can be uploaded, and by whom. The regular [[ikiwiki/PageSpec]] -syntax is expanded with additional tests. +If you enable this plugin, be sure to lock that down, by entering a +[[special_PageSpec|ikiwiki/pagespec/attachment]] in the "Allowed +Attachments" field of the wiki admin's preferences page. -For example, to limit arbitrary files to 50 kilobytes, but allow -larger mp3 files to be uploaded by joey, a test like this could be -used: - - (user(joey) and *.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (!ispage() and maxsize(50kb)) - -The following additional tests are available: - -* maxsize(size) - - Tests whether the attachment is no larger than the specified size. - The size defaults to being in bytes, but "kb", "mb", "gb" etc can be - used to specify the units. - -* minsize(size) - - Tests whether the attachment is no smaller than the specified size. - -* ispage() - - Tests whether the attachment will be treated by ikiwiki as a wiki page. - (Ie, if it has an extension of ".mdwn", or of any other enabled page - format). - - So, if you don't want to allow wiki pages to be uploaded as attachments, - use `!ispage()` ; if you only want to allow wiki pages to be uploaded - as attachments, use `ispage()`. - -* user(username) - - Tests whether the attachment is being uploaded by a user with the - specified username. If openid is enabled, an openid can also be put here. - -* ip(address) - - Tests whether the attacment is being uploaded from the specified IP - address. - -* mimetype(foo/bar) - - If the [[cpan File::MimeInfo::Magic]] perl module is installed, this - allows checking the mime type of the attachment. You can include a glob - in the type, for example `mimetype(image/*)`. +This plugin will use the [[cpan File::MimeInfo::Magic]] perl module, if +available, for mimetype checking. -- cgit v1.2.3 From ca6d9da279539f0a22e7e06a7b79d5709fe9c7c2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 2 Jul 2008 18:07:34 -0400 Subject: link to pagespec/attachment --- IkiWiki/Plugin/attachment.pm | 8 +++++++- doc/plugins/attachment.mdwn | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index 1bcf5a2e4..3bbe27b1a 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -47,7 +47,13 @@ sub formbuilder_setup (@) { #{{{ $form->field(name => "allowed_attachments", size => 50, fieldset => "admin", - comment => "(".htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).")"); + comment => "(". + htmllink("", "", + "ikiwiki/PageSpec/attachment", + noimageinline => 1, + linktext => "Enhanced PageSpec", + ).")" + ); if (! IkiWiki::is_admin($user_name)) { $form->field(name => "allowed_attachments", type => "hidden"); } diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn index daadfc348..2b8343042 100644 --- a/doc/plugins/attachment.mdwn +++ b/doc/plugins/attachment.mdwn @@ -20,8 +20,8 @@ Bear in mind that if you let anyone upload a particular kind of file contains html as a web page; including running any malicious javascript embedded in that page. -If you enable this plugin, be sure to lock that down, by entering a -[[special_PageSpec|ikiwiki/pagespec/attachment]] in the "Allowed +If you enable this plugin, be sure to lock that down, by entering an +[[enhanced_PageSpec|ikiwiki/pagespec/attachment]] in the "Allowed Attachments" field of the wiki admin's preferences page. This plugin will use the [[cpan File::MimeInfo::Magic]] perl module, if -- cgit v1.2.3