forked from cadey/xesite
52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
gopreload
|
|
=========
|
|
|
|
An emulation of the linux libc `LD_PRELOAD` except for use with Go plugins for
|
|
the addition of instrumentation and debugging utilities.
|
|
|
|
## Pluginizer
|
|
|
|
`pluginizer` is a bit of glue that makes it easier to turn underscore imports
|
|
into plugins:
|
|
|
|
```console
|
|
$ go get github.com/Xe/gopreload/cmd/pluginizer
|
|
$ pluginizer -help
|
|
Usage of pluginizer:
|
|
-dest string
|
|
destination package to generate
|
|
-pkg string
|
|
package to underscore import
|
|
$ pluginizer -pkg github.com/lib/pq -dest github.com/Xe/gopreload/database/postgres
|
|
To build this plugin:
|
|
$ go build -buildmode plugin -o /path/to/output.so github.com/Xe/gopreload/database/postgres
|
|
```
|
|
|
|
### Database drivers
|
|
|
|
I have included plugin boilerplate autogenned versions of the sqlite, postgres
|
|
and mysql database drivers.
|
|
|
|
## Manhole
|
|
|
|
[`manhole`][manhole] is an example of debugging and introspection tooling that has
|
|
been useful when debugging past issues with long-running server processes.
|
|
|
|
## Security Implications
|
|
|
|
This package assumes that programs run using it are never started with environment
|
|
variables that are set by unauthenticated users. Any errors in loading the plugins
|
|
will be logged using the standard library logger `log` and ignored.
|
|
|
|
This has about the same security implications as [`LD_PRELOAD`][ld-preload] does in most
|
|
Linux distributions, but the risk is minimal compared to the massive benefit for
|
|
being able to have arbitrary background services all be able to be dug into using
|
|
the same tooling or being able to have metric submission be completely separated
|
|
from the backend metric creation. Common logging setup processes can be _always_
|
|
loaded, making the default logger settings into the correct settings.
|
|
|
|
---
|
|
|
|
[manhole]: https://github.com/Xe/gopreload/tree/master/manhole
|
|
[ld-preload]: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/
|