WolfgangFahl.png

Push your
wikifarm pages with
encrypted credential handling

MediaWiki API

There are many implementations for different languages e.g.

Language Project By
Java MediaWiki-Japi BITPlan
Python pywikbot WikiMedia Foundation
JavaScript nodemw Maciej Brencz

Dragtop Example

The Dragtop prototype shows how automation could be simplified. A main showstopper on the way to this is how to make the credentials available for the automation without interfering the user experience.

Encrypted credential storage

#Mediawiki JAPI credentials for test2
#Mon Mar 16 08:09:44 CET 2020
url=http://test.bitplan.com
cypher=...
scriptPath=
secret=...
user=wf
salt=...
wikiId=test
version=MediaWiki 1.27.3
email=wf@bitplan.com

Push pages example

Picturetestpage.png

see also https://test.wikipedia.org/wiki/PictureTestPage

./run -l -s master -t test -p Training
Apr 02, 2020 4:46:32 PM com.bitplan.mediawiki.japi.SSLWiki login
INFORMATION: http://master.bitplan.com/api.php?:Success
Apr 02, 2020 4:46:33 PM com.bitplan.mediawiki.japi.SSLWiki login
INFORMATION: http://test.bitplan.com/api.php?:Success
File:Book open2.png
http://master.bitplan.com/images/master/9/92/Book_open2.png
File:Bookicon.png
http://master.bitplan.com/images/master/2/23/Bookicon.png
File:Cr icon.png
http://master.bitplan.com/images/master/e/e8/Cr_icon.png
File:Graduate.png
http://master.bitplan.com/images/master/8/8a/Graduate.png
File:QuizcardIcon.png
http://master.bitplan.com/images/master/b/b8/QuizcardIcon.png
File:Traininglocation.png
http://master.bitplan.com/images/master/b/b1/Traininglocation.png
File:Users2.png
http://master.bitplan.com/images/master/6/6d/Users2.png
File:ZAnswerIcon.png
http://master.bitplan.com/images/master/6/64/ZAnswerIcon.png
File:ZQuestionIcon.png
http://master.bitplan.com/images/master/d/d5/ZQuestionIcon.png

Derived pywikibot family file

Note that the password is NOT included and the password clear text feature of pywikibot is NOT used

# -*- coding: utf-8  -*-
from pywikibot import family

class Family(family.Family):
    name = 'test'
    langs = {
        'en': 'test.bitplan.com',
    }
    def scriptpath(self, code):
       return ''
       
    def isPublic(self):
        return False   
        
    def version(self, code):
        return "1.27.3"  # The MediaWiki version used. Very important in most cases. (contrary to documentation)   

    def protocol(self, code):
       return 'http'

py-3rdparty-mediawiki

from wikibot.wikibot import WikiBot
wikibot=WikiBot.ofWikiId("test2")
wikibot.site ..