Is there a way to see a running log of all recent forum posts?

Unsolved Technical Support
  • Is there a way to see a running list of all forum posts and replies in the order of when they were posted?

    We've been able to eliminate most of the obvious bot-generated spam in our forum. However, some spammers are pretty sneaky about how they do it.

    They'll join our forum, leave a few replies to existing topics that seem like legitimate replies (the content isn't very useful, basically just noise, but it also doesn't have any of the classic/obvious indicators of spam). Then, after waiting a few days, they'll find existing topics (usually ones that are several months old and haven't seen any action in a long time) and they'll start leaving replies that don't add any value, are plugged full of keywords and include links pointing back to other websites.

    These spam replies are harder to identify because the moderators have to carefully read through ALL of the replies beneath a topic in order to pick them out. However, it would be easier if there was a way to see a chronological log of all forum posts dating back in time. This way, the moderators could just quickly read through every single post and reply and spot which ones have spammy links included in them.

    Is there a way to see all forum activity listed out like this? If so, how?

  • I think you can use search to see all posts in order

  • @pitaj that works! Thanks for the reply.

Suggested Topics

  • 0 Votes
    5 Posts

    search icon doesn't function after login or logout · Issue #7236 · NodeBB/NodeBB


    GitHub (

  • 0 Votes
    2 Posts

    You want to switch from a subdomain ( to a subfolder (

    Basic steps:

    Change config.json to reflect the new url
    "url": "" -> "url": "" Use nginx to reverse proxy requests by adding a new location block for /forum
  • 2 Votes
    5 Posts

    @MJ My solution. For demo you can look at my forum (russian language)

    WARNING!!! It is dirty solution (change source code may cause problem with updating in future, you must know how to solve it) and I am not recommend use it, if you didn't understand what you do. Solution without localization, use it only if your forum use only one language (or change code and use number month)

    1. Set cutoff settings for timeago library

    Open acp > custom HTML&CSS > Custom Header and add this:

    <script type="text/javascript"> jQuery(document).ready(function() { jQuery.timeago.settings.cutoff = 2419200000; }); </script>

    In this example I set 28 days for relative date (1000 * 60 * 60 * 24 * 28 = 2419200000), you can change it.

    Didn't forget turn on checkbutton "Enable Custom Header" and save changes. After this, all dates older 28 days become unvisible.

    2 Change timeago library

    Onen file public/vendor/jquery/timeago and this code:

    if (!isNaN(data.datetime)) { if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { $(this).text(inWords(data.datetime)); } }

    replace to this:

    if (!isNaN(data.datetime)) { if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { $(this).text(inWords(data.datetime)); } else { var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" ]; var day = data.datetime.getDate() var year = data.datetime.getFullYear(); var monthIndex = data.datetime.getMonth(); var hours = ("0" + data.datetime.getHours()).slice(-2); var minutes = ("0" + data.datetime.getMinutes()).slice(-2); $(this).text(day + ' ' + monthNames[monthIndex] + ' ' + year + ' ' + hours + ':' + minutes); } } 3. Restart forum

    All must work fine

    Revert changes back

    If you need revert changes, you can do it with command

    git checkout /public/vendor/jquery/timeago/jquery.timeago.js

    And remove added text from acp > custom HTML&CSS > Custom Header

  • 0 Votes
    4 Posts

    For Azure, perhaps this helps?

    Otherwise, our standard point of reference:

  • 0 Votes
    1 Posts

    Hello, im using nodebb-plugin-amazons3 to store images on the forum - and they work fine.
    But when im trying to upload PNG image to my profile - server is crash.

    Is it problem with amazonS3 plugin ?

    2015-12-06T14:42:28.245479+00:00 app[web.1]: 6/12 17:42 [3] - ←[32minfo←[39m: [plugins/nodebb-plugin-amazons3] Starting upload image...
    2015-12-06T14:42:28.251153+00:00 app[web.1]: 6/12 17:42 [3] - ←[31merror←[39m: MongoError: server sockets closed
    2015-12-06T14:42:28.248099+00:00 app[web.1]: 6/12 17:42 [3] - ←[31merror←[39m: TypeError: Cannot read property 'replace' of undefined
    2015-12-06T14:42:28.251156+00:00 app[web.1]: at Server.destroy (/app/node_modules/mongodb-core/lib/topologies/server.js:676:47)
    2015-12-06T14:42:28.251157+00:00 app[web.1]: at Server.close (/app/node_modules/mongodb/lib/server.js:367:17)
    2015-12-06T14:42:28.248103+00:00 app[web.1]: at /app/src/plugins/hooks.js:97:12
    2015-12-06T14:42:28.248102+00:00 app[web.1]: at Object.plugin.exports.uploadImage [as method] (/app/node_modules/nodebb-plugin-amazons3/index.js:199:50)
    2015-12-06T14:42:28.251157+00:00 app[web.1]: at Db.close (/app/node_modules/mongodb/lib/db.js:333:19)
    2015-12-06T14:42:28.248104+00:00 app[web.1]: at /app/node_modules/async/lib/async.js:375:13
    2015-12-06T14:42:28.248105+00:00 app[web.1]: at iterate (/app/node_modules/async/lib/async.js:262:13)
    2015-12-06T14:42:28.251158+00:00 app[web.1]: at Object.module.close (/app/src/database/mongo.js:237:6)
    2015-12-06T14:42:28.248106+00:00 app[web.1]: at Object.async.forEachOfSeries.async.eachOfSeries (/app/node_modules/async/lib/async.js:281:9)
    2015-12-06T14:42:28.251159+00:00 app[web.1]: at shutdown (/app/app.js:305:28)
    2015-12-06T14:42:28.251160+00:00 app[web.1]: at emitOne (events.js:77:13)
    2015-12-06T14:42:28.251160+00:00 app[web.1]: at process.<anonymous> (/app/app.js:176:3)
    2015-12-06T14:42:28.248108+00:00 app[web.1]: at Object.Plugins.fireHook (/app/src/plugins/hooks.js:70:5)
    2015-12-06T14:42:28.248107+00:00 app[web.1]: at Object.async.inject.async.foldl.async.reduce (/app/node_modules/async/lib/async.js:374:15)
    2015-12-06T14:42:28.248107+00:00 app[web.1]: at fireFilterHook (/app/src/plugins/hooks.js:89:9)
    2015-12-06T14:42:28.251161+00:00 app[web.1]: at process.emit (events.js:169:7)
    2015-12-06T14:42:28.251162+00:00 app[web.1]: at process._fatalException (node.js:232:26)
    2015-12-06T14:42:28.248110+00:00 app[web.1]: at fn (/app/node_modules/async/lib/async.js:741:34)
    2015-12-06T14:42:28.248109+00:00 app[web.1]: at async.waterfall.url (/app/src/user/picture.js:178:21)
    2015-12-06T14:42:28.251337+00:00 app[web.1]: 6/12 17:42 [3] - ←[31merror←[39m: MongoError: server sockets closed
    2015-12-06T14:42:28.251340+00:00 app[web.1]: at Server.close (/app/node_modules/mongodb/lib/server.js:367:17)
    2015-12-06T14:42:28.251339+00:00 app[web.1]: at Server.destroy (/app/node_modules/mongodb-core/lib/topologies/server.js:676:47)
    2015-12-06T14:42:28.248207+00:00 app[web.1]: at Object.plugin.exports.uploadImage [as method] (/app/node_modules/nodebb-plugin-amazons3/index.js:199:50)
    2015-12-06T14:42:28.251341+00:00 app[web.1]: at Object.module.close (/app/src/database/mongo.js:237:6)
    2015-12-06T14:42:28.248205+00:00 app[web.1]: TypeError: Cannot read property 'replace' of undefined
    2015-12-06T14:42:28.248208+00:00 app[web.1]: at /app/node_modules/async/lib/async.js:375:13
    2015-12-06T14:42:28.248209+00:00 app[web.1]: at Object.async.forEachOfSeries.async.eachOfSeries (/app/node_modules/async/lib/async.js:281:9)
    2015-12-06T14:42:28.248210+00:00 app[web.1]: at Object.async.inject.async.foldl.async.reduce (/app/node_modules/async/lib/async.js:374:15)
    2015-12-06T14:42:28.248207+00:00 app[web.1]: at /app/src/plugins/hooks.js:97:12
    2015-12-06T14:42:28.248209+00:00 app[web.1]: at iterate (/app/node_modules/async/lib/async.js:262:13)
    2015-12-06T14:42:28.251340+00:00 app[web.1]: at Db.close (/app/node_modules/mongodb/lib/db.js:333:19)
    2015-12-06T14:42:28.251344+00:00 app[web.1]: at emitOne (events.js:77:13)
    2015-12-06T14:42:28.251345+00:00 app[web.1]: at process.emit (events.js:169:7)
    2015-12-06T14:42:28.248212+00:00 app[web.1]: at fn (/app/node_modules/async/lib/async.js:741:34)
    2015-12-06T14:42:28.248211+00:00 app[web.1]: at fireFilterHook (/app/src/plugins/hooks.js:89:9)
    2015-12-06T14:42:28.248211+00:00 app[web.1]: at Object.Plugins.fireHook (/app/src/plugins/hooks.js:70:5)
    2015-12-06T14:42:28.251343+00:00 app[web.1]: at shutdown (/app/app.js:305:28)
    2015-12-06T14:42:28.251346+00:00 app[web.1]: at process._fatalException (node.js:232:26)
    2015-12-06T14:42:28.251344+00:00 app[web.1]: at process.<anonymous> (/app/app.js:176:3)
    2015-12-06T14:42:28.248212+00:00 app[web.1]: at async.waterfall.url (/app/src/user/picture.js:178:21)
    2015-12-06T14:42:28.248536+00:00 app[web.1]: 6/12 17:42 [3] - ←[32minfo←[39m: [app] Shutdown (SIGTERM/SIGINT) Initialised.

    And second that image preview immediately after upload doesn't work on Heroku:

    2015-12-06T12:02:14.626800+00:00 app[web.1]: 6/12 15:02 [3] - ←[32minfo←[39m: [plugins/nodebb-plugin-amazons3] Starting upload image...
    2015-12-06T12:02:14.648181+00:00 app[web.1]: 6/12 15:02 [3] - ←[31merror←[39m: unable to delete picture /tmp/E6N7l7gfAITRJkG8D5bXHa_q.jpg

    Current version of forum: 0.9.1