* Added a fiel torrentID in search param
* Search can be limited to torrentID > id provided
* Templates creation through simple JS object
* XHR management through simple JS object
* Torrents object that interface with Templates and Query to get new
torrent uploaded according to the search context
As per suggestion of @yiiTT, CSRF is limited on users login,
registration, profile edit, comments post, torrent edit.
Uploads are not yet CSRF protected because api upload can't be used for
that
* Added new dep: gorilla/csrf
* CSRF field in forms
* CSRF variable in commontemplatevariables
* New key for messages and user context
Please change EnableSecureCSRF to false when testing locally and don't
merge config/env.go with the changes
Max-width & max-height only applied to images inside another element in the torrent description. It's fine because description images seem to always be in a \<p\>\<p/\>, but what if they weren't?
The max-width & max-height now apply to all images in the torrent description (.torrent-info-box img) instead of one in another element (.torrent-info-box > * > img), that way no image may ever go outside the bounds! Not on it's own at least.
The call to http.Server.Shutdown in main.go that happens on os.Interrupt
closes listeners. Remove racey code and format network/network.go.
Running Listener.Accept in a loop is not necessary as the stdlib expects
SA_RESTART to be set for signal handlers.
http.Server.Shutdown gracefully closes listeners/clients, we do not have to
do it ourselves. Making util/signals accept func() instead of io.Closer
allowed for the removal of network/closer.go and util/signals/closers.go.
It should valid every RFC valid emails.
A regex from a comment somewhere on a website, don't remember where but
I kept it (no licence on it, shared freely)
Calculate the info hash of the uploaded torrent file
instead of the re-encoded torrent file.
The re-encoded torrent files only contain a subset
of the original info values and thus have a different hash.