1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
var okcms = require('okcms')
var path = require('path')
var isProduction = process.env.OK_PRODUCTION === 'true'
var app = okcms.createApp({
project: 'Hansel and Gretel',
debug: !isProduction,
production: isProduction,
admin: {
dashboard: {
resources: {
painting: {
display: 'image',
}
}
}
},
schemas: {
timeline: {
id: {type: 'string', hidden: true},
date: {type: 'string'},
title: {type: 'string'},
medium: {type: 'string'},
category: {type: 'enum', options:['Surveillance','Drones','Facial Recognition']},
keywords: {type: 'text'},
description: {type: 'text'},
image: {type: 'image'},
credit: {type: 'text'},
links: {type: 'link-list'},
disabled: {type: 'flag'},
},
drone: {
id: {type: 'string', hidden: true},
title: {type: 'string'},
intro: {type: 'text'},
strikes: {type: 'string'},
totalKilled: {type: 'string'},
civiliansKilled: {type: 'string'},
childrenKilled: {type: 'string'},
statisticsByline: {type: 'text'},
moreInfo: {type: 'text'},
links: {type: 'link-list'},
},
about: {
id: {type: 'string', hidden: true},
title: {type: 'string'},
show: {type: 'text'},
herzogBio: {type: 'text'},
deMeuronBio: {type: 'text'},
aiWeiWeiBio: {type: 'text'},
video: {type: 'video'},
},
page: {
id: {type: 'string', hidden: true},
title: {type: 'string'},
byline: {type: 'string'},
body: {type: 'text'},
disabled: {type: 'flag'},
},
essay: {
id: {type: 'string', hidden: true},
title: {type: 'string'},
byline: {type: 'string'},
body: {type: 'text'},
disabled: {type: 'flag'},
},
stream: {
id: {type: 'string', hidden: true},
title: {type: 'string'},
body: {type: 'text'},
streams: {type: 'link-list'},
disabled: {type: 'flag'},
},
},
resources: [
{ type: 'timeline' },
{ type: 'page' },
{ type: 'essay' },
{ type: 'stream' },
{ type: 'drone' },
{ type: 'about' },
],
views: {
'/': { template: 'blank' },
'/home/': { template: 'index' },
'/information/': { template: 'index' },
'/drones/': { template: 'index' },
'/livestream/': { template: 'index' },
'/contact/': { template: 'index' },
'/timeline/': { template: 'index' },
'/timeline/:id': { template: 'index' },
'/page/:id': { template: 'index' },
'/photo/:id': { template: 'photo' },
},
services: {
s3: {
key: process.env.S3_KEY,
secret: process.env.S3_SECRET,
bucket: process.env.S3_BUCKET,
dirname: process.env.S3_DIRNAME,
maxbytes: 1024*1024*2,
},
awmail: {
lib: require("./lib/awmail"),
apikey: process.env.MAILGUN_API_KEY,
domain: process.env.MAILGUN_DOMAIN,
secret: process.env.MAIL_SECRET,
from: 'Hansel and Gretel <mail@hanselandgretelarmory.com>',
subject: 'We Found Your Face',
},
awfeedback: {
lib: require("./lib/awfeedback"),
spreadsheet: '12fUN-pUlTpdly88pGVFlHuHDmAP8YCpVfn9IxIVf5Vs',
credentials: path.join(__dirname, "./lib/awfeedback/tokens/client_secret.json"),
token: path.join(__dirname, "./lib/awfeedback/tokens/client_token.json"),
},
awprint: {
lib: require("./lib/awprint"),
mongodbUrl: "mongodb://localhost/awprint",
},
awdrone: {
lib: require("./lib/awdrone"),
},
push: {
lib: require("./lib/okpush"),
mongodbUrl: "mongodb://localhost/okpush_hga",
production: false,
apn_development: {
cert: path.join(__dirname, "./lib/okpush/certs/aps_development_cert.pem"),
key: path.join(__dirname, "./lib/okpush/certs/aps_development_key.pem"),
connection: {
gateway: "gateway.sandbox.push.apple.com",
}
},
apn_production: {
cert: path.join(__dirname, "./lib/okpush/certs/aps_production_cert.pem"),
key: path.join(__dirname, "./lib/okpush/certs/aps_production_key.pem"),
connection: {
gateway: "gateway.push.apple.com",
}
},
bundleId: "studio.undisclosed.hanselandgretel",
notifications: {
// expiry (in seconds)
// badge (int)
// alert (message)
// payload (raw json)
feed: {
expiry: 1,
alert: "Database updated.",
},
}
},
},
}).listen(process.env.PORT || 1337)
console.log('Server listening at port ' + (process.env.PORT || 1337) + '...');
|