Mail-to-wiki gateway

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
Ambox outdated content.svg

This page is kept for historical interest. Its content is outdated or may be wrong.

You may find more up-to-date information on the website.

MediaWiki logo

See bugzilla:831 mail-to-wiki gateway: allow adding or creation of page through SMS or E-Mail

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';


	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.


	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:

	1.14	21.03.2005	alpha release for publication on
				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>



	php editpage.php -a "Test" "* This is a new line generated by ~~~~." "A very first test."
	php editpage.php -f testfile.txt


	Summary: This and that, an edit summary
	* This is a text for the wiki page.

	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)
	* ^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)