-----BEGIN WEBFACTION INSTALL SCRIPT-----
"""
MediaWiki 1.8.2
Requirements:
- 1 MySQL database.
Notes:
- The database will be named after your application.
- The default username and password are "WikiSysop" and "Password".
"autostart": not applicable
"extra info": enter the name of the wiki followed by the URL path of the wiki. For instance:
MyWiki /wiki
or:
'My wiki' /
"""
import re
import random
import string
import sys
import xmlrpclib
def arg_split(arg):
new_args = []
while True:
arg = arg.strip()
if arg == '':
break
if (arg[0] != '"') and (arg[0] != "'"):
new_arg = re.split(' ', arg)[0]
arg = re.sub('^%s' % new_arg, '', arg)
else:
separator = arg[0]
arg = arg[1:]
new_arg = re.split(separator, arg)[0]
arg = re.sub('^%s%s' % (new_arg, separator), '', arg)
new_args.append(new_arg)
continue
return new_args
def create(account, app_name, autostart, extra_info, password, server, session_id, username):
db_name = db_user = '%s_%s' % (username, app_name)
try:
name, path = arg_split(extra_info)
except ValueError:
print 'Extra info is invalid.'
return
name, path = name.strip(), path.strip()
if path == '/':
path = ''
name = re.sub('"', r'\"', name)
app = server.create_app(session_id, app_name, 'static', False, '')
server.create_db(session_id, db_name, 'mysql', password)
cmd = ''
cmd += 'rm index.html;'
cmd += 'wget http://wiki.webfaction.com/attachment/wiki/MediaWikiFiles/mediawiki-1.8.2.zip?format=raw > /dev/null 2>&1;'
cmd += 'unzip mediawiki-1.8.2.zip?format=raw > /dev/null 2>&1;'
cmd += 'rm mediawiki-1.8.2.zip?format=raw;'
server.system(session_id, cmd)
characters = string.lowercase + string.digits
proxy_key = ''
for i in range(1, 65):
proxy_key += random.choice(characters)
server.replace_in_file(session_id, 'LocalSettings.php',
('$wgDBname = "";', '$wgDBname = "%s";' % db_name),
('$wgDBpassword = "";', '$wgDBpassword = "%s";' % password),
('$wgDBuser = "";', '$wgDBuser = "%s";' % db_user),
('$wgProxyKey = "";', '$wgProxyKey = "%s";' % proxy_key),
('$wgScriptPath = "";', '$wgScriptPath = "%s";' % path),
('$wgSitename = "";', '$wgSitename = "%s";' % name)
)
cmd = ''
cmd += 'mysql --password=%s --user=%s %s < schema.sql;' % (password, db_user, db_name)
cmd += 'rm schema.sql;'
server.system(session_id, cmd)
print app['id']
def delete(account, app_name, autostart, extra_info, password, server, session_id, username):
server.delete_app(session_id, app_name)
server.delete_db(session_id, '%s_%s' % (username, app_name), 'mysql')
if __name__ == '__main__':
action, username, password, machine, app_name, autostart, extra_info = sys.argv[1:]
server = xmlrpclib.ServerProxy('https://api.webfaction.com/')
session_id, account = server.login(username, password, machine)
func = locals()[action]
func(account, app_name, autostart, extra_info, password, server, session_id, username)
-----END WEBFACTION INSTALL SCRIPT-----