diff --git a/dotorgredirect/.htaccess b/dotorgredirect/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/films/.htaccess b/dotorgredirect/films/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/films/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/films/index.php b/dotorgredirect/films/index.php
deleted file mode 100644
index 6ecb970..0000000
--- a/dotorgredirect/films/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/heavy/.htaccess b/dotorgredirect/heavy/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/heavy/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/heavy/index.php b/dotorgredirect/heavy/index.php
deleted file mode 100644
index d0d3007..0000000
--- a/dotorgredirect/heavy/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/index.php b/dotorgredirect/index.php
deleted file mode 100644
index 2af62ae..0000000
--- a/dotorgredirect/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/nohix/.htaccess b/dotorgredirect/nohix/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/nohix/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/nohix/index.php b/dotorgredirect/nohix/index.php
deleted file mode 100644
index 9ce44be..0000000
--- a/dotorgredirect/nohix/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/oldsites/.htaccess b/dotorgredirect/oldsites/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/oldsites/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/oldsites/index.php b/dotorgredirect/oldsites/index.php
deleted file mode 100644
index edc1407..0000000
--- a/dotorgredirect/oldsites/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/pictures/.htaccess b/dotorgredirect/pictures/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/pictures/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/pictures/index.php b/dotorgredirect/pictures/index.php
deleted file mode 100644
index a3027c6..0000000
--- a/dotorgredirect/pictures/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/projects/.htaccess b/dotorgredirect/projects/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/projects/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/projects/index.php b/dotorgredirect/projects/index.php
deleted file mode 100644
index 73bb330..0000000
--- a/dotorgredirect/projects/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/roptoligs/.htaccess b/dotorgredirect/roptoligs/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/roptoligs/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/roptoligs/index.php b/dotorgredirect/roptoligs/index.php
deleted file mode 100644
index 19c8b95..0000000
--- a/dotorgredirect/roptoligs/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/suum/.htaccess b/dotorgredirect/suum/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/suum/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/suum/index.php b/dotorgredirect/suum/index.php
deleted file mode 100644
index 6f3a9ab..0000000
--- a/dotorgredirect/suum/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/dotorgredirect/words/.htaccess b/dotorgredirect/words/.htaccess
deleted file mode 100644
index a83a189..0000000
--- a/dotorgredirect/words/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-ErrorDocument 404 /index.php
diff --git a/dotorgredirect/words/index.php b/dotorgredirect/words/index.php
deleted file mode 100644
index 3bf1834..0000000
--- a/dotorgredirect/words/index.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/subsites/lunchuman-apache b/subsites/lunchuman-apache
deleted file mode 100644
index 782e9df..0000000
--- a/subsites/lunchuman-apache
+++ /dev/null
@@ -1,63 +0,0 @@
-WSGIDaemonProcess lunchuman.metanohi.name processes=1 threads=1 display-name=%{GROUP}
-WSGIProcessGroup lunchuman.metanohi.name
-WSGIScriptAlias / /home/niels/www/meta/subsites/lunchuman/lunchuman.wsgi
-
-
-
- ServerName datalosjen.metanohi.name
- ServerAlias www.datalosjen.metanohi.name datalosjen.lcl
- ServerAdmin ngws@metanohi.name
-
- DocumentRoot /home/niels/www/meta/subsites/lunchuman
-
- Alias /robots.txt /home/niels/www/meta/subsites/lunchuman/robots.txt
- Alias /favicon.ico /home/niels/www/meta/subsites/lunchuman/favicon.ico
- Alias /favicon.png /home/niels/www/meta/subsites/lunchuman/favicon.png
- Alias /static /home/niels/www/meta/subsites/lunchuman/static
- Alias /media /home/niels/www/meta/subsites/lunchuman/media
- Alias /lunchuman.wsgi /home/niels/www/meta/subsites/lunchuman/lunchuman.wsgi
- Alias /apache-config-template /home/niels/www/meta/subsites/lunchuman/apache-config-template
-
-
- Order allow,deny
- Allow from all
-
-
- LogLevel warn
- ErrorLog /var/log/apache2/lunchuman.metanohi.name-error.log
- CustomLog /var/log/apache2/lunchuman.metanohi.name-access.log combined
-
-
-
-
-
- ServerName datalosjen.metanohi.name
- ServerAlias www.datalosjen.metanohi.name datalosjen.lcl
- ServerAdmin ngws@metanohi.name
-
- DocumentRoot /home/niels/www/meta/subsites/lunchuman
-
- Alias /robots.txt /home/niels/www/meta/subsites/lunchuman/robots.txt
- Alias /favicon.ico /home/niels/www/meta/subsites/lunchuman/favicon.ico
- Alias /favicon.png /home/niels/www/meta/subsites/lunchuman/favicon.png
- Alias /static /home/niels/www/meta/subsites/lunchuman/static
- Alias /media /home/niels/www/meta/subsites/lunchuman/media
- Alias /lunchuman.wsgi /home/niels/www/meta/subsites/lunchuman/lunchuman.wsgi
- Alias /apache-config-template /home/niels/www/meta/subsites/lunchuman/apache-config-template
-
-
- Order allow,deny
- Allow from all
-
-
- LogLevel warn
- ErrorLog /var/log/apache2/lunchuman.metanohi.name-error.log
- CustomLog /var/log/apache2/lunchuman.metanohi.name-access.log combined
-
- SSLEngine on
- SSLCertificateFile /home/niels/www/meta/metanohi_server.pem
- SSLCertificateKeyFile /home/niels/www/meta/metanohi_privatekey.pem
- SSLCipherSuite HIGH
- SSLProtocol all -SSLv2
-
-
\ No newline at end of file
diff --git a/subsites/lunchuman/.gitignore b/subsites/lunchuman/.gitignore
deleted file mode 100644
index 0d8388f..0000000
--- a/subsites/lunchuman/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.dynamicsettings
-/.old
-/lunchuman.sqlite
-/media
\ No newline at end of file
diff --git a/subsites/lunchuman/apache-config-template b/subsites/lunchuman/apache-config-template
deleted file mode 100644
index c434db8..0000000
--- a/subsites/lunchuman/apache-config-template
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- ServerName lunchuman.example.org
- ServerAlias www.lunchuman.example.org
- ServerAdmin webmaster@example.org
-
- DocumentRoot /path/to/dir/of/lunchuman
-
- Alias /robots.txt /path/to/dir/of/lunchuman/robots.txt
- Alias /favicon.ico /path/to/dir/of/lunchuman/favicon.ico
- Alias /favicon.png /path/to/dir/of/lunchuman/favicon.png
- Alias /static /path/to/dir/of/lunchuman/static
- Alias /lunchuman.wsgi /path/to/dir/of/lunchuman/lunchuman.wsgi
- Alias /apache-config-template /path/to/dir/of/lunchuman/apache-config-template
-
-
- Order allow,deny
- Allow from all
-
-
- WSGIDaemonProcess lunchuman.example.org processes=2 threads=15 display-name=%{GROUP}
- WSGIProcessGroup lunchuman.example.org
-
- WSGIScriptAlias / /path/to/dir/of/lunchuman/lunchuman.wsgi
-
- LogLevel warn
- ErrorLog /var/log/apache2/lunchuman.example.org-error.log
- CustomLog /var/log/apache2/lunchuman.example.org-access.log combined
-
-
diff --git a/subsites/lunchuman/frontpage.html b/subsites/lunchuman/frontpage.html
deleted file mode 100644
index 8a5907e..0000000
--- a/subsites/lunchuman/frontpage.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
Update user data
-
-
-
-
-Add user
-
-
-
-
-Log
-
-
-{log}
-
-
-
-Image gallery
-
-Datalosjen haz pics.
-
-
-FAQ
-
-Question: What is one food?
-Answer: 1 meal = 1 food, unless you eat a lot (> 5
- rugbrødsstykker), in which case 1 meal = 2 foods.
-
-Question: The words "foods" and "moneys" are incorrect. Why
- do you use them?
-Answer: In the domain of this lunch club, they are correct.
-
-
-Tihs is not a typo.
-
diff --git a/subsites/lunchuman/lunchuman.config b/subsites/lunchuman/lunchuman.config
deleted file mode 100644
index 54fa3d3..0000000
--- a/subsites/lunchuman/lunchuman.config
+++ /dev/null
@@ -1,4 +0,0 @@
-[lunchuman]
-
-name = Datalosjen
-
diff --git a/subsites/lunchuman/lunchuman.wsgi b/subsites/lunchuman/lunchuman.wsgi
deleted file mode 100644
index 8732efc..0000000
--- a/subsites/lunchuman/lunchuman.wsgi
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python3
-
-# lunchuman.wsgi: a WSGI script for managing a simple lunch club
-# Copyright (C) 2012 Niels G. W. Serup
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public
-# License along with this program. If not, see
-# .
-
-## Version: 0.1.0
-## Maintainer: Niels G. W. Serup
-## Temporary website: http://datalosjen.metanohi.name/static/source/lunchuman
-
-import sys
-import os
-import bottle
-from bottle import route, abort, error, request, redirect
-import sqlite3
-import datetime
-import threading
-import itertools
-import atexit
-import pickle
-import configparser
-import locale
-import traceback
-
-_preferred_encoding = 'utf-8' # locale.getpreferredencoding() # fail
-_absfile = os.path.abspath(__file__)
-_filedir = os.path.dirname(_absfile)
-_configfile_name = 'lunchuman.config'
-
-def start_bottle():
- global application
- application = bottle.default_app()
-
-def block():
- threading.Event().wait()
-
-with open(os.path.join(_filedir, '.dynamicsettings'), 'rb') as f:
- dynamic_settings = pickle.load(f)
-
-if dynamic_settings['status'] == 'stop':
- start_bottle()
- block()
-
-
-class LunchumanDatabase:
- def __init__(self, fname):
- self.dbfile = fname
-
- def load(self):
- self.conn = sqlite3.connect(self.dbfile)
- self.cursor = self.conn.cursor()
- self._create()
-
- def close(self):
- self.conn.close()
-
- def _create(self):
- self.cursor.execute('''
-create table if not exists users (
-id integer primary key autoincrement,
-name text,
-moneys int,
-foods int
-)
-''')
- self.cursor.execute('''
-create table if not exists actions (
-id integer primary key autoincrement,
-action_when datetime,
-action text
-)
-''')
- self.conn.commit()
-
- def get_users(self):
- self.cursor.execute('select * from users order by moneys / (foods * 1.0) desc')
- return self.cursor.fetchall()
-
- def add_user(self, name):
- self.cursor.execute('insert into users values (NULL, ?, 0, 0)', (name,))
- self.log('new user created: {}'.format(repr(name)))
- self.conn.commit()
-
- def log(self, msg):
- self.cursor.execute('insert into actions values (NULL, ?, ?)',
- (datetime.datetime.utcnow(), msg))
- self.conn.commit()
-
- def get_log(self):
- self.cursor.execute('select * from actions order by action_when desc')
- return self.cursor.fetchall()
-
- def update_user_data(self, *users):
- log_msg = []
- for id, new_name, moneys_incr, foods_incr in users:
- try:
- foods_incr = int(foods_incr)
- except ValueError:
- foods_incr = 0
- try:
- moneys_incr = int(moneys_incr)
- except ValueError:
- moneys_incr = 0
- self.cursor.execute('select name from users where id=?', (id,))
- old_name = self.cursor.fetchone()[0]
- self.cursor.execute('''
-update users set name=?, moneys=moneys + (?), foods=foods + (?)
-where id=?
-''', (new_name, moneys_incr, foods_incr, id))
- loclog = []
- if old_name != new_name:
- loclog.append('change name to {}'.format(new_name))
- if foods_incr > 0:
- loclog.append('eat {} foods'.format(foods_incr))
- elif foods_incr < 0:
- loclog.append('uneat {} foods'.format(-foods_incr))
- if moneys_incr > 0:
- loclog.append('spend {} moneys'.format(moneys_incr))
- elif moneys_incr < 0:
- loclog.append('unspend {} moneys'.format(-moneys_incr))
- if loclog:
- log_msg.append('{} do:\n'.format(old_name)
- + ' ' + '\n '.join(loclog))
- if log_msg:
- self.log('\n'.join(log_msg))
- self.conn.commit()
-
-def add_settings_from_file(fname, settings):
- cfg = configparser.SafeConfigParser(settings)
- cfg.add_section('lunchuman')
- cfg.read(os.path.join(_filedir, fname))
- return {name: value for name, value in cfg.items('lunchuman')}
-
-def dictpair(*ds):
- return {key: val for key, val
- in itertools.chain(*(d.items() for d in ds))}
-
-def read_file(locpath):
- with open(os.path.join(_filedir, locpath), 'rb') as f:
- return f.read().decode(_preferred_encoding)
-
-def get_seq_input(d, base_key):
- i = 0
- xs = []
- while True:
- try:
- xs.append(d['{}[{}]'.format(base_key, i)])
- except KeyError:
- break
- i += 1
- return xs
-
-settings = add_settings_from_file(
- _configfile_name, {
- 'name': 'Lunchuman',
- 'dbfile': 'lunchuman.sqlite',
- 'template': 'template.html',
- 'frontpage': 'frontpage.html'
- })
-
-_template = read_file(settings['template'])
-_userdata_template = '''
-
-
-
- |
- {moneys} + |
- {foods} + |
- {goodwill} |
-
-'''
-_frontpage = _template.format(**dictpair(settings, {
- 'content': read_file(settings['frontpage']),
- 'headextra': ""
- }))
-
-db = LunchumanDatabase(os.path.join(_filedir, settings['dbfile']))
-#atexit.register(db.close)
-db.load()
-
-
-@route('/')
-def frontpage():
- users = db.get_users()
- userdata = '\n'.join(_userdata_template.format(
- id=users[i][0], name=repr(users[i][1]), moneys=users[i][2],
- foods=users[i][3], i=i, goodwill=('{:.2f}'.format(
- users[i][2] / users[i][3]) if users[i][3] > 0
- else None))
- for i in range(len(users)))
- log = '\n\n'.join('{} UTC:\n{}'.format(*row[1:]) for row in db.get_log())
- return _frontpage.format(userdata=userdata, log=log)
-
-@route('/adduser', method='post')
-def add_user():
- db.add_user(request.forms['name'])
- redirect('/')
-
-@route('/updateuserdata', method='post')
-def update_user_data():
- try:
- users = (vals[1:] for vals in
- filter(lambda vals: vals[0] != vals[2] or
- (vals[3] != '0' and vals[3] != '') or
- (vals[4] != '0' and vals[4] != ''),
- zip(*(get_seq_input(request.forms, attr)
- for attr in ('orig_name', 'id', 'new_name',
- 'moneys_incr', 'foods_incr')))))
- db.update_user_data(*users)
- except Exception:
- traceback.print_exc()
- redirect('/')
-
-
-start_bottle()
diff --git a/subsites/lunchuman/manage b/subsites/lunchuman/manage
deleted file mode 100755
index e000089..0000000
--- a/subsites/lunchuman/manage
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python3
-
-import sys
-import os
-import pickle
-
-_absfile = os.path.abspath(__file__)
-_filedir = os.path.dirname(_absfile)
-dfile = os.path.join(_filedir, '.dynamicsettings')
-
-def write(data):
- with open(dfile, 'wb') as f:
- pickle.dump(data, f)
-
-def touch(fname):
- if os.path.exists(fname):
- return os.utime(fname, None)
- else:
- with open(path, 'w'):
- pass
-
-def _traverse(xs):
- for x in xs:
- pass
-
-def act(d):
- try:
- d[sys.argv[1]]()
- except (IndexError, KeyError):
- print('unknown command', file=sys.stderr)
- print_help()
-
-def print_help():
- print('''
-Run one of:
- stop
- start
- restart
-''')
-
-if __name__ == '__main__':
- act({
- 'stop': lambda: write({'status': 'stop'}),
- 'start': lambda: write({'status': 'running'}),
- 'restart': lambda: _traverse(
- f() for f in (lambda: write({'status': 'running'}),
- lambda: touch(dfile))),
- 'help': print_help, '-h': print_help, '--help': print_help
- })
diff --git a/subsites/lunchuman/robots.txt b/subsites/lunchuman/robots.txt
deleted file mode 100644
index 7d329b1..0000000
--- a/subsites/lunchuman/robots.txt
+++ /dev/null
@@ -1 +0,0 @@
-User-agent: *
diff --git a/subsites/lunchuman/static/front.js b/subsites/lunchuman/static/front.js
deleted file mode 100644
index be0ea91..0000000
--- a/subsites/lunchuman/static/front.js
+++ /dev/null
@@ -1,19 +0,0 @@
-create_listener = function(elem) {
- var listener = function() {
- elem.value = '';
- elem.removeEventListener('focus', listener, false);
- };
- return listener;
-}
-
-prepare_delete_onfocus = function() {
- var elems, elemI, elem, listener;
- elems = document.getElementsByClassName('deleteonfocus');
- for (elemI in elems) {
- elem = elems[elemI];
- elem.addEventListener('focus', create_listener(elem), false);
- }
-}
-
-window.onload = function(event) {prepare_delete_onfocus();}
-
diff --git a/subsites/lunchuman/static/lunchuman b/subsites/lunchuman/static/lunchuman
deleted file mode 120000
index b8df013..0000000
--- a/subsites/lunchuman/static/lunchuman
+++ /dev/null
@@ -1 +0,0 @@
-/home/niels/www/meta/subsites/lunchuman
\ No newline at end of file
diff --git a/subsites/lunchuman/static/screen.css b/subsites/lunchuman/static/screen.css
deleted file mode 100644
index 34e8ec0..0000000
--- a/subsites/lunchuman/static/screen.css
+++ /dev/null
@@ -1,57 +0,0 @@
-#header
-{
- background-color: pink;
- color: green;
- text-decoration: blink;
- text-align: right;
-}
-
-#content
-{
-
-}
-
-#footer
-{
- border-top: 1px black solid;
- margin-top: 20px;
-}
-
-
-
-table {
- margin: 5px auto;
- border-collapse: collapse;
-}
-
-table, thead, tbody, tfoot, td, th {
- border-style: inset;
- border-color: black;
-}
-
-td, th {
- margin: 0 5px;
- padding: 1px 3px;
- border-width: 0 2px 0 0;
-}
-
-td:last-child, th:last-child {
- border-width: 0;
-}
-
-table, tbody {
- border-width: 0;
-}
-
-thead {
- border-width: 0 0 2px 0;
-}
-
-tfoot {
- border-width: 2px 0 0 0;
-}
-
-thead, tfoot {
- font-weight: bold;
-}
-
diff --git a/subsites/lunchuman/static/source b/subsites/lunchuman/static/source
deleted file mode 120000
index 945c9b4..0000000
--- a/subsites/lunchuman/static/source
+++ /dev/null
@@ -1 +0,0 @@
-.
\ No newline at end of file
diff --git a/subsites/lunchuman/template.html b/subsites/lunchuman/template.html
deleted file mode 100644
index fe713d0..0000000
--- a/subsites/lunchuman/template.html
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
- {name}
-
-
-
-
-
- {headextra}
-
-
-
-
-
- {content}
-
-
-
-
-
-
diff --git a/subsites/roptoligs-apache b/subsites/roptoligs-apache
deleted file mode 100644
index 254b564..0000000
--- a/subsites/roptoligs-apache
+++ /dev/null
@@ -1,43 +0,0 @@
-
- ServerName roptoligs.metanohi.name
- ServerAlias www.roptoligs.metanohi.name roptoligs.lcl
- ServerAdmin ngws@metanohi.name
-
- DocumentRoot /home/niels/www/meta/subsites/roptoligs
-
- Options Indexes Includes FollowSymLinks MultiViews
- AllowOverride All
- Order allow,deny
- allow from all
-
-
- LogLevel warn
- ErrorLog /var/log/apache2/roptoligs.metanohi.name-error.log
- CustomLog /var/log/apache2/roptoligs.metanohi.name-access.log combined
-
-
-
-
- ServerName roptoligs.metanohi.name
- ServerAlias www.roptoligs.metanohi.name roptoligs.lcl
- ServerAdmin ngws@metanohi.name
-
- DocumentRoot /home/niels/www/meta/subsites/roptoligs
-
- Options Indexes Includes FollowSymLinks MultiViews
- AllowOverride All
- Order allow,deny
- allow from all
-
-
- LogLevel warn
- ErrorLog /var/log/apache2/roptoligs.metanohi.name-error.log
- CustomLog /var/log/apache2/roptoligs.metanohi.name-access.log combined
-
- SSLEngine on
- SSLCertificateFile /home/niels/www/meta/metanohi_server.pem
- SSLCertificateKeyFile /home/niels/www/meta/metanohi_privatekey.pem
- SSLCipherSuite HIGH
- SSLProtocol all -SSLv2
-
-