diff --git a/.c9/.nakignore b/.c9/.nakignore
deleted file mode 100644
index 6d30aa6..0000000
--- a/.c9/.nakignore
+++ /dev/null
@@ -1,17 +0,0 @@
-*~backup-*
-.c9revisions
-.c9
-.git
-.svn
-.DS_Store
-.bzr
-.cdv
-~.dep
-~.dot
-~.nib
-~.plst
-.hg
-.pc
-*.min.js
-.nakignore
-/dev
diff --git a/.c9/metadata/tab1 b/.c9/metadata/tab1
deleted file mode 100644
index 801d6e4..0000000
--- a/.c9/metadata/tab1
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"Immediate (Javascript (browser))","tooltip":"Immediate (Javascript (browser))","undoManager":{"mark":0,"position":0,"stack":[[{"start":{"row":8,"column":40},"end":{"row":9,"column":0},"action":"insert","lines":["",""],"id":53},{"start":{"row":9,"column":0},"end":{"row":10,"column":0},"action":"insert","lines":["",""]}]]},"immediate":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":8,"column":0},"end":{"row":8,"column":21},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0,"type":"jsbrowser","history":["\"refs/heads/template\".match(/\\/master$/)","\"refs/heads/master\".match(/\\/master$/)","s.match(/\\/master$/)","s = \"refs/heads/master\""],"pos":-1},"timestamp":1452973618356,"hash":"722c479a340a3da2396735615b87d31f3373e145"}
\ No newline at end of file
diff --git a/.c9/metadata/tab8 b/.c9/metadata/tab8
deleted file mode 100644
index 235c126..0000000
--- a/.c9/metadata/tab8
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"Terminal","undoManager":{"mark":-1,"position":-1,"stack":[]},"terminal":{"id":"devel_232","cwd":"","width":1328,"height":243,"scrollTop":393},"timestamp":1452978225696,"hash":"67452301efcdab8998badcfe10325476c3d2e1f0"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/bin/www b/.c9/metadata/workspace/bin/www
deleted file mode 100644
index b709304..0000000
--- a/.c9/metadata/workspace/bin/www
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"www","tooltip":"/bin/www","undoManager":{"mark":2,"position":2,"stack":[[{"start":{"row":14,"column":47},"end":{"row":14,"column":50},"action":"remove","lines":["000"],"id":2},{"start":{"row":14,"column":47},"end":{"row":14,"column":48},"action":"insert","lines":["1"]}],[{"start":{"row":14,"column":48},"end":{"row":14,"column":49},"action":"insert","lines":["8"],"id":3}],[{"start":{"row":14,"column":49},"end":{"row":14,"column":50},"action":"insert","lines":["0"],"id":4}]]},"ace":{"folds":[],"scrolltop":120,"scrollleft":0,"selection":{"start":{"row":14,"column":50},"end":{"row":14,"column":50},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1452973670538,"hash":"d84e8bd402fee361726b1d5ab6cdf6009ed17746"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/routes/index.js b/.c9/metadata/workspace/routes/index.js
deleted file mode 100644
index 7d17416..0000000
--- a/.c9/metadata/workspace/routes/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/routes/index.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":["/"],"id":247}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["s"],"id":248}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":["e"],"id":249}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"remove","lines":["e"],"id":250}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"remove","lines":["s"],"id":251}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["d"],"id":252}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":["e"],"id":253}],[{"start":{"row":8,"column":28},"end":{"row":8,"column":29},"action":"insert","lines":["v"],"id":254}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"insert","lines":["/"],"id":255}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"insert","lines":["g"],"id":256}],[{"start":{"row":8,"column":31},"end":{"row":8,"column":32},"action":"insert","lines":["i"],"id":257}],[{"start":{"row":8,"column":32},"end":{"row":8,"column":33},"action":"insert","lines":["t"],"id":258}],[{"start":{"row":8,"column":33},"end":{"row":8,"column":34},"action":"insert","lines":["D"],"id":259}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"insert","lines":["e"],"id":260}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"insert","lines":["p"],"id":261}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"insert","lines":["l"],"id":262}],[{"start":{"row":8,"column":37},"end":{"row":8,"column":38},"action":"insert","lines":["o"],"id":263}],[{"start":{"row":8,"column":38},"end":{"row":8,"column":39},"action":"insert","lines":["y"],"id":264}],[{"start":{"row":8,"column":39},"end":{"row":8,"column":40},"action":"insert","lines":["/"],"id":265}],[{"start":{"row":8,"column":40},"end":{"row":8,"column":41},"action":"insert","lines":["t"],"id":266}],[{"start":{"row":8,"column":41},"end":{"row":8,"column":42},"action":"insert","lines":["e"],"id":267}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"insert","lines":["s"],"id":268}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":["t"],"id":269}],[{"start":{"row":8,"column":44},"end":{"row":8,"column":45},"action":"insert","lines":["."],"id":270}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":["s"],"id":271}],[{"start":{"row":8,"column":46},"end":{"row":8,"column":47},"action":"insert","lines":["h"],"id":272}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"insert","lines":[","],"id":273}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"insert","lines":[" "],"id":274}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"insert","lines":["c"],"id":275}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"insert","lines":["o"],"id":276}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"insert","lines":["n"],"id":277}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"insert","lines":["a"],"id":278}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"insert","lines":["o"],"id":279}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"insert","lines":["l"],"id":280}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"insert","lines":["e"],"id":281}],[{"start":{"row":8,"column":57},"end":{"row":8,"column":58},"action":"insert","lines":["."],"id":282}],[{"start":{"row":8,"column":57},"end":{"row":8,"column":58},"action":"remove","lines":["."],"id":283}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"remove","lines":["e"],"id":284}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"remove","lines":["l"],"id":285}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"remove","lines":["o"],"id":286}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"remove","lines":["a"],"id":287}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"remove","lines":["n"],"id":288}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"remove","lines":["o"],"id":289}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"remove","lines":["c"],"id":290}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"insert","lines":["c"],"id":291}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"insert","lines":["o"],"id":292}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"insert","lines":["n"],"id":293}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"insert","lines":["s"],"id":294}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"insert","lines":["o"],"id":295}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"insert","lines":["l"],"id":296}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"insert","lines":["e"],"id":297}],[{"start":{"row":8,"column":57},"end":{"row":8,"column":58},"action":"insert","lines":["."],"id":298}],[{"start":{"row":8,"column":58},"end":{"row":8,"column":59},"action":"insert","lines":["l"],"id":299}],[{"start":{"row":8,"column":59},"end":{"row":8,"column":60},"action":"insert","lines":["o"],"id":300}],[{"start":{"row":8,"column":60},"end":{"row":8,"column":61},"action":"insert","lines":["g"],"id":301}],[{"start":{"row":8,"column":61},"end":{"row":8,"column":62},"action":"insert","lines":["m"],"id":302}],[{"start":{"row":8,"column":62},"end":{"row":8,"column":63},"action":"insert","lines":[" "],"id":303}],[{"start":{"row":8,"column":62},"end":{"row":8,"column":63},"action":"remove","lines":[" "],"id":304}],[{"start":{"row":8,"column":61},"end":{"row":8,"column":62},"action":"remove","lines":["m"],"id":305}],[{"start":{"row":8,"column":61},"end":{"row":8,"column":62},"action":"insert","lines":[","],"id":306}],[{"start":{"row":8,"column":62},"end":{"row":8,"column":63},"action":"insert","lines":[" "],"id":307}],[{"start":{"row":8,"column":63},"end":{"row":8,"column":64},"action":"insert","lines":["c"],"id":308}],[{"start":{"row":8,"column":64},"end":{"row":8,"column":65},"action":"insert","lines":["n"],"id":309}],[{"start":{"row":8,"column":64},"end":{"row":8,"column":65},"action":"remove","lines":["n"],"id":310}],[{"start":{"row":8,"column":64},"end":{"row":8,"column":65},"action":"insert","lines":["o"],"id":311}],[{"start":{"row":8,"column":65},"end":{"row":8,"column":66},"action":"insert","lines":["n"],"id":312}],[{"start":{"row":8,"column":66},"end":{"row":8,"column":67},"action":"insert","lines":["s"],"id":313}],[{"start":{"row":8,"column":63},"end":{"row":8,"column":67},"action":"remove","lines":["cons"],"id":314},{"start":{"row":8,"column":63},"end":{"row":8,"column":70},"action":"insert","lines":["console"]}],[{"start":{"row":8,"column":70},"end":{"row":8,"column":71},"action":"insert","lines":["."],"id":315}],[{"start":{"row":8,"column":71},"end":{"row":8,"column":72},"action":"insert","lines":["l"],"id":316}],[{"start":{"row":8,"column":72},"end":{"row":8,"column":73},"action":"insert","lines":["o"],"id":317}],[{"start":{"row":8,"column":73},"end":{"row":8,"column":74},"action":"insert","lines":["g"],"id":318}],[{"start":{"row":8,"column":75},"end":{"row":8,"column":76},"action":"insert","lines":[";"],"id":319}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":47},"action":"remove","lines":["/stuff0/dev/gitDeploy/test.sh"],"id":320},{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"insert","lines":["/"]}],[{"start":{"row":8,"column":19},"end":{"row":8,"column":20},"action":"insert","lines":["v"],"id":321}],[{"start":{"row":8,"column":20},"end":{"row":8,"column":21},"action":"insert","lines":["a"],"id":322}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"insert","lines":["r"],"id":323}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":23},"action":"insert","lines":["/"],"id":324}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":["w"],"id":325}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":["w"],"id":326}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":["w"],"id":327}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["/"],"id":328}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":["g"],"id":329}],[{"start":{"row":8,"column":28},"end":{"row":8,"column":29},"action":"insert","lines":["i"],"id":330}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"insert","lines":["t"],"id":331}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"insert","lines":["w"],"id":332}],[{"start":{"row":8,"column":31},"end":{"row":8,"column":32},"action":"insert","lines":["r"],"id":333}],[{"start":{"row":8,"column":32},"end":{"row":8,"column":33},"action":"insert","lines":["a"],"id":334}],[{"start":{"row":8,"column":33},"end":{"row":8,"column":34},"action":"insert","lines":["p"],"id":335}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"insert","lines":["p"],"id":336}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"insert","lines":["e"],"id":337}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"insert","lines":["r"],"id":338}],[{"start":{"row":8,"column":37},"end":{"row":8,"column":38},"action":"insert","lines":["d"],"id":339}],[{"start":{"row":8,"column":38},"end":{"row":8,"column":39},"action":"insert","lines":["e"],"id":340}],[{"start":{"row":8,"column":39},"end":{"row":8,"column":40},"action":"insert","lines":["p"],"id":341}],[{"start":{"row":8,"column":40},"end":{"row":8,"column":41},"action":"insert","lines":["l"],"id":342}],[{"start":{"row":8,"column":41},"end":{"row":8,"column":42},"action":"insert","lines":["o"],"id":343}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"insert","lines":["y"],"id":344}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":["."],"id":345}],[{"start":{"row":8,"column":44},"end":{"row":8,"column":45},"action":"insert","lines":["s"],"id":346}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":["h"],"id":347}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":14,"column":24},"end":{"row":14,"column":24},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1452978780322,"hash":"927f07907f66f6d1cd650d65b868be962409f30a"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/test.sh b/.c9/metadata/workspace/test.sh
deleted file mode 100644
index 84f4f42..0000000
--- a/.c9/metadata/workspace/test.sh
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"test.sh","tooltip":"/test.sh","undoManager":{"mark":33,"position":33,"stack":[[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["e"],"id":1}],[{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["c"],"id":2}],[{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":["h"],"id":3}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":["o"],"id":4}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":5},"action":"insert","lines":[" "],"id":5}],[{"start":{"row":0,"column":5},"end":{"row":0,"column":7},"action":"insert","lines":["\"\""],"id":6}],[{"start":{"row":0,"column":6},"end":{"row":0,"column":7},"action":"insert","lines":["s"],"id":7},{"start":{"row":0,"column":7},"end":{"row":0,"column":8},"action":"insert","lines":["d"]}],[{"start":{"row":0,"column":8},"end":{"row":0,"column":9},"action":"insert","lines":["f"],"id":8}],[{"start":{"row":0,"column":9},"end":{"row":0,"column":10},"action":"insert","lines":["s"],"id":9}],[{"start":{"row":0,"column":10},"end":{"row":0,"column":11},"action":"insert","lines":["d"],"id":10}],[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"insert","lines":["f"],"id":11}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"insert","lines":["s"],"id":12},{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"insert","lines":["d"]}],[{"start":{"row":0,"column":15},"end":{"row":0,"column":16},"action":"insert","lines":[">"],"id":13}],[{"start":{"row":0,"column":16},"end":{"row":0,"column":17},"action":"insert","lines":["t"],"id":14}],[{"start":{"row":0,"column":17},"end":{"row":0,"column":18},"action":"insert","lines":["e"],"id":15}],[{"start":{"row":0,"column":18},"end":{"row":0,"column":19},"action":"insert","lines":["s"],"id":16}],[{"start":{"row":0,"column":19},"end":{"row":0,"column":20},"action":"insert","lines":["t"],"id":17}],[{"start":{"row":0,"column":20},"end":{"row":0,"column":21},"action":"insert","lines":["."],"id":18}],[{"start":{"row":0,"column":21},"end":{"row":0,"column":22},"action":"insert","lines":["t"],"id":19}],[{"start":{"row":0,"column":22},"end":{"row":0,"column":23},"action":"insert","lines":["x"],"id":20}],[{"start":{"row":0,"column":23},"end":{"row":0,"column":24},"action":"insert","lines":["t"],"id":21}],[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":22}],[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["#"],"id":23}],[{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["!"],"id":24}],[{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":["/"],"id":25}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":["b"],"id":26}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":5},"action":"insert","lines":["i"],"id":27}],[{"start":{"row":0,"column":5},"end":{"row":0,"column":6},"action":"insert","lines":["n"],"id":28}],[{"start":{"row":0,"column":6},"end":{"row":0,"column":7},"action":"insert","lines":["/"],"id":29}],[{"start":{"row":0,"column":7},"end":{"row":0,"column":8},"action":"insert","lines":["b"],"id":30}],[{"start":{"row":0,"column":8},"end":{"row":0,"column":9},"action":"insert","lines":["a"],"id":31}],[{"start":{"row":0,"column":9},"end":{"row":0,"column":10},"action":"insert","lines":["s"],"id":32}],[{"start":{"row":0,"column":10},"end":{"row":0,"column":11},"action":"insert","lines":["h"],"id":33}],[{"start":{"row":0,"column":11},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":34}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":1,"column":0},"end":{"row":1,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1452978488496,"hash":"e5d88869a1d8eada9039d48fcf70c2dd29272ac7"}
\ No newline at end of file
diff --git a/.c9/project.settings b/.c9/project.settings
deleted file mode 100644
index 87579c3..0000000
--- a/.c9/project.settings
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "ace": {
- "@guessTabSize": "true",
- "@newLineMode": "unix",
- "@tabSize": "4",
- "@useSoftTabs": "true"
- },
- "build": {
- "@builder": "auto",
- "@path": "/.c9/builders",
- "@saveall": "true"
- },
- "find.nak": {
- "@searchLimit": 100
- },
- "general": {
- "@stripws": false
- },
- "language": {
- "@eslintrc": "true",
- "@instanceHighlight": "true",
- "@semi": "true",
- "@undeclaredVars": "true",
- "@unusedFunctionArgs": "false",
- "@warnLevel": "info"
- },
- "run": {
- "@path": "/.c9/runners",
- "configs": {
- "@inited": "true",
- "json()": {}
- }
- }
-}
\ No newline at end of file
diff --git a/.c9/state.settings b/.c9/state.settings
deleted file mode 100644
index 0cc370e..0000000
--- a/.c9/state.settings
+++ /dev/null
@@ -1,265 +0,0 @@
-{
- "console": {
- "@expanded": true,
- "@height": 269,
- "@maximized": "false",
- "json()": {
- "meta": {
- "accessList": [
- "tab8",
- "tab1"
- ]
- },
- "name": "pane1",
- "nodes": [
- {
- "type": "tab",
- "name": "tab1",
- "path": "",
- "className": [
- "tab1"
- ],
- "document": {
- "filter": true,
- "title": "Immediate (Javascript (browser))",
- "tooltip": "Immediate (Javascript (browser))",
- "immediate": {
- "folds": [],
- "scrolltop": 0,
- "scrollleft": 0,
- "selection": {
- "start": {
- "row": 8,
- "column": 0
- },
- "end": {
- "row": 8,
- "column": 21
- },
- "isBackwards": true
- },
- "options": {
- "guessTabSize": true,
- "useWrapMode": false,
- "wrapToView": true
- },
- "firstLineState": 0,
- "type": "jsbrowser",
- "history": [
- "\"refs/heads/template\".match(/\\/master$/)",
- "\"refs/heads/master\".match(/\\/master$/)",
- "s.match(/\\/master$/)",
- "s = \"refs/heads/master\""
- ],
- "pos": -1
- },
- "hash": "722c479a340a3da2396735615b87d31f3373e145",
- "meta": {
- "timestamp": 1452973618356
- },
- "changed": false
- },
- "editorType": "immediate",
- "active": false
- },
- {
- "type": "tab",
- "name": "tab8",
- "path": "",
- "className": [
- "tab8",
- "focus"
- ],
- "document": {
- "changed": false,
- "meta": {
- "timestamp": 1452978225696
- },
- "filter": true,
- "title": "Terminal",
- "terminal": {
- "id": "devel_232",
- "cwd": "",
- "width": 1328,
- "height": 243
- }
- },
- "editorType": "terminal",
- "active": true
- }
- ],
- "skin": "editor_tab",
- "skinset": "default",
- "type": "pane"
- }
- },
- "experiments": {
- "@@enabled": true,
- "@flat-dark": 0,
- "@git": 1,
- "@mount": 0,
- "@plugin-manager": 0,
- "@plugins": 0,
- "@sdk": 0,
- "@test": 0
- },
- "ext": {
- "counters": {
- "@ace": 1,
- "@acestatus": 1,
- "@divider": 5,
- "@document": 6,
- "@form": 5,
- "@immediate": 1,
- "@menu": 7,
- "@menuitem": 17,
- "@pane": 2,
- "@session": 5,
- "@tab": 1,
- "@undoManager": 6
- }
- },
- "findinfiles": {
- "@console": "true",
- "@matchcase": "false",
- "@regex": "false",
- "@wholeword": "false"
- },
- "menus": {
- "@minimized": "false"
- },
- "nak": {
- "@installed": true
- },
- "panecycle": {
- "json()": [
- "tab8",
- "tab6"
- ]
- },
- "panels": {
- "@active-left": "tree",
- "@active-right": "none",
- "commands.panel": {
- "@enabled": "true",
- "@name": "commands.panel"
- },
- "debugger": {
- "@enabled": "true",
- "@name": "debugger"
- },
- "navigate": {
- "@enabled": "true",
- "@name": "navigate"
- },
- "outline": {
- "@enabled": "true",
- "@name": "outline"
- },
- "scm": {
- "@enabled": "true",
- "@name": "scm"
- },
- "tree": {
- "@enabled": "true",
- "@name": "tree"
- }
- },
- "projecttree": {
- "@showfs": true,
- "expanded": {
- "json()": [
- "/",
- "/bin",
- "/routes"
- ]
- }
- },
- "recentfiles": {
- "json()": []
- },
- "tabs": {
- "json()": {
- "focus": "/routes/index.js",
- "meta": {
- "accessList": [
- "tab6",
- "tab0",
- "tab3"
- ]
- },
- "name": "pane0",
- "nodes": [
- {
- "type": "tab",
- "name": "tab3",
- "path": "/bin/www",
- "className": [
- "tab3"
- ],
- "document": {
- "meta": {
- "timestamp": 1452973671206
- },
- "filter": true,
- "title": "www",
- "tooltip": "/bin/www",
- "ace": {},
- "changed": false
- },
- "editorType": "ace",
- "active": false
- },
- {
- "type": "tab",
- "name": "tab6",
- "path": "/routes/index.js",
- "className": [
- "tab6",
- "focus"
- ],
- "document": {
- "changed": false,
- "meta": {
- "timestamp": 1452975302950
- },
- "filter": true,
- "title": "index.js",
- "tooltip": "/routes/index.js",
- "ace": {}
- },
- "editorType": "ace",
- "active": true
- },
- {
- "type": "tab",
- "name": "tab0",
- "path": "/test.sh",
- "className": [
- "tab0"
- ],
- "document": {
- "changed": false,
- "meta": {
- "timestamp": 1452978488496
- },
- "filter": true,
- "title": "test.sh",
- "tooltip": "/test.sh",
- "ace": {}
- },
- "editorType": "ace",
- "active": false
- }
- ],
- "skin": "editor_tab",
- "skinset": "default",
- "type": "pane"
- }
- },
- "tree_selection": {
- "json()": [
- "/routes/index.js"
- ]
- }
-}
\ No newline at end of file
diff --git a/app.js b/app.js
index 03f8595..a23b55a 100644
--- a/app.js
+++ b/app.js
@@ -1,29 +1,10 @@
-var express = require('express');
-var path = require('path');
-var favicon = require('serve-favicon');
-var logger = require('morgan');
-var cookieParser = require('cookie-parser');
-var bodyParser = require('body-parser');
+'use strict';
-var routes = require('./routes/index');
-var users = require('./routes/users');
+const express = require('express');
+const app = express();
-var app = express();
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'));
-app.set('view engine', 'ejs');
-
-// uncomment after placing your favicon in /public
-//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'));
-app.use(bodyParser.json());
-app.use(bodyParser.urlencoded({ extended: false }));
-app.use(cookieParser());
-app.use(express.static(path.join(__dirname, 'public')));
-
-app.use('/', routes);
-app.use('/users', users);
+app.use(express.json());
+app.use('/', require('./routes/index'));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
@@ -32,29 +13,15 @@ app.use(function(req, res, next) {
next(err);
});
-// error handlers
-
-// development error handler
-// will print stacktrace
-if (app.get('env') === 'development') {
- app.use(function(err, req, res, next) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: err
- });
- });
-}
-
-// production error handler
-// no stacktraces leaked to user
+// error handler
app.use(function(err, req, res, next) {
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
+
+ // render the error page
res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: {}
- });
+ res.json({message: 'error!'});
});
-
module.exports = app;
diff --git a/create.sh b/create.sh
deleted file mode 100644
index 905466b..0000000
--- a/create.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-name="$1"
-sshURL="$2"
-nodePort=`python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'`
-workingPath=/var/www/gitwrapper/$name
-
-echo "starting $sshURL on $name"
-
-eval "$(ssh-agent -s)"
-ssh-add /root/.ssh/id_github_rsa
-mkdir $workingPath
-cd $workingPath
-chmod 777 .
-echo `pwd`
-
-DJANGO_SETTINGS_MODULE=project.settings.prod
-export DJANGO_SETTINGS_MODULE=project.settings.prod
-
-NODE_ENV='staging'
-export NODE_ENV='staging'
-export NODEPORT=$nodePort
-export djangoURL="http://$name.staging.bytedev.co"
-
-git clone $sshURL .
-
-echo "creating apache VirtualHost file and showing down"
-
-echo "" > /etc/apache2/sites-enabled/$name.conf
-echo " ServerName $name.staging.bytedev.co" >> /etc/apache2/sites-enabled/$name.conf
-echo " DocumentRoot $workingPath/static/error_pages" >> /etc/apache2/sites-enabled/$name.conf
-echo "" >> /etc/apache2/sites-enabled/$name.conf
-
-/usr/sbin/service apache2 reload
-
-./scripts/setup.sh
-
-source env/bin/activate
-
-cp /var/www/local_settings.py project/settings/local_settings.py
-echo "BRANCH='$name'" >> project/settings/local_settings.py
-echo "NODEPORT='$nodePort'" >> project/settings/local_settings.py
-echo $nodePort > env/nodePort
-
-echo "checking out to prod for set up"
-git checkout prod
-
-python3 manage.py createcachetable
-python3 manage.py migrate
-python3 manage.py loaddata /var/www/django.json
-
-echo "checking out to $name for set up"
-git checkout $name
-
-./scripts/setup.sh
-
-python3 manage.py collectstatic --noinput
-python3 manage.py migrate
-chmod 777 db.sqlite3
-chmod 777 -R .track-storage
-
-forever stop $workingPath/node_rtc/app.js
-echo "starting node app on port $nodePort"
-forever start $workingPath/node_rtc/app.js
-
-echo "creating apache VirtualHost file"
-
-echo "" > /etc/apache2/sites-enabled/$name.conf
-echo " ServerName $name.staging.bytedev.co" >> /etc/apache2/sites-enabled/$name.conf
-echo " Alias /static $workingPath/staticfiles" >> /etc/apache2/sites-enabled/$name.conf
-echo " WSGIDaemonProcess $name python-path=$workingPath:$workingPath/env:$workingPath/env/lib/python3.5/site-packages" >> /etc/apache2/sites-enabled/$name.conf
-echo " WSGIProcessGroup $name" >> /etc/apache2/sites-enabled/$name.conf
-echo " WSGIScriptAlias / $workingPath/project/wsgi.py" >> /etc/apache2/sites-enabled/$name.conf
-echo " # socket.io conf" >> /etc/apache2/sites-enabled/$name.conf
-
-echo " RewriteEngine On" >> /etc/apache2/sites-enabled/$name.conf
-echo " RewriteCond %{HTTP:UPGRADE} ^WebSocket\$ [NC]" >> /etc/apache2/sites-enabled/$name.conf
-echo " RewriteCond %{HTTP:CONNECTION} Upgrade\$ [NC]" >> /etc/apache2/sites-enabled/$name.conf
-echo " RewriteRule .* ws://localhost:$nodePort%{REQUEST_URI} [P]" >> /etc/apache2/sites-enabled/$name.conf
-echo " RewriteCond %{REQUEST_URI} ^/socket.io/\$1/websocket [NC]" >> /etc/apache2/sites-enabled/$name.conf
-echo " RewriteRule socket.io/(.*) ws://localhost:$nodePort/socket.io/\$1 [P,L]" >> /etc/apache2/sites-enabled/$name.conf
-echo " ProxyPass /socket.io http://localhost:$nodePort/socket.io" >> /etc/apache2/sites-enabled/$name.conf
-echo " ProxyPassReverse /socket.io http://localhost:$nodePort/socket.io" >> /etc/apache2/sites-enabled/$name.conf
-
-echo "" >> /etc/apache2/sites-enabled/$name.conf
-
-/usr/sbin/service apache2 reload
-
-exit 0
diff --git a/delete.sh b/delete.sh
deleted file mode 100644
index a3d088e..0000000
--- a/delete.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-name="$1"
-sshURL="$2"
-workingPath=/var/www/gitwrapper/$name
-
-
-nodePort=`cat $workingPath/env/nodePort`
-export NODEPORT=$nodePort
-forever stop $workingPath/node_rtc/app.js
-
-rm -rf /var/www/gitwrapper/$name
-rm /etc/apache2/sites-enabled/$name.conf
-
-
-/usr/sbin/service apache2 restart
-
-exit 0
diff --git a/package.json b/package.json
index 86eeb56..efbe151 100644
--- a/package.json
+++ b/package.json
@@ -6,12 +6,6 @@
"start": "node ./bin/www"
},
"dependencies": {
- "body-parser": "~1.13.2",
- "cookie-parser": "~1.3.5",
- "debug": "~2.2.0",
- "ejs": "~2.3.3",
- "express": "~4.13.1",
- "morgan": "~1.6.1",
- "serve-favicon": "~2.3.0"
+ "express": "^4.16.4"
}
-}
\ No newline at end of file
+}
diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/routes/index.js b/routes/index.js
index 9e8f640..61c160b 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -1,16 +1,40 @@
-var express = require('express');
-var router = express.Router();
-var exec = require('child_process').exec;
+'use strict';
+
+const router = require('express').Router();
+
+const {exec} = require('child_process');
var fs = require('fs');
/* GET home page. */
var install_dir = '/var/www/gitwrapper/'
+// function lxc_create(name, callback) {
+// exec('lxc-create', [
+// '-n', 'name_'+(Math.random()*100).toString().slice(-4),
+// '-t' 'download', '--',
+// '--dist', 'ubuntu',
+// '--release', 'xenial',
+// '--arch', 'amd64']
+// function(err, stdout, stderr){
+
+// });
+// }
var calls = {
create: function(req, res, name, sshURL){
console.log("create =========================");
+ // create new container
+ // install git in container
+ // seed container with deploy key
+ // clone repo into container
+ // run /scripts/deploy/create
+ // add entry to proxy
+
+
+
+
+
return exec('bash /var/www/gitdeploy/create.sh '+name+' '+sshURL, function(err, stdout, stderr){
console.log(err, stdout, stderr);
return res.json({ title: stdout });
@@ -40,11 +64,13 @@ router.all('/', function(req, res, next) {
(req.body.deleted && 'delete') ||
'update';
- var name = req.body.ref.replace('refs/heads/', '');
+ var branch = req.body.ref.replace('refs/heads/', '');
var sshURL = req.body.repository.ssh_url;
if(call === 'update' && !fs.existsSync('/var/www/gitwrapper/'+name)) call = 'create';
- return calls[call](req, res, name, sshURL);
+ console.log('body');
+
+ // return calls[call](req, res, branch, sshURL);
});
module.exports = router;
diff --git a/routes/users.js b/routes/users.js
deleted file mode 100644
index 623e430..0000000
--- a/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express');
-var router = express.Router();
-
-/* GET users listing. */
-router.get('/', function(req, res, next) {
- res.send('respond with a resource');
-});
-
-module.exports = router;
diff --git a/test.sh b/test.sh
deleted file mode 100755
index 7dd7306..0000000
--- a/test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-echo "sdfsdfsd">test.txt
\ No newline at end of file
diff --git a/test.txt b/test.txt
deleted file mode 100644
index c826db2..0000000
--- a/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-sdfsdfsd
diff --git a/views/error.ejs b/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/views/index.ejs b/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-