SkillAgentSearch skills...

NgPost

Command Line (or minimalist GUI) usenet poster for binaries developped in C++/QT designed to be as fast as possible and offer all the main features to post data easily and safely. Releases for Linux, Windows and MacOS are available.

Install / Use

/learn @mbruel/NgPost
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

<img align="left" width="80" height="80" src="https://raw.githubusercontent.com/mbruel/ngPost/master/src/resources/icons/ngPost.png" alt="ngPost">

ngPost v4.16

Pour la version Française cliquez ici ;)<br/> <br/> Here is an invite for the brand new discord server, feel free to join if you've questions or if interested in beta testing the new features before they're released ;)<br/> <br/>

Command Line and sexy GUI Usenet poster for binaries developped in C++11/Qt5</br> it is designed to be as fast as possible and offer ALL the main features to post data easily and safely.</br> it can compress (using your external rar binary) and generate the par2 before posting!<br/> it has a posting queue to allow you to prepare several posts (especially using the GUI using Tabs).<br/> it packs the next Post while uploading the current one (compression + par2 generation) <br/> it can automate posts by scanning folder(s) and posting each file/folder individually after having them compressed (with a potential random archive name and password) and generated the par2!<br/> it can monitor folder(s) to post each new file/folder individually after having them compressed.<br/> it can auto delete files/folders once posted (only for monitoring with the HMI and with both --auto and --monitor in cmd)<br/> it can execute a COMMAND or script after each Post (cf NZB_POST_CMD in the configuration file)<br/> it can switch off the computer when all the posts are finished<br/> it is translated in Chinese, Dutch, English, French, German, Portuguese and Spanish.

ngPost_v4.3

Releases are availables for: Linux 64bit, Windows (both 32bit and 64bit), MacOS and Raspbian (RPI 4). Soon for Android then iOS...

Here are the main features and advantages of ngPost:

  • full obfuscation of the Article Header : the Subject will be a UUID (as the msg-id) and a random Poster will be used. Be Careful, using this, you won't be able to find your post on Usenet (or any Indexers) if you lose the NZB file. But using this method is completely safe, no need to obfuscate your files or even tp use a password.
  • Posting Queue: you can prepare several posts while you're posting something. Of course you can cancel pending posts ;)
  • Post automation: scan a folder and post each file/folder after compression. (cf --auto option in CMD and the "Auto Posting" tab on the GUI)
  • compress using RAR or 7zip (external command) with random name obfuscation and password and generate par2 before posting
  • write history of posts in a csv file: so you can get the date, file name, size, upload speed but most important the archive name and password in simple excel spreadsheet ;)
  • par2cmdline is included in the package but you can use another tool (like Multipar) if you wish using the PAR2_CMD and PAR2_ARGS keywords in the config file
  • support multiple files and multiple folders
  • support several servers (using config file or the HMI) with each several connections (supporting ssl)
  • spread those connection on several threads. By default the number of cores of the station but you can set the number if you fancy.
  • prepare the Articles on the main Thread (yEnc encoding) so the upload threads are always ready to write when they can. (each connections has 2 Articles ready in advance)
  • use asynchronous sockets in the upload threads
  • limit the disk access to the minimum by opening the files to post only once in the main Thread and processing them sequentially one by one (no need to open several files at the same time, the Articles will be spread to all the connections)
  • generate a random poster (from) but can use a fixed one if desired
  • generate the nzb file
  • handle interruption : if a post is stopped, the nzb is generated with the files that have been posted and it will list the files that havn't been posted so you can repost only those ones and then manually concatenate the nzb files. (in CMD, the application would close properly)
  • add meta in the header of the nzb (typically for a password)
  • Retry to post Articles with a different UUID in case of error
  • Try to reconnect if there is an error on a socket (same Retry parameter than for the articles)
  • ...

How to build

Dependencies:

  • build-essential (C++ compiler, libstdc++, make,...)
  • qt5-default (Qt5 libraries and headers)
  • qt5-qmake (to generate the moc files and create the Makefile)
  • libssl (v1.0.2 or v1.1) but it should be already installed on your system

Build:

  • go to the src folder
  • qmake
  • make

Easy! it should have generate the executable ngPost</br> you can copy it somewhere in your PATH so it will be accessible from anywhere

As it is made in C++/QT, you can build it and run it on any OS (Linux / Windows / MacOS / Android) <br/> releases have only been made for Linux x64 and Windows x64 (for 7 and above) and MacOS (<br/> in order to build on other OS, the easiest way would be to install QT and load the project in QtCreator<br/>

How to use it in command line

<pre> Syntax: ngPost (options)* (-i <file or folder> | --auto <folder> | --monitor <folder>)+ --help : Help: display syntax -v or --version : app version -c or --conf : use configuration file (if not provided, we try to load $HOME/.ngPost) --disp_progress : display cmd progressbar: NONE (default), BAR or FILES -d or --debug : display extra information --fulldebug : display full debug information -l or --lang : application language --check : check nzb file (if articles are available on Usenet) cf https://github.com/mbruel/nzbCheck -q or --quiet : quiet mode (no output on stdout) // automated posting (scanning and/or monitoring) --auto : parse directory and post every file/folder separately. You must use --compress, should add --gen_par2, --gen_name and --gen_pass --monitor : monitor directory and post every new file/folder. You must use --compress, should add --gen_par2, --gen_name and --gen_pass --rm_posted : delete file/folder once posted. You must use --auto or --monitor with this option. // quick posting (several files/folders) -i or --input : input file to upload (single file or directory), you can use it multiple times -o or --output : output file path (nzb) -x or --obfuscate : obfuscate the subjects of the articles (CAREFUL you won't find your post if you lose the nzb file) -g or --groups : newsgroups where to post the files (coma separated without space) -m or --meta : extra meta data in header (typically "password=qwerty42") -f or --from : poster email (random one if not provided) -a or --article_size: article size (default one: 716800) -z or --msg_id : msg id signature, after the @ (default one: ngPost) -r or --retry : number of time we retry to an Article that failed (default: 5) -t or --thread : number of Threads (the connections will be distributed amongs them) --gen_from : generate a new random email for each Post (--auto or --monitor) // for compression and par2 support --tmp_dir : temporary folder where the compressed files and par2 will be stored --rar_path : RAR absolute file path (external application) --rar_size : size in MB of the RAR volumes (0 by default meaning NO split) --rar_max : maximum number of archive volumes --par2_pct : par2 redundancy percentage (0 by default meaning NO par2 generation) --par2_path : par2 absolute file path (in case of self compilation of ngPost) --auto_compress : compress inputs with random name and password and generate par2 (equivalent of --compress --gen_name --gen_pass --gen_par2) --compress : compress inputs using RAR or 7z --gen_par2 : generate par2 (to be used with --compress) --rar_name : provide the RAR file name (to be used with --compress) --rar_pass : provide the RAR password (to be used with --compress) --gen_name : generate random RAR name (to be used with --compress) --gen_pass : generate random RAR password (to be used with --compress) --length_name : length of the random RAR name (to be used with --gen_name), default: 17 --length_pass : length of the random RAR password (to be used with --gen_pass), default: 13 --rar_no_root_folder: Remove root (parent) folder when compressing Folders using RAR // you can provide servers in one string using -S and/or split the parameters for ONE SINGLE server (this will overwrite the configuration file) -S or --server : NNTP server following the format (&lt;user&gt;:&lt;pass&gt;@@@)?&lt;host&gt;:&lt;port&gt;:&lt;nbCons&gt;:(no)?ssl -h or --host : NNTP server hostname (or IP) -P or --port : NNTP server port -s or --ssl : use SSL -u or --user : NNTP server username -p or --pass : NNTP server password -n or --connection : number of NNTP connections Examples: - with monitoring: ngPost_v4.16_cmd-x86_64.AppImage --monitor /data/folder1 --monitor /data/folder2 --auto_compress --rm_posted --disp_progress files - with auto post: ngPost_v4.16_cmd-x86_64.AppImage --auto /data/folder1 --auto /data/folder2 --compress --gen_par2 --gen_name --gen_pass --rar_size 42 --disp_progress files - with compression, filename obfuscation, random password and par2: ngPost_v4.16_cmd-x86_64.AppImage -i /tmp/file1 -i /tmp/folder1 -o /nzb/myPost.nzb --compress --gen_name --gen_pass --gen_par2 - with config file: ngPost_v4.16_cmd-x86_64.AppImage -c ~/.ngPost -m "password
View on GitHub
GitHub Stars232
CategoryDesign
Updated1d ago
Forks42

Languages

C++

Security Score

100/100

Audited on Apr 8, 2026

No findings