-----BEGIN WEBFACTION INSTALL SCRIPT-----
"""
PunBB 1.2.14
Requirements:
- 1 MySQL database.
Notes:
- The database will be named after your application.
- The default username and password are "Admin" and "Password".
"autostart": not applicable
"extra info": enter the admin e-mail address followed by the site URL. For instance:
my@domain.com http://mydomain.com/forum
"""
import random
import re
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:
email_address, url = arg_split(extra_info)
except ValueError:
print 'Extra info is invalid.'
return
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 wget http://wiki.webfaction.com/attachment/wiki/PunBb/punbb-1.2.14.zip?format=raw > /dev/null 2>&1;'
cmd += 'unzip punbb-1.2.14.zip?format=raw > /dev/null 2>&1;'
cmd += 'rm punbb-1.2.14.zip?format=raw;'
server.system(session_id, cmd)
cmd = ''
cmd += 'chmod 777 cache/;'
cmd += 'chmod 777 img/avatars/;'
server.system(session_id, cmd)
characters = string.lowercase + string.digits
cookie_seed = ''
for i in range(1, 9):
cookie_seed += random.choice(characters)
server.replace_in_file(session_id, 'config.php',
("$cookie_seed = '';", "$cookie_seed = '%s';" % cookie_seed),
("$db_name = '';", "$db_name = '%s';" % db_name),
("$db_password = '';", "$db_password = '%s';" % password),
("$db_username = '';", "$db_username = '%s';" % db_user)
)
server.replace_in_file(session_id, 'schema.sql',
('$EMAIL ADDRESS$', email_address),
('$URL$', url)
)
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-----