diff --git a/server/server-packr.go b/server/server-packr.go
index 7bec7ff..77bfb1c 100644
--- a/server/server-packr.go
+++ b/server/server-packr.go
@@ -10,6 +10,6 @@ import "github.com/gobuffalo/packr"
// and any other packr generated files.
func init() {
packr.PackJSONBytes("./static/templates", "error.html", "\"PGh0bWw+CjxoZWFkPgogIDx0aXRsZT5CYWQgR2F1Y2hlIExpbmtzPC90aXRsZT4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iL19mYXZpY29uLnBuZyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjAuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIGludGVncml0eT0ic2hhMzg0LUduNTM4NHhxUTFhb1dYQSswNThSWFB4UGc2Znk0SVd2VE5oMEUyNjNYbUZjSmxTQXdpR2dGQVcvZEFpUzZKWG0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyI+CjwvaGVhZD4KPGJvZHk+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciIgcm9sZT0iYWxlcnQiPgogICAgICBUaGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB5b3VyIGxpbmsgJ3t7IC5saW5rLlBhdGggfX0nIHdpdGggdGFyZ2V0ICc8YSBocmVmPSJ7eyAubGluay5UYXJnZXQgfX0iPnt7LmxpbmsuVGFyZ2V0fX08L2E+Jzoge3sgLmVyciB9fS4gIDxhIGhyZWY9Int7IC5saW5rLkVkaXRVUkwgfX0iPkVkaXQgaXQ/PC9hPgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4=\"")
- packr.PackJSONBytes("./static/templates", "index.html", "\"PGh0bWw+CjxoZWFkIHByb2ZpbGU9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyI+CiAgPHRpdGxlPkdhdWNoZUxpbmtzPC90aXRsZT4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iL19mYXZpY29uLnBuZyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjAuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGEzODQtR241Mzg0eHFRMWFvV1hBKzA1OFJYUHhQZzZmeTRJV3ZUTmgwRTI2M1htRmNKbFNBd2lHZ0ZBVy9kQWlTNkpYbSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL19zZWFyY2gueG1sIiB0aXRsZT0iQ29udGVudCBzZWFyY2giLz4KICA8c2NyaXB0IGRlZmVyIHNyYz0iaHR0cHM6Ly91c2UuZm9udGF3ZXNvbWUuY29tL3JlbGVhc2VzL3Y1LjAuNi9qcy9hbGwuanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4yLjEuc2xpbS5taW4uanMiCiAgICAgICAgICBpbnRlZ3JpdHk9InNoYTM4NC1LSjNvMkRLdElrdllJSzNVRU56bU03S0NrUnIvckU5L1FwZzZhQVpHSndGRE1WTkEvR3BHRkY5M2hYcEc1S2tOIgogICAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3BvcHBlci5qcy8xLjEyLjkvdW1kL3BvcHBlci5taW4uanMiCiAgICAgICAgICBpbnRlZ3JpdHk9InNoYTM4NC1BcE5iZ2g5QitZMVFLdHYzUm43VzNtZ1B4aFU5Sy9TY1FzQVA3aFVpYlgzOWo3ZmFrRlBza3ZYdXN2ZmEwYjRRIgogICAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzQuMC4wL2pzL2Jvb3RzdHJhcC5taW4uanMiCiAgICAgICAgICBpbnRlZ3JpdHk9InNoYTM4NC1KWlI2U3Blamg0VTAyZDhqT3Q2dkxFSGZlL0pRR2lSUlNRUXhTZkZXcGkxTXF1VmRBeWpVYXI1Kzc2UFZDbVlsIgogICAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+Cjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPgogICAgICA8cD48L3A+CiAgICAgIDxoMSBjbGFzcz0idGV4dC1jZW50ZXIgdGV4dC1wcmltYXJ5Ij4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXJvY2tldCBmYS1mbGlwLWhvcml6b250YWwiPjwvaT4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXJvY2tldCBmYS1mbGlwLWhvcml6b250YWwiPjwvaT4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXJvY2tldCBmYS1mbGlwLWhvcml6b250YWwiPjwvaT4KICAgICAgICBHYXVjaGVMaW5rcwogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgoKICAgICAgPC9oMT4KCiAgICB7eyBpZiBlcSAucXVlcnkgIiIgfX0KICAgICAgPGEgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IiByb2xlPSJidXR0b24iCiAgICAgICAgIGhyZWY9Ii9fYWRkP3ByZWZpbGxfUGF0aD17eyAucXVlcnkgfX0mcHJlZmlsbF9BdXRob3I9e3sgLmF1dGhvciB9fSI+QWRkIGEgbGluazwvYT4KICAgIHt7IGVsc2UgfX0KICAgICAgPGEgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IiByb2xlPSJidXR0b24iCiAgICAgICAgIGhyZWY9Ii9fYWRkP3ByZWZpbGxfUGF0aD17eyAucXVlcnkgfX0mcHJlZmlsbF9BdXRob3I9e3sgLmF1dGhvciB9fSI+QWRkIDxzdHJvbmc+e3sgLnByZWZpeCB9fQogICAgICAgIC97eyAucXVlcnkgfX08L3N0cm9uZz4gYXMgYSBuZXcgbGluazwvYT4KICAgIHt7IGVuZCB9fQoKICAgIHt7ICRkb3dubG9hZF9jaHJvbWVfbXNnIDo9IGAKICAgIDxvbD4KICAgICAgPGxpPkRvd25sb2FkIHRoZSBleHRlbnNpb24gZm9yIDxhIGhyZWY9Ii9fY2hyb21lX2V4dGVuc2lvbiI+Q2hyb21lPC9hPiBvciA8YSBocmVmPSIvX2ZpcmVmb3hfZXh0ZW5zaW9uIj5GaXJlZm94PC9hPi4KICAgICAgPGxpPk9wZW4gPGEgaHJlZj0iY2hyb21lOi8vZXh0ZW5zaW9ucyI+Y2hyb21lOi8vZXh0ZW5zaW9uczwvYT4gYnkgcGFzdGluZyA8Y29kZT5jaHJvbWU6Ly9leHRlbnNpb25zPC9jb2RlPiBpbnRvIHlvdXIgc2VhcmNoIGJhci4KICAgICAgPGxpPkVuYWJsZSBkZXZlbG9wZXIgbW9kZSBzbyB5b3UgY2FuIGluc3RhbGwgYW4gdW5zaWduZWQgZXh0ZW5zaW9uLgogICAgICA8bGk+RHJhZyB0aGUgZG93bmxvYWRlZCBleHRlbnNpb24gaW50byB0aGUgZXh0ZW5zaW9ucyB3aW5kb3cuCiAgICA8L29sPgogICAgYH19CgogICAgICA8YSBocmVmPSIvX2VkaXQiIGNsYXNzPSJidG4gYnRuLWxpbmsiPkVkaXQgYWxsIGxpbmtzPC9hPgogICAgICA8ZGl2IGNsYXNzPSJmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbGluayBidG4taW5mbyB0ZXh0LWluZm8iIGRhdGEtdG9nZ2xlPSJwb3BvdmVyIiB0aXRsZT0iSG93IHRvIGluc3RhbGwgdGhlIGJyb3dzZXIgZXh0ZW5zaW9uIgogICAgICAgICAgICAgICAgZGF0YS1jb250ZW50PSJ7eyAkZG93bmxvYWRfY2hyb21lX21zZyB9fSIKICAgICAgICA+RG93bmxvYWQgQnJvd3NlciBFeHRlbnNpb24KICAgICAgICA8L2E+CiAgICAgIDwvZGl2PgogICAgICA8cD48L3A+CiAgICB7eyBpZiAubGlua3MgfX0KICAgIHt7IGlmIG5lIC5xdWVyeSAiIiB9fQogICAgICBNYXliZSB5b3UgbWVhbnQgb25lIG9mIHRoZXNlPwogICAge3sgZW5kIH19CiAgICAgIDxkaXY+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLXJlc3BvbnNpdmUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRoPkxpbms8L3RoPgogICAgICAgICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICAgICAgICA8dGg+VGFyZ2V0PC90aD4KICAgICAgICAgICAgPHRoPjwvdGg+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90aGVhZD4KICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgIHt7ICRvcmlnaW5hbFVSTCA6PSAub3JpZ2luYWxVUkwgfX0KICAgICAgICAgIHt7ICRwcmVmaXggOj0gLnByZWZpeH19e3sgcmFuZ2UgJGwgOj0gLmxpbmtzIH19CiAgICAgICAgICB7eyAkYiA6PSAkbC5CYXNlIH19CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD48YSBocmVmPSJ7eyAkbC5UcmFuc2Zvcm0gIiIgJG9yaWdpbmFsVVJMIH19Ij57eyAkcHJlZml4IH19L3t7IGlmICRsLklzUmVnZXhwIH19CiAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZvbnQtaXRhbGljIHRleHQtc3VjY2VzcyI+e3skbC5QYXRoU3RyaW5nfX08L2NvZGU+e3sgZWxzZSB9fXt7ICRiLlBhdGggfX17eyBlbmQgfX08L2E+PC90ZD4KICAgICAgICAgICAgPHRkPnt7ICRiLkRlc2NyaXB0aW9uIH19PC90ZD4KICAgICAgICAgICAgPHRkPjxhIGhyZWY9Int7ICRsLlRyYW5zZm9ybSAiIiAkb3JpZ2luYWxVUkwgfX0iPnt7ICRiLlRhcmdldCB9fTwvYT48L3RkPgogICAgICAgICAgICA8dGQ+PGEgaHJlZj0ie3sgJGIuRWRpdFVSTC5TdHJpbmcgfX0iPjxpIGNsYXNzPSJmYXIgZmEtc20gZmEtZWRpdCI+PC9pPjwvYT48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIHt7IGVuZCB9fQogICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgICA8L2Rpdj4KICAgIHt7IGVsc2UgfX0KICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5IHRleHQtY2VudGVyIj4KICAgICAgICAgIE5vIG1hdGNoZXMgZm91bmQgZm9yCiAgICAgICAgICA8bWFyaz57eyAucXVlcnkgfX08L21hcms+CiAgICAgICAgICAuCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAge3sgZW5kIH19CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CjxzY3JpcHQ+CiAgJChmdW5jdGlvbiAoKSB7CiAgICAkKCdbZGF0YS10b2dnbGU9InBvcG92ZXIiXScpLnBvcG92ZXIoe2h0bWw6IHRydWV9KQogIH0pCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K\"")
- packr.PackJSONBytes("./static/templates", "search.xml", "\"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPE9wZW5TZWFyY2hEZXNjcmlwdGlvbiB4bWxucz0iaHR0cDovL2E5LmNvbS8tL3NwZWMvb3BlbnNlYXJjaC8xLjEvIj4KICAgIDxTaG9ydE5hbWU+TEQgR2F1Y2hlTGlua3M8L1Nob3J0TmFtZT4KICAgIDxEZXNjcmlwdGlvbj5MYXVuY2hEYXJrbHkgR2F1Y2hlTGlua3M8L0Rlc2NyaXB0aW9uPgogICAgPElucHV0RW5jb2Rpbmc+VVRGLTg8L0lucHV0RW5jb2Rpbmc+CiAgICA8SW1hZ2Ugd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPi9fZmF2aWNvbi5wbmc8L0ltYWdlPgogICAgPFVybCB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiBtZXRob2Q9IkdFVCIgdGVtcGxhdGU9Ii97c2VhcmNoVGVybXN9Ii8+CiAgICA8VXJsIHR5cGU9ImFwcGxpY2F0aW9uL3gtb3BlbnNlYXJjaCt4bWwiIG1ldGhvZD0iR0VUIiB0ZW1wbGF0ZT0iL3tzZWFyY2hUZXJtc30iLz4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==\"")
+ packr.PackJSONBytes("./static/templates", "index.html", "\"PGh0bWw+CjxoZWFkIHByb2ZpbGU9Imh0dHA6Ly9hOS5jb20vLS9zcGVjL29wZW5zZWFyY2gvMS4xLyI+CiAgPHRpdGxlPkdhdWNoZUxpbmtzPC90aXRsZT4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iL19mYXZpY29uLnBuZyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjAuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGEzODQtR241Mzg0eHFRMWFvV1hBKzA1OFJYUHhQZzZmeTRJV3ZUTmgwRTI2M1htRmNKbFNBd2lHZ0ZBVy9kQWlTNkpYbSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vIj4KICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0ie3sgLmhvc3QgfX0vX3NlYXJjaC54bWwiIHRpdGxlPSJDb250ZW50IHNlYXJjaCIvPgogIDxzY3JpcHQgZGVmZXIgc3JjPSJodHRwczovL3VzZS5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjUuMC42L2pzL2FsbC5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjIuMS5zbGltLm1pbi5qcyIKICAgICAgICAgIGludGVncml0eT0ic2hhMzg0LUtKM28yREt0SWt2WUlLM1VFTnptTTdLQ2tSci9yRTkvUXBnNmFBWkdKd0ZETVZOQS9HcEdGRjkzaFhwRzVLa04iCiAgICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcG9wcGVyLmpzLzEuMTIuOS91bWQvcG9wcGVyLm1pbi5qcyIKICAgICAgICAgIGludGVncml0eT0ic2hhMzg0LUFwTmJnaDlCK1kxUUt0djNSbjdXM21nUHhoVTlLL1NjUXNBUDdoVWliWDM5ajdmYWtGUHNrdlh1c3ZmYTBiNFEiCiAgICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC4wLjAvanMvYm9vdHN0cmFwLm1pbi5qcyIKICAgICAgICAgIGludGVncml0eT0ic2hhMzg0LUpaUjZTcGVqaDRVMDJkOGpPdDZ2TEVIZmUvSlFHaVJSU1FReFNmRldwaTFNcXVWZEF5alVhcjUrNzZQVkNtWWwiCiAgICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KPC9zY3JpcHQ+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0xMiI+CiAgICAgIDxwPjwvcD4KICAgICAgPGgxIGNsYXNzPSJ0ZXh0LWNlbnRlciB0ZXh0LXByaW1hcnkiPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcm9ja2V0IGZhLWZsaXAtaG9yaXpvbnRhbCI+PC9pPgogICAgICAgIEdhdWNoZUxpbmtzCiAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1yb2NrZXQgZmEtZmxpcC1ob3Jpem9udGFsIj48L2k+CiAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1yb2NrZXQgZmEtZmxpcC1ob3Jpem9udGFsIj48L2k+CiAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1yb2NrZXQgZmEtZmxpcC1ob3Jpem9udGFsIj48L2k+CgogICAgICA8L2gxPgoKICAgIHt7IGlmIGVxIC5xdWVyeSAiIiB9fQogICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkiIHJvbGU9ImJ1dHRvbiIKICAgICAgICAgaHJlZj0iL19hZGQ/cHJlZmlsbF9QYXRoPXt7IC5xdWVyeSB9fSZwcmVmaWxsX0F1dGhvcj17eyAuYXV0aG9yIH19Ij5BZGQgYSBsaW5rPC9hPgogICAge3sgZWxzZSB9fQogICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkiIHJvbGU9ImJ1dHRvbiIKICAgICAgICAgaHJlZj0iL19hZGQ/cHJlZmlsbF9QYXRoPXt7IC5xdWVyeSB9fSZwcmVmaWxsX0F1dGhvcj17eyAuYXV0aG9yIH19Ij5BZGQgPHN0cm9uZz57eyAucHJlZml4IH19L3t7IC5xdWVyeSB9fTwvc3Ryb25nPiBhcyBhIG5ldyBsaW5rPC9hPgogICAge3sgZW5kIH19CgogICAge3sgJGRvd25sb2FkX2Nocm9tZV9tc2cgOj0gYAogICAgPG9sPgogICAgICA8bGk+RG93bmxvYWQgdGhlIGV4dGVuc2lvbiBmb3IgPGEgaHJlZj0iL19jaHJvbWVfZXh0ZW5zaW9uIj5DaHJvbWU8L2E+IG9yIDxhIGhyZWY9Ii9fZmlyZWZveF9leHRlbnNpb24iPkZpcmVmb3g8L2E+LgogICAgICA8bGk+T3BlbiA8YSBocmVmPSJjaHJvbWU6Ly9leHRlbnNpb25zIj5jaHJvbWU6Ly9leHRlbnNpb25zPC9hPiBieSBwYXN0aW5nIDxjb2RlPmNocm9tZTovL2V4dGVuc2lvbnM8L2NvZGU+IGludG8geW91ciBzZWFyY2ggYmFyLgogICAgICA8bGk+RW5hYmxlIGRldmVsb3BlciBtb2RlIHNvIHlvdSBjYW4gaW5zdGFsbCBhbiB1bnNpZ25lZCBleHRlbnNpb24uCiAgICAgIDxsaT5EcmFnIHRoZSBkb3dubG9hZGVkIGV4dGVuc2lvbiBpbnRvIHRoZSBleHRlbnNpb25zIHdpbmRvdy4KICAgIDwvb2w+CiAgICBgfX0KCiAgICAgIDxhIGhyZWY9Ii9fZWRpdCIgY2xhc3M9ImJ0biBidG4tbGluayI+RWRpdCBhbGwgbGlua3M8L2E+CiAgICAgIDxkaXYgY2xhc3M9ImZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1saW5rIGJ0bi1pbmZvIHRleHQtaW5mbyIgZGF0YS10b2dnbGU9InBvcG92ZXIiIHRpdGxlPSJIb3cgdG8gaW5zdGFsbCB0aGUgYnJvd3NlciBleHRlbnNpb24iCiAgICAgICAgICAgICAgICBkYXRhLWNvbnRlbnQ9Int7ICRkb3dubG9hZF9jaHJvbWVfbXNnIH19IgogICAgICAgID5Eb3dubG9hZCBCcm93c2VyIEV4dGVuc2lvbgogICAgICAgIDwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxwPjwvcD4KICAgIHt7IGlmIC5saW5rcyB9fQogICAge3sgaWYgbmUgLnF1ZXJ5ICIiIH19CiAgICAgIE1heWJlIHlvdSBtZWFudCBvbmUgb2YgdGhlc2U/CiAgICB7eyBlbmQgfX0KICAgICAgPGRpdj4KICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtcmVzcG9uc2l2ZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgPHRoZWFkPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGg+TGluazwvdGg+CiAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgICAgICAgIDx0aD5UYXJnZXQ8L3RoPgogICAgICAgICAgICA8dGg+PC90aD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgPHRib2R5PgogICAgICAgICAge3sgJG9yaWdpbmFsVVJMIDo9IC5vcmlnaW5hbFVSTCB9fQogICAgICAgICAge3sgJHByZWZpeCA6PSAucHJlZml4fX17eyByYW5nZSAkbCA6PSAubGlua3MgfX0KICAgICAgICAgIHt7ICRiIDo9ICRsLkJhc2UgfX0KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPjxhIGhyZWY9Int7ICRsLlRyYW5zZm9ybSAiIiAkb3JpZ2luYWxVUkwgfX0iPnt7ICRwcmVmaXggfX0ve3sgaWYgJGwuSXNSZWdleHAgfX0KICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm9udC1pdGFsaWMgdGV4dC1zdWNjZXNzIj57eyRsLlBhdGhTdHJpbmd9fTwvY29kZT57eyBlbHNlIH19e3sgJGIuUGF0aCB9fXt7IGVuZCB9fTwvYT48L3RkPgogICAgICAgICAgICA8dGQ+e3sgJGIuRGVzY3JpcHRpb24gfX08L3RkPgogICAgICAgICAgICA8dGQ+PGEgaHJlZj0ie3sgJGwuVHJhbnNmb3JtICIiICRvcmlnaW5hbFVSTCB9fSI+e3sgJGIuVGFyZ2V0IH19PC9hPjwvdGQ+CiAgICAgICAgICAgIDx0ZD48YSBocmVmPSJ7eyAkYi5FZGl0VVJMLlN0cmluZyB9fSI+PGkgY2xhc3M9ImZhciBmYS1zbSBmYS1lZGl0Ij48L2k+PC9hPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAge3sgZW5kIH19CiAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICAgIDwvZGl2PgogICAge3sgZWxzZSB9fQogICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkgdGV4dC1jZW50ZXIiPgogICAgICAgICAgTm8gbWF0Y2hlcyBmb3VuZCBmb3IKICAgICAgICAgIDxtYXJrPnt7IC5xdWVyeSB9fTwvbWFyaz4KICAgICAgICAgIC4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICB7eyBlbmQgfX0KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdD4KICAkKGZ1bmN0aW9uICgpIHsKICAgICQoJ1tkYXRhLXRvZ2dsZT0icG9wb3ZlciJdJykucG9wb3Zlcih7aHRtbDogdHJ1ZX0pCiAgfSkKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=\"")
+ packr.PackJSONBytes("./static/templates", "search.xml", "\"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPE9wZW5TZWFyY2hEZXNjcmlwdGlvbiB4bWxucz0iaHR0cDovL2E5LmNvbS8tL3NwZWMvb3BlbnNlYXJjaC8xLjEvIj4KICAgIDxTaG9ydE5hbWU+TEQgR2F1Y2hlTGlua3M8L1Nob3J0TmFtZT4KICAgIDxEZXNjcmlwdGlvbj5MYXVuY2hEYXJrbHkgR2F1Y2hlTGlua3M8L0Rlc2NyaXB0aW9uPgogICAgPElucHV0RW5jb2Rpbmc+VVRGLTg8L0lucHV0RW5jb2Rpbmc+CiAgICA8SW1hZ2Ugd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPnt7IC5ob3N0IH19L19mYXZpY29uLnBuZzwvSW1hZ2U+CiAgICA8VXJsIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIG1ldGhvZD0iR0VUIiB0ZW1wbGF0ZT0iL3tzZWFyY2hUZXJtc30iLz4KICAgIDxVcmwgdHlwZT0iYXBwbGljYXRpb24veC1vcGVuc2VhcmNoK3htbCIgbWV0aG9kPSJHRVQiIHRlbXBsYXRlPSIve3NlYXJjaFRlcm1zfSIvPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K\"")
}
diff --git a/server/server.go b/server/server.go
index 4979b9e..02b22a9 100644
--- a/server/server.go
+++ b/server/server.go
@@ -42,6 +42,7 @@ type Config struct {
type Global struct {
Prefix string `default:"go"`
+ Host string
}
// LinkCacheKey is the key for the links items in the cache
@@ -236,6 +237,7 @@ func link(w http.ResponseWriter, r *http.Request) {
"prefix": config.Prefix,
"query": path,
"author": u.Email,
+ "host": config.Host,
"originalURL": r.URL,
}
@@ -286,7 +288,11 @@ func suggest(w http.ResponseWriter, r *http.Request) {
func searchSpec(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/xml")
- if tmplErr := searchSpecTemplate.Execute(w, nil); tmplErr != nil {
+ templateData := map[string]interface{}{
+ "host": config.Host,
+ }
+
+ if tmplErr := searchSpecTemplate.Execute(w, templateData); tmplErr != nil {
http.Error(w, tmplErr.Error(), http.StatusInternalServerError)
}
}
diff --git a/server/static/templates/index.html b/server/static/templates/index.html
index 777cd4e..58a883a 100644
--- a/server/static/templates/index.html
+++ b/server/static/templates/index.html
@@ -5,7 +5,7 @@
-
+