Dynamic Module Portability

Joseph Spencer spencer at kogosoftwarellc.com
Thu Jun 29 07:38:18 UTC 2017


Looks like I can grep NGX_MODULE_SIGNATURE from the nginx binary itself.
Depending on the version of nginx, it could be a decent option.  I'm
literally only dependent on core and http.  Most of the elements of the
signature appear to be extraneous.

On Thu, Jun 29, 2017 at 12:27 AM, Joseph Spencer <
spencer at kogosoftwarellc.com> wrote:

> I'm looking to create a portable binary, and from everything I can read,
> it is almost impossible.  The recommended approach seems to be to expose
> source code and require users to compile.  This is painful because it
> requires the source code and gcc to be available: a hard sell for the lazy
> sysadmin.
>
> My goal is to create a proprietary module that is used in conjunction with
> a paid service.  Users simply install the module and provide access token
> credentials.
>
> As you can imagine it's been really difficult, mainly because practically
> *every* configure option is compared at run time.
>
> I added some logging, and found that the module signature is indeed
> embedded in the resulting .so file.  I was able to successfully use sed to
> get my module to work, but I'm thinking this is an obvious hack not even
> worth considering for a production binary:
>
> sed -i'' 's|8,4,8,0011111111010111001111111111111111|8,4,8,
> 0000111111010111001110101111000110|' ngx_my_custom_module-nginx-1.11.5.so
>
> Having nginx -V is nice, but it could be beneficial to
> expose NGX_MODULE_SIGNATURE somehow.  That way I could have an installer
> script that checkes to ensure that essential modules are available and
> modify the binary after it's been downloaded.  I realize this is dangerous,
> but I'm not willing to expose source code and require gcc yet.
>
> Any opinions or guidance would be greatly appreciated.
>
> --
> Thanks,
> Joe Spencer (member)
> Kogo Software LLC
>



-- 
Thanks,
Joe Spencer (member)
Kogo Software LLC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20170629/50dd0c5b/attachment.html>


More information about the nginx-devel mailing list