From 1c16b3b4eb5b2ce2fc19fd16c1205c8ab4715450 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 15 Jul 2018 18:32:46 +0200 Subject: [PATCH] serve favicon.ico --- assets/favicon.ico | Bin 0 -> 5430 bytes bundle.go | 2 +- internal/bundled/GENERATED_bundled.go | 2 ++ status.go | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 assets/favicon.ico diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..32c597c6ea78ec8bce103cadc461fe0d88471b18 GIT binary patch literal 5430 zcmcgw32anV6n)bwuCX9Q%9Kv0GXC@i!mZG#t;*UA&M+>Joo+iv-P({A^zm{zW?64_uTE> z_oqrZREp}~Uy-}jofj!JTq)&to9}x$zmao3&T+^c<~*5FoKJoLsJ>`%`+BI0Gr6tr zy|U-M{k6Eep$?UWgEbX=#7X7qQ(l$Ua-YJ1`C^h0M>QD2dC|+q*521%IRK4A9j2_s z4Zb(&Id7(j+RKZr8*h>I<)mpOgEWpbAu=|wb!E>n5P4IEvZt<#$cjAaj}pDMr74}< z9=|Ri*t@v595@r?SY(X|pRC8Xj>#ammtR~Y@-LCZ_Bs+}PFQ*-@!dec?;^LCZ=WFY zYvH^2Fg|M)>}nGI2v?GeJ_9PJR>%1MhqmxNriT?6$;}9zKgr=|8${m*QUPfWX+d#bg zj)|FY=eTq&wl+3ObBOuz_upDye4OoU3!f#n#)ta;<0n;HOG|B9P8m|vKot3Xs0v&I z&i6`liyatS%D(D>gMS>N$HKD37d(;`^Rx8*G-=9BRk+HXuj8q*^6+Jwmuf!k6KwHkR9u<9-T+V)jfpn-oapU6>#wQr(Re1k{_e4(n z9}0#33UzdRl8kNEU)Zd9Vp}m1{~g|P=F^2o=4JgWe9M-rE?2l`@!~?K(}|Lj5~+>U zWPDv~k^`x^2$vj)-A(LMmahN8y;m!&TDo*BF$Fhuy~oq9Cw%K1TK==;aq9=?h2J>Q zgmPpyd9)#5-BW!|y7=uc@g)Wo0Eg)~tCw*?%kNGB5tK5>kStqb>;k@EotkU%7H6 zn1da5{+qZFY+Zj)rA59AfgqD_ZE@wy z#ou*|y~Lk$1-b6?#{cT!GL#2{iT+b}G#1e@@4ZOe%`*TsHecuMyllv;n2xzS-$k~+ z3^Qlc5Y`Sm=D)5z?rFWZ4bDN11nh?Chmd{Q00c&4;ESzw32VtUFYjM(EmEL(eGkS}%I}5KHvXG-Neyg%coVX#A3*&1t1EZ1Z!Uz`AjGe!KJhJ^*l*FlyxzRS zCz2QEysf>JKObJ~cN(XZ{=P`ELGD^B26A8C zHfy%F)6z9~phCs$HXXy}{l8rdR@$D znq_p0f!}k9Y$QHyu)(KTw=*HwLh^`*+a7xgyXuEUbuXAcKDs9LDD}Fkb0gNaHb(bY z`Exoijo{nGzB{(m;=+Xsqxd?wM5`*#<=^+U{($!)oX{4Sf1cg9PY(0W*ra9e-j~$K;F=(?pL}BFd!|>S^{er!+az0*dkYSkN9u!8_<_C1j|}l ziY4}T^>5(`w`>qjc{O$FR4i{?hGlg%c&?=|LH8RWKMLHbm{R7$$n1W2x+(F_+S}lV z!(sL+AJ4DOJ@v-p^)?oKp#^nySfc+2V#Z$l>WzR8F|%+GTvsS;Z5oAFyT)QjKV3`w z!}DcRZ_rgx2|wa3;CLz}6|KYV%#V!MUs>F*1HuDnuDg+#3?&yFpzB54M5Mln^?3emV{O15)8fwg3PC literal 0 HcmV?d00001 diff --git a/bundle.go b/bundle.go index c41b577..9e4c14b 100644 --- a/bundle.go +++ b/bundle.go @@ -1,3 +1,3 @@ package gokrazy -//go:generate sh -c "go run goembed.go -package bundled -var assets assets/header.tmpl assets/footer.tmpl assets/overview.tmpl assets/status.tmpl > internal/bundled/GENERATED_bundled.go" +//go:generate sh -c "go run goembed.go -package bundled -var assets assets/header.tmpl assets/footer.tmpl assets/overview.tmpl assets/status.tmpl assets/favicon.ico > internal/bundled/GENERATED_bundled.go" diff --git a/internal/bundled/GENERATED_bundled.go b/internal/bundled/GENERATED_bundled.go index 8dff3de..9d1e66e 100644 --- a/internal/bundled/GENERATED_bundled.go +++ b/internal/bundled/GENERATED_bundled.go @@ -6,8 +6,10 @@ var assets = map[string][]byte{ "assets/footer.tmpl": assets_1, "assets/overview.tmpl": assets_2, "assets/status.tmpl": assets_3, + "assets/favicon.ico": assets_4, } var assets_0 = []byte("\n\n{{ .Hostname }} — gokrazy\n\n\n\n\n \n\n
\n") var assets_1 = []byte("\n
\n\n\n\n\n") var assets_2 = []byte("{{ template \"header\" . }}\n\n
\n
\n\n

services

\n\n\n\n\n\n\n\n{{ range $idx, $svc := .Services }}\n\n\n\n\n{{ end }}\n\n
pathlast log line
\n{{ $svc.Name }}\n{{ if restarting $svc.Started }}\nrestarting\n{{ end }}\n{{ if $svc.Stopped }}\nstopped\n{{ end }}\n\n{{ last $svc.Stdout.Lines $svc.Stderr.Lines }}\n
\n
\n
\n

memory

\n{{ megabytes (index .Meminfo \"MemTotal\") }} total, {{ megabytes (index .Meminfo \"MemAvailable\") }} available
\nresident set size (RSS) by service:\n
\n\n{{ with $rss := initRss }}\n
\n\ninit\n
\n{{ end }}\n\n{{ range $idx, $svc := .Services }}\n{{ with $rss := $svc.RSS }}\n
\n\n{{ baseName $svc.Name }}\n
\n{{ end }}\n{{ end }}\n
\n\nunaccounted\n
\n
\n
\n\n
\n\n\n

storage

\n\n{{ if eq .PermAvail 0 }}\nNo permanent storage mounted. To create a filesystem for permanent storage, plug the SD card into a Linux computer and, if your SD card is /dev/sdb, use mkfs.ext4 /dev/sdb4.\n{{ else }}\n{{ .PermDev }}: {{ gigabytes .PermTotal }} total, {{ gigabytes .PermUsed }} used, {{ gigabytes .PermAvail }} avail
\n{{ end }}\n\n

private network addresses

\n
    \n{{ range $idx, $addr := .PrivateAddrs }}\n
  • {{ $addr }}
  • \n{{ end }}\n
\n\n

public network addresses

\n
    \n{{ range $idx, $addr := .PublicAddrs }}\n
  • {{ $addr }}
  • \n{{ end }}\n
\n\n\n
\n
\n\n{{ template \"footer\" . }}\n") var assets_3 = []byte("{{ template \"header\" . }}\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n
NameStartedActions
{{ .Service.Name }}{{ .Service.Started }}\n
\n \n \n \n
\n
\n \n \n \n
\n\n

stdout

\n
\n  {{ range $idx, $line := .Service.Stdout.Lines -}}\n    {{ $line }}\n  {{ end }}\n  
\n\n

stderr

\n
\n  {{ range $idx, $line := .Service.Stderr.Lines -}}\n    {{ $line }}\n  {{ end }}\n  
\n
\n
\n\n{{ template \"footer\" . }}\n") +var assets_4 = []byte("\x00\x00\x00\x00\x00\x00\x00 \x00h\x00\x00&\x00\x00\x00 \x00\x00\x00 \x00\xa8\x00\x00\x8e\x00\x00(\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00e|\x88\xff\x00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00ƽ^\xffqkc\xffC0\xffC0\xff.\xca\xff\xff\x00\x00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x006^\xff\x00\x00\x00\xff\xbe`\x00\xff\xff\xff?\xff\xff\xff?\xff\xff\xff?\xff\xff\xffV\xff\x00\x00\xffƽ^\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xb9\xb7\xbe\xff.\xca\xff\xff\x006^\xff\xff\xff?\xff\xff\xff^\xff\xff\xff?\xff\xff\xff?\xff\xff\xffo\xff\xff\xff?\xff#\x00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00C0\xff\x8eO\x00\xff\xff\xffm\xff\xff\xffQ\xff\xff\xff?\xff\xff\xffA\xff\xff\xffD\xff\xff\xff?\xff\xff\xff?\xff\x93s\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00C0\xff\xff\xff?\xff\xff\xffQ\xff\xff\xfa>\xff\xff\xffA\xff\xff\xffA\xff\xff\xffA\xff\xff\xf25\xff\xff\xff?\xff\x91o\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00c7\x00\xff\xff\xff\xa1\xff\xff\xf2:\xff\xff\xfc<\xff\xff\xffA\xff\xff\xff?\xff\xff\xffA\xff\xff\xffH\xff\xff\xff?\xffS4\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00e1\x00\xff\xff\xff\xb3\xff\xff\xffQ\xff\xff\xffc\xff\xff\xffH\xff\xff\xf4<\xff\xff\xffA\xff\xff\xffF\xff\xff\xff?\xff7-\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00|D\x00\xff\xff\xff\x86\xff(\xda\xff\xd0zA\xff\xff\xffM\xff\xff\xff>\xff\xff\xfeC\xff\xff\xffc\xff\xff\xff?\xff\x00$^\xff.\xca\xff\xff\x82\x8c\x91\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00&\xffƽ^\xff\xff\xff'\xff\x00\x00\x00\xff\x00\x00\x00\xffЊ\x00\xff\xff\xff\x8a\xff\xff\xff.\xff\xff\xffZ\xff\xff\xffa\xff\x00\x00\x00\xff\x00\x00\x00\xff\x82\x8c\x91\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00k\xe4\xff-\x00\xff\xff\xcc\x00\xff\xc2\xf6\xff\xff4\xbd\xff\xff\x00\x00\x00\xff\xff\xe25\xff\xe6x\x00\xff\xff\xe6(\xff\xff\xff\xb1\xff\x91o\xff\xaf\xad\xb1\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x9b\x8ax\xffJZ`\xff\x00\x00\x00\xffFK\xff\x97o6\xff\xff\xff\xff\xff\xff\xff\xff\xffH%\x00\xff\xff\xffS\xff\xff\xff`\xff\x91o\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xffƽ^\xff\xe6x\x00\xff\xff\xff\xff\xff\x00\x00\xff\x00\x00\xff\xff\xff\\\xff\xff\xfc?\xff\x91o\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00|\x8c\x99\xff\xff\xff\xff\xff\xff\xff>\xff\xff\xff?\xffk^C\xff\xe8\xc0\xab\xff\xff\xda1\xff\xff\xff\xcc\xff~2\x00\xff\x00\x00\x00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xbe\xff\xff\xff\xe2\xff\xff\xffM\xff\xff\xffO\xff\xff\xff\x91\xff\x00\x00\xff\x00\x00\x00\xff&\x00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xffZD\xffk2\x00\xff7(\x00\xff\x86\x8a~\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\x9f\x00\x00\xf8\x00\x00\xe0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\xc0\x00\x00\x80\x00\x00\x80\x00\x00\xc0\x00\x00\xc0\x00\x00\xe0\x00\x00\xf0\x00\x00\xf8?\x00\x00(\x00\x00\x00 \x00\x00\x00@\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfe\xff\x00\n#\xff[\x97\x9d\xff*Tq\xff.00\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xfb\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xffW\xa5\xea\xff\xc0\xda\xea\xff #3\xff|wk\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xfe\xff\xfd\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xfe\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x83\x84\x82\xff-)$\xff<+\xfflM \xff\xa4t4\xff\xa2x3\xff_E\xff $\xff\x00\x00\x00\xffznnC\xff\xff\xff\x00\xfb\xff\xff\x00\xff\xff\xff\x00\xff\xf9\xf9\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfd\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xdb˞\x00{uu^$9\xff\x00\xff1-(\xffJ7\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff[2\xff865\xff\xff\"\xff\xff\xff\"\xdb˞\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfe\xff\x00\xff\xfe\xff\x00\xfb\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xfe\x00\xfb\xff\xfe\x00ILJ\xff +\xff\xc0\xda\xea\xff\x00*\xff\xd4{#\xff\xff\xff\xcf\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xff\xff\xcb\xff\xbc\x87>\xff!\"\xff\xffc\xff\xdb˞\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfe\xfd\x00\xff\xff\xff\x00\xff\xfe\xff\x00\xfc\xfe\xfe\x00\x00\x00\xff\xc0\xda\xea\xffY\xbb\xff\xff\x00\x00\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xfe\xff\xcd\xffA#\x00\xff\xc7\xc8\xc6\xff\xdb˞\x00\xff\xff\xff\x00\xf7~~\xcd\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xfe\x00\xfd\xff\xff\x00\xff\xfe\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00ILJ\xff#:\xff\x00\x00\xff\x92\\\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\n\x00\xffvee0\xff555\xff\x00\x00\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xfe\xff\x00\xff\xff\xfe\x00\xff\xfe\xff\x00\xff\xff\xfe\x00\xfd\xff\xfe\x00\xdb˞\x00o2\x00\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff#\x00\xffwii8\xff\xff\xff\xff\xff\xff\x88\"\"\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xfe\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\x00\x00\xff\xff\xff\xc8\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffnE\xff\xa1pp~{{\x9b\xff~~\xec\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xfd\xff\xfe\x00\xfc\xfe\xff\x00|wk\x9am*\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffZ4\xff\xdb˞\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfa\xfa\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xfe\xff\x00\xfd\xff\xff\x00\xff\xfe\xfd\x00\xff\xff\xff\x00ILJ\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\"\x00\xff\xdb˞\x00VVV\xffCCC\xff~}}\xba\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfe\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xfd\xff\xfe\x00\xff\x00\xff<6/\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff&$#\xff\xdb˞\x00sss\xff~{{\x9d\xff\xfa\xfa\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xfd\xff\xfe\x00\xff\xfe\xff\x00\xff\xff\xff\x0061(\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffHIG\xff\xdb˞\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xfa\xfa\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\x00\xfb\xff\xff\x00\xfe\xfe\xfe\x00\xfd\xff\xff\x00\xff\xfd\xff\x001)\"\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\x84\x84\x84\xff\xdb˞\x00\xff\xfa\xfa\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xff\xfe\x00\xff\xff\xff\x00.) \xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffՍ9\xff:<<\xff\xdb˞\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xfd\xff\xff\x008+#\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff*=R\xff[\x9f\xc4\xff!-9\xffUTV\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xfe\x00\xff\xff\xff\x00zy{\xff\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffkR\xcc\xff! \xff7'\xffӓc\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff֐5\xff\x00\xffp\xc4\xfe\xff\xc0\xda\xea\xffI|\xa7\xffACD\xff\xff\xff\xfb\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfb\xff\xff\x00\x90\x8d\x8f\xff!M\x83\xffILJ\xff\xdb˞\xff\xdb˞\xffc:\xff\x00\x00b\xffkR\xcc\xffkR\xcc\xff\x00\x00\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\x00\x00\x00\xff:g\xff\xc0\xda\xea\xff\x00\x00\xff\xff\xff\xf9\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xff\xfe\xff\x00ILJ\xff\x8f\xea\xff\xff\x00\x00\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\x00\x00\x00\xff\x00*\xff\x00\x00\xff\x00\x00\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xfe\xff\xd7\xffB\"\x00\xff\x00\x00\xff-=\xffQPR\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xfe\x00ILJ\xffY\xbb\xff\xff\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff%\x00\xffBC#\xff\x00\xff\x00\x00\x00\xff\xb5\x80=\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff{|z\xff\xcc\x00\xb2\xfb\xff\xfa\x00\xfe\xfd\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfc\xfe\xfe\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xc7\xc8\xc6\xffXWY\xff\xff\xff\xff\x00\xdb˞\xff\xdb˞\xff\x00\xff=Y{\xff\xc0\xda\xea\xfft\xbd\xef\xffQ\xa5\xff-\x00\xff\xdb˞\xffTA,\xff\x87yg\xfftdM\xff\xa7t+\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff?<7\xff\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xff\xfe\xff\x00\xfd\xff\xfc\x00\xff\xfe\xff\x00\xff\xff\xff\x00\x00\xffv6\x00\xff\x00\xffg\xa5\xd7\xff\x00\x00\x00\xff3j\x97\xff9TX\xffN$\xff^MJ\xff\xfe\xff\xfd\xff\xff\xff\xff\xff\xff\xfe\xff\xff7=D\xff\xa8t(\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff)\xff\xfe\xff\xfd\x00\xff\xff\xfa\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xff\xff\x00\xfe\xfd\xff\x00\xff\xff\xfe\x00\xfd\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xff\xc3\xd2\xe2\xff\x8f\x90\x94\xff\x00\x00\x00\xff\x00\xff\x89U\xff\xdb˞\xff|\\3\xff\xfe\xfd\xff\xff\xfd\xff\xff\xff\\[]\xff\x00\x00\x00\xff\xff\xff\xff\xffoW?\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff-\"\xff\xff\xfd\xff\x00\xff\xff\xfd\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xfd\xff\xff\xff\x97\x98\xa2\xff\xa1g%\xff\xdb˞\xff\xdb˞\xffaRB\xff\xff\xff\xff\xff\xfd\xff\xff\xff\x00\x00\xff\x00\x00\xffw\x80\x8e\xff\x86zn\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xff\xff\xfd\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00bbb\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xffJ:)\xff\xff\xff\xc7\xff\xdb˞\xff7#\xff\xf4\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\xad\xad\xff\xff\xff\xff\xffQ<'\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xffgdf\xff\xff\xff\xfd\x00\xff\xfe\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff7*\xff\xdb˞\xff\xdb˞\xff\xb7\x84.\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xfc\xfe\xfe\xff%(,\xff\x98d\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff?#\x00\xff($\xffluu2\xff\xfe\xff\x00\xfe\xfd\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xdb˞\x00PPP\xffmnl\xfflcV\xff\xacu0\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xbb-\xff. \xffI9(\xff,!\xff\xa3o\"\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xa8k-\xff\xff\xdb˞\xff(\x00\xff\xff\xfe\xff\x00\xff\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xdb˞\x00\xdb˞\x00acc\xfff7\x00\xff\xff\xff\xc7\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xff\xff\xc9\xffU0\xff \x00\xff\x93o/\xff\xb8\x848\xff\x00\xff\xff\xff\xff\x00\xff\xff\xfc\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xdb˞\x00\xdb˞\x00\xdb˞\x00$\"\"\xff`F\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff/#\xff\x81~\x80\xff\xdb˞\x00nfY\xffE<2\xff\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xdb˞\x00\xdb˞\x00\xdb˞\x00zy{\xff\x00\x00\xff\x00\x00\xff]B\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xdb˞\xff\xb9\x8e?\xff+\"\x00\xff0,+\xff\xdb˞\x00\xdb˞\x00\xdb˞\x00\xdb˞\x00\xdb˞\x00\xff\xfe\xff\x00\xff\xff\xfe\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\xfe\xfe\xfe\x00\xfd\xff\xfe\x00\x84\"\"\x00\xff\x00\x00\xff\xd8\xd9\xdd\xff\xc7\xc8\xc6\xff762\xff/+*\xff<;7\xff|{}\xff\xff\xff\xff\x00\xfd\xff\xff\x00\xff\xfe\xff\x00\xfb\xff\xfe\x00\xff\xfe\xff\x00\xfd\xff\xff\x00\xfd\xff\xff\x00\xfd\xfe\xff\x00\xff\xfe\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xe1\xff\xdf\xff\xc1\xff\xff\xf0\xff\xfe\x00\x00\xff\xfc\x00\x00\xff\xfc\x00\x00\xcf\xfc\x00\x00\xfe\x00\x00\xfc\x00\x00\xf8\x00\x00\xff\xf8\x00\x00\x8f\xf0\x00\x00\x9f\xf8\x00\x00\xffx\x00\x00\xff\xf8\x00\x00\xffx\x00\x00?\xf0\x00\x00\xe0\x00\x00\xe0\x00\x00\xe0\x00\x00?\xe4\x00\x00\xfc\x00\x00\xfc\x00\x00\xf8\x00\x00\xf8\x00\x00\xfc\x00\x00?\xfe\x00\x00?\xff\x00\x00?\xff\x80\xff\x80\xff\xff\x80?\xff") diff --git a/status.go b/status.go index 99b4c00..5f96277 100644 --- a/status.go +++ b/status.go @@ -94,6 +94,11 @@ var overviewTmpl = template.Must(template.Must(commonTmpls.Clone()).New("overvie var statusTmpl = template.Must(template.Must(commonTmpls.Clone()).New("statusTmpl").Parse(bundled.Asset("status.tmpl"))) func initStatus(services []*service) { + http.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) { + if _, err := w.Write([]byte(bundled.Asset("favicon.ico"))); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + }) http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { token := xsrfTokenFromCookies(r.Cookies()) if token == 0 {