OSDN Git Service

First Commit
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 5 Nov 2016 04:25:32 +0000 (13:25 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 5 Nov 2016 04:25:32 +0000 (13:25 +0900)
44 files changed:
pybbs.py [new file with mode: 0644]
pybbs/.DS_Store [new file with mode: 0644]
pybbs/archives.htm [new file with mode: 0755]
pybbs/login.htm [new file with mode: 0755]
pybbs/mentenance.htm [new file with mode: 0755]
pybbs/modules/admin.htm [new file with mode: 0755]
pybbs/modules/content.htm [new file with mode: 0644]
pybbs/modules/footer.htm [new file with mode: 0644]
pybbs/modules/full.htm [new file with mode: 0644]
pybbs/modules/index.htm [new file with mode: 0755]
pybbs/modules/search.htm [new file with mode: 0755]
pybbs/mysearch.htm [new file with mode: 0644]
pybbs/regist.htm [new file with mode: 0755]
pybbs/setup.htm [new file with mode: 0755]
pybbs/top.htm [new file with mode: 0644]
static/css/main.css [new file with mode: 0755]
static/css/smart.css [new file with mode: 0755]
static/css/tablet.css [new file with mode: 0755]
static/data/db/WiredTiger [new file with mode: 0644]
static/data/db/WiredTiger.lock [new file with mode: 0644]
static/data/db/WiredTiger.turtle [new file with mode: 0644]
static/data/db/WiredTiger.wt [new file with mode: 0644]
static/data/db/WiredTigerLAS.wt [new file with mode: 0644]
static/data/db/_mdb_catalog.wt [new file with mode: 0644]
static/data/db/collection-0-7954438521121372033.wt [new file with mode: 0644]
static/data/db/collection-0-8598528902449844004.wt [new file with mode: 0644]
static/data/db/collection-2-7954438521121372033.wt [new file with mode: 0644]
static/data/db/collection-2-8598528902449844004.wt [new file with mode: 0644]
static/data/db/diagnostic.data/metrics.2016-11-02T08-39-41Z-00000 [new file with mode: 0644]
static/data/db/diagnostic.data/metrics.2016-11-02T09-59-41Z-00000 [new file with mode: 0644]
static/data/db/diagnostic.data/metrics.2016-11-02T20-35-44Z-00000 [new file with mode: 0644]
static/data/db/diagnostic.data/metrics.2016-11-02T21-12-53Z-00000 [new file with mode: 0644]
static/data/db/diagnostic.data/metrics.interim [new file with mode: 0644]
static/data/db/index-1-7954438521121372033.wt [new file with mode: 0644]
static/data/db/index-1-8598528902449844004.wt [new file with mode: 0644]
static/data/db/index-3-7954438521121372033.wt [new file with mode: 0644]
static/data/db/index-3-8598528902449844004.wt [new file with mode: 0644]
static/data/db/journal/WiredTigerLog.0000000004 [new file with mode: 0644]
static/data/db/journal/WiredTigerPreplog.0000000001 [new file with mode: 0644]
static/data/db/journal/WiredTigerPreplog.0000000002 [new file with mode: 0644]
static/data/db/mongod.lock [new file with mode: 0644]
static/data/db/sizeStorer.wt [new file with mode: 0644]
static/data/db/storage.bson [new file with mode: 0644]
static/js/script.js [new file with mode: 0644]

diff --git a/pybbs.py b/pybbs.py
new file mode 100644 (file)
index 0000000..7a74474
--- /dev/null
+++ b/pybbs.py
@@ -0,0 +1,217 @@
+'''
+Created on 2016/10/23
+
+@author: fukemasashi
+'''
+import os.path
+import tornado.auth
+import tornado.escape
+import tornado.httpserver
+import tornado.ioloop
+import tornado.options
+import tornado.web
+from tornado.options import define,options
+import pymongo
+from datetime import datetime
+
+define('port',default=8000,help='run on the given port.',type=int)
+
+class BaseHandler(tornado.web.RequestHandler):
+    def get_current_user(self):
+        user = self.get_secure_cookie('admin_user')
+        return tornado.escape.utf8(user)
+    
+    def set_current_user(self,username):
+        self.set_secure_cookie('admin_user',username)
+        
+    def clear_current_user(self):
+        self.clear_cookie('admin_user')
+
+class IndexHandler(tornado.web.RequestHandler):
+    def get(self,dbname,page='0'):
+        if self.application.collection(dbname) == False:
+            self.render('regist.htm',content='urlが見つかりません')
+            return
+        params = self.application.db['params'].find_one()  
+        i = params['count']      
+        na = self.get_cookie('username')
+        pos = self.application.gpos(page)
+        col = self.application.db[dbname]
+        rec = col.find()
+        rec.sort('number')
+        start = (pos-1)*i
+        if start < 0:
+            start = col.count()-i
+            if start < 0:
+                start = 0
+        rec.limit(i)[start:start+i]
+        if col.count() >= 10*i:
+            self.render('modules/full.htm',position=pos,records=rec,data=params,db=dbname)
+            return  
+        self.render('modules/index.htm',position=pos,records=rec,data=params,username=na,db=dbname)
+        
+class LoginHandler(BaseHandler):
+    def get(self):
+        self.render('login.htm')
+        
+    def post(self):
+        pw = self.application.db['params'].find_one()
+        if self.get_argument('password') == pw['password']:
+            self.set_current_user('admin')
+        dbname = self.get_argument('record')
+        self.redirect('/'+dbname+'/admin/0/')
+        
+class LogoutHandler(BaseHandler):
+    def get(self):
+        self.clear_current_user()
+        db = self.get_argument('db')
+        self.redirect('/'+db)
+        
+class NaviHandler(tornado.web.RequestHandler):
+    def get(self):
+        coll = self.application.db.collection_names(include_system_collections=False)
+        self.render('top.htm',coll=coll)
+
+class RegistHandler(tornado.web.RequestHandler):
+    def post(self,dbname):
+        if self.application.collection(dbname) == False:
+            self.render('regist.htm',content='urlが存在しません')
+            return 
+        na = self.get_argument('name')
+        sub = self.get_argument('title')
+        com = self.get_argument('comment')
+        text = ''
+        i = 0
+        for line in com.splitlines(True):
+            text = text+'<p>'+line
+            i += len(line)
+        pw = self.get_argument('password')
+        if na == '':
+            na = u'誰かさん'
+        if sub == '':
+            sub = u'タイトルなし.'
+        error = ''
+        if i == 0:
+            error = error + u'本文がありません.'
+        elif i > 1000:
+            error = error +u'文字数が1,000をこえました.'
+        words = ['<link','<script','<style']
+        for word in words:
+            if word == com:
+                error = error + u'タグ違反.'
+        article = self.application.db[dbname]
+        rec = article.find()
+        rec.sort('number',-1)
+        if article.count() == 0:
+            no = 1
+        else:
+            item = rec.limit(1)[0]
+            no = item['number']+1
+        if error == '':
+            reg = {'number':no,'name':na,'title':sub,'comment':text,'password':pw,'date':datetime.now()}
+            article.insert(reg)
+            self.set_cookie('username',na)
+            self.redirect('/'+dbname+'#article')
+        else:
+            self.render('regist.htm',content=error)
+
+class AdminHandler(BaseHandler):
+    @tornado.web.authenticated               
+    def get(self,dbname,page='0'):
+        if dbname == '':
+            dbname = self.get_argument('record')
+        if self.application.collection(dbname) == False:
+            self.render('regist.htm',content='urlが見つかりません')
+            return
+        self.check_xsrf_cookie()
+        coll = self.application.db[dbname] 
+        rec = coll.find()                   
+        param = self.application.db['params']
+        mente = param.find_one()
+        pos = self.application.gpos(page)
+        self.render('modules/admin.htm',position=pos,records=rec,mente=mente['mentenance'],password=mente['password'],db=dbname)
+
+class AdminConfHandler(BaseHandler):
+    @tornado.web.authenticated
+    def post(self,dbname,func):
+        if func == 'set':
+            coll = self.application.db['params']
+            mente = coll.find_one()
+            mente['mentenance'] = self.get_argument('mente')  
+            mente['password'] = self.get_argument('pass')
+            coll.save(mente)     
+        elif func == 'del':
+            coll = self.application.db[dbname]
+            for x in self.get_arguments():
+                rec = coll.find_one({'number',x})
+                if rec:
+                    coll.remove(rec)
+        self.redirect('/'+dbname+'/admin/0/')
+          
+class UserHandler(tornado.web.RequestHandler):
+    def post(self):
+        num = self.get_argument('number')
+        pas = self.get_argument('password')
+        coll = self.application.db['records']
+        if pas != '':
+            coll.remove({'number':num,'password':pas})
+        self.redirect('/')
+      
+class SearchHandler(tornado.web.RequestHandler):       
+    def post(self,dbname):
+        word = self.get_argument('word1')
+        radiobox = self.get_argument('filter')
+        rec = self.application.db['records']
+        if radiobox == 'name': 
+            searchrec = rec.find({'name':word})
+        elif radiobox == 'com':
+            searchrec = rec.find({'comment':word})
+        self.render('modules/search.htm',records=searchrec,word1=word,db=dbname)
+    
+    def get(self,dbname):
+        word = self.get_cookie('search')
+        self.render('modules/search.htm',records={},word1=word,db=dbname)
+        
+class FooterModule(tornado.web.UIModule):
+    def render(self,number,url,link):
+        return self.render_string('modules/footer.htm',index=number,url=url,link=link)
+    
+class Applications(tornado.web.Application):    
+    def __init__(self):
+        client = pymongo.MongoClient()
+        self.db = client['mydatabase']
+        handlers = [(r'/',NaviHandler),(r'/login',LoginHandler),(r'/logout',LogoutHandler),(r'/([a-z]+)',IndexHandler),(r'/([a-z]+)/([0-9]+)/',IndexHandler),
+                    (r'/([a-z]+)/admin/([0-9]+)/',AdminHandler),(r'/([a-z]+)/admin/([a-z]+)/',AdminConfHandler),(r'/userdel',UserHandler),
+                    (r'/([a-z]+)/search',SearchHandler),(r'/([a-z]+)/regist',RegistHandler)]
+        settings = {'template_path':os.path.join(os.path.dirname(__file__),'pybbs'),
+                        'static_path':os.path.join(os.path.dirname(__file__),'static'),
+                        'ui_modules':{'Footer':FooterModule},
+                        'cookie_secret':'bZJc2sWbQLKos6GkHn/VB9oXwQt8SOROkRvJ5/xJ89E=',
+                       # 'xsrf_cookies':True,
+                        'debug':True,
+                        'login_url':'/login'
+                        }
+        tornado.web.Application.__init__(self,handlers,**settings)
+    def gpos(self,page):
+        coll = self.db['params']
+        params = coll.find_one()
+        pos = int(page)
+        if pos <= 0:
+            pos = 0
+        elif (pos-1)*params['count'] >= self.db['records'].count():
+            pos = 0
+        return pos
+    
+    def collection(self,name):
+        for x in self.db.collection_names():
+            if x == name:
+                return True
+        else:
+            return False
+        
+if __name__ == '__main__':
+    tornado.options.parse_command_line()
+    http_server = tornado.httpserver.HTTPServer(Applications())
+    http_server.listen(options.port)
+    tornado.ioloop.IOLoop.instance().start()
diff --git a/pybbs/.DS_Store b/pybbs/.DS_Store
new file mode 100644 (file)
index 0000000..67ffaa5
Binary files /dev/null and b/pybbs/.DS_Store differ
diff --git a/pybbs/archives.htm b/pybbs/archives.htm
new file mode 100755 (executable)
index 0000000..fecfc43
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML>\r
+\r
+<html>\r
+  <head>\r
+    <meta charset==utf-8>\r
+    <title>\83A\81[\83J\83C\83u</title>\r
+  </head>\r
+    <#archives>\r
+  <body>\r
+\r
+  </body>\r
+</html>\r
+\r
diff --git a/pybbs/login.htm b/pybbs/login.htm
new file mode 100755 (executable)
index 0000000..05ecc11
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML>
+
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>ログイン</title>
+  </head>
+
+  <body>
+    <p style=text-align:center>
+</p>
+    <p style=text-align:center>管理者様ログイン画面\r
+</p>
+    <br>
+    <form action=/{{db}}/login method="post">
+    {% module xsrf_form_html() %}
+    <p style=text-align:center>
+      <input type=text name=record>
+         <input style=height:25px type="password" name="password">
+      <input type="submit" value="ログイン">
+    </p>
+    </form>
+  </body>
+</html>
diff --git a/pybbs/mentenance.htm b/pybbs/mentenance.htm
new file mode 100755 (executable)
index 0000000..0b3a8d5
--- /dev/null
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title><#title></title>
+  </head>
+  <body>
+    <p><br></p>
+    <p><br></p>
+    <p><br></p>
+    <p style=font-size:3em;font-weight:bold;text-align:center>\91ü\8d¡\81@\83\81\83\93\83e\83i\83\93\83X\92\86\82Å\82·^_^\r
+    </p>\r
+    <p><br></p>\r
+    <p><br></p>\r
+    <p><br></p>\r
+    <p style=text-align:center>
+      <a href="<#home>/admin">\8aÇ\97\9d\8eÒ\97p\83\8d\83O\83C\83\93</a>
+    </p>
+  </body>
+</html>
diff --git a/pybbs/modules/admin.htm b/pybbs/modules/admin.htm
new file mode 100755 (executable)
index 0000000..4233ea5
--- /dev/null
@@ -0,0 +1,57 @@
+{% extends 'index.htm' %}
+
+{% block title %}
+管理者用ページ
+{% end %}
+
+{% block style %}
+<style>p{margin:5px}</style>
+{% end %}
+
+{% block header %}
+{% end %}
+
+{% block body %}
+    <form method="post" action=/admin/set/ style=text-align:center>
+    {% module xsrf_form_html() %}   
+    <input type=hidden name=db value={{db}}>\r
+    <p>削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい</p>
+    <p><br></p>
+    <label><p>パスワードの変更\r
+      <input type="password" style="HEIGHT: 23px; WIDTH: 85px" name="pass" value="{{password}}">\r
+      </p>\r
+    </label>\r
+    <p>\r
+    <input type="checkbox" value="on" name="mente" {{mente}}>メンテナンス表示</p>\r
+    <p><input type="submit" value="変更"></p>\r
+    <p><a href="/logout">ログアウト</a></p>
+    </form>
+    <form style=text-align:center method="post" action=/admin/del/>
+    {% module xsrf_form_html() %}   
+    <table style=margin:auto border="0" cellspacing="0">\r
+    <tr bgcolor="#bbbbbb"><th>削除\r
+</th><th>記事No\r
+</th><th>投稿日\r
+</th><th>題名\r
+</th>
+    <th>投稿者\r
+</th></tr>
+    {% for record in records %}
+    <tr>
+       <th><input type=checkbox name="{{record['number']}}" value="{{record['number']}}"></th>
+       <th>{{record['number']}}</th>
+       <th style=size:-1>{{record['date']}}</th>
+       <th style=size:-1;color:#D01166;bold>{{record['title']}}</th>
+       <th style=color:#007000;bold>{{record['name']}}</th>
+       </tr>
+    {% end %}
+    </table>\r
+    <input type="submit" value="削除する">&nbsp; <input type="reset" value="リセット">\r
+      </form>
+    {% module Footer({{position}},'/admin','') %}
+{% end %}
+
+{% block footer %}
+       {% module Footer(position,'/admin','') %}
+    <p style=text-align:center><a href="/admin/del/">掲示板へ戻る</a></p>        
+{% end %}
diff --git a/pybbs/modules/content.htm b/pybbs/modules/content.htm
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/pybbs/modules/footer.htm b/pybbs/modules/footer.htm
new file mode 100644 (file)
index 0000000..d8c01d1
--- /dev/null
@@ -0,0 +1,19 @@
+<div style=text-align:center><b>[</b>
+{% if index == 0 %}
+        <<
+       {% for x in range(10) %}
+               <a href={{url}}/{{x+1}}/{{link}}> {{x+1}}</a>
+       {% end %}
+       >> <b>]</b>  recent
+{% else %}
+        <a href={{url}}/{{index-1}}/{{link}}><<</a>
+       {% for x in range(10) %}
+               {% if index == x+1 %}
+               {{x+1}}
+               {% else %}
+               <a href={{url}}/{{x+1}}/{{link}}> {{x+1}}</a>
+               {% end %}
+       {% end %}
+       <a href={{url}}/{{index+1}}/{{link}}>>></a> <b>]</b>  <a href={{url}}/0/{{link}}>recent</a>
+{% end %}
+</div>
\ No newline at end of file
diff --git a/pybbs/modules/full.htm b/pybbs/modules/full.htm
new file mode 100644 (file)
index 0000000..062f334
--- /dev/null
@@ -0,0 +1,6 @@
+{% extends 'index.htm' %}
+
+{% block header %}
+<p style=font-size:2.5em>申し訳ありません これ以上の投稿はできません(容量制限)</p>
+<p><a href=/{{db}}/search>検索ページ</a></p>
+{% end %}
\ No newline at end of file
diff --git a/pybbs/modules/index.htm b/pybbs/modules/index.htm
new file mode 100755 (executable)
index 0000000..2647116
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>
+       {% block title %}
+               {{data['title']}}
+       {% end %}
+    </title>
+    {% block style %}
+    <link rel="stylesheet" href={{static_url('css/main.css')}}>
+       {% end %}
+  </head> 
+  <body>
+  {% block header %}
+    {% raw data['title2'] %}
+    <header>
+    <a name=top></a>
+    <form action=/{{db}}/regist method="post">
+    {% module xsrf_form_html() %}
+      <table>
+        <tr><td>
+          <label><p>お名前</p><input name="name" value="{{username}}"></label>
+          <label><p>タイトル</p><input name="title"></label>
+          <input type="submit" value="送信">
+        </td></tr>
+        <tr><td>
+          <label><p>本文<span>必須</span><br></p>
+            <textarea name="comment" cols=30 required placeholder="コメントなどを入力してください."></textarea></label>
+        </td></tr>
+        <tr><td>
+          <label><p>パスワード</p><input name="password" type="password" placeholder="削除用"></label>
+        </td></tr>
+      </table>
+    </form>
+    </header>
+    <hr size="1" width="100%">
+    <form action="/userdel" method="post" id=search>
+      {% module xsrf_form_html() %}
+      <label><p>記事No</p><input name="number"></label>
+      <label><p>Pass</p><input type="password" name="password"></label>
+      <input type="submit" value="削除">
+      <p><a href=/{{db}}/search>検索ページ</a></p>
+    </form>
+    <p style=text-align:center>{{db}}</p>
+  {% module Footer(position,'/'+db,'#article') %}
+  {% end %}
+  {% block body %}
+    {% for record in records %}
+    <hr size=1>
+       <section id=number>[{{record['number']}}]</section>
+       <section id=title>{{record['title']}}</section>
+       <section id=name>  Name:<h1>{{record['name']}}</h1></section>
+       <section id=date>  Date:<h1>{{record['date']}}</h1></section>
+       <section id=comment>{% raw record['comment'] %}</section>
+       {% end %}
+       <a name=article></a>
+       <p style=text-align:right><a href=#top>Topへ移動</a></p>
+  {% end %}
+  {% block footer %}
+    {% module Footer(position,'/'+db,'#article') %}
+    <p style=text-align:center><a href="/{{db}}/admin/0/">管理者用ログイン</a></p>
+  {% end %}
+  </body>
+</html>
diff --git a/pybbs/modules/search.htm b/pybbs/modules/search.htm
new file mode 100755 (executable)
index 0000000..d77677b
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends 'index.htm' %}
+
+{% block title %}
+       検索ページ
+{% end %}
+
+{% block header %}
+    <form action=/{{db}}/search method="post">
+    {% module xsrf_form_html() %}   
+    <p style=font-weight:bold;text-align:center>検索ページ
+    </p>
+      <p style=text-align:center>AND検索。半角カンマ(,)で区切ってください。
+      </p>
+      <p><br></p><p><br></p><p><br></p>
+        <p>検索ワード</p>
+        <input name=word1 type=search value={{word1}}>
+    <p><label><input type="radio" name="filter" value="name">名前から検索 </label>
+         <label><input type="radio" checked="true" name="filter" value="com">本文から検索</label>
+    </p>
+      <p>
+    <input type="submit" value="検索"></p>
+    </form>
+      <p><a href=/{{db}}>掲示板へ戻る
+</a></p>   
+{% end %}
+
+{% block footer %}
+<hr>
+    <p style=text-align:center><a href="/{{db}}">掲示板へ戻る</a></p>    
+{% end %}
\ No newline at end of file
diff --git a/pybbs/mysearch.htm b/pybbs/mysearch.htm
new file mode 100644 (file)
index 0000000..1353879
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>
+Search Page
+    </title>
+    {% block style %}
+    <link rel="stylesheet" href={{static_url('css/main.css')}}>
+       {% end %}
+  </head> 
+  <body>
+    <form action="/search/0/" method="post">
+    <p style=font-weight:bold;text-align:center>検索ページ
+    </p>
+      <p style=text-align:center>AND検索。半角カンマ(,)で区切ってください。
+      </p>
+      <p><br></p><p><br></p><p><br></p>
+        <p>検索ワード</p>
+        <input name=word1 type=search value={{word1}}>
+    <p><label><input type="radio" name="filter" value="name">名前から検索 </label>
+         <label><input type="radio" checked="true" name="filter" value="com">本文から検索</label>
+    </p>
+      <p>
+    <input type="submit" value="検索"></p>
+    </form>
+      <p><a href="/">掲示板へ戻る
+</a></p>
+    
+    <hr>
+    <p><a href=/archives>�A�[�J�C�u�t�@�C��</a>���{���\94\</p>
+    <p>data.sdb���ŐV�t�@�C���ł�</p>
+  {% block body %}
+    <a name="article"></a>
+    {% for record in records %}
+    <hr size=1>
+       <section id=number>[{{record['number']}}]</section>
+       <section id=title>{{record['title']}}</section>
+       <section id=name>  Name:<h1>{{record['name']}}</h1></section>
+       <section id=date>  Date:<h1>{{record['date']}}</h1></section>
+       <section id=comment>{{record['comment']}}</section>
+       {% end %}
+  {% end %}
+{% block footer %}
+       {% module Footer(position,'/search') %}
+    <p style=text-align:center><a href="/">掲示板へ戻る</a></p>  
+{% end %}
+  </body>
+</html>
diff --git a/pybbs/regist.htm b/pybbs/regist.htm
new file mode 100755 (executable)
index 0000000..0093ff4
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>\r
+\r
+<html>\r
+  <head>\r
+    <meta charset=utf-8>\r
+    <title>投稿時エラー</title>\r
+  </head>\r
+\r
+  <body>\r
+    <p>以下の原因が考えられます\r
+</p>\r
+    <p>{{content}}\r
+</p>\r
+\r
+  </body>\r
+</html>\r
diff --git a/pybbs/setup.htm b/pybbs/setup.htm
new file mode 100755 (executable)
index 0000000..0a0125b
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+
+<html>
+  <head>
+    <title><#title></title>
+    <meta charset="utf-8">
+  </head>
+
+  <body>
+    <br>
+    <form action="<#home>/setup" method="post">
+        <p>title1 :\r
+</p>
+      <input value="<#title>" name="title">
+    <br><br><br>
+    <p>title2 :\r
+</p>\r
+    <textarea style="HEIGHT: 97px; WIDTH: 403px" cols="3" name="title2"><#title2></textarea>
+    <br><br><br><br>
+    <input type="submit" value="\90Ý\92è">
+    </form>
+  </body>
+</html>
diff --git a/pybbs/top.htm b/pybbs/top.htm
new file mode 100644 (file)
index 0000000..b1b488c
--- /dev/null
@@ -0,0 +1,13 @@
+<!doctype html>
+<html>
+<head><meta charset=utf-8>
+       <title>Top Page</title>
+</head>
+<body>
+{% for x in coll %}
+       {% if x != 'params' %}
+       <p><a href=/{{x}}>{{x}}</a>
+       {% end %}
+{% end %}
+</body>
+</html>
\ No newline at end of file
diff --git a/static/css/main.css b/static/css/main.css
new file mode 100755 (executable)
index 0000000..6f39096
--- /dev/null
@@ -0,0 +1,65 @@
+\r
+section#number {\r
+    display:inline\r
+}\r
+\r
+section#title {\r
+    display:inline;\r
+    font:bold;\r
+    font-size:1.2em;\r
+    color:#D01166;\r
+}\r
+\r
+section#name h1 {\r
+    font:bold;\r
+    font-size:1em;\r
+    color:#007000;\r
+    margin:0;\r
+}\r
+\r
+section#date h1 {\r
+    font-size:1em;\r
+    margin:0;\r
+}\r
+\r
+section h1 {\r
+    display:inline;\r
+}\r
+\r
+header {\r
+    margin:auto;\r
+    border:solid 1px #aaaaaa;\r
+    box-shadow:0 2px 3px #cccccc,\r
+               0 0 #ff8800 inset;\r
+    padding:18px;\r
+    border-radius:5px;\r
+    background:-webkit-linear-gradient(#ffffff 0%,#014471 50%,\r
+        #014471 51%,#ffffff 100%);\r
+    overflow:hidden\r
+}\r
+\r
+header table {\r
+    margin:auto\r
+}\r
+\r
+header p {\r
+    display:inline\r
+}\r
+\r
+header textarea {\r
+    width:100%;\r
+    height:150px;\r
+}\r
+\r
+input[type=password] {\r
+    width:55px\r
+}\r
+\r
+form#search input {\r
+    height:22px;\r
+    width:55px\r
+}\r
+\r
+span {\r
+    color:#ff0000\r
+}\r
diff --git a/static/css/smart.css b/static/css/smart.css
new file mode 100755 (executable)
index 0000000..1b9f6e2
--- /dev/null
@@ -0,0 +1,3 @@
+BODY {\r
+\r
+}\r
diff --git a/static/css/tablet.css b/static/css/tablet.css
new file mode 100755 (executable)
index 0000000..1b9f6e2
--- /dev/null
@@ -0,0 +1,3 @@
+BODY {\r
+\r
+}\r
diff --git a/static/data/db/WiredTiger b/static/data/db/WiredTiger
new file mode 100644 (file)
index 0000000..f586677
--- /dev/null
@@ -0,0 +1,2 @@
+WiredTiger
+WiredTiger 2.8.1: (March 24, 2016)
diff --git a/static/data/db/WiredTiger.lock b/static/data/db/WiredTiger.lock
new file mode 100644 (file)
index 0000000..3d84206
--- /dev/null
@@ -0,0 +1 @@
+WiredTiger lock file
diff --git a/static/data/db/WiredTiger.turtle b/static/data/db/WiredTiger.turtle
new file mode 100644 (file)
index 0000000..14c945a
--- /dev/null
@@ -0,0 +1,6 @@
+WiredTiger version string
+WiredTiger 2.8.1: (March 24, 2016)
+WiredTiger version
+major=2,minor=8,patch=1
+file:WiredTiger.wt
+allocation_size=4KB,app_metadata=,block_allocation=best,block_compressor=,cache_resident=false,checkpoint=(WiredTigerCheckpoint.1430=(addr="018781e48974fd2e8881e441afdae58981e4047ba5a8808080e28fc0e3597fc0",order=1430,time=1478319861,size=5873664,write_gen=1497)),checkpoint_lsn=(4,84096),checksum=uncompressed,collator=,columns=,dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key=,huffman_value=,id=0,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=4KB,key_format=S,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=0,log=(enabled=true),memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=false,prefix_compression_min=4,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=75,value_format=S,version=(major=1,minor=1)
diff --git a/static/data/db/WiredTiger.wt b/static/data/db/WiredTiger.wt
new file mode 100644 (file)
index 0000000..879528b
Binary files /dev/null and b/static/data/db/WiredTiger.wt differ
diff --git a/static/data/db/WiredTigerLAS.wt b/static/data/db/WiredTigerLAS.wt
new file mode 100644 (file)
index 0000000..3f019cb
Binary files /dev/null and b/static/data/db/WiredTigerLAS.wt differ
diff --git a/static/data/db/_mdb_catalog.wt b/static/data/db/_mdb_catalog.wt
new file mode 100644 (file)
index 0000000..958680b
Binary files /dev/null and b/static/data/db/_mdb_catalog.wt differ
diff --git a/static/data/db/collection-0-7954438521121372033.wt b/static/data/db/collection-0-7954438521121372033.wt
new file mode 100644 (file)
index 0000000..63a9140
Binary files /dev/null and b/static/data/db/collection-0-7954438521121372033.wt differ
diff --git a/static/data/db/collection-0-8598528902449844004.wt b/static/data/db/collection-0-8598528902449844004.wt
new file mode 100644 (file)
index 0000000..0856a70
Binary files /dev/null and b/static/data/db/collection-0-8598528902449844004.wt differ
diff --git a/static/data/db/collection-2-7954438521121372033.wt b/static/data/db/collection-2-7954438521121372033.wt
new file mode 100644 (file)
index 0000000..4ff7822
Binary files /dev/null and b/static/data/db/collection-2-7954438521121372033.wt differ
diff --git a/static/data/db/collection-2-8598528902449844004.wt b/static/data/db/collection-2-8598528902449844004.wt
new file mode 100644 (file)
index 0000000..732eab3
Binary files /dev/null and b/static/data/db/collection-2-8598528902449844004.wt differ
diff --git a/static/data/db/diagnostic.data/metrics.2016-11-02T08-39-41Z-00000 b/static/data/db/diagnostic.data/metrics.2016-11-02T08-39-41Z-00000
new file mode 100644 (file)
index 0000000..562a0b8
Binary files /dev/null and b/static/data/db/diagnostic.data/metrics.2016-11-02T08-39-41Z-00000 differ
diff --git a/static/data/db/diagnostic.data/metrics.2016-11-02T09-59-41Z-00000 b/static/data/db/diagnostic.data/metrics.2016-11-02T09-59-41Z-00000
new file mode 100644 (file)
index 0000000..627092c
Binary files /dev/null and b/static/data/db/diagnostic.data/metrics.2016-11-02T09-59-41Z-00000 differ
diff --git a/static/data/db/diagnostic.data/metrics.2016-11-02T20-35-44Z-00000 b/static/data/db/diagnostic.data/metrics.2016-11-02T20-35-44Z-00000
new file mode 100644 (file)
index 0000000..abebc16
Binary files /dev/null and b/static/data/db/diagnostic.data/metrics.2016-11-02T20-35-44Z-00000 differ
diff --git a/static/data/db/diagnostic.data/metrics.2016-11-02T21-12-53Z-00000 b/static/data/db/diagnostic.data/metrics.2016-11-02T21-12-53Z-00000
new file mode 100644 (file)
index 0000000..105f5a9
Binary files /dev/null and b/static/data/db/diagnostic.data/metrics.2016-11-02T21-12-53Z-00000 differ
diff --git a/static/data/db/diagnostic.data/metrics.interim b/static/data/db/diagnostic.data/metrics.interim
new file mode 100644 (file)
index 0000000..02ef98e
Binary files /dev/null and b/static/data/db/diagnostic.data/metrics.interim differ
diff --git a/static/data/db/index-1-7954438521121372033.wt b/static/data/db/index-1-7954438521121372033.wt
new file mode 100644 (file)
index 0000000..34fa7ff
Binary files /dev/null and b/static/data/db/index-1-7954438521121372033.wt differ
diff --git a/static/data/db/index-1-8598528902449844004.wt b/static/data/db/index-1-8598528902449844004.wt
new file mode 100644 (file)
index 0000000..287c835
Binary files /dev/null and b/static/data/db/index-1-8598528902449844004.wt differ
diff --git a/static/data/db/index-3-7954438521121372033.wt b/static/data/db/index-3-7954438521121372033.wt
new file mode 100644 (file)
index 0000000..5c84620
Binary files /dev/null and b/static/data/db/index-3-7954438521121372033.wt differ
diff --git a/static/data/db/index-3-8598528902449844004.wt b/static/data/db/index-3-8598528902449844004.wt
new file mode 100644 (file)
index 0000000..b25095f
Binary files /dev/null and b/static/data/db/index-3-8598528902449844004.wt differ
diff --git a/static/data/db/journal/WiredTigerLog.0000000004 b/static/data/db/journal/WiredTigerLog.0000000004
new file mode 100644 (file)
index 0000000..369b525
Binary files /dev/null and b/static/data/db/journal/WiredTigerLog.0000000004 differ
diff --git a/static/data/db/journal/WiredTigerPreplog.0000000001 b/static/data/db/journal/WiredTigerPreplog.0000000001
new file mode 100644 (file)
index 0000000..170ccc6
Binary files /dev/null and b/static/data/db/journal/WiredTigerPreplog.0000000001 differ
diff --git a/static/data/db/journal/WiredTigerPreplog.0000000002 b/static/data/db/journal/WiredTigerPreplog.0000000002
new file mode 100644 (file)
index 0000000..170ccc6
Binary files /dev/null and b/static/data/db/journal/WiredTigerPreplog.0000000002 differ
diff --git a/static/data/db/mongod.lock b/static/data/db/mongod.lock
new file mode 100644 (file)
index 0000000..4b1e299
--- /dev/null
@@ -0,0 +1 @@
+603
diff --git a/static/data/db/sizeStorer.wt b/static/data/db/sizeStorer.wt
new file mode 100644 (file)
index 0000000..36559be
Binary files /dev/null and b/static/data/db/sizeStorer.wt differ
diff --git a/static/data/db/storage.bson b/static/data/db/storage.bson
new file mode 100644 (file)
index 0000000..d07b1bc
Binary files /dev/null and b/static/data/db/storage.bson differ
diff --git a/static/js/script.js b/static/js/script.js
new file mode 100644 (file)
index 0000000..e69de29