@ -1,6 +1,7 @@
'use strict' ;
const Mongo = require ( _ _dirname + '/db.js' )
, { isIP } = require ( 'net' )
, Boards = require ( _ _dirname + '/boards.js' )
, Stats = require ( _ _dirname + '/stats.js' )
, db = Mongo . db . collection ( 'posts' )
@ -35,10 +36,12 @@ module.exports = {
} else {
projection [ 'globalreports' ] = 0 ;
}
if ( ip instanceof RegExp ) {
query [ 'ip.single' ] = ip ;
} else if ( typeof ip === 'string' ) {
query [ 'ip.raw' ] = ip ;
if ( ip != null ) {
if ( isIP ( ip ) ) {
query [ 'ip.raw' ] = ip ;
} else {
query [ 'ip.single' ] = ip ;
}
}
if ( permLevel > config . get . ipHashPermLevel ) {
projection [ 'ip.raw' ] = 0 ;
@ -54,21 +57,6 @@ module.exports = {
} ) . sort ( {
'_id' : - 1
} ) . skip ( offset ) . limit ( limit ) . toArray ( ) ;
posts . forEach ( p => {
//kill me
p . ip . single = p . ip . single . slice ( - 10 ) ;
p . ip . qrange = p . ip . qrange . slice ( - 10 ) ;
p . ip . hrange = p . ip . hrange . slice ( - 10 ) ;
if ( board ) {
p . reports . forEach ( r => {
r . ip . single = r . ip . single . slice ( - 10 ) ;
} ) ;
} else {
p . globalreports . forEach ( r => {
r . ip . single = r . ip . single . slice ( - 10 ) ;
} ) ;
}
} ) ;
return posts ;
} ,
@ -545,14 +533,6 @@ module.exports = {
} ,
'board' : board
} , { projection } ) . toArray ( ) ;
posts . forEach ( p => {
p . ip . single = p . ip . single . slice ( - 10 ) ;
p . ip . qrange = p . ip . qrange . slice ( - 10 ) ;
p . ip . hrange = p . ip . hrange . slice ( - 10 ) ;
p . reports . forEach ( r => {
r . ip . single = r . ip . single . slice ( - 10 ) ;
} ) ;
} ) ;
return posts ;
} ,
@ -571,26 +551,20 @@ module.exports = {
'$exists' : true
}
}
if ( ip instanceof RegExp ) {
query [ '$or' ] = [
{ 'ip.single' : ip } ,
{ 'globalreports.ip.single' : ip }
] ;
} else if ( typeof ip === 'string' ) {
query [ '$or' ] = [
{ 'ip.raw' : ip } ,
{ 'globalreports.ip.raw' : ip }
] ;
if ( ip != null ) {
if ( isIP ( ip ) ) {
query [ '$or' ] = [
{ 'ip.single' : ip } ,
{ 'globalreports.ip.single' : ip }
] ;
} else {
query [ '$or' ] = [
{ 'ip.raw' : ip } ,
{ 'globalreports.ip.raw' : ip }
] ;
}
}
const posts = await db . find ( query , { projection } ) . skip ( offset ) . limit ( limit ) . toArray ( ) ;
posts . forEach ( p => {
p . ip . single = p . ip . single . slice ( - 10 ) ;
p . ip . qrange = p . ip . qrange . slice ( - 10 ) ;
p . ip . hrange = p . ip . hrange . slice ( - 10 ) ;
p . globalreports . forEach ( r => {
r . ip . single = r . ip . single . slice ( - 10 ) ;
} ) ;
} ) ;
return posts ;
} ,