Support for custom plugin repository



  • Hello all,

    I work in a company that has very strict security controls and blocks npp plugins downloads. This is for multiple and very sensible reasons that target the containment of information within the internal network and issues related to security and controls on software sourced from the internet.
    Downloading manually and installing them in the plugins folder is out of the question.

    Is there a way to setup a custom internal git repo so the plugins can be downloaded/verified by authorized people and placed in the internal plugin repo?

    This would help a large of number of developers that are using notepad++, allowing them to use some very useful and safe plugins available.

    Kind regards,
    Luis



  • I forgot to put the actual question.

    Is there a way of changing where does notepad++ looks for the list of plugins and where to download them from?

    If yes, where could I find the documentation related to this?

    Thanks!



  • @luis-garcia ,

    Natively, there is no way to configure that.

    However, the plugin list that Plugins Admin uses is derived from a DLL (nppPluginList.dll) which is shipped with each version of Notepad++. Your I.T. organization might be able to compile their own version of the DLL, and put that in the <installdir>\Plugins\Config folder instead of the one that ships with the public Notepad++. I have never tried that, so I don’t know if Notepad++ does a signing check on the nppPluginList.dll or not (I believe it does on the included Scintilla DLL, so it wouldn’t surprise me if it did on the plugin DLL , too), but a decent IT group would be able to figure that out.

    Alternatively, you said,

    Downloading manually and installing them in the plugins folder is out of the question.

    I disagree. If your IT organization wanted to, they could do the download and verify plugins, and set up a “safe plugins” site where they store copies of the “safe” ones. For example, put it on some internal website or some shared network drive. Then they (as admins) or individual users (if users have the permissions to write to the plugins folder) could copy the desired plugins from the “safe plugins” location to the installed Notepad++ instance.

    Edit: add link to nppPluginList.dll repo = https://github.com/notepad-plus-plus/nppPluginList/



  • Hello, @peterjones and All,

    The plugins, listed in the Markdown files, below, do not contain all the data ( For instance, the folder name and SHA-256 checksum are missing )

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x86.md

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md

    These last days, I was trying to easily get a complete table of N++ plugins which contains all data from the initial json files. Here is this method.

    Just one constraint : you must have the Elastic TabStops plugin, of Justin Dailey ( aka @Dail ), installed in your N++ configuration !

    Note that the final plugins’ table will contain eight columns :

    |  Plugin name  |  Author  |  Homepage  |  Folder Name  |  Version  |  Link  |  Description  |  SHA-256  |
    

    Let’s go :

    • Click on one of these two files, below :

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x86.json

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x64.json

    • Click on the Raw button, at right of the GitHub page

    • Select all contents ( Ctrl + A )

    • Copy to the clipboard ( Ctrl + C )

    • Start Notepad++

    • Open a new tab ( Ctrl + N )

    • Paste the clipboard contents ( Ctrl + V )

    • Save it, as a normal .txt file. For instance, PluginsList_32.txt or PluginsList_64.txt

    • Make sure that the last line is followed with a line-break ( This should always be the case, even if you extracted these files from the last nppPluginList-x.y.z.zip ! )

    • If necessary, remove the N++ Word Wrap mode ( View > Word wrap )

    • Run the menu command Plugins > Elastic Tabstops > Enable and verify that the line Enable is checked

    • Make a normal selection of all the text below, written in free-spacing mode, from (?x-si) till Group 10

    (?x-si)                                     #  FREE-SPACING mode, DOT matches STANDARD chars, Search SENSITIVE to CASE
                                                #      Header
      ^ \h+ "name"         :\x20 "  .+  " , \R
        \h+ "version"      :\x20 " (.+) " , \R  #      Group  1
        \h+ "arch"         :\x20 " (.+) " , \R  #      Group  2
        \h+ "npp-plugins"  :\x20   [       \R
    |                                           #  OR 
      ^ \h* [{}\x5b\x5d] ,? \R                  #      Delimiters : { } [ ] , at ANY level, POSSIBLY followed with a COMMA
    |                                           #  OR
                                                #      Each JASON MULTI-lines RECORD {••••••••};
      ^ \h+ "folder-name"  :\x20 " (.+) " , \R  #      Group  3
        \h+ "display-name" :\x20 " (.+) " , \R  #      Group  4
        \h+ "version"      :\x20 " (.+) " , \R  #      Group  5
        \h+ "id"           :\x20 " (.+) " , \R  #      Group  6
        \h+ "repository"   :\x20 " (.+) " , \R  #      Group  7
        \h+ "description"  :\x20 " (.+) " , \R  #      Group  8
        \h+ "author"       :\x20 " (.*) " , \R  #      Group  9
        \h+ "homepage"     :\x20 " (.*) "   \R  #      Group 10
    

    • Open the Replace dialog (Ctrl + H )

    => The Find what: zone should be filled up with this search

    • Depending on whether the current file is a Windows ( CRLF ) or Unix ( LF ) file, use the appropriate following replacement :

    REPLACE ( Win ) (?1\r\n\x20\x20\x20\x20NPP-PluginList - $2 bits - Version $1\r\n\r\n)?3|\x20\x20$4 \t|\x20\x20$9 \t|\x20\x20$10 \t|\x20\x20$3 \t|\x20\x20$5 \t|\x20\x20$7 \t|\x20\x20$8 \t|\x20\x20$6 \t|\r\n

    REPLACE ( Unix ) (?1\n\x20\x20\x20\x20NPP-PluginList - $2 bits - Version $1\n\n)?3|\x20\x20$4 \t|\x20\x20$9 \t|\x20\x20$10 \t|\x20\x20$3 \t|\x20\x20$5 \t|\x20\x20$7 \t|\x20\x20$8 \t|\x20\x20$6 \t|\n

    • Tick the Wrap around option

    • Select the Regular expression search mode

    • Click on the Replace All button

    => You should get, at once, a nice table with all the columns lined up ( Click on the Show All Characters icon )

    • Now, run the menu command Plugins > Elastic Tabstops > Convert Tabstops to Spaces ( IMPORTANT )

    • And, either, add this header, below, to the beginning of your 32 bits plugin’s table :

    •------------------------------------•------------------------------------------------------•---------------------------------------------------------------------------•----------------------------------•-------------------•------------------------------------------------------------------------------------------------------------------------------------------------------------------------•----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------•--------------------------------------------------------------------•
    |            Plugin name             |                        Author                        |                                 Homepage                                  |           Folder Name            |      Version      |                                                                                  Link                                                                                  |                                                                                            Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                              SHA-256                               |
    •------------------------------------•------------------------------------------------------•---------------------------------------------------------------------------•----------------------------------•-------------------•------------------------------------------------------------------------------------------------------------------------------------------------------------------------•----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------•--------------------------------------------------------------------•
    
    • Or add this header to the beginning of your 64 bits plugin’s table :
    •------------------------------------•------------------------------------------------------•------------------------------------------------------------------------•----------------------------------•-------------------•------------------------------------------------------------------------------------------------------------------------------•----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------•--------------------------------------------------------------------•
    |            Plugin name             |                        Author                        |                                Homepage                                |           Folder Name            |      Version      |                                                             Link                                                             |                                                                                            Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                              SHA-256                               |
    •------------------------------------•------------------------------------------------------•------------------------------------------------------------------------•----------------------------------•-------------------•------------------------------------------------------------------------------------------------------------------------------•----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------•--------------------------------------------------------------------•
    
    • Finally, save the contents of your PluginsList_32.txt or PluginsList_64.txt file

    Here we are. Nice isn’t it ?. Note you’ll probably have to ajust these title lines a bit, in later releases ;-))

    Best Regards

    guy038



  • Hi @peterjones and All,

    While playing around with the .md and .json files of the Plugins List, I came across two small irregularities but I don’t exactly know to which person I should report it !


    • In the plugin_list_x86 file, below :

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x86.md

    At the beginning of the description of the SQL plugin, there is an weird FF character in the string Allows to search\filter a CSV formatted text …, because the \f is wrongly detected as a Form Feed char !


    • In both files pl.x86.json and pl.x64.json, below :

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x86.json

    https://github.com/notepad-plus-plus/nppPluginList/blob/master/src/pl.x64.json

    The link of the Preview HTML plugin seems to contain a wrong %## syntax. Indeed, the underscore character, after .zip, should be translated as %5F and not as %3F !?

    https://fossil.2of4.net/npp_preview/zip/PreviewHTML32.zip%3Fname%3D%26uuid%3Dv1.3.2.0-32

    BTW, I verified that all other %## syntaxes, which refer to a space char ( %20 ) or the + char ( %2B ) are correct !

    BR

    guy038


Log in to reply