@@ -10,19 +10,24 @@ var AWS = require('aws-sdk');
10
10
11
11
var Script = require ( '../models/script' ) . Script ;
12
12
var User = require ( '../models/user' ) . User ;
13
+ var RepoManager = require ( '../libs/repoManager' ) ;
13
14
14
15
var cleanFilename = require ( '../libs/helpers' ) . cleanFilename ;
15
16
var findDeadorAlive = require ( '../libs/remove' ) . findDeadorAlive ;
16
17
var userRoles = require ( '../models/userRoles.json' ) ;
17
18
18
19
var bucketName = 'OpenUserJS.org' ;
19
20
21
+ var DEV_AWS_URL = null ;
22
+
20
23
if ( isPro ) {
21
- AWS . config . update ( { region : 'us-east-1' } ) ;
24
+ AWS . config . update ( {
25
+ region : 'us-east-1'
26
+ } ) ;
22
27
} else {
23
28
// You need to install (and ruby too): https://github.com/jubos/fake-s3
24
29
// Then run the fakes3.sh script or: fakes3 -r fakeS3 -p 10001
25
- var DEV_AWS_URL = process . env . DEV_AWS_URL || 'http://localhost:10001' ;
30
+ DEV_AWS_URL = process . env . DEV_AWS_URL || 'http://localhost:10001' ;
26
31
AWS . config . update ( {
27
32
accessKeyId : 'fakeId' ,
28
33
secretAccessKey : 'fakeKey' ,
@@ -46,8 +51,8 @@ exports.caseInsensitive = caseInsensitive;
46
51
function caseSensitive ( aInstallName , aMoreThanInstallName ) {
47
52
48
53
var rMatchExpression = aMoreThanInstallName ? / ^ ( .* ) \/ ( .* ) \/ ( .* ) \/ ( .* ) $ / : / ^ ( .* ) \/ ( .* ) $ / ;
49
- var username = '' ;
50
54
var char = null ;
55
+ var username = '' ;
51
56
var rExpression = null ;
52
57
53
58
var matches = aInstallName . match ( rMatchExpression ) ;
@@ -101,12 +106,13 @@ function caseSensitive(aInstallName, aMoreThanInstallName) {
101
106
exports . caseSensitive = caseSensitive ;
102
107
103
108
exports . getSource = function ( aReq , aCallback ) {
104
- var s3 = new AWS . S3 ( ) ;
105
109
var installName = getInstallName ( aReq ) ;
106
-
107
110
Script . findOne ( { installName : caseSensitive ( installName ) } ,
108
111
function ( aErr , aScript ) {
109
112
var s3Object = null ;
113
+ var s3 = new AWS . S3 ( ) ;
114
+
115
+ // WARNING: Partial error handling at this stage
110
116
111
117
if ( ! aScript ) {
112
118
return aCallback ( null ) ;
@@ -156,7 +162,9 @@ exports.sendScript = function (aReq, aRes, aNext) {
156
162
++ aScript . installs ;
157
163
++ aScript . installsSinceUpdate ;
158
164
159
- aScript . save ( function ( aErr , aScript ) { } ) ;
165
+ aScript . save ( function ( aErr , aScript ) {
166
+ // WARNING: Resaving the script... WHY?
167
+ } ) ;
160
168
} ) ;
161
169
} ;
162
170
@@ -195,7 +203,8 @@ exports.sendMeta = function (aReq, aRes, aNext) {
195
203
data = meta [ prefix ] [ key ] ;
196
204
if ( data instanceof Array ) {
197
205
data . forEach ( function ( aValue ) {
198
- aRes . write ( '// @' + prefix + ':' + key + ( aValue ? whitespace + aValue : '' ) + '\n' ) ;
206
+ aRes . write ( '// @' + prefix + ':' + key + ( aValue ? whitespace + aValue : '' ) +
207
+ '\n' ) ;
199
208
} ) ;
200
209
}
201
210
else {
@@ -240,15 +249,19 @@ exports.findMeta = findMeta;
240
249
// Modified from Count Issues (http://userscripts.org/scripts/show/69307)
241
250
// By Marti Martz (http://userscripts.org/users/37004)
242
251
function parseMeta ( aString , aNormalize ) {
252
+ var lines = { } ;
243
253
var rLine = / \/ \/ @ ( \S + ) (?: \s + ( .* ) ) ? / ;
254
+ var line = null ;
255
+ var header = null ;
256
+
244
257
var headers = { } ;
258
+ var lineMatches = null ;
245
259
var name = null ;
246
- var prefix = null ;
247
- var key = null ;
248
260
var value = null ;
249
- var line = null ;
250
- var lineMatches = null ;
251
- var lines = { } ;
261
+ var key = null ;
262
+ var prefix = null ;
263
+ var unique = null ;
264
+ var one = null ;
252
265
var uniques = {
253
266
'description' : true ,
254
267
'icon' : true ,
@@ -258,16 +271,15 @@ function parseMeta(aString, aNormalize) {
258
271
'version' : true ,
259
272
'oujs:author' : true
260
273
} ;
261
- var unique = null ;
262
- var one = null ;
263
274
var matches = null ;
264
275
276
+
265
277
lines = aString . split ( / [ \r \n ] + / ) . filter ( function ( aElement , aIndex , aArray ) {
266
278
return ( aElement . match ( rLine ) ) ;
267
279
} ) ;
268
280
269
281
for ( line in lines ) {
270
- var header = null ;
282
+ header = null ;
271
283
272
284
lineMatches = lines [ line ] . replace ( / \s + $ / , '' ) . match ( rLine ) ;
273
285
name = lineMatches [ 1 ] ;
@@ -343,9 +355,9 @@ exports.getMeta = function (aChunks, aCallback) {
343
355
// parse the header. But strings are memory inefficient compared
344
356
// to buffers so we only convert the least number of chunks to
345
357
// get the user script header.
346
- var str = '' ;
347
358
var i = 0 ;
348
359
var header = null ;
360
+ var str = '' ;
349
361
350
362
for ( ; i < aChunks . length ; ++ i ) {
351
363
header = null ;
@@ -361,21 +373,21 @@ exports.getMeta = function (aChunks, aCallback) {
361
373
} ;
362
374
363
375
exports . storeScript = function ( aUser , aMeta , aBuf , aCallback , aUpdate ) {
364
- var s3 = new AWS . S3 ( ) ;
376
+ var isLibrary = typeof aMeta === 'string' ;
365
377
var name = null ;
366
378
var scriptName = null ;
379
+ var author = null ;
380
+ var collaborators = null ;
367
381
var installName = aUser . name + '/' ;
368
- var isLibrary = typeof aMeta === 'string' ;
369
- var libraries = [ ] ;
382
+ var collaboration = false ;
370
383
var requires = null ;
371
384
var match = null ;
372
- var collaboration = false ;
373
- var collaborators = null ;
374
- var author = null ;
375
385
var rLibrary = new RegExp (
376
386
'^(?:(?:(?:https?:)?\/\/' +
377
387
( isPro ? 'openuserjs\.org' : 'localhost:8080' ) +
378
388
')?\/(?:libs\/src|src\/libs)\/)?(.*?)([^\/]*\.js)$' , '' ) ;
389
+ var libraries = [ ] ;
390
+
379
391
380
392
if ( ! aMeta ) {
381
393
return aCallback ( null ) ;
@@ -468,7 +480,7 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
468
480
if ( ! aScript . isLib ) {
469
481
if ( collaboration &&
470
482
( findMeta ( script . meta , 'oujs.author' ) !== findMeta ( aMeta , 'oujs.author' ) ||
471
- JSON . stringify ( findMeta ( script . meta , 'oujs.collaborator' ) ) !=
483
+ JSON . stringify ( findMeta ( script . meta , 'oujs.collaborator' ) ) !=
472
484
JSON . stringify ( collaborators ) ) ) {
473
485
return aCallback ( null ) ;
474
486
}
@@ -482,8 +494,14 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
482
494
}
483
495
484
496
aScript . save ( function ( aErr , aScript ) {
497
+ var s3 = new AWS . S3 ( ) ;
498
+
499
+ // WARNING: No error handling at this stage
500
+
485
501
s3 . putObject ( { Bucket : bucketName , Key : installName , Body : aBuf } ,
486
502
function ( aErr , aData ) {
503
+ var userDoc = null ;
504
+
487
505
// Don't save a script if storing failed
488
506
if ( aErr ) {
489
507
console . error ( aUser . name , '-' , installName ) ;
@@ -493,13 +511,15 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
493
511
}
494
512
495
513
if ( aUser . role === userRoles . length - 1 ) {
496
- var userDoc = aUser ;
514
+ userDoc = aUser ;
497
515
if ( ! userDoc . save ) {
498
516
// We're probably using req.session.user which may have gotten serialized.
499
517
userDoc = new User ( userDoc ) ;
500
518
}
501
519
-- userDoc . role ;
502
- userDoc . save ( function ( aErr , aUser ) { aCallback ( aScript ) ; } ) ;
520
+ userDoc . save ( function ( aErr , aUser ) {
521
+ aCallback ( aScript ) ;
522
+ } ) ;
503
523
} else {
504
524
aCallback ( aScript ) ;
505
525
}
@@ -512,6 +532,9 @@ exports.deleteScript = function (aInstallName, aCallback) {
512
532
Script . findOne ( { installName : caseSensitive ( aInstallName ) } ,
513
533
function ( aErr , aScript ) {
514
534
var s3 = new AWS . S3 ( ) ;
535
+
536
+ // WARNING: No error handling at this stage
537
+
515
538
s3 . deleteObject ( { Bucket : bucketName , Key : aScript . installName } ,
516
539
function ( aErr ) {
517
540
if ( ! aErr ) {
@@ -526,7 +549,6 @@ exports.deleteScript = function (aInstallName, aCallback) {
526
549
// GitHub calls this on a push if a webhook is setup
527
550
// This controller makes sure we have the latest version of a script
528
551
exports . webhook = function ( aReq , aRes ) {
529
- var RepoManager = require ( '../libs/repoManager' ) ;
530
552
var payload = null ;
531
553
var username = null ;
532
554
var reponame = null ;
@@ -538,7 +560,7 @@ exports.webhook = function (aReq, aRes) {
538
560
// Test for know GH webhook ips: https://api.github.com/meta
539
561
if ( ! aReq . body . payload ||
540
562
! / 1 9 2 \. 3 0 \. 2 5 [ 2 - 5 ] \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] [ 0 - 9 ] | 1 [ 0 - 9 ] { 2 } | [ 1 - 9 ] ? [ 0 - 9 ] ) $ /
541
- . test ( aReq . connection . remoteAddress ) ) {
563
+ . test ( aReq . connection . remoteAddress ) ) {
542
564
return ;
543
565
}
544
566
@@ -557,6 +579,10 @@ exports.webhook = function (aReq, aRes) {
557
579
558
580
// Find the user that corresponds the repo owner
559
581
User . findOne ( { ghUsername : username } , function ( aErr , aUser ) {
582
+ var repoManager = null ;
583
+
584
+ // WARNING: Partial error handling at this stage
585
+
560
586
if ( ! aUser ) {
561
587
return ;
562
588
}
@@ -571,7 +597,8 @@ exports.webhook = function (aReq, aRes) {
571
597
} ) ;
572
598
573
599
// Update modified scripts
574
- var repoManager = RepoManager . getManager ( null , aUser , repos ) ;
575
- repoManager . loadScripts ( function ( ) { } , true ) ;
600
+ repoManager = RepoManager . getManager ( null , aUser , repos ) ;
601
+ repoManager . loadScripts ( function ( ) {
602
+ } , true ) ;
576
603
} ) ;
577
604
} ;
0 commit comments