代码拉取完成,页面将自动刷新
同步操作将从 xuri/aurora 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package main
import (
"bytes"
"net/url"
"sort"
"strconv"
"github.com/xuri/aurora/beanstalk"
)
// getServerStatus render a server stats table.
func getServerStatus() string {
var err error
var buf, td, th bytes.Buffer
for _, addr := range selfConf.Servers {
var bstkConn *beanstalk.Conn
if bstkConn, err = beanstalk.Dial("tcp", addr); err != nil {
td.WriteString(`<tr><td>`)
td.WriteString(addr)
td.WriteString(`</td><td colspan="`)
td.WriteString(strconv.Itoa(len(selfConf.Filter)))
td.WriteString(`" class="row-full"> </td><td><a class="btn btn-xs btn-danger" title="Remove from list" href="serversRemove?action=serversRemove&removeServer=`)
td.WriteString(addr)
td.WriteString(`"><span class="glyphicon glyphicon-minus"> </span></a></td></tr>`)
continue
}
s, _ := bstkConn.Stats()
bstkConn.Close()
td.WriteString(`<tr><td><a href="server?server=`)
td.WriteString(addr)
td.WriteString(`">`)
td.WriteString(addr)
td.WriteString(`</a></td>`)
for _, v := range selfConf.Filter {
td.WriteString(`<td>`)
td.WriteString(s[v])
td.WriteString(`</td>`)
}
td.WriteString(`<td><a class="btn btn-xs btn-danger" title="Remove from list" href="serversRemove?action=serversRemove&removeServer=`)
td.WriteString(addr)
td.WriteString(`"><span class="glyphicon glyphicon-minus"> </span></a></td></tr>`)
}
for _, v := range selfConf.Filter {
th.WriteString(`<th>`)
th.WriteString(v)
th.WriteString(`</th>`)
}
buf.WriteString(`<div class="row"><div class="col-sm-12"><table class="table table-striped table-hover" id="servers-index"><thead><tr><th>name</th>`)
buf.WriteString(th.String())
buf.WriteString(`<th> </th></tr></thead><tbody>`)
buf.WriteString(td.String())
buf.WriteString(`</tbody></table><a href="#servers-add" role="button" class="btn btn-info" id="addServer">Add server</a></div></div>`)
return buf.String()
}
// getServerTubes render a tubes stats table by given server.
func getServerTubes(server string) string {
var err error
var buf, th, tr, td bytes.Buffer
var bstkConn *beanstalk.Conn
for _, v := range selfConf.TubeFilters {
th.WriteString(`<th>`)
th.WriteString(v)
th.WriteString(`</th>`)
}
if bstkConn, err = beanstalk.Dial("tcp", server); err != nil {
buf.WriteString(`<div id="idAllTubes"><section id="summaryTable"><div class="row"><div class="col-sm-12"><table class="table table-striped table-hover"><thead><tr><th>name</th>`)
buf.WriteString(th.String())
buf.WriteString(`</tr></thead><tbody></tbody></table></div></div></section></div>`)
return buf.String()
}
tubes, _ := bstkConn.ListTubes()
sort.Strings(tubes)
for _, v := range tubes {
tubeStats := &beanstalk.Tube{
Conn: bstkConn,
Name: v,
}
statsMap, err := tubeStats.Stats()
if err != nil {
continue
}
for _, stats := range selfConf.TubeFilters {
td.WriteString(`<td>`)
td.WriteString(statsMap[stats])
td.WriteString(`</td>`)
}
tr.WriteString(`<tr><td><a href="tube?server=`)
tr.WriteString(server)
tr.WriteString(`&tube=`)
tr.WriteString(url.QueryEscape(v))
tr.WriteString(`">`)
tr.WriteString(v)
tr.WriteString(`</a></td>`)
tr.WriteString(td.String())
tr.WriteString(`</tr>`)
td.Reset()
}
bstkConn.Close()
buf.WriteString(`<div id="idAllTubes"><section id="summaryTable"><div class="row"><div class="col-sm-12"><table class="table table-striped table-hover"><thead><tr><th>name</th>`)
buf.WriteString(th.String())
buf.WriteString(`</tr></thead><tbody>`)
buf.WriteString(tr.String())
buf.WriteString(`</tbody></table></div></div></section></div>`)
return buf.String()
}
// dropDownServer render a navigation dropdown menu for server list.
func dropDownServer(currentServer string) string {
var ul bytes.Buffer
if currentServer == "" {
currentServer = `All servers`
}
ul.WriteString(`<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">`)
ul.WriteString(currentServer)
ul.WriteString(` <span class="caret"></span></a><ul class="dropdown-menu">`)
for _, addr := range selfConf.Servers {
if addr == currentServer {
continue
}
ul.WriteString(`<li><a href="./server?server=`)
ul.WriteString(addr)
ul.WriteString(`">`)
ul.WriteString(addr)
ul.WriteString(`</a></li>`)
}
if currentServer != "All servers" {
ul.WriteString(`<li><a href="./public">All servers</a></li>`)
}
ul.WriteString(`</ul></li>`)
return ul.String()
}
// dropDownTube render a navigation dropdown menu for tube list.
func dropDownTube(server string, currentTube string) string {
var ul bytes.Buffer
if currentTube == "" {
currentTube = `All tubes`
}
ul.WriteString(`<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">`)
ul.WriteString(currentTube)
ul.WriteString(` <span class="caret"></span></a><ul class="dropdown-menu">`)
var bstkConn *beanstalk.Conn
var err error
if bstkConn, err = beanstalk.Dial("tcp", server); err != nil {
if currentTube != "" {
ul.WriteString(`<li><a href="./public">All tubes</a></li>`)
}
ul.WriteString(`</ul></li>`)
return ul.String()
}
tubes, _ := bstkConn.ListTubes()
sort.Strings(tubes)
for _, v := range tubes {
ul.WriteString(`<li><a href="./tube?server=`)
ul.WriteString(server)
ul.WriteString(`&tube=`)
ul.WriteString(url.QueryEscape(v))
ul.WriteString(`">`)
ul.WriteString(v)
ul.WriteString(`</a></li>`)
}
bstkConn.Close()
if currentTube != "All tubes" {
ul.WriteString(`<li><a href="./server?server=`)
ul.WriteString(server)
ul.WriteString(`">All tubes</a></li>`)
}
ul.WriteString(`</ul></li>`)
return ul.String()
}
// dropEditSettings render a navigation dropdown menu for set preference.
func dropEditSettings() string {
var buf bytes.Buffer
var isDisabledJSONDecode, isDisabledJobDataHighlight, isEnabledBase64Decode string
if selfConf.IsDisabledJSONDecode != 1 {
isDisabledJSONDecode = `checked="checked"`
}
if selfConf.IsDisabledJobDataHighlight != 1 {
isDisabledJobDataHighlight = `checked="checked"`
}
if selfConf.IsEnabledBase64Decode != 0 {
isEnabledBase64Decode = `checked="checked"`
}
buf.WriteString(`<div id="settings" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="settings-label" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="settings-label">Settings</h4></div><div class="modal-body"><fieldset><div class="form-group"><label for="tubePauseSeconds"><b>Tube pause seconds</b> (<i>-1</i> means the default: <i>3600</i>, <i>0</i> is reserved for un-pause)</label><input class="form-control focused" id="tubePauseSeconds" type="number" value="`)
buf.WriteString(strconv.Itoa(selfConf.TubePauseSeconds))
buf.WriteString(`"></div><div class="form-group"><label><b>Auto-refresh interval in milliseconds</b> (Default: <i>500</i>)</label><input class="form-control focused" id="autoRefreshTimeoutMs" type="number" value="`)
buf.WriteString(strconv.Itoa(selfConf.AutoRefreshTimeoutMs))
buf.WriteString(`"></div><div class="form-group"><label><b>Search result limits</b> (Default: <i>25</i>)</label><input class="form-control focused" id="searchResultLimit" type="number" value="`)
buf.WriteString(strconv.Itoa(selfConf.SearchResultLimit))
buf.WriteString(`"></div><div class="form-group"><label><b>Preferred way to deal with job data</b></label><div class="checkbox"><label><input type="checkbox" id="isDisabledJsonDecode" value="1" `)
buf.WriteString(isDisabledJSONDecode)
buf.WriteString(`>before display: JSON decode</label></div><div class="checkbox"><label><input type="checkbox" id="isEnabledBase64Decode" value="1" `)
buf.WriteString(isEnabledBase64Decode)
buf.WriteString(`>before display: Base64 decode</label></div><div class="checkbox"><label><input type="checkbox" id="isDisabledJobDataHighlight" value="1" `)
buf.WriteString(isDisabledJobDataHighlight)
buf.WriteString(`>after display: enable highlight</label></div></div></fieldset></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Close</button></div></div></div></div>`)
return buf.String()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。