This plugin allows for automatic opening of user-selectable ports on supported routers. This is accomplished via the UPnP Protocol. The plugin will automatically open the server port, and additional ports can be added in the config for things like dynmap. You can also choose whether the plugin automatically closes the ports when the server closes.
UPnP is intended to be as lightweight and simple as possible, and only has four dependencies, used for logging, access to the spigot api, and bstats. Overall, UPnP is written in 896 lines of code.