', text)
- lines = text.split('\n')
- text = ''
- indent = 0
- for line in lines:
- rline = line.strip()
- if rline:
- pass
- return text
diff --git a/scripts/import_static.py b/scripts/import_static.py
index bc2941e8..d4ba0bc7 100644
--- a/scripts/import_static.py
+++ b/scripts/import_static.py
@@ -1,3 +1,6 @@
+"""
+converts a static file to a web2py view. needs work
+"""
import os
import sys
import glob
@@ -97,6 +100,4 @@ def convert(source, destination,prefix='imported'):
os.makedirs(os.path.split(fullname)[0])
open(fullname,'w').write(views[name])
-
-
convert(sys.argv[1],sys.argv[2])
diff --git a/scripts/lang_update_from_langfile.py b/scripts/lang_update_from_langfile.py
deleted file mode 100644
index 4ce93a0b..00000000
--- a/scripts/lang_update_from_langfile.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
-This script will update untranslated messages in target from source (target and source are both language files)
-Usage:
- this can be used as first step when creating language file for new but very similar language
- or if you want update your app from welcome app of newer web2py version
- or in non-standard scenarios when you work on target and from any reason you have partial translation in source
-"""
-
-import sys
-import os
-sys.path.append(os.path.join(*__file__.split(os.sep)[:-2] or ['.']))
-
-from gluon.languages import update_from_langfile
-import argparse
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser(description='Use to set untranslated messages in the translation file from another one.')
- parser.add_argument(
- '-t', '--target',
- required=True,
- dest="target",
- help="Specify language file (rw) where untranslated messages will be updated if possible"
- )
- parser.add_argument(
- '-s', '--source',
- required=True,
- dest="source",
- help="Specify language file (ro) where seek for translations"
- )
- args = parser.parse_args()
-
- update_from_langfile(args.target, args.source)
-
- print '%s was updated.' % args.target
diff --git a/scripts/layout_make.py b/scripts/layout_make.py
deleted file mode 100755
index d3506b83..00000000
--- a/scripts/layout_make.py
+++ /dev/null
@@ -1,103 +0,0 @@
-import glob
-import os
-import zipfile
-import sys
-import re
-from BeautifulSoup import BeautifulSoup as BS
-
-
-def head(styles):
- title = '{{=response.title or request.application}}'
- items = '\n'.join(["{{response.files.append(URL(request.application,'static','%s'))}}" % (style) for style in styles])
- loc = """"""
- return "\n%s\n%s\n{{include 'web2py_ajax.html'}}\n%s" % (title, items, loc)
-
-
-def content():
- return """{{=response.flash or ''}}
{{include}}"""
-
-
-def process(folder):
- indexfile = open(os.path.join(folder, 'index.html'), 'rb')
- try:
- soup = BS(indexfile.read())
- finally:
- indexfile.close()
- styles = [x['href'] for x in soup.findAll('link')]
- soup.find('head').contents = BS(head(styles))
- try:
- soup.find(
- 'h1').contents = BS('{{=response.title or request.application}}')
- soup.find('h2').contents = BS(
- "{{=response.subtitle or '=response.subtitle'}}")
- except:
- pass
- for match in (soup.find('div', id='menu'),
- soup.find('div', {'class': 'menu'}),
- soup.find('div', id='nav'),
- soup.find('div', {'class': 'nav'})):
- if match:
- match.contents = BS('{{=MENU(response.menu)}}')
- break
- done = False
- for match in (soup.find('div', id='content'),
- soup.find('div', {'class': 'content'}),
- soup.find('div', id='main'),
- soup.find('div', {'class': 'main'})):
- if match:
- match.contents = BS(content())
- done = True
- break
- if done:
- page = soup.prettify()
- page = re.compile("\s*\{\{=response\.flash or ''\}\}\s*", re.MULTILINE)\
- .sub("{{=response.flash or ''}}", page)
- print page
- else:
- raise Exception("Unable to convert")
-
-if __name__ == '__main__':
- if len(sys.argv) < 2:
- print """USAGE:
-1) start a new web2py application
-2) Download a sample free layout from the web into the static/ folder of
- your web2py application (make sure a sample index.html is there)
-3) run this script with
-
- python layout_make.py /path/to/web2py/applications/app/static/
- > /path/to/web2py/applications/app/views/layout.html
-"""
- elif not os.path.exists(sys.argv[1]):
- print 'Folder %s does not exist' % sys.argv[1]
- else:
- process(sys.argv[1])
diff --git a/scripts/manage.py b/scripts/manage.py
deleted file mode 100644
index 2f878ece..00000000
--- a/scripts/manage.py
+++ /dev/null
@@ -1,116 +0,0 @@
-import os
-import glob
-import zipfile
-import urllib
-import tempfile
-import shutil
-
-def copytree(src, dst):
- names = os.listdir(src)
- ignored_names = set()
- errors = []
- if not os.path.exists(dst):
- os.makedirs(dst)
- for name in names:
- srcname = os.path.join(src, name)
- dstname = os.path.join(dst, name)
- if os.path.isdir(srcname):
- copytree(srcname, dstname)
- else:
- shutil.copy2(srcname, dstname)
-
-class W2PInstance(object):
-
- SOURCES = {'stable':'http://web2py.com/examples/static/web2py_src.zip',
- 'nightly':'http://web2py.com/examples/static/nightly/web2py_src.zip',
- 'trunk':'https://github.com/web2py/web2py/archive/master.zip'}
-
- def __init__(self,path):
- self.path = path
-
- def warn(self,message="system going down soon"):
- apps = glob.glob(os.path.join(self.path,'applications','*'))
- for app in apps:
- if os.path.isdir(app):
- open(os.path.join(app,'notifications.txt'),'w').write(message)
-
- def install(self,source='stable'):
- if not os.path.exists(self.path):
- os.mkdir(self.path)
- tmpdir = tempfile.mkdtemp()
- link = self.SOURCES[source]
- srcfile = os.path.join(tmpdir,'web2py_src.zip')
- print 'downloading...'
- open(srcfile,'wb').write(urllib.urlopen(link).read())
- print 'extracing...'
- zipfile.ZipFile(srcfile,'r').extractall(tmpdir)
- print 'copying...'
- copytree(os.path.join(tmpdir,'web2py'),self.path)
-
- def upgrade(self,source='stable'):
- self.install(source)
-
- def upgrade_tmp(self,source,common=False):
- tmpdir = tempfile.mkdtemp()
- link = self.SOURCES[source]
- srcfile = os.path.join(tmpdir,'web2py_src.zip')
- print 'copying production...'
- copytree(self.path,os.path.join(tmpdir,'web2py'))
- tmpdir_web2py = os.path.join(tmpdir,'web2py')
- tmp_web2py = W2PInstance(tempdir_web2py)
- tmp_web2py.clear_sessions()
- tmp_web2py.clear_cache()
- tmp_web2py.clear_error()
- print 'downloading...'
- open(srcfile,'wb').write(urllib.urlopen(link).read())
- print 'extracing...'
- zipfile.ZipFile(srcfile,'r').extractall(tmpdir)
- print 'running tests...'
- try:
- olddir = os.getcwd()
- os.chdir(tempdir_web2py)
- ret = os.system("PYTHONPATH=. python -m unittest -v gluon.tests")
- # eventually start web2py and run functional tests
- finally:
- os.chrid(olddir)
- if ret:
- sys.exit(ret and 1)
- copytree(os.path.join(tmpdir,'web2py'),self.path)
-
- def clear_sessions(self):
- files = glob.glob(os.path.join(self.path,'applications','*','sessions','*'))
- for file in files:
- try:
- os.unlink(file)
- except:
- pass
-
- def clear_cache(self):
- files = glob.glob(os.path.join(self.path,'applications','*','cache','*'))
- for file in files:
- try:
- os.unlink(file)
- except:
- pass
-
- def clear_errors(self):
- files = glob.glob(os.path.join(self.path,'applications','*','errors','*'))
- for file in files:
- try:
- os.unlink(file)
- except:
- pass
-
-web2py = W2PInstance('/Users/massimodipierro/Downloads/web2py')
-#web2py.install()
-web2py.clear_sessions()
-
-"""
-{{
-import os
-_notifications = os.path.join(request.folder,'notifications.txt')
-if os.path.exixts(_notifications):
- response.flash = response.flash or open(_notifications).read()
-pass
-}}
-"""
diff --git a/scripts/nginx_scgi.conf b/scripts/nginx_scgi.conf
deleted file mode 100644
index 5220bc56..00000000
--- a/scripts/nginx_scgi.conf
+++ /dev/null
@@ -1,115 +0,0 @@
-user nginx nginx;
-worker_processes 1;
-
-error_log /var/log/nginx/error_log info;
-
-events {
- worker_connections 1024;
- use epoll;
-}
-
-http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- log_format main
- '$remote_addr - $remote_user [$time_local] '
- '"$request" $status $bytes_sent '
- '"$http_referer" "$http_user_agent" '
- '"$gzip_ratio"';
-
- client_header_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
-
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 2k;
- request_pool_size 4k;
-
- gzip on;
- gzip_min_length 1100;
- gzip_buffers 4 8k;
- gzip_types text/plain;
-
- output_buffers 1 32k;
- postpone_output 1460;
-
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
-
- keepalive_timeout 75 20;
-
- ignore_invalid_headers on;
-
- ssl_session_cache shared:SSL:10m;
-
- index index.html;
-
- server {
- listen 127.0.0.1;
- server_name localhost;
-
- access_log /var/log/nginx/localhost.access_log main;
- error_log /var/log/nginx/localhost.error_log info;
-
- root /var/www/localhost/htdocs;
- }
-
- # SSL example
- server {
- listen 127.0.0.1:443;
- server_name localhost;
-
- ssl on;
- ssl_certificate /etc/ssl/nginx/nginx-server.pem;
- ssl_client_certificate /etc/ssl/nginx/cacert.pem;
- ssl_certificate_key /etc/ssl/nginx/nginx.key;
- ssl_verify_client optional;
-
- access_log /var/log/nginx/localhost.ssl_access_log main;
- error_log /var/log/nginx/localhost.ssl_error_log info;
-
- root /var/www/localhost/htdocs;
-
- set $web2pyroot /home/Desktop/source/michelecomitini-facebookaccess;
-
-
- location /pki/ {
- root /var/www/localhost/html;
- }
-
- location ~* ^/(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
- alias $web2pyroot/applications/$1/static/$2;
- expires max;
- }
-
- location / {
- include /etc/nginx/scgi_params;
- scgi_pass 127.0.0.1:4000;
-
- #Module ngx_http_ssl_module supports the following built-in variables:
-
- #$ssl_cipher returns the cipher suite being used for the currently established SSL/TLS connection
- #$ssl_client_serial returns the serial number of the client certificate for the currently established SSL/TLS connection — if applicable, i.e., if client authentication is activated in the connection
- #$ssl_client_s_dn returns the subject Distinguished Name (DN) of the client certificate for the currently established SSL/TLS connection — if applicable, i.e., if client authentication is activated in the connection
- #$ssl_client_i_dn returns the issuer DN of the client certificate for the currently established SSL/TLS connection — if applicable, i.e., if client authentication is activated in the connection
- #$ssl_protocol returns the protocol of the currently established SSL/TLS connection — depending on the configuration and client available options it's one of SSLv2, SSLv3 or TLSv1
- #$ssl_session_id the Session ID of the established secure connection — requires Nginx version greater or equal to 0.8.20
- #$ssl_client_cert
- #$ssl_client_raw_cert
- #$ssl_client_verify takes the value "SUCCESS" when the client certificate is successfully verified
- scgi_param SSL_PROTOCOL $ssl_protocol;
- scgi_param HTTPS on;
- scgi_param SSL_CIPHER $ssl_cipher;
- scgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
- scgi_param SSL_CLIENT_S_DN $ssl_client_s_dn;
- scgi_param SSL_CLIENT_I_DN $ssl_client_i_dn;
- scgi_param SSL_SESSION_ID $ssl_session_id;
- scgi_param SSL_CLIENT_CERT $ssl_client_cert;
- scgi_param SSL_CLIENT_RAW_CERT $ssl_client_raw_cert;
- scgi_param SSL_CLIENT_VERIFY $ssl_client_verify;
- }
- }
-}
diff --git a/scripts/parse_top_level_domains.py b/scripts/parse_top_level_domains.py
deleted file mode 100644
index 06590afc..00000000
--- a/scripts/parse_top_level_domains.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/env python
-# -*- coding: utf-8 -*-
-"""
-Use to update official_top_level_domains in gluon/validators.py
-"""
-
-import itertools
-import operator
-import urllib2
-
-LIMIT = 70
-PREFIX = ' '
-TLDS_URL = 'http://data.iana.org/TLD/tlds-alpha-by-domain.txt'
-
-resp = urllib2.urlopen(TLDS_URL)
-content = resp.read()
-
-valid_lines = [a.strip().lower() for a in content.split('\n') if a.strip() and a.strip()[0] != '#']
-valid_lines += ['localhost']
-
-print 'Fetched TLDs are %s' % len(valid_lines)
-
-results = [list(g) for k, g in itertools.groupby(sorted(valid_lines), key=operator.itemgetter(0))]
-
-output = []
-line = "'%s', "
-
-for a in results:
- output.append('%s# %s' % (PREFIX, a[-1][0]))
- thisline = PREFIX
- for c in a:
- newline = thisline + line % c
- if len(newline) > 70:
- output.append(thisline[:-1])
- thisline = PREFIX + line % c
- else:
- thisline += line % c
- if thisline:
- output.append(thisline[:-1])
-
-print '[\n' + '\n'.join(output)[:-1] + '\n]'
diff --git a/scripts/service/linux.py b/scripts/service/linux.py
deleted file mode 100644
index 759dfa6e..00000000
--- a/scripts/service/linux.py
+++ /dev/null
@@ -1,220 +0,0 @@
-from service import ServiceBase
-import os, sys, time, subprocess, atexit
-from signal import SIGTERM
-
-class LinuxService(ServiceBase):
- def __init__(self, name, label, stdout='/dev/null', stderr='/dev/null'):
- ServiceBase.__init__(self, name, label, stdout, stderr)
- self.pidfile = '/tmp/%s.pid' % name
- self.config_file = '/etc/%s.conf' % name
-
- def daemonize(self):
- """
- do the UNIX double-fork magic, see Stevens' "Advanced
- Programming in the UNIX Environment" for details (ISBN 0201563177)
- http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
- """
- try:
- pid = os.fork()
- if pid > 0:
- # exit first parent
- sys.exit(0)
- except OSError, e:
- sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
- return
-
- # decouple from parent environment
- os.chdir("/")
- os.setsid()
- os.umask(0)
-
- # do second fork
- try:
- pid = os.fork()
- if pid > 0:
- # exit from second parent
- sys.exit(0)
- except OSError, e:
- sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
- return
-
- # redirect standard file descriptors
- sys.stdout.flush()
- sys.stderr.flush()
- si = file('/dev/null', 'r')
- so = file(self.stdout or '/dev/null', 'a+')
- se = file(self.stderr or '/dev/null', 'a+')
- os.dup2(si.fileno(), sys.stdin.fileno())
- os.dup2(so.fileno(), sys.stdout.fileno())
- os.dup2(se.fileno(), sys.stderr.fileno())
-
- def getpid(self):
- # Check for a pidfile to see if the daemon already runs
- try:
- pf = file(self.pidfile,'r')
- pid = int(pf.read().strip())
- pf.close()
- except IOError:
- pid = None
-
- return pid
-
- def status(self):
- pid = self.getpid()
- if pid:
- return 'Service running with PID %s.' % pid
- else:
- return 'Service is not running.'
-
- def check_permissions(self):
- if not os.geteuid() == 0:
- return (False, 'This script must be run with root permissions.')
- else:
- return (True, '')
-
- def start(self):
- """
- Start the daemon
- """
- pid = self.getpid()
-
- if pid:
- message = "Service already running under PID %s\n"
- sys.stderr.write(message % self.pidfile)
- return
-
- # Start the daemon
- self.daemonize()
- self.run()
-
- def stop(self):
- """
- Stop the daemon
- """
- pid = self.getpid()
-
- if not pid:
- message = "Service is not running\n"
- sys.stderr.write(message)
- return # not an error in a restart
-
- # Try killing the daemon process
- try:
- while 1:
- os.kill(pid, SIGTERM)
- time.sleep(0.5)
- except OSError, err:
- err = str(err)
- if err.find("No such process") > 0:
- if os.path.exists(self.pidfile):
- os.remove(self.pidfile)
- else:
- print str(err)
- return
-
- def restart(self):
- """
- Restart the daemon
- """
- self.stop()
- self.start()
-
- def run(self):
- atexit.register(self.terminate)
-
- args = self.load_configuration()[0]
- stdout = open(self.stdout, 'a+')
- stderr = open(self.stderr, 'a+')
- process = subprocess.Popen(args, stdout=stdout, stderr=stderr)
- file(self.pidfile,'w+').write("%s\n" % process.pid)
- process.wait()
-
- self.terminate()
-
- def terminate(self):
- try:
- os.remove(self.pidfile)
- except:
- pass
-
- def install(self):
- env = self.detect_environment()
- src_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'service.py')
-
- # make sure this script is executable
- self.run_command('chmod', '+x', src_path)
-
- # link this daemon to the service directory
- dest_path = env['rc.d-path'] + self.name
- os.symlink(src_path, dest_path)
-
- # start the service at boot
- install_command = self.get_service_installer_command(env)
- result = self.run_command(*install_command)
- self.start()
-
- def uninstall(self):
- self.stop()
- env = self.detect_environment()
-
- # stop the service from autostarting
- uninstall_command = self.get_service_uninstaller_command(env)
- result = self.run_command(*uninstall_command)
-
- # remove link to the script from the service directory
- path = env['rc.d-path'] + self.name
- os.remove(path)
-
- def detect_environment(self):
- """
- Returns a dictionary of command/path to the required command-line applications.
- One key is 'dist' which will either be 'debian' or 'redhat', which is the best
- guess as to which Linux distribution the current system is based on.
- """
- check_for = [
- 'chkconfig',
- 'service',
- 'update-rc.d',
- 'rpm',
- 'dpkg',
- ]
-
- env = dict()
- for cmd in check_for:
- result = self.run_command('which', cmd)
- if result[0]:
- env[cmd] = result[0].replace('\n', '')
-
- if 'rpm' in env:
- env['dist'] = 'redhat'
- env['rc.d-path'] = '/etc/rc.d/init.d/'
- elif 'dpkg' in env:
- env['dist'] = 'debian'
- env['rc.d-path'] = '/etc/init.d/'
- else:
- env['dist'] = 'unknown'
- env['rc.d-path'] = '/dev/null/'
-
- return env
-
- def get_service_installer_command(self, env):
- """
- Returns list of args required to set a service to run on boot.
- """
- if env['dist'] == 'redhat':
- cmd = env['chkconfig']
- return [cmd, self.name, 'on']
- else:
- cmd = env['update-rc.d']
- return [cmd, self.name, 'defaults']
-
- def get_service_uninstaller_command(self, env):
- """
- Returns list of arge required to stop a service from running at boot.
- """
- if env['dist'] == 'redhat':
- cmd = env['chkconfig']
- return [cmd, self.name, 'off']
- else:
- cmd = env['update-rc.d']
- return [cmd, self.name, 'remove']
diff --git a/scripts/service/service.py b/scripts/service/service.py
deleted file mode 100644
index 247a7f14..00000000
--- a/scripts/service/service.py
+++ /dev/null
@@ -1,201 +0,0 @@
-#!/usr/bin/env python
-
-import sys, os, time, subprocess
-
-class Base:
- def run_command(self, *args):
- """
- Returns the output of a command as a tuple (output, error).
- """
- p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- return p.communicate()
-
-class ServiceBase(Base):
- def __init__(self, name, label, stdout=None, stderr=None):
- self.name = name
- self.label = label
- self.stdout = stdout
- self.stderr = stderr
- self.config_file = None
-
- def load_configuration(self):
- """
- Loads the configuration required to build the command-line string
- for running web2py. Returns a tuple (command_args, config_dict).
- """
- s = os.path.sep
-
- default = dict(
- python = 'python',
- web2py = os.path.join(s.join(__file__.split(s)[:-3]), 'web2py.py'),
- http_enabled = True,
- http_ip = '0.0.0.0',
- http_port = 8000,
- https_enabled = True,
- https_ip = '0.0.0.0',
- https_port = 8001,
- https_key = '',
- https_cert = '',
- password = '',
- )
-
- config = default
- if self.config_file:
- try:
- f = open(self.config_file, 'r')
- lines = f.readlines()
- f.close()
-
- for line in lines:
- fields = line.split('=', 1)
- if len(fields) == 2:
- key, value = fields
- key = key.strip()
- value = value.strip()
- config[key] = value
- except:
- pass
-
- web2py_path = os.path.dirname(config['web2py'])
- os.chdir(web2py_path)
-
- args = [config['python'], config['web2py']]
- interfaces = []
- ports = []
-
- if config['http_enabled']:
- ip = config['http_ip']
- port = config['http_port']
- interfaces.append('%s:%s' % (ip, port))
- ports.append(port)
- if config['https_enabled']:
- ip = config['https_ip']
- port = config['https_port']
- key = config['https_key']
- cert = config['https_cert']
- if key != '' and cert != '':
- interfaces.append('%s:%s:%s:%s' % (ip, port, key, cert))
- ports.append(ports)
- if len(interfaces) == 0:
- sys.exit('Configuration error. Must have settings for http and/or https')
-
- password = config['password']
- if not password == '':
- from gluon import main
- for port in ports:
- main.save_password(password, port)
-
- password = ''
-
- args.append('-a "%s"' % password)
-
- interfaces = ';'.join(interfaces)
- args.append('--interfaces=%s' % interfaces)
-
- if 'log_filename' in config.keys():
- log_filename = config['log_filename']
- args.append('--log_filename=%s' % log_filename)
-
- return (args, config)
-
- def start(self):
- pass
-
- def stop(self):
- pass
-
- def restart(self):
- pass
-
- def status(self):
- pass
-
- def run(self):
- pass
-
- def install(self):
- pass
-
- def uninstall(self):
- pass
-
- def check_permissions(self):
- """
- Does the script have permissions to install, uninstall, start, and stop services?
- Return value must be a tuple (True/False, error_message_if_False).
- """
- return (False, 'Permissions check not implemented')
-
-class WebServerBase(Base):
- def install(self):
- pass
-
- def uninstall(self):
- pass
-
-
-def get_service():
- service_name = 'web2py'
- service_label = 'web2py Service'
-
- if sys.platform == 'linux2':
- from linux import LinuxService as Service
- elif sys.platform == 'darwin':
- # from mac import MacService as Service
- sys.exit('Mac OS X is not yet supported.\n')
- elif sys.platform == 'win32':
- # from windows import WindowsService as Service
- sys.exit('Windows is not yet supported.\n')
- else:
- sys.exit('The following platform is not supported: %s.\n' % sys.platform)
-
- service = Service(service_name, service_label)
- return service
-
-if __name__ == '__main__':
- service = get_service()
- is_root, error_message = service.check_permissions()
- if not is_root:
- sys.exit(error_message)
-
- if len(sys.argv) >= 2:
- command = sys.argv[1]
- if command == 'start':
- service.start()
- elif command == 'stop':
- service.stop()
- elif command == 'restart':
- service.restart()
- elif command == 'status':
- print service.status() + '\n'
- elif command == 'run':
- service.run()
- elif command == 'install':
- service.install()
- elif command == 'uninstall':
- service.uninstall()
- elif command == 'install-apache':
- # from apache import Apache
- # server = Apache()
- # server.install()
- sys.exit('Configuring Apache is not yet supported.\n')
- elif command == 'uninstall-apache':
- # from apache import Apache
- # server = Apache()
- # server.uninstall()
- sys.exit('Configuring Apache is not yet supported.\n')
- else:
- sys.exit('Unknown command: %s' % command)
- else:
- print 'Usage: %s [command] \n' % sys.argv[0] + \
- '\tCommands:\n' + \
- '\t\tstart Starts the service\n' + \
- '\t\tstop Stop the service\n' + \
- '\t\trestart Restart the service\n' + \
- '\t\tstatus Check if the service is running\n' + \
- '\t\trun Run service is blocking mode\n' + \
- '\t\t (Press Ctrl + C to exit)\n' + \
- '\t\tinstall Install the service\n' + \
- '\t\tuninstall Uninstall the service\n' + \
- '\t\tinstall-apache Install as an Apache site\n' + \
- '\t\tuninstall-apache Uninstall from Apache\n'
diff --git a/scripts/setup-shared-hosting-2.4.sh b/scripts/setup-shared-hosting-2.4.sh
deleted file mode 100644
index 00d4d0d0..00000000
--- a/scripts/setup-shared-hosting-2.4.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-# install virtualenv
-easy_install virtualenv
-python virtualenv.py w2env
-# install missing modules
-w2env/bin/easy_install -U pysqlite hashlib
-# donwload web2py and unpack
-wget http://web2py.com/examples/static/web2py_src.zip
-unzip web2py_src.zip
-cd web2py
-# start web2py using command-line script
-w2env/bin/python web2py.py -i 0.0.0.0 -p 8123 -a 'adminpasswd'
diff --git a/scripts/setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh b/scripts/setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh
deleted file mode 100644
index 2d302342..00000000
--- a/scripts/setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh
+++ /dev/null
@@ -1,462 +0,0 @@
-#!/bin/bash
-
-# ------------------------------------------------------------------------------
-# Description : Installation and basic configuration of web2py, uWSGI, Redmine,
-# Unicorn, Nginx and PostgreSQL.
-# Usage : Copy the script in /home/username and run it as root, you may
-# need to allow exectuion (chmod +x). Ex.:
-# sudo ./setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh
-# File : setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh
-# Author : Richard V?zina
-# Email : ml.richard.vezina@gmail.com
-# Copyright : Richard V?zina
-# Date : ven 28 d?c 2012 13:27:11 EST
-# Disclaimers : This script is provided "as is", without warranty of any kind.
-# Licence : CC BY-NC 2.5 CA
-# ------------------------------------------------------------------------------
-
-echo 'setup-ubuntu-12-04-redmine-unicorn-web2py-uwsgi-nginx.sh'
-echo 'Requires Ubuntu = 12.04 (May works with 12.10 not tested) and installs Redmine + Unicorn + Web2py + uWSGI + Nginx + PostgreSQL'
-# Check if user has root privileges
-if [[ $EUID -ne 0 ]]; then
- echo "You must run the script as root or using sudo"
- exit 1
-fi
-
-# ------------------------------------------------------------------------------
-# We concentrate here user prompts!!
-# Get Redmine Postgres Database Password
-echo -e "Redmine Postgres Database Password: \c "
-read REDMINEPASSWORD
-# Get Web2py Admin Password
-echo -e "Web2py Admin Password: \c "
-read PW
-
-cd ~
-openssl genrsa 1024 > self_signed.key
-chmod 400 self_signed.key
-openssl req -new -x509 -nodes -sha1 -days 1780 -key self_signed.key > self_signed.cert
-openssl x509 -noout -fingerprint -text < self_signed.cert > self_signed.info
-# ------------------------------------------------------------------------------
-
-apt-get update
-apt-get -y upgrade
-apt-get autoremove
-apt-get autoclean
-apt-get -y install postgresql
-apt-get -y install nginx-full
-apt-get -y install build-essential python-dev libxml2-dev python-pip unzip
-apt-get -y install ruby1.9.3 # Ref.: http://askubuntu.com/questions/137485/rails-3-not-using-rvm
-apt-get -y install libpq-dev # Required for gem1.9.3 install pg Ref.: http://stackoverflow.com/questions/6040583/unable-to-install-pg-gem-on-ubuntu-cant-find-the-libpq-fe-h-header
-
-gem1.9.3 install rails --no-rdoc --no-ri # For testing (faster) --no-rdoc --no-ri
-gem1.9.3 install unicorn --no-rdoc --no-ri # For testing (faster) --no-rdoc --no-ri
-gem1.9.3 install pg --no-rdoc --no-ri # For testing (faster) --no-rdoc --no-ri
-cd /opt
-wget http://rubyforge.org/frs/download.php/76627/redmine-2.2.0.tar.gz
-wget http://rubyforge.org/frs/download.php/76628/redmine-2.2.0.tar.gz.md5
-md5sum --check redmine-2.2.0.tar.gz.md5 > redmine_md5_checked_successfully
-if [ -f redmine_md5_checked_successfully ]
-then
- tar xvfz redmine-2.2.0.tar.gz
- rm redmine_md5_checked_successfully
-else
- echo "Redmine md5 check sum failed..."
- exit 1
-fi
-cd redmine-2.2.0
-bundle install --without development test rmagick sqlite mysql
-mkdir /var/www
-ln -s /opt/redmine-2.2.0/public /var/www/redmine
-chown -R www-data.www-data /var/www
-chown -R www-data.www-data /opt/redmine-2.2.0/public
-# To avoid prompt during execution of the script use psql instead of createuser
-#echo "Enter a postgres redmine user password twice:"
-#createuser -P -S -D -R -l -e redmine
-# createuser switch: -P --pwprompt -S --no-superuser -D --no-createdb -R --no-createrole -l --login -e --echo
-sudo -u postgres psql -c "CREATE ROLE redmine LOGIN; ALTER ROLE redmine WITH ENCRYPTED PASSWORD '$REDMINEPASSWORD';"
-# createdb wouldn't work without having root password
-#createdb -U postgres -w -E UTF8 -O redmine -e redmine
-# createdb switch: -U username --username=username -w --no-password -E Encoding -O owner --owner=owner -e --echo
-sudo -u postgres psql -c "CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;"
-cd /opt/redmine-2.2.0/config
-# Here we change related to an issue with new rails version as far as I understand
-# Ref1.: http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_a_sub-URI # Preferred solution used
-# Ref2.: http://www.redmine.org/issues/12102 # JS and CSS was not working until I add this line 'RedmineApp::Application.routes.default_scope = { :path => "/redmine", :shallow_path => "/redmine" }' before 'RedmineApp::Application.initialize!'
-cp environment.rb environment.rb_original # Backup default environment.rb
-sed '/RedmineApp::Application.initialize!/c \RedmineApp::Application.routes.default_scope = { :path => "/redmine", :shallow_path => "/redmine" }\nRedmineApp::Application.initialize!\nRedmine::Utils::relative_url_root = "/redmine"' environment.rb_original > environment.rb
-# Now we configure Redmine database access
-#nano database.yml
-# paste :
-echo 'production:
- adapter: postgresql
- database: redmine
- host: localhost
- username: redmine
- password: "'$REDMINEPASSWORD'"
- encoding: utf8' > database.yml
-rake generate_secret_token
-RAILS_ENV=production rake db:migrate
-RAILS_ENV=production rake redmine:load_default_data
-mkdir /opt/redmine-2.2.0/tmp/pids
-#mkdir /opt/redmine-2.2.0/log # if not there
-cd /opt/redmine-2.2.0/config
-# Create Unicorn specific Redmine config in /opt/redmine-2.2.0/config/unicorn.rb
-echo '#unicorn.rb Starts here
-worker_processes 1
-working_directory "/opt/redmine-2.2.0" # needs to be the correct directory for redmine
-
-# This loads the application in the master process before forking
-# worker processes
-# Read more about it here:
-# http://unicorn.bogomips.org/Unicorn/Configurator.html
-preload_app true
-timeout 45
-
-# This is where we specify the socket.
-# We will point the upstream Nginx module to this socket later on
-listen "/tmp/unicorn_rails.socket", :backlog => 64 #directory structure needs to be created.
-pid "/opt/redmine-2.2.0/tmp/pids/unicorn_rails.pid" # make sure this points to a valid directory. Make sure it is named the same as the real process name in order to allow init.d script start-stop-daemon command to kill unicorn process properly
-
-# Set the path of the log files inside the log folder of the testapp
-stderr_path "/opt/redmine-2.2.0/log/unicorn_rails.stderr.log"
-stdout_path "/opt/redmine-2.2.0/log/unicorn_rails.stdout.log"
-
-before_fork do |server, worker|
-# This option works in together with preload_app true setting
-# What is does is prevent the master process from holding
-# the database connection
-defined?(ActiveRecord::Base) and
-ActiveRecord::Base.connection.disconnect!
-end
-
-after_fork do |server, worker|
-# Here we are establishing the connection after forking worker
-# processes
-defined?(ActiveRecord::Base) and
-ActiveRecord::Base.establish_connection
-# change below if your redmine instance is running differently
-worker.user('\''www-data'\'', '\''www-data'\'') if Process.euid == 0
-end
-#unicorn.rb Ends here' > unicorn.rb
-chown www-data:www-data unicorn.rb
-chown -R www-data:www-data /opt/redmine-2.2.0/tmp
-mkdir /etc/unicorn
-# Set some config for Unicorn in /etc/unicorn/redmine
-echo 'RAILS_ROOT=/opt/redmine-2
-RAILS_ENV=production' > /etc/unicorn/redmine
-# Create a Unicorn Redmine start script in /etc/init.d/redmine
-echo '#! /bin/sh
-### BEGIN INIT INFO
-# Provides: redmine
-# Required-Start: $remote_fs $syslog
-# Required-Stop: $remote_fs $syslog
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: redmine initscript
-# Description: This script startup unicorn server and redmine and should
-# be placed in /etc/init.d.
-### END INIT INFO
-
-# ------------------------------------------------------------------------------
-# Author: Richard V?zina
-# Base on Ubuntu 12.04 : /etc/init.d/skeleton
-# ven 21 d?c 2012 11:08:31 EST
-# ------------------------------------------------------------------------------
-
-# Do NOT "set -e"
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-APP=/opt/redmine-2.2.0/
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="Unicorn and Redmine"
-NAME=unicorn_rails
-DAEMON=/usr/local/bin/$NAME
-DAEMON_ARGS=" -E production -c $APP/config/unicorn.rb -D"
-PIDFILE=/opt/redmine-2.2.0/tmp/pids/$NAME.pid
-SCRIPTNAME=/etc/init.d/redmine
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
- # Return
- # 0 if daemon has been started
- # 1 if daemon was already running
- # 2 if daemon could not be started
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
- || return 1
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
- $DAEMON_ARGS \
- || return 2
- # Add code here, if necessary, that waits for the process to be ready
- # to handle requests from services started subsequently which depend
- # on this one. As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
- # Return
- # 0 if daemon has been stopped
- # 1 if daemon was already stopped
- # 2 if daemon could not be stopped
- # other if a failure occurred
- start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
- RETVAL="$?"
- [ "$RETVAL" = 2 ] && return 2
- # Wait for children to finish too if this is a daemon that forks
- # and if the daemon is only ever run from this initscript.
- # If the above conditions are not satisfied then add some other code
- # that waits for the process to drop all resources that could be
- # needed by services started subsequently. A last resort is to
- # sleep for some time.
- start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
- [ "$?" = 2 ] && return 2
- # Many daemons don'\''t delete their pidfiles when they exit.
- rm -f $PIDFILE
- return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
- #
- # If the daemon can reload its configuration without
- # restarting (for example, when it is sent a SIGHUP),
- # then implement that here.
- #
- start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
- return 0
-}
-
-case "$1" in
- start)
- [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
- do_start
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
- ;;
- stop)
- [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
- ;;
- status)
- status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
- ;;
- #reload|force-reload)
- #
- # If do_reload() is not implemented then leave this commented out
- # and leave '\''force-reload'\'' as an alias for '\''restart'\''.
- #
- #log_daemon_msg "Reloading $DESC" "$NAME"
- #do_reload
- #log_end_msg $?
- #;;
- restart|force-reload)
- #
- # If the "reload" option is implemented then remove the
- # '\''force-reload'\'' alias
- #
- log_daemon_msg "Restarting $DESC" "$NAME"
- do_stop
- case "$?" in
- 0|1)
- do_start
- case "$?" in
- 0) log_end_msg 0 ;;
- 1) log_end_msg 1 ;; # Old process is still running
- *) log_end_msg 1 ;; # Failed to start
- esac
- ;;
- *)
- # Failed to stop
- log_end_msg 1
- ;;
- esac
- ;;
- *)
- #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
- echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
- exit 3
- ;;
-esac
-
-:' > /etc/init.d/redmine
-chmod +x /etc/init.d/redmine
-# Backup default Nginx site and replace it
-cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_original
-rm /etc/nginx/sites-available/default
-# Create configuration file /etc/nginx/sites-available/default
-echo 'upstream unicorn_server {
- # This is the socket we configured in unicorn.rb
- server unix:/tmp/unicorn_rails.socket
- fail_timeout=0;
-}
-server {
- listen 80;
- #return 301 https://192.168.1.126$request_uri; # http://$hostname$request_uri; # idem #http://wiki.nginx.org/Pitfalls#Taxing_Rewrites
- charset utf-8;
- server_name localhost; # $hostname;
- root /var/www;
- access_log /var/log/nginx/yoursite.access.log;
- error_log /var/log/nginx/yoursite.error.log;
- #to enable correct use of response.static_version
- location ~* /(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
- alias /home/www-data/web2py/applications/$1/static/$2;
- expires max;
- }
- location ~^\/(?!redmine(.*)) {
- #uwsgi_pass 127.0.0.1:9001;
- uwsgi_pass unix:///tmp/web2py.socket;
- include uwsgi_params;
- uwsgi_param UWSGI_SCHEME $scheme;
- uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
- }
- location / {
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $http_host;
- proxy_redirect off;
-
- if (!-f $request_filename) {
- proxy_pass http://unicorn_server;
- break;
- }
- }
-}
-server {
- listen 443 default_server ssl;
- charset utf-8;
- server_name localhost; # $hostname;
- root /var/www;
- ssl_certificate /etc/nginx/ssl/self_signed.cert;
- ssl_certificate_key /etc/nginx/ssl/self_signed.key;
- ssl_prefer_server_ciphers on;
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
- ssl_ciphers ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA;
- ssl_protocols SSLv3 TLSv1;
- keepalive_timeout 70;
- location ~* /(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
- alias /home/www-data/web2py/applications/$1/static/$2;
- expires max;
- }
- location ~^\/(?!redmine(.*)) {
- #uwsgi_pass 127.0.0.1:9001;
- uwsgi_pass unix:///tmp/web2py.socket;
- include uwsgi_params;
- uwsgi_param UWSGI_SCHEME $scheme;
- uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
- }
- location / {
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $http_host;
- proxy_redirect off;
-
- if (!-f $request_filename) {
- proxy_pass http://unicorn_server;
- break;
- }
- }
-
-}' >/etc/nginx/sites-available/default
-
-#ln -s /etc/nginx/sites-available/web2py /etc/nginx/sites-enabled/web2py
-#rm /etc/nginx/sites-enabled/default
-
-# We copy ssl files we previously created
-if [ -f /etc/nginx/ssl ]
-then
- cp ~/self_signed.* /etc/nginx/ssl/
- rm ~/self_signed.*
-else
- mkdir /etc/nginx/ssl
- cp ~/self_signed.* /etc/nginx/ssl/
- rm ~/self_signed.*
-fi
-
-pip install setuptools --no-use-wheel --upgrade
-PIPPATH=`which pip`
-$PIPPATH install --upgrade uwsgi
-
-# Prepare folders for uwsgi
-sudo mkdir /etc/uwsgi
-sudo mkdir /var/log/uwsgi
-
-# Create configuration file /etc/uwsgi/web2py.xml
-echo '
- /tmp/web2py.socket
- /home/www-data/web2py/
- /=wsgihandler:application
-
- 4
- 60
- 8
- 1
- /tmp/stats.socket
- 2000
- 512
- 256
- 192
- www-data
- www-data
- 0 0 -1 -1 -1 python /home/www-data/web2py/web2py.py -Q -S welcome -M -R scripts/sessions2trash.py -A -o
-
-' > /etc/uwsgi/web2py.xml
-
-#Create a configuration file for uwsgi in emperor-mode
-#for Upstart in /etc/init/uwsgi-emperor.conf
-echo '# Emperor uWSGI script
-
-description "uWSGI Emperor"
-start on runlevel [2345]
-stop on runlevel [06]
-##
-#remove the comments in the next section to enable static file compression for the welcome app
-#in that case, turn on gzip_static on; on /etc/nginx/nginx.conf
-##
-#pre-start script
-# python /home/www-data/web2py/web2py.py -S welcome -R scripts/zip_static_files.py
-# chown -R www-data:www-data /home/www-data/web2py/*
-#end script
-respawn
-exec uwsgi --master --die-on-term --emperor /etc/uwsgi --logto /var/log/uwsgi/uwsgi.log
-' > /etc/init/uwsgi-emperor.conf
-# Install Web2py
-mkdir /home/www-data
-cd /home/www-data
-wget http://web2py.com/examples/static/web2py_src.zip
-unzip web2py_src.zip
-rm web2py_src.zip
-chown -R www-data:www-data web2py
-cd /home/www-data/web2py
-mv handlers/wsgihandler.py wsgihandler.py
-sudo -u www-data python -c "from gluon.main import save_password; save_password('$PW',443)"
-/etc/init.d/redmine start
-start uwsgi-emperor
-/etc/init.d/nginx restart
-ufw allow 80 # Or check your firewall configuration
diff --git a/scripts/setup-virtualenv-web2py.sh b/scripts/setup-virtualenv-web2py.sh
deleted file mode 100644
index 2141d277..00000000
--- a/scripts/setup-virtualenv-web2py.sh
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# Author: Christopher Steel
-# Organization: Voice of Access
-# Date: 2010-11-24
-# License: Same as Web2py, MIT / GNU
-# Email: Christopher DOT Steel AT Voice of Access DOT org
-#
-# This script will :
-# download and install virtualenv
-# start a virtual environment
-# move into the virtual environment
-# download and install latest stable version of web2py
-# start web2py in the virtual environment
-#
-# To disactivate the virtual environment, shut down web2py
-# and type 'disactivate' at the command line.
-#
-# Testing:
-# OS X
-# should work on POSIX systems
-#
-# Usage:
-# create a directory to hold your virtual environments, for example
-# /home/user_name/virtual_environments
-# place this script in the directory and make it executable
-# chmod +x web2py-install-virtualenv.sh
- customize the variables below to meet your needs
-# execute from terminal
-# ./web2py-install-virtualenv.sh
-# relax...
-
-################ VARIABLES
-# Change to reflect version changes etc.
-#
-# name for your virtual environment
-ENV=VIRTUAL_ENV
-# version to install
-APP_NAME=virtualenv
-VER=1.5.1
-DIR=${APP_NAME}-${VER}
-EXT=tar.gz
-ARCHIVE=${APP_NAME}-${VER}.${EXT}
-# md5 sum, see end of url from pypi
-MD5_SUM=3daa1f449d5d2ee03099484cecb1c2b7
-################
-#
-echo 'downloading' ${ARCHIVE}
-echo '================================'
-echo `wget http://pypi.python.org/packages/source/v/virtualenv/${ARCHIVE}`
-md5 ${ARCHIVE}
-echo 'MD5 ('${ARCHIVE}') =' ${MD5_SUM}
-echo 'unarchive' ${ARCHIVE}
-echo '================================='
-tar xvfz ${ARCHIVE}
-
-echo ' comparing md5 sums'
-echo '================================='
-md5 ${ARCHIVE}
-echo 'MD5 ('${ARCHIVE}') =' ${MD5_SUM}
-
-#echo 'installing compatibility modules'
-#echo '================================'
-#virtualenv/bin/easy_install -U pysqlite hashlib
-
-#echo 'Installing distribute'
-#echo '====================='
-#echo 'Creating Environment'
-#echo '====================='
-#echo `python ./${DIRAPP_NAME}-${VER}/virtualenv.py --distribute ${ENV}`
-
-echo 'Start virtual environment'
-echo '========================='
-virtualenv --no-site-packages ${ENV}
-
-RUN_THIS='source ${ENV}/bin/activate'
-`echo source ${ENV}/bin/activate`
-
-echo 'Moving into virtual environment directory'
-echo '========================================='
-cd ${ENV}
-
-echo 'downloading web2py'
-echo '=================='
-wget http://web2py.com/examples/static/web2py_src.zip
-unzip web2py_src.zip
-cd web2py
-
-echo 'to deactivate your virtual environment'
-echo 'shutdown web2py and then type "deactivate"'
-echo '=========================================='
-read -p "Press any key to start web2py…"
-
-
-echo 'starting web2py'
-echo '==============='
-../bin/python2.5 web2py.py
diff --git a/scripts/update_web2py.py b/scripts/update_web2py.py
deleted file mode 100644
index a570ced6..00000000
--- a/scripts/update_web2py.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
-crontab -e
-* 3 * * * root path/to/this/file
-"""
-
-USER = 'www-data'
-TMPFILENAME = 'web2py_src_update.zip'
-
-import sys
-import os
-import urllib
-import zipfile
-
-if len(sys.argv) > 1 and sys.argv[1] == 'nightly':
- version = 'http://web2py.com/examples/static/nightly/web2py_src.zip'
-else:
- version = 'http://web2py.com/examples/static/web2py_src.zip'
-
-realpath = os.path.realpath(__file__)
-path = os.path.dirname(os.path.dirname(os.path.dirname(realpath)))
-os.chdir(path)
-try:
- old_version = open('web2py/VERSION', 'r').read().strip()
-except IOError:
- old_version = ''
-open(TMPFILENAME, 'wb').write(urllib.urlopen(version).read())
-new_version = zipfile.ZipFile(TMPFILENAME).read('web2py/VERSION').strip()
-if new_version > old_version:
- os.system('sudo -u %s unzip -o %s' % (USER, TMPFILENAME))
- os.system('apachectl restart | apache2ctl restart')
diff --git a/scripts/writedoc.py b/scripts/writedoc.py
deleted file mode 100644
index da433504..00000000
--- a/scripts/writedoc.py
+++ /dev/null
@@ -1,41 +0,0 @@
-import os
-import sys
-import glob
-sys.path.append(os.path.join(os.path.split(__file__)[0],'..'))
-from gluon.html import CODE
-
-def main(path):
- models = glob.glob(os.path.join(path,'models','*.py'))
- controllers = glob.glob(os.path.join(path,'controllers','*.py'))
- views = glob.glob(os.path.join(path,'views','*.html'))
- modules = glob.glob(os.path.join(path,'modules','*.py'))
- models.sort()
- controllers.sort()
- views.sort()
- modules.sort()
- print ''
- print 'Models
'
- for filename in models:
- print '%s
' % filename[len(path):]
- print CODE(open(filename).read(),language='web2py').xml()
- print 'Layout Views
'
- for filename in views:
- print '%s
' % filename[len(path):]
- print CODE(open(filename).read(),language='html').xml()
- print 'Controllers and Views
'
- for filename in controllers:
- print '%s
' % filename[len(path):]
- print CODE(open(filename).read(),language='web2py')
- views = glob.glob(os.path.join(path,'views','*','*.html'))
- views.sort()
- for filename in views:
- print '%s
' % filename[len(path):]
- print CODE(open(filename).read(),language='html').xml()
- print 'Modules
'
- for filename in modules:
- print '%s
' % filename[len(path):]
- print CODE(open(filename).read(),language='python').xml()
- print ''
-
-if __name__=='__main__':
- main(sys.argv[1])
diff --git a/scripts/zip_static_files.py b/scripts/zip_static_files.py
deleted file mode 100644
index 57054e5b..00000000
--- a/scripts/zip_static_files.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-## launch with python web2py.py -S myapp -R scripts/zip_static_files.py
-
-
-import os
-import gzip
-
-
-def zip_static(filelist=[]):
- tsave = 0
- for fi in filelist:
- extension = os.path.splitext(fi)
- extension = len(extension) > 1 and extension[1] or None
- if not extension or extension not in ALLOWED_EXTS:
- print 'skipping %s' % os.path.basename(fi)
- continue
- fstats = os.stat(fi)
- atime, mtime = fstats.st_atime, fstats.st_mtime
- gfi = fi + '.gz'
- if os.path.isfile(gfi):
- zstats = os.stat(gfi)
- zatime, zmtime = zstats.st_atime, zstats.st_mtime
- if zatime == atime and zmtime == mtime:
- print 'skipping %s, already gzipped to the latest version' % os.path.basename(fi)
- continue
- print 'gzipping %s to %s' % (
- os.path.basename(fi), os.path.basename(gfi))
- f_in = open(fi, 'rb')
- f_out = gzip.open(gfi, 'wb')
- f_out.writelines(f_in)
- f_out.close()
- f_in.close()
- os.utime(gfi, (atime, mtime))
- saved = fstats.st_size - os.stat(gfi).st_size
- tsave += saved
-
- print 'saved %s KB' % (int(tsave) / 1000.0)
-
-if __name__ == '__main__':
- ALLOWED_EXTS = ['.css', '.js']
- static_path = os.path.abspath(os.path.join(request.folder, 'static'))
- filelist = []
- for root, dir, files in os.walk(static_path):
- for file in files:
- filelist.append(os.path.join(root, file))
-
- zip_static(filelist)