Skip to content

Adding fileWrite to nodebb code

Solved Configure
16 2 4.7k 1
  • I have a test nodebb (no live users) and I want to see what is / isnt possible, in regard to owners accessing passwords.
    In src/password.js I added
    const fs=require(‘fs’)
    and a line to write password to a txt file. It didnt even open a file (even when just writing a text string in simpler test … see screenshot)
    I also added the same to src/user/password.js as I assumed one of these files will be accessed when someone logs in.
    So why was no pasfi.txt file ever created?
    Disclamer, I would not obviously do this on a live forum, but Im curious
    Screenshot_20221010-141223_Termius~2.jpg

  • I have a test nodebb (no live users) and I want to see what is / isnt possible, in regard to owners accessing passwords.
    In src/password.js I added
    const fs=require(‘fs’)
    and a line to write password to a txt file. It didnt even open a file (even when just writing a text string in simpler test … see screenshot)
    I also added the same to src/user/password.js as I assumed one of these files will be accessed when someone logs in.
    So why was no pasfi.txt file ever created?
    Disclamer, I would not obviously do this on a live forum, but Im curious
    Screenshot_20221010-141223_Termius~2.jpg

    @eveh You’d need to recompile the password.js file for any changes to be picked up. This typically won’t work unless you use ./nodebb build && ./nodebb start. Even then, you may still require a local DEV instance of webpack.

    One other way would be to use one of the existing hooks in NodeBB and create a custom JS function for it.

  • phenomlabundefined phenomlab has marked this topic as solved on
  • @eveh You’d need to recompile the password.js file for any changes to be picked up. This typically won’t work unless you use ./nodebb build && ./nodebb start. Even then, you may still require a local DEV instance of webpack.

    One other way would be to use one of the existing hooks in NodeBB and create a custom JS function for it.

    @phenomlab thanks, tried the recompile but still nothing.
    I have it running on a test server (so not locally)
    I tried reading up about hooks but didnt fully understand.
    If I use a non-async file write command would I still need that?
    Can you help me get started with this hook / webpack thing?

  • @phenomlab thanks, tried the recompile but still nothing.
    I have it running on a test server (so not locally)
    I tried reading up about hooks but didnt fully understand.
    If I use a non-async file write command would I still need that?
    Can you help me get started with this hook / webpack thing?

    @eveh said in Adding fileWrite to nodebb code:

    If I use a non-async file write command would I still need that?

    Yes, because you are changing one of the core files

    @eveh said in Adding fileWrite to nodebb code:

    I tried reading up about hooks but didnt fully understand.

    Did you review this page ?

    https://docs.nodebb.org/development/plugins/hooks/

    @eveh said in Adding fileWrite to nodebb code:

    Can you help me get started with this hook / webpack thing?

    That’s a question probably best asked over on the community forms, as that’s where the devs are located

    https://community.nodebb/org

  • @eveh said in Adding fileWrite to nodebb code:

    If I use a non-async file write command would I still need that?

    Yes, because you are changing one of the core files

    @eveh said in Adding fileWrite to nodebb code:

    I tried reading up about hooks but didnt fully understand.

    Did you review this page ?

    https://docs.nodebb.org/development/plugins/hooks/

    @eveh said in Adding fileWrite to nodebb code:

    Can you help me get started with this hook / webpack thing?

    That’s a question probably best asked over on the community forms, as that’s where the devs are located

    https://community.nodebb/org

    @phenomlab thanks
    But something Im still not getting, Ive coded it to write to a file when that hash function is called, so I dont understand why it needs to be triggered by a hook event?
    Its like when it runs that function how can it not write the file, its not something that needs to be triggered by an action, it should just do it when that function runs?

  • @phenomlab thanks
    But something Im still not getting, Ive coded it to write to a file when that hash function is called, so I dont understand why it needs to be triggered by a hook event?
    Its like when it runs that function how can it not write the file, its not something that needs to be triggered by an action, it should just do it when that function runs?

    @eveh The hook will trigger, but not if you are modifying password.js directly as it will need to be recompiled. To execute the hook, you should use /admin/appearance/customise#custom-js

  • @eveh The hook will trigger, but not if you are modifying password.js directly as it will need to be recompiled. To execute the hook, you should use /admin/appearance/customise#custom-js

    @phenomlab
    Update, the basic file write did work, I found the txt file did have the ‘!o!’ string characters in.
    But the write of password never worked.
    I tried both (file, password…
    And then wondered if password is an object so tried unpacking it as a string, which didnt work)
    See below
    So its the way Im referencing password that might be problem?
    Screenshot_20221010-194743_Termius~2.jpg

  • @phenomlab
    Update, the basic file write did work, I found the txt file did have the ‘!o!’ string characters in.
    But the write of password never worked.
    I tried both (file, password…
    And then wondered if password is an object so tried unpacking it as a string, which didnt work)
    See below
    So its the way Im referencing password that might be problem?
    Screenshot_20221010-194743_Termius~2.jpg

    @eveh does the account you are running the under have permissions to the file storage ?

  • @eveh does the account you are running the under have permissions to the file storage ?

    @phenomlab yes, sure it does as its doimg the first write to the File,
    Just not where I reference password variable

  • @phenomlab yes, sure it does as its doimg the first write to the File,
    Just not where I reference password variable

    @eveh what’s the output if you stop NodeBB and then run it from the console as ./nodebb dev ?

  • @eveh what’s the output if you stop NodeBB and then run it from the console as ./nodebb dev ?

    @phenomlab could that make a difference if the first write is working?

  • @phenomlab could that make a difference if the first write is working?

    @eveh I don’t expect it to make a difference, no, but it should at least provide some debug logging so you can get an idea of why it fails.

  • @eveh I don’t expect it to make a difference, no, but it should at least provide some debug logging so you can get an idea of why it fails.

    @phenomlab i think issue may have been i didnt stop nodebb before i ran it again in dev

  • @phenomlab i think issue may have been i didnt stop nodebb before i ran it again in dev

    @eveh now you know why I said stop NodeBB first 😁

  • @eveh now you know why I said stop NodeBB first 😁

    @phenomlab Narrowed down this issue, its something to do with accessing these variables
    If I write text out like ‘User’ or ‘password’ that goes to the file.
    But when I try these variables or objects (whatever they are) it never works.
    Ive tried writing out User, password, JSON.stringify(password)
    I dont know how to reference what is contained in User or password
    Below screenshot of the plain text that does work!

    Screenshot_20221010-212300_Termius~2.jpg

    I dont know much about these module exports, or what is passed into the parameter

  • @phenomlab Narrowed down this issue, its something to do with accessing these variables
    If I write text out like ‘User’ or ‘password’ that goes to the file.
    But when I try these variables or objects (whatever they are) it never works.
    Ive tried writing out User, password, JSON.stringify(password)
    I dont know how to reference what is contained in User or password
    Below screenshot of the plain text that does work!

    Screenshot_20221010-212300_Termius~2.jpg

    I dont know much about these module exports, or what is passed into the parameter

    @eveh this might be a question for the NodeBB Devs themselves. In all honesty, I’m not entirely sure without having to research this myself.


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • External Links - New Window

    Solved Customisation nodebb links settings
    8
    2 Votes
    8 Posts
    2k Views
    @Sampo2910 search the forum here for ogproxy which is the client side version of that plugin I wrote. It’s in use here on this forum.
  • Page control arrows for PWA

    Solved Customisation nodebb
    27
    25 Votes
    27 Posts
    14k Views
    @crazycells it is, yes - I think I’ll leave it as there is no specific PWA CSS classes I know of. Well, you could use something like the below, but this means multiple CSS files for different operating systems. /** * Determine the mobile operating system. * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'. * * @returns {String} */ function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; // Windows Phone must come first because its UA also contains "Android" if (/windows phone/i.test(userAgent)) { return "Windows Phone"; } if (/android/i.test(userAgent)) { return "Android"; } if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { return "iOS"; } return "unknown"; // return “Android” - one should either handle the unknown or fallback to a specific platform, let’s say Android } Once you’re in that rabbit hole, it’s impossible to get out of it.
  • Whitespace fixes in Nodebb

    Solved Customisation nodebb
    18
    2
    7 Votes
    18 Posts
    6k Views
    @Panda Just circling back here with something of an update (which I think you’ll like). I’ve completely restructured the ranking system. There are now less ranks, with a higher point threshold to reach them. More importantly, if you reload the site, you’ll notice that the ranks are now icons. I also removed the “Author” badge, and made this a single icon, which (to me) looks much better.
  • NodeBB: Creating the Swatch modes

    Solved Configure swatch
    2
    0 Votes
    2 Posts
    975 Views
    @mventures the swatch feature you refer to isn’t a NodeBB plugin, but a utility that I wrote that handles this. It is available for v2 (as you can see here) but I’ve stopped developing and releasing the code because it has been entirely rewritten to work for v3. If you’d like the code, this is possible, but you’ll need to upgrade to v3 first.
  • NodeBB: Creating pages

    Solved Configure nodebb create page
    9
    0 Votes
    9 Posts
    3k Views
    OK, I think I have figured out how to place a link in the footer which will click to a new page.
  • optional "snow falling" theme

    Solved Customisation nodebb
    6
    6 Votes
    6 Posts
    2k Views
    @Sala ok, but that’s still the same loop which is going to have an impact on the CPU.
  • Configure SMTP for Nodebb

    Solved Configure
    14
    5 Votes
    14 Posts
    4k Views
    @marusaky based on the work completed thus far (in relation to PM exchanges), I’m going to mark this completed. Sending email from the server itself works fine without issue, and DNS appears to be clean (valid SPF, DMARC, and DKIM records). It appears that only Gmail marks incoming messages from your domain as spam - perhaps because of the domain age, which there is nothing we can do to prevent this. Mail delivery to all other domains appears to work fine in al of my tests.
  • [NODEBB] Welcome Message

    Solved Customisation css html nodebb
    20
    2
    13 Votes
    20 Posts
    8k Views
    @DownPW the ‘js’ code for the banner takes the time from the client, so what it displays really depends on the regional settings for the operating system. I’ve not seen this issue myself but would like to see some examples of screenshots if possible.