Mail-to-wiki gateway
From Meta, a Wikimedia project coordination wiki
See bugzilla:831 mail-to-wiki gateway: allow adding or creation of page through SMS or E-Mail
- Download http://www.tgries.de/mw/editpagebot.tgz currently version 1.14 --Wikinaut mail 21:31, 23 Mar 2005 (UTC)
This is the start of a new page, which describes the script editpage.php, which basically allows creation from a received mail, from commandline or from a file.
It supports
- append to a page
- prepend to page or
- create new page
The idea of mail-to-wiki gateways is not new, you can easily find these references:
Started by --Wikinaut mail 20:39, 21 Mar 2005 (UTC)
$version = '1.14-alpha (March 21, 2005)';
$progname = 'editpage.php';
/*
Disclaimer:
===========
Please use at your own risk: the script leaves currently the server and wikiuser passwords in the
temporary directory. These files should be deleted after use of the script.
editpage.php
============
Edit a wikipage ...
... by sending commands from the commandline or others scripts
... as if you are user($wikiuser) - see below
tested with: Mediawiki 1.3.7, 1.3.11, 1.5 (CVS HEAD)
M.Arndt/T.Gries Feb./March 2005
Bug reports and improvements:
mailto:mail@tgries.de
1.14 21.03.2005 alpha release for publication on http://bugzilla.wikimedia.org/show_bug.cgi?id=831
see also for links to further documentation
1.10 13.03.2005 "add" as synonym to append; html_entities on an existing wiki page are not escaped again
UTF-8, quoted-printable, ISO-8859-1 handling of Subject and body
1.08 10.03.2005 using tempname
1.07 08.03.2005 removing <HTML> tags; remove leading empty lines
1.06 07.03.2005 tablestyle
1.05 06.03.2005 allow parameters in stdin
1.04 04.03.2005 read page text from stdin; first version which works with procmail
1.03 03.03.2005 Version for Tomer (bot developer)
1.02 03.03.2005 \n inserts a newline character into the wikipage;
-f filename : read everything from a file
1.01 27.02.2005 compatibel with older version which uses wpEdittime
1.00 26.02.2005 Initial version adapted for Mediawiki 1.3.11 which uses wpEditToken
Usage: php editpage.php [ -a | -p | -o ] "Pagename" "A new text for this page" ["Edit Summary"]
php editpage.php [ -a | -p | -o ] -f filename ["Pagename" ["Edit Summary"]]
<mode> ::= -a | -append -add (default)
-p | -prepend
-o | -overwrite -replace -new -create
-s read everything from stdin ["Pagename"]
pagename, edit summary, page text
are read from stdin
The optional "Pagename" on commandline is used as default page
-f parameter to read everything from a file;
parameters in first three lines of the file
the sequence of the parameters does not matter
take precedence over command line parameters
Content of file:
<mode>:<pagename> This replaces the two lines Mode: and Page in the first example.
Summary:<edit summary>
<body>
Alternative:
Mode:<mode>
Page:<pagename>
<body>
Example:
php editpage.php -a "Test" "* This is a new line generated by ~~~~." "A very first test."
php editpage.php -f testfile.txt
foo:
add:Test
Summary: This and that, an edit summary
* This is a text for the wiki page.
----
<EOF>
If (Edit)Summary is empty, then the Subject text will be used as (Edit)Summary.
Example for a procmail configuration file ($keyword = mail2wiki)
.procmail (the 'c' instructs procmail to file an additional mail copy in your mail folder)
:0c:
* ^Subject: mail2wiki
| formail -k -X Date: -X From: -X Subject: -X Content-Type: -X Content-Transfer-Encoding: | /home/www/wikiextensions/editpage/editpage.php -s
To Do:
1. change curl exec calls to internal php-curl calls
2. correct treatment of multipart mails (e.g. plain-text _and_ html)
use PHP:PEAL for this
3. relax current strict deletion of HTML tags, everything in < >
The code uses UTF-8 coding internally and assumes, that the Wiki input encoding is UTF-8, too.
*******************************************
*
* make your customizations here
*
*******************************************/
$wikiname = "localhost/testwiki"; // Wiki-URL, becomes later http://$wikiname/index.php?......
$auth = "user:password"; // credentials serveruser:serverpassword for server login
$wikiuser = "EditScript"; // the script logs into this wiki-user account (change it)
$wikiuserpw = "nada--zero"; // and uses this password (change it)
$scriptdir = "/home/www/wikiextensions/editpage"; // directory of script and three curl templates (read-only)
$tempdir = $scriptdir."/tmp"; // path to a writable temporary directory
$defaultpage = 'Wikimail'; // page name of page for error messages
$defaultpage = $progname."_errorlog"; // page name of page for error messages
$keyword = ''; // a keyword, which must be first word in Subject: mail header
// in order to trigger any action
$tablestyle = true; // From: and Subject: mail headers are formatted using wiki table syntax
$ShowSummaryOnPage = false;
$ShowSubjectOnPage = false;
$category = '[[Category:wikimail]]'; // The scripts automatically adds the category (if not yet present)
/******************************************/