diff --git a/back.go b/back.go index 7ca7301..78b033b 100644 --- a/back.go +++ b/back.go @@ -109,7 +109,7 @@ func HandlePost(c *gin.Context) { h["Title"] = "撰写文章 | " + Ei.BTitle } h["Path"] = c.Request.URL.Path - h["Domain"] = setting.Conf.Mode.Domain + h["Domain"] = setting.Conf.Mode.Domains[0] h["Series"] = Ei.Series var tags []T for tag, _ := range Ei.Tags { diff --git a/conf/app.yml b/conf/app.yml index 629e19d..0bb73ce 100644 --- a/conf/app.yml +++ b/conf/app.yml @@ -15,7 +15,7 @@ pingrpcs: - http://ping.baidu.com/ping/RPC2 - http://blogsearch.google.com/ping/RPC2 - http://rpc.pingomatic.com/ -# 一般配置 +# 常规配置 general: # 首页展示文章数量 pagenum: 10 @@ -57,13 +57,17 @@ kodo: secretkey: BIrMy0fsZ0_SHNceNXk3eDuo7WmVYzj2-zrmd5Tf # 运行模式 mode: + # http server enablehttp: true httpport: 9000 - enablehttps: false - httpsport: 443 - certfile: conf/certs/domain.pem - keyfile: conf/certs/domain.key - domain: deepzz.com + # https server + enablehttps: true + autocert: true + httpsport: 9001 + certfile: conf/ssl/domain.rsa.pem + keyfile: conf/ssl/domain.rsa.key + domains: + - deepzz.com # twitter地址: twitter.com/chenqijing2 twitter: card: summary @@ -71,8 +75,7 @@ twitter: image: st.deepzz.com/static/img/avatar.jpg address: twitter.com/chenqijing2 -# 以下数据项供初始化使用,仅首次运行有效。 -# 若需要修改,请到博客后台操作。 +# 数据初始化操作,可到博客后台修改 account: # *后台登录用户名 username: deepzz diff --git a/conf/blackip.yml b/conf/blackip.yml index e69de29..05e61e2 100644 --- a/conf/blackip.yml +++ b/conf/blackip.yml @@ -0,0 +1 @@ +# like 192.168.99.100:true diff --git a/front.go b/front.go index 2ee5262..6e35bad 100644 --- a/front.go +++ b/front.go @@ -55,14 +55,15 @@ func StaticVersion(c *gin.Context) (version int) { func GetBase() gin.H { return gin.H{ - "BlogName": Ei.BlogName, - "SubTitle": Ei.SubTitle, - "Twitter": setting.Conf.Twitter, - "CopyYear": time.Now().Year(), - "BTitle": Ei.BTitle, - "BeiAn": Ei.BeiAn, - "Domain": setting.Conf.Mode.Domain, - "Kodo": setting.Conf.Kodo, + "BlogName": Ei.BlogName, + "SubTitle": Ei.SubTitle, + "Twitter": setting.Conf.Twitter, + "CopyYear": time.Now().Year(), + "BTitle": Ei.BTitle, + "BeiAn": Ei.BeiAn, + "Domain": setting.Conf.Mode.Domains[0], + "Kodo": setting.Conf.Kodo, + "ShortName": setting.Conf.Disqus.ShortName, } } diff --git a/glide.lock b/glide.lock index 608b16b..575d85e 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ hash: bd360fa297ed66950543990f9433cdcdf13c29dd99d9a01b49027e236b2cb9da -updated: 2017-07-08T12:15:52.531289524+08:00 +updated: 2017-07-08T14:52:31.866715976+08:00 imports: - name: github.com/boj/redistore version: 4562487a4bee9a7c272b72bfaeda4917d0a47ab9 @@ -8,7 +8,7 @@ imports: - name: github.com/eiblog/blackfriday version: c0ec111761ae784fe31cc076f2fa0e2d2216d623 - name: github.com/eiblog/utils - version: ad2f63940c4f16d0dbfc3f4df59e8cb7af0f80ec + version: 5699bde749ca1053867528834492263f841620ad subpackages: - logd - mgo diff --git a/ping.go b/ping.go index 190a7ff..6de8e54 100644 --- a/ping.go +++ b/ping.go @@ -25,7 +25,7 @@ func (*superfeedr) PingFunc(slug string) { } vals := url.Values{} vals.Set("hub.mode", "publish") - vals.Add("hub.url", "https://"+setting.Conf.Mode.Domain+"/post/"+slug+".html") + vals.Add("hub.url", "https://"+setting.Conf.Mode.Domains[0]+"/post/"+slug+".html") res, err := http.PostForm(setting.Conf.FeedrURL, vals) if err != nil { logd.Error(err) @@ -64,7 +64,7 @@ func (p *pingRPC) PingFunc(slug string) { if len(setting.Conf.PingRPCs) == 0 { return } - p.Params.Param[1].Value = "https://" + setting.Conf.Mode.Domain + "/post/" + slug + ".html" + p.Params.Param[1].Value = "https://" + setting.Conf.Mode.Domains[0] + "/post/" + slug + ".html" buf := &bytes.Buffer{} buf.WriteString(xml.Header) enc := xml.NewEncoder(buf) @@ -98,9 +98,9 @@ func init() { pr := &pingRPC{MethodName: "weblogUpdates.extendedPing"} pr.Params.Param = [4]rpcValue{ 0: rpcValue{Value: Ei.BTitle}, - 1: rpcValue{Value: "https://" + setting.Conf.Mode.Domain}, + 1: rpcValue{Value: "https://" + setting.Conf.Mode.Domains[0]}, 2: rpcValue{}, - 3: rpcValue{Value: "https://" + setting.Conf.Mode.Domain + "/rss.html"}, + 3: rpcValue{Value: "https://" + setting.Conf.Mode.Domains[0] + "/rss.html"}, } Pings = append(Pings, pr) } diff --git a/ping_test.go b/ping_test.go index f4137eb..984896e 100644 --- a/ping_test.go +++ b/ping_test.go @@ -18,7 +18,7 @@ func TestPingRPC(t *testing.T) { } pr.Params.Param = [4]rpcValue{ rpcValue{Value: Ei.BTitle}, - rpcValue{Value: "https://" + setting.Conf.Mode.Domain}, + rpcValue{Value: "https://" + setting.Conf.Mode.Domains[0]}, rpcValue{Value: "https://deepzz.com/post/gdb-debug.html"}, rpcValue{Value: "https://deepzz.com/rss.html"}, } diff --git a/router.go b/router.go index 609adc6..df3b033 100644 --- a/router.go +++ b/router.go @@ -9,6 +9,7 @@ import ( "github.com/eiblog/eiblog/setting" "github.com/eiblog/utils/logd" "github.com/eiblog/utils/tmpl" + "github.com/gin-gonic/autotls" "github.com/gin-gonic/contrib/sessions" "github.com/gin-gonic/gin" ) @@ -104,15 +105,27 @@ func Run() { }() } if setting.Conf.Mode.EnableHttps { - go func() { - logd.Infof("https server Running on %d\n", setting.Conf.Mode.HttpsPort) - err = router.RunTLS(fmt.Sprintf(":%d", setting.Conf.Mode.HttpsPort), setting.Conf.Mode.CertFile, setting.Conf.Mode.KeyFile) - if err != nil { - logd.Info("ListenAndServe: ", err) - time.Sleep(100 * time.Microsecond) - endRunning <- true - } - }() + if setting.Conf.Mode.AutoCert { + go func() { + logd.Info("https server Running on 443") + err = autotls.Run(router, setting.Conf.Mode.Domains...) + if err != nil { + logd.Info("ListenAndServe: ", err) + time.Sleep(100 * time.Microsecond) + endRunning <- true + } + }() + } else { + go func() { + logd.Infof("https server Running on %d\n", setting.Conf.Mode.HttpsPort) + err = router.RunTLS(fmt.Sprintf(":%d", setting.Conf.Mode.HttpsPort), setting.Conf.Mode.CertFile, setting.Conf.Mode.KeyFile) + if err != nil { + logd.Info("ListenAndServe: ", err) + time.Sleep(100 * time.Microsecond) + endRunning <- true + } + }() + } } <-endRunning } diff --git a/setting/setting.go b/setting/setting.go index 8dde068..4d2a1ec 100644 --- a/setting/setting.go +++ b/setting/setting.go @@ -9,8 +9,8 @@ import ( ) const ( - DEV = "dev" - PROD = "prod" + DEV = "dev" // 该模式会输出 debug 等信息 + PROD = "prod" // 该模式用于生产环境 ) var ( @@ -63,7 +63,8 @@ type Config struct { HttpsPort int CertFile string KeyFile string - Domain string + AutoCert bool + Domains []string } Twitter struct { // twitter信息 Card string diff --git a/views/homeLayout.html b/views/homeLayout.html index 0af980e..f1b1e95 100644 --- a/views/homeLayout.html +++ b/views/homeLayout.html @@ -1 +1 @@ -{{.Title}}{{if .Version}}{{end}}{{if .Version}}{{else}}{{end}}
{{.LayoutContent}}
{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}} +{{.Title}}{{if .Version}}{{end}}{{if .Version}}{{else}}{{end}}
{{.LayoutContent}}
{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}} diff --git a/views/st_blog.css b/views/st_blog.css index 3663114..da0ab43 100644 --- a/views/st_blog.css +++ b/views/st_blog.css @@ -1,3 +1,3 @@ {{define "blog_css"}} -*{margin:0;padding:0}html,body{height:100%}body{background:#ddd;color:#666;font-size:14px;font-family:"-apple-system","Open Sans","HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,sans-serif}::selection,::-moz-selection,::-webkit-selection{background-color:#2479cc;color:#eee}h1{font-size:2em}h3{font-size:1.3em}h4{font-size:1.1em}a{color:#2479cc;text-decoration:none}article{border-bottom:1px solid #ddd;border-top:1px solid #fff;padding:30px 0;position:relative}.container{max-width:1600px;min-height:100%;position:relative}.global-tips{display:none}.left-col{background-color:#50514c;background-image:url(//st.deepzz.com/static/img/bg04.jpg);background-size:cover;height:100%;position:fixed;width:270px}.mid-col{background:#fff;left:0;margin-left:270px;min-height:100%;position:absolute;right:0}article .meta{color:#555;float:right;font-size:.9em;line-height:2;position:relative;text-align:right;width:auto}article .meta a{color:#999}article h1.title{color:#333;font-size:2em;font-weight:300;line-height:35px;margin-bottom:25px}article h1.title a{color:#333;transition:color .3s}.mid-col .mid-col-container{padding:0 70px 0 40px}article .meta .date,article .meta .comment,article .meta .tags{position:relative}article .meta .date-modified{display:none}article h1.title a:hover{color:#2479cc}#header{border-bottom:0;height:auto;line-height:30px;margin-left:50px;padding:30px 0;width:100%}#main-nav{margin-left:0}#main-nav,#sub-nav{float:none;margin-top:15px}#sub-nav{position:relative}#content{margin:0 auto;width:100%}#header a{color:#efefef;text-shadow:0 1px #666;transition:color .3s}#header h1{float:none;font-weight:300;font-size:30px}#main-nav ul li{display:block;margin-left:0;position:relative}#header .subtitle{color:#ccc}#sub-nav .social{margin-bottom:10px}#header a:hover{color:#ccc}#header .profilepic a{background-image:url("data:image/jpeg;base64,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");background-size:100% 100%;border-radius:50%;display:block;height:160px;margin:15px 0 20px -10px;width:160px}#sub-nav .social a{background-size:20px 20px;background-position:center center;background-repeat:no-repeat;border-radius:50%;display:inline-block;height:28px;margin:0 6px 15px;opacity:.75;text-indent:-9999px;transition:opacity .3s;vertical-align:middle;width:28px}#sub-nav .social a:hover{opacity:1}#sub-nav .social a:first-of-type{margin-left:0}#sub-nav .social a:last-of-type{margin-right:0}#sub-nav .social a.twitter{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABOklEQVR4Ae3QM4DXYQCH8W+2m7Jt15Ztc8u29myba1O2NbXlmrJ11nP8+31/GO+uz/psj7z6jzYsZBPL6KogylBM3tCDS/wDkrjNIOWgC4MorgC2MlgWLCXSesZzCWinAEoA0FAG9MOsE1VorFw0AiCd/orBF2Klc4HT3KaDctGQgF2RY+iETTzlFUAx/hDwlfmhxFjMrigS6wmXwGnG0kCiO2aTFI17xPrES8zmKhzt2MRo3uPdGIWjOgDxeNdOkbiCH/EUVyTq48cZxWIQ3g2TCTXZwT/c/ZAJpbnOOeJwN01mrMaLZ7JjO+5qywljeMRHErEZL3cM4Cdmy+SGFhzCZobMqM5E1rCM/TzB5gXdZEMZ+vMYu7cslDuqMZcrfCUkleccoL+8ozHjWcsujnGIDcyjF2VV8GUCCH5vOpRoTxYAAAAASUVORK5CYII=");background-color:#55cff8;border:1px solid #55cff8}#sub-nav .social a.search{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB6klEQVR4Ac3RM4AdURSA4RPbto06tm3btm3b7GLbttOsjWdrPG9OdFejRZWv/a8vqDM2s46nNot7vSusA5KrQfYk13CvYt6IXvwtiIKBuuWYnJAXsia+hPcEqhBtrsVZ2bu96EFN3LufpUGPfwCivoDNVQG00I0wHfqVY4GtG93G3Ne9mY/CNLGgRYxFgjdYOkMG9tkSptbDoMY3JW2PpCKgYGuLqWy1QYk3/YsSx5UFVdxAJPxnQc7eEgl6HmjiXpAv9cTlliXnWvwnaCkMmhxDkTA0liX2PPnpH6AjujIStsGyFHzwL/hugQ5P/qCHXHSGLIl3/wXqLuhwFsQAecYpskSfJX8cDTri6iBh7C1LrnmpqZLOCeYgkVBTlpJqIcGdAU1iHDlnkkqkPyHB9wBVuB8J5zqVbG+FhIiGrqDg24gprP5CoIa/hancuxNKQCpDk8BdTOWcBuqYIpIXUwWpwBXHButSzw76OWZARX1sAOrYWpIdsyDIfq8D6gylqFc6E3kkJOp7I9DiGMeFoQL9JLkeVQVpTMF/bwLaTB08O9inQqgQzf6kb7pWmpqTr6yNPiQk7nNjyD6+NlJIiKKnGWQfVZO3IyG9h5z4VEFwkTP8gJz5UoWNQhQDTBvIqeS2zA77SPgv/AJ8KLqSzEcuZAAAAABJRU5ErkJggg==");background-color:#afb6ca;border:1px solid #afb6ca}#sub-nav .social a.rss{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABd0lEQVR4Ae3UA+zXQRiA8Tfbtm3briHbtm03ZLuGbNsas227hvik27v7ffH33Gd+hvNJhCEbc5lCRyqTXMKCPnzlHRfYyhgqEUdCi3PYPrOeehIaHMTtLv0kpDiPt3s0lpCgFff5hLetxJeQICaZacBMbuL0mlISGpRgOU7NJXRIyyICdZDQohQ3sDUTP5RkNXPpRj5xYC22QuKNMxhcY3TgdWYKis9EFy8cxvaNMWJhBoqdwVxldZncotiKooq4MQov1UTxROsL8UI6qjDBNZNK1jajWos/anEBW3ox2KjtifhzbdptrSncM/PFUFCDta7WtkLcyEJj6ojBAjB+Ete1D5+IJoEYrj9ADlPugNFPDF5qKyc2qoF6RNS/rbKWS2KwWNtAsbEbW01TH2jJZkozLSvFxklsTV2voJ0pRbQcFRs9sCXRO2EwzZTUWm5KIPZi0ERbdm1rTImu5as40YFFTKd4QBvIcpazgFxamv0ty2ggf/33CwQ70ADWDdQbAAAAAElFTkSuQmCC");background-color:#ef7522;border:1px solid #ef7522}#sub-nav .social a.twitter:hover{border:1px solid #24c1f6}#sub-nav .social a.search:hover{border:1px solid #909ab6}#sub-nav .social a.rss:hover{border:1px solid #cf5d0f}article input.runcode,article button{-webkit-appearance:none;background:#12b0e6;border:0;border-radius:0;box-shadow:inset 0 -5px 20px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-size:14px;line-height:1;margin-top:10px;padding:.625em .5em}article button{margin-top:0}article input.runcode:hover,article input.runcode:focus,article input.runcode:active,article button:hover,article button:focus,article button:active{background:#f6ad08}article strong{font-weight:700}article em{font-style:italic}article blockquote{background-color:#f8f8f8;border-left:5px solid #2479cc;margin-top:10px;overflow:hidden;padding:15px 20px}article code{background-color:#eee;border-radius:5px;font-family:Consolas,Monaco,'Andale Mono',monospace;font-size:80%;margin:0 2px;padding:4px 5px;vertical-align:middle}article pre{background-color:#f8f8f8;border-left:5px solid #ccc;color:#5d6a6a;font-size:14px;line-height:1.6;overflow:hidden;padding:.6em;position:relative;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}article img{border:1px solid #ccc;display:block;margin:10px 0 5px;max-width:100%;padding:0}article table{border:0;border-collapse:collapse;border-spacing:0}article pre code{background-color:transparent;border-radius:0;border:0;display:block;font-size:100%;margin:0;padding:0;position:relative}article table th,article table td{border:0}article table th{border-bottom:2px solid #848484;padding:6px 20px;text-align:left}article table td{border-bottom:1px solid #d0d0d0;padding:6px 20px}article .copyright-info{font-size:14px}article .expire-tips{background-color:#ffffc0;border:1px solid #e2e2e2;border-left:5px solid #fff000;color:#333;font-size:15px;padding:5px 10px}article .post-info{font-size:14px}article .entry-content{color:#444;font-size:16px;font-family:Arial,'Hiragino Sans GB',冬青黑,'Microsoft YaHei',微软雅黑,SimSun,宋体,Helvetica,Tahoma,'Arial sans-serif';-webkit-font-smoothing:antialiased;line-height:1.8;word-wrap:break-word}article img.loaded{height:auto!important}article .entry-content p,article .entry-content blockquote,article .entry-content ul,article .entry-content ol,article .entry-content dl,article .entry-content table,article .entry-content iframe,article .entry-content h1,article .entry-content h2,article .entry-content h3,article .entry-content h4,article .entry-content h5,article .entry-content h6,article .entry-content p,article .entry-content pre{margin-top:15px}article pre b.name{color:#eee;font-family:"Consolas","Liberation Mono",Courier,monospace;font-size:60px;line-height:1;pointer-events:none;position:absolute;right:10px;top:10px}article .entry-content .date{color:#999;font-size:14px}article .entry-content a:hover{text-decoration:underline}article .entry-content ul ul,article .entry-content ul ol,article .entry-content ul dl,article .entry-content ol ul,article .entry-content ol ol,article .entry-content ol dl,article .entry-content dl ul,article .entry-content dl ol,article .entry-content dl dl,article .entry-content blockquote>p:first-of-type{margin-top:0}.total_thread{line-height:1.6}.page-navi{border-top:1px solid #fff;border-bottom:1px solid #ddd;line-height:20px;overflow:hidden;padding:20px 0;position:relative;width:100%}article.post-search{padding-bottom:0}article .entry-content ul,article .entry-content ol,article .entry-content dl{margin-left:25px}.page-navi .prev{float:left}.page-navi .next{float:right}.page-navi .center{margin:auto;text-align:center;width:80px}#comments{border-bottom:1px solid #ddd;min-height:350px;padding:20px 0}#comments,#footer{border-top:1px solid #fff}#footer{font-size:.9em;line-height:2.2;padding:15px 70px 15px 40px;text-align:center;width:auto}#searchResult{min-height:350px}#toc-container,#toc{float:right}#toc{border:1px solid #e2e2e2;font-size:14px;margin:0 0 15px 20px;max-width:260px;min-width:120px;padding:6px}#search form{position:relative}#toc strong{border-bottom:1px solid #e2e2e2;display:block}#toc p{margin:0;padding:0 4px}#toc ul{margin:.5em .5em .5em 1.5em}#toc ul ul{margin-top:0;margin-bottom:0}#footer .beian{color:#666}#search .wrapper{margin-right:72px}#search .submit{-webkit-appearance:none;background-color:#e7e7e7;border:1px solid #bbb;border-left:0;border-radius:0;color:#222;display:block;font-size:16px;height:40px;outline:0;position:absolute;right:0;top:0;width:72px;cursor:pointer}#searchResult .info{border-bottom:1px solid #ddd;color:#676767;font-size:13px;padding:15px 0}#searchResult .no-result{background-color:#fff4c2;border:1px solid #fc3;font-size:13px;margin:15px 0;padding:5px}#searchResult .loading,#searchResult .hot-words{margin-top:20px}#searchResult .item{border-bottom:1px solid #ddd;padding:10px 0 20px}#comments h1.title{font-size:25px;font-weight:300;line-height:35px;margin-bottom:10px}#search .wrapper input{-webkit-appearance:none;border:1px solid #bbb;border-radius:0;box-sizing:border-box;display:block;font-size:16px;height:40px;outline:0;padding:4px 6px;width:100%}#searchResult .hot-words a{margin-right:20px}#searchResult .item:last-of-type{border-bottom:0}#searchResult .item .title{margin:5px 0}#searchResult .item .desc{font-size:14px;overflow:hidden}#searchResult .item .img{border:1px solid #ccc;float:left;height:81px;margin:4px 8px 0 0;width:108px}#searchResult .item .summary{-webkit-box-orient:vertical;display:block;display:-webkit-box;-webkit-line-clamp:4;line-height:22px;max-height:88px;text-overflow:ellipsis}#searchResult .item .title a{font-size:17px}#searchResult .item .img img{border:0;margin:0;width:100%}#searchResult .item .title b,#searchResult .item .desc b{color:#C00;font-weight:400}#searchResult .item .title .type{background-color:#eee;border-radius:3px;color:#888;display:inline-block;font-size:12px;margin-right:6px;padding:0 4px;position:relative;top:-1px}.hljs-comment,.diff .hljs-header,.hljs-doctype,.hljs-pi,.lisp .hljs-string,.hljs-javadoc{color:#999}.hljs-keyword,.hljs-winutils,.method,.hljs-addition,.css .hljs-tag,.hljs-request,.hljs-status,.nginx .hljs-title{color:#859900}.hljs-number,.hljs-command,.hljs-string,.hljs-tag .hljs-value,.hljs-rule .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula,.hljs-regexp,.hljs-hexcolor,.hljs-link_url{color:#2aa198}.hljs-title,.hljs-localvars,.hljs-chunk,.hljs-decorator,.hljs-built_in,.hljs-identifier,.vhdl .hljs-literal,.hljs-id,.css .hljs-function,.hljs-name{color:#268bd2}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.smalltalk .hljs-number,.hljs-constant,.hljs-class .hljs-title,.hljs-parent,.hljs-type,.hljs-link_reference{color:#b58900}.hljs-preprocessor,.hljs-preprocessor .hljs-keyword,.hljs-pragma,.hljs-shebang,.hljs-symbol,.hljs-symbol .hljs-string,.diff .hljs-change,.hljs-special,.hljs-attr_selector,.hljs-subst,.hljs-cdata,.css .hljs-pseudo,.hljs-header{color:#cb4b16}.hljs-deletion,.hljs-important{color:#dc322f}.hljs-link_label{color:#6c71c4}.tex .hljs-formula{background:#eee8d5}@media screen and (max-width:1024px){article{padding-bottom:15px}.left-col{width:210px}.mid-col{margin-left:210px}.mid-col .mid-col-container{padding:0 20px}#header{margin-left:30px}#footer{padding:15px 20px}article h1.title,article .entry-content{margin-left:0}}@media screen and (max-width:640px){#header{margin-left:0;padding:20px 0;text-align:center}#main-nav{margin-top:10px}#main-nav ul li{display:inline;margin:0 10px;text-align:center}#header .profilepic a{height:56px;left:12px;margin:0;position:absolute;top:12px;width:56px}#sub-nav .social,#sub-nav .social a{margin-bottom:0}article{padding:20px 0}.left-col{background-image:none;position:relative;width:100%}.mid-col{float:none;margin-left:0;width:100%}article .meta{margin-bottom:10px;position:static;width:auto}.mid-col .mid-col-container{padding:0 10px}.mid-col article .meta{float:none;overflow:hidden}article .meta .date,article .meta .comment,article .meta .tags{display:inline;margin-right:5px;padding-left:0}article .meta .date{margin-right:30px}#footer{padding:15px 10px}#toc{margin:0}#toc,#toc-container{float:none}#sub-nav .social a{opacity:1}}#simple_thread ol,#simple_thread ul{list-style:none;list-style-type:none}#simple_thread>.thread{color:#2a2e2e;font-family:"Helvetica Neue",arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#simple_thread .thread-new{margin-bottom:20px}#simple_thread .avatar{float:left}#simple_thread .publisher-anchor-color a{color:#2479cc!important}#simple_thread .thread-new .create-post{-webkit-appearance:none;background:#12b0e6;border:0;border-radius:0;box-shadow:inset 0 -5px 20px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-size:14px;line-height:1;padding:.625em .5em}#simple_thread .thread-new .tips{color:#888}#simple_thread .clearfix:after,#simple_thread .clearfix:before{clear:both;content:"";display:table;line-height:0}#simple_thread .active .publisher-nav-color::after{background-color:#2479cc!important}#simple_thread .avatar .user,#simple_thread .avatar img{border-radius:3px;display:block}#simple_thread .nav{border-bottom:2px solid #e7e9ee;margin:0 0 20px;position:relative}#simple_thread .tab-conversation{float:left}#simple_thread .btn{background:#778289;background:rgba(29,47,58,.6);border:0;border-radius:3px;color:#fff;display:inline-block;font-weight:500;line-height:1.1;padding:10px 16px;text-shadow:none;transition:background .2s}#simple_thread .post-content{margin-bottom:24px;position:relative;transition:all .2s ease-in-out}#simple_thread .post-body{overflow:hidden}#simple_thread .post-header{font-size:13px;line-height:1;margin-bottom:3px;padding-right:46px}#simple_thread .post-meta{display:inline-block}#simple_thread .load-more{margin:0 0 24px}#simple_thread .avatar img{height:48px;width:48px}#simple_thread .nav-tab>a{color:#7f919e;display:block;font-weight:700;line-height:1;margin:0;padding:0;position:relative;transition:all .2s ease-in-out}#simple_thread .tab-conversation>a{font-size:15px;margin-right:15px;padding:12px 0;text-transform:capitalize}#simple_thread .post-body spoiler{background:#7f919e;color:transparent;display:inline;padding:0 .5em}#simple_thread .post-header a{color:#7f919e;line-height:1}#simple_thread .post-body-inner p{font-size:15px;line-height:21px;margin:0 0 15px;word-wrap:break-word}#simple_thread .media a{margin-right:10px}#simple_thread .avatar .user{background:#dbdfe4;padding:0;position:relative;z-index:100}#simple_thread .post .avatar{margin-right:12px}#simple_thread .btn:hover{background:#606d75;background:rgba(29,47,58,.7);color:#fff}#simple_thread .btn.active,#simple_thread .btn:active{background:#2e9fff;transition:none}#simple_thread .btn.busy{background:#ebeef2;color:#999;text-shadow:none}#simple_thread .post-content .indicator{border-radius:3px;height:48px;left:0;position:absolute;top:0;width:5px}#simple_thread .post-content.target{padding-left:12px}#simple_thread .post-header .author{color:#656c7a;font-weight:700}#simple_thread .post-header .time-ago,#simple_thread .post-header .reply{color:#656c7a;font-weight:500;font-size:12px}#simple_thread .post-meta .bullet{color:#c2c6cc;line-height:1.4;padding:0}#simple_thread .children .post{margin-left:60px}#simple_thread .load-more .btn{display:block;font-size:13px;font-weight:400;padding:11px 14px;text-align:center}#simple_thread.mobile .post-header{font-size:14px;line-height:18px;margin-bottom:4px;padding-right:0;position:relative;top:-4px}#simple_thread.mobile .post-body-inner{clear:left;overflow:visible;position:relative;top:-4px}#simple_thread.mobile .post-body{display:block;overflow:visible}#simple_thread .tab-conversation.active>a{color:#2a2e2e!important}#simple_thread .post-body a[data-dsq-mention]{font-weight:700}#simple_thread .post-body spoiler:hover,#simple_thread .post-body spoiler:focus{background:#e7e9ee;color:inherit}#simple_thread .post-body-inner p:last-child{margin:0}#simple_thread.mobile .avatar img,#simple_thread.mobile .post-list .post .post-content .avatar img{height:30px;width:30px}#simple_thread .btn.busy:active,#simple_thread .btn.busy:hover{background:#ebeef2;cursor:not-allowed;text-shadow:none}#simple_thread .post-content.target>.avatar{left:12px}#simple_thread .post-content.target .indicator{background:#ffc62e}#simple_thread .post-header .time-ago:hover,#simple_thread .post-header .reply:hover{color:#2a2e2e}#simple_thread .children .children .post{margin-left:48px}#simple_thread.mobile .post-header .post-byline{display:block;overflow:hidden;padding-right:15px;text-overflow:ellipsis;white-space:nowrap}#simple_thread.mobile .post-header .author{font-size:15px;line-height:18px}#simple_thread.mobile .post-meta .bullet-first{display:none}#simple_thread .tab-conversation.active>a:after{background:#2e9fff;bottom:-2px;content:" ";display:block;height:2px;left:0;position:absolute;right:0}#simple_thread .post-body a[data-dsq-mention]:before{content:'@'}#simple_thread.mobile .tab-conversation.active>a>span{display:none}#simple_thread .post.minimized>.post-content .post-body-inner{font-size:12px;line-height:36px;opacity:.7}#simple_thread .post.minimized>.post-content .post-header{display:none}#simple_thread.mobile .post-list .post .post-content{margin-bottom:16px;transition:none}#simple_thread.mobile .post-list .post .children{border-left:2px solid #e7e9ee;padding-left:17px}#simple_thread .post.minimized>.post-content .avatar img{border-radius:2px;height:36px}#simple_thread .post.minimized>.post-content .avatar img,#simple_thread .children .post .avatar .user img{width:36px}#simple_thread .children .post .avatar .user img,#simple_thread .children .post .indicator{height:36px}#simple_thread .children .children .children .children .post{margin-left:0}#simple_thread.mobile .post-list .post .post-content .indicator{height:30px}#simple_thread.mobile .post-list .post .children .post,#simple_thread.mobile .post-list .post .children .post .post-content .post-body{margin-left:0}#simple_thread.mobile .post-list .post.minimized>.post-content{margin-bottom:12px}#simple_thread.mobile .post-list .post .children li:only-child{margin-bottom:20px}#simple_thread .children .children .children .children .post .post-body{margin-left:48px}#simple_thread .children .children .children .children .post .indicator{left:0}#simple_thread.mobile .post-list .post .post-content.target .avatar{margin-left:8px}#simple_thread.mobile .post-list .post .children .children .children{border-left:none;padding-left:0}#simple_thread.mobile .post-list .post.minimized>.post-content .post-body-inner{clear:none} +*{margin:0;padding:0}html,body{height:100%}body{background:#ddd;color:#666;font-size:14px;font-family:"-apple-system","Open Sans","HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,sans-serif}::selection,::-moz-selection,::-webkit-selection{background-color:#2479cc;color:#eee}h1{font-size:2em}h3{font-size:1.3em}h4{font-size:1.1em}a{color:#2479cc;text-decoration:none}article{border-bottom:1px solid #ddd;border-top:1px solid #fff;padding:30px 0;position:relative}.container{max-width:1600px;min-height:100%;position:relative}.global-tips{display:none}.left-col{background-color:#50514c;background-image:url(//{{.Kodo.Domain}}/static/img/bg04.jpg);background-size:cover;height:100%;position:fixed;width:270px}.mid-col{background:#fff;left:0;margin-left:270px;min-height:100%;position:absolute;right:0}article .meta{color:#555;float:right;font-size:.9em;line-height:2;position:relative;text-align:right;width:auto}article .meta a{color:#999}article h1.title{color:#333;font-size:2em;font-weight:300;line-height:35px;margin-bottom:25px}article h1.title a{color:#333;transition:color .3s}.mid-col .mid-col-container{padding:0 70px 0 40px}article .meta .date,article .meta .comment,article .meta .tags{position:relative}article .meta .date-modified{display:none}article h1.title a:hover{color:#2479cc}#header{border-bottom:0;height:auto;line-height:30px;margin-left:50px;padding:30px 0;width:100%}#main-nav{margin-left:0}#main-nav,#sub-nav{float:none;margin-top:15px}#sub-nav{position:relative}#content{margin:0 auto;width:100%}#header a{color:#efefef;text-shadow:0 1px #666;transition:color .3s}#header h1{float:none;font-weight:300;font-size:30px}#main-nav ul li{display:block;margin-left:0;position:relative}#header .subtitle{color:#ccc}#sub-nav .social{margin-bottom:10px}#header a:hover{color:#ccc}#header .profilepic a{background-image:url("{{base64img .Kodo.Domain "avatar.jpg"}}");background-size:100% 100%;border-radius:50%;display:block;height:160px;margin:15px 0 20px -10px;width:160px}#sub-nav .social a{background-size:20px 20px;background-position:center center;background-repeat:no-repeat;border-radius:50%;display:inline-block;height:28px;margin:0 6px 15px;opacity:.75;text-indent:-9999px;transition:opacity .3s;vertical-align:middle;width:28px}#sub-nav .social a:hover{opacity:1}#sub-nav .social a:first-of-type{margin-left:0}#sub-nav .social a:last-of-type{margin-right:0}#sub-nav .social a.twitter{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABOklEQVR4Ae3QM4DXYQCH8W+2m7Jt15Ztc8u29myba1O2NbXlmrJ11nP8+31/GO+uz/psj7z6jzYsZBPL6KogylBM3tCDS/wDkrjNIOWgC4MorgC2MlgWLCXSesZzCWinAEoA0FAG9MOsE1VorFw0AiCd/orBF2Klc4HT3KaDctGQgF2RY+iETTzlFUAx/hDwlfmhxFjMrigS6wmXwGnG0kCiO2aTFI17xPrES8zmKhzt2MRo3uPdGIWjOgDxeNdOkbiCH/EUVyTq48cZxWIQ3g2TCTXZwT/c/ZAJpbnOOeJwN01mrMaLZ7JjO+5qywljeMRHErEZL3cM4Cdmy+SGFhzCZobMqM5E1rCM/TzB5gXdZEMZ+vMYu7cslDuqMZcrfCUkleccoL+8ozHjWcsujnGIDcyjF2VV8GUCCH5vOpRoTxYAAAAASUVORK5CYII=");background-color:#55cff8;border:1px solid #55cff8}#sub-nav .social a.search{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB6klEQVR4Ac3RM4AdURSA4RPbto06tm3btm3b7GLbttOsjWdrPG9OdFejRZWv/a8vqDM2s46nNot7vSusA5KrQfYk13CvYt6IXvwtiIKBuuWYnJAXsia+hPcEqhBtrsVZ2bu96EFN3LufpUGPfwCivoDNVQG00I0wHfqVY4GtG93G3Ne9mY/CNLGgRYxFgjdYOkMG9tkSptbDoMY3JW2PpCKgYGuLqWy1QYk3/YsSx5UFVdxAJPxnQc7eEgl6HmjiXpAv9cTlliXnWvwnaCkMmhxDkTA0liX2PPnpH6AjujIStsGyFHzwL/hugQ5P/qCHXHSGLIl3/wXqLuhwFsQAecYpskSfJX8cDTri6iBh7C1LrnmpqZLOCeYgkVBTlpJqIcGdAU1iHDlnkkqkPyHB9wBVuB8J5zqVbG+FhIiGrqDg24gprP5CoIa/hancuxNKQCpDk8BdTOWcBuqYIpIXUwWpwBXHButSzw76OWZARX1sAOrYWpIdsyDIfq8D6gylqFc6E3kkJOp7I9DiGMeFoQL9JLkeVQVpTMF/bwLaTB08O9inQqgQzf6kb7pWmpqTr6yNPiQk7nNjyD6+NlJIiKKnGWQfVZO3IyG9h5z4VEFwkTP8gJz5UoWNQhQDTBvIqeS2zA77SPgv/AJ8KLqSzEcuZAAAAABJRU5ErkJggg==");background-color:#afb6ca;border:1px solid #afb6ca}#sub-nav .social a.rss{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAABd0lEQVR4Ae3UA+zXQRiA8Tfbtm3briHbtm03ZLuGbNsas227hvik27v7ffH33Gd+hvNJhCEbc5lCRyqTXMKCPnzlHRfYyhgqEUdCi3PYPrOeehIaHMTtLv0kpDiPt3s0lpCgFff5hLetxJeQICaZacBMbuL0mlISGpRgOU7NJXRIyyICdZDQohQ3sDUTP5RkNXPpRj5xYC22QuKNMxhcY3TgdWYKis9EFy8cxvaNMWJhBoqdwVxldZncotiKooq4MQov1UTxROsL8UI6qjDBNZNK1jajWos/anEBW3ox2KjtifhzbdptrSncM/PFUFCDta7WtkLcyEJj6ojBAjB+Ete1D5+IJoEYrj9ADlPugNFPDF5qKyc2qoF6RNS/rbKWS2KwWNtAsbEbW01TH2jJZkozLSvFxklsTV2voJ0pRbQcFRs9sCXRO2EwzZTUWm5KIPZi0ERbdm1rTImu5as40YFFTKd4QBvIcpazgFxamv0ty2ggf/33CwQ70ADWDdQbAAAAAElFTkSuQmCC");background-color:#ef7522;border:1px solid #ef7522}#sub-nav .social a.twitter:hover{border:1px solid #24c1f6}#sub-nav .social a.search:hover{border:1px solid #909ab6}#sub-nav .social a.rss:hover{border:1px solid #cf5d0f}article input.runcode,article button{-webkit-appearance:none;background:#12b0e6;border:0;border-radius:0;box-shadow:inset 0 -5px 20px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-size:14px;line-height:1;margin-top:10px;padding:.625em .5em}article button{margin-top:0}article input.runcode:hover,article input.runcode:focus,article input.runcode:active,article button:hover,article button:focus,article button:active{background:#f6ad08}article strong{font-weight:700}article em{font-style:italic}article blockquote{background-color:#f8f8f8;border-left:5px solid #2479cc;margin-top:10px;overflow:hidden;padding:15px 20px}article code{background-color:#eee;border-radius:5px;font-family:Consolas,Monaco,'Andale Mono',monospace;font-size:80%;margin:0 2px;padding:4px 5px;vertical-align:middle}article pre{background-color:#f8f8f8;border-left:5px solid #ccc;color:#5d6a6a;font-size:14px;line-height:1.6;overflow:hidden;padding:.6em;position:relative;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}article img{border:1px solid #ccc;display:block;margin:10px 0 5px;max-width:100%;padding:0}article table{border:0;border-collapse:collapse;border-spacing:0}article pre code{background-color:transparent;border-radius:0;border:0;display:block;font-size:100%;margin:0;padding:0;position:relative}article table th,article table td{border:0}article table th{border-bottom:2px solid #848484;padding:6px 20px;text-align:left}article table td{border-bottom:1px solid #d0d0d0;padding:6px 20px}article .copyright-info{font-size:14px}article .expire-tips{background-color:#ffffc0;border:1px solid #e2e2e2;border-left:5px solid #fff000;color:#333;font-size:15px;padding:5px 10px}article .post-info{font-size:14px}article .entry-content{color:#444;font-size:16px;font-family:Arial,'Hiragino Sans GB',冬青黑,'Microsoft YaHei',微软雅黑,SimSun,宋体,Helvetica,Tahoma,'Arial sans-serif';-webkit-font-smoothing:antialiased;line-height:1.8;word-wrap:break-word}article img.loaded{height:auto!important}article .entry-content p,article .entry-content blockquote,article .entry-content ul,article .entry-content ol,article .entry-content dl,article .entry-content table,article .entry-content iframe,article .entry-content h1,article .entry-content h2,article .entry-content h3,article .entry-content h4,article .entry-content h5,article .entry-content h6,article .entry-content p,article .entry-content pre{margin-top:15px}article pre b.name{color:#eee;font-family:"Consolas","Liberation Mono",Courier,monospace;font-size:60px;line-height:1;pointer-events:none;position:absolute;right:10px;top:10px}article .entry-content .date{color:#999;font-size:14px}article .entry-content a:hover{text-decoration:underline}article .entry-content ul ul,article .entry-content ul ol,article .entry-content ul dl,article .entry-content ol ul,article .entry-content ol ol,article .entry-content ol dl,article .entry-content dl ul,article .entry-content dl ol,article .entry-content dl dl,article .entry-content blockquote>p:first-of-type{margin-top:0}.total_thread{line-height:1.6}.page-navi{border-top:1px solid #fff;border-bottom:1px solid #ddd;line-height:20px;overflow:hidden;padding:20px 0;position:relative;width:100%}article.post-search{padding-bottom:0}article .entry-content ul,article .entry-content ol,article .entry-content dl{margin-left:25px}.page-navi .prev{float:left}.page-navi .next{float:right}.page-navi .center{margin:auto;text-align:center;width:80px}#comments{border-bottom:1px solid #ddd;min-height:350px;padding:20px 0}#comments,#footer{border-top:1px solid #fff}#footer{font-size:.9em;line-height:2.2;padding:15px 70px 15px 40px;text-align:center;width:auto}#searchResult{min-height:350px}#toc-container,#toc{float:right}#toc{border:1px solid #e2e2e2;font-size:14px;margin:0 0 15px 20px;max-width:260px;min-width:120px;padding:6px}#search form{position:relative}#toc strong{border-bottom:1px solid #e2e2e2;display:block}#toc p{margin:0;padding:0 4px}#toc ul{margin:.5em .5em .5em 1.5em}#toc ul ul{margin-top:0;margin-bottom:0}#footer .beian{color:#666}#search .wrapper{margin-right:72px}#search .submit{-webkit-appearance:none;background-color:#e7e7e7;border:1px solid #bbb;border-left:0;border-radius:0;color:#222;display:block;font-size:16px;height:40px;outline:0;position:absolute;right:0;top:0;width:72px;cursor:pointer}#searchResult .info{border-bottom:1px solid #ddd;color:#676767;font-size:13px;padding:15px 0}#searchResult .no-result{background-color:#fff4c2;border:1px solid #fc3;font-size:13px;margin:15px 0;padding:5px}#searchResult .loading,#searchResult .hot-words{margin-top:20px}#searchResult .item{border-bottom:1px solid #ddd;padding:10px 0 20px}#comments h1.title{font-size:25px;font-weight:300;line-height:35px;margin-bottom:10px}#search .wrapper input{-webkit-appearance:none;border:1px solid #bbb;border-radius:0;box-sizing:border-box;display:block;font-size:16px;height:40px;outline:0;padding:4px 6px;width:100%}#searchResult .hot-words a{margin-right:20px}#searchResult .item:last-of-type{border-bottom:0}#searchResult .item .title{margin:5px 0}#searchResult .item .desc{font-size:14px;overflow:hidden}#searchResult .item .img{border:1px solid #ccc;float:left;height:81px;margin:4px 8px 0 0;width:108px}#searchResult .item .summary{-webkit-box-orient:vertical;display:block;display:-webkit-box;-webkit-line-clamp:4;line-height:22px;max-height:88px;text-overflow:ellipsis}#searchResult .item .title a{font-size:17px}#searchResult .item .img img{border:0;margin:0;width:100%}#searchResult .item .title b,#searchResult .item .desc b{color:#C00;font-weight:400}#searchResult .item .title .type{background-color:#eee;border-radius:3px;color:#888;display:inline-block;font-size:12px;margin-right:6px;padding:0 4px;position:relative;top:-1px}.hljs-comment,.diff .hljs-header,.hljs-doctype,.hljs-pi,.lisp .hljs-string,.hljs-javadoc{color:#999}.hljs-keyword,.hljs-winutils,.method,.hljs-addition,.css .hljs-tag,.hljs-request,.hljs-status,.nginx .hljs-title{color:#859900}.hljs-number,.hljs-command,.hljs-string,.hljs-tag .hljs-value,.hljs-rule .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula,.hljs-regexp,.hljs-hexcolor,.hljs-link_url{color:#2aa198}.hljs-title,.hljs-localvars,.hljs-chunk,.hljs-decorator,.hljs-built_in,.hljs-identifier,.vhdl .hljs-literal,.hljs-id,.css .hljs-function,.hljs-name{color:#268bd2}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.smalltalk .hljs-number,.hljs-constant,.hljs-class .hljs-title,.hljs-parent,.hljs-type,.hljs-link_reference{color:#b58900}.hljs-preprocessor,.hljs-preprocessor .hljs-keyword,.hljs-pragma,.hljs-shebang,.hljs-symbol,.hljs-symbol .hljs-string,.diff .hljs-change,.hljs-special,.hljs-attr_selector,.hljs-subst,.hljs-cdata,.css .hljs-pseudo,.hljs-header{color:#cb4b16}.hljs-deletion,.hljs-important{color:#dc322f}.hljs-link_label{color:#6c71c4}.tex .hljs-formula{background:#eee8d5}@media screen and (max-width:1024px){article{padding-bottom:15px}.left-col{width:210px}.mid-col{margin-left:210px}.mid-col .mid-col-container{padding:0 20px}#header{margin-left:30px}#footer{padding:15px 20px}article h1.title,article .entry-content{margin-left:0}}@media screen and (max-width:640px){#header{margin-left:0;padding:20px 0;text-align:center}#main-nav{margin-top:10px}#main-nav ul li{display:inline;margin:0 10px;text-align:center}#header .profilepic a{height:56px;left:12px;margin:0;position:absolute;top:12px;width:56px}#sub-nav .social,#sub-nav .social a{margin-bottom:0}article{padding:20px 0}.left-col{background-image:none;position:relative;width:100%}.mid-col{float:none;margin-left:0;width:100%}article .meta{margin-bottom:10px;position:static;width:auto}.mid-col .mid-col-container{padding:0 10px}.mid-col article .meta{float:none;overflow:hidden}article .meta .date,article .meta .comment,article .meta .tags{display:inline;margin-right:5px;padding-left:0}article .meta .date{margin-right:30px}#footer{padding:15px 10px}#toc{margin:0}#toc,#toc-container{float:none}#sub-nav .social a{opacity:1}}#simple_thread ol,#simple_thread ul{list-style:none;list-style-type:none}#simple_thread>.thread{color:#2a2e2e;font-family:"Helvetica Neue",arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#simple_thread .thread-new{margin-bottom:20px}#simple_thread .avatar{float:left}#simple_thread .publisher-anchor-color a{color:#2479cc!important}#simple_thread .thread-new .create-post{-webkit-appearance:none;background:#12b0e6;border:0;border-radius:0;box-shadow:inset 0 -5px 20px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-size:14px;line-height:1;padding:.625em .5em}#simple_thread .thread-new .tips{color:#888}#simple_thread .clearfix:after,#simple_thread .clearfix:before{clear:both;content:"";display:table;line-height:0}#simple_thread .active .publisher-nav-color::after{background-color:#2479cc!important}#simple_thread .avatar .user,#simple_thread .avatar img{border-radius:3px;display:block}#simple_thread .nav{border-bottom:2px solid #e7e9ee;margin:0 0 20px;position:relative}#simple_thread .tab-conversation{float:left}#simple_thread .btn{background:#778289;background:rgba(29,47,58,.6);border:0;border-radius:3px;color:#fff;display:inline-block;font-weight:500;line-height:1.1;padding:10px 16px;text-shadow:none;transition:background .2s}#simple_thread .post-content{margin-bottom:24px;position:relative;transition:all .2s ease-in-out}#simple_thread .post-body{overflow:hidden}#simple_thread .post-header{font-size:13px;line-height:1;margin-bottom:3px;padding-right:46px}#simple_thread .post-meta{display:inline-block}#simple_thread .load-more{margin:0 0 24px}#simple_thread .avatar img{height:48px;width:48px}#simple_thread .nav-tab>a{color:#7f919e;display:block;font-weight:700;line-height:1;margin:0;padding:0;position:relative;transition:all .2s ease-in-out}#simple_thread .tab-conversation>a{font-size:15px;margin-right:15px;padding:12px 0;text-transform:capitalize}#simple_thread .post-body spoiler{background:#7f919e;color:transparent;display:inline;padding:0 .5em}#simple_thread .post-header a{color:#7f919e;line-height:1}#simple_thread .post-body-inner p{font-size:15px;line-height:21px;margin:0 0 15px;word-wrap:break-word}#simple_thread .media a{margin-right:10px}#simple_thread .avatar .user{background:#dbdfe4;padding:0;position:relative;z-index:100}#simple_thread .post .avatar{margin-right:12px}#simple_thread .btn:hover{background:#606d75;background:rgba(29,47,58,.7);color:#fff}#simple_thread .btn.active,#simple_thread .btn:active{background:#2e9fff;transition:none}#simple_thread .btn.busy{background:#ebeef2;color:#999;text-shadow:none}#simple_thread .post-content .indicator{border-radius:3px;height:48px;left:0;position:absolute;top:0;width:5px}#simple_thread .post-content.target{padding-left:12px}#simple_thread .post-header .author{color:#656c7a;font-weight:700}#simple_thread .post-header .time-ago,#simple_thread .post-header .reply{color:#656c7a;font-weight:500;font-size:12px}#simple_thread .post-meta .bullet{color:#c2c6cc;line-height:1.4;padding:0}#simple_thread .children .post{margin-left:60px}#simple_thread .load-more .btn{display:block;font-size:13px;font-weight:400;padding:11px 14px;text-align:center}#simple_thread.mobile .post-header{font-size:14px;line-height:18px;margin-bottom:4px;padding-right:0;position:relative;top:-4px}#simple_thread.mobile .post-body-inner{clear:left;overflow:visible;position:relative;top:-4px}#simple_thread.mobile .post-body{display:block;overflow:visible}#simple_thread .tab-conversation.active>a{color:#2a2e2e!important}#simple_thread .post-body a[data-dsq-mention]{font-weight:700}#simple_thread .post-body spoiler:hover,#simple_thread .post-body spoiler:focus{background:#e7e9ee;color:inherit}#simple_thread .post-body-inner p:last-child{margin:0}#simple_thread.mobile .avatar img,#simple_thread.mobile .post-list .post .post-content .avatar img{height:30px;width:30px}#simple_thread .btn.busy:active,#simple_thread .btn.busy:hover{background:#ebeef2;cursor:not-allowed;text-shadow:none}#simple_thread .post-content.target>.avatar{left:12px}#simple_thread .post-content.target .indicator{background:#ffc62e}#simple_thread .post-header .time-ago:hover,#simple_thread .post-header .reply:hover{color:#2a2e2e}#simple_thread .children .children .post{margin-left:48px}#simple_thread.mobile .post-header .post-byline{display:block;overflow:hidden;padding-right:15px;text-overflow:ellipsis;white-space:nowrap}#simple_thread.mobile .post-header .author{font-size:15px;line-height:18px}#simple_thread.mobile .post-meta .bullet-first{display:none}#simple_thread .tab-conversation.active>a:after{background:#2e9fff;bottom:-2px;content:" ";display:block;height:2px;left:0;position:absolute;right:0}#simple_thread .post-body a[data-dsq-mention]:before{content:'@'}#simple_thread.mobile .tab-conversation.active>a>span{display:none}#simple_thread .post.minimized>.post-content .post-body-inner{font-size:12px;line-height:36px;opacity:.7}#simple_thread .post.minimized>.post-content .post-header{display:none}#simple_thread.mobile .post-list .post .post-content{margin-bottom:16px;transition:none}#simple_thread.mobile .post-list .post .children{border-left:2px solid #e7e9ee;padding-left:17px}#simple_thread .post.minimized>.post-content .avatar img{border-radius:2px;height:36px}#simple_thread .post.minimized>.post-content .avatar img,#simple_thread .children .post .avatar .user img{width:36px}#simple_thread .children .post .avatar .user img,#simple_thread .children .post .indicator{height:36px}#simple_thread .children .children .children .children .post{margin-left:0}#simple_thread.mobile .post-list .post .post-content .indicator{height:30px}#simple_thread.mobile .post-list .post .children .post,#simple_thread.mobile .post-list .post .children .post .post-content .post-body{margin-left:0}#simple_thread.mobile .post-list .post.minimized>.post-content{margin-bottom:12px}#simple_thread.mobile .post-list .post .children li:only-child{margin-bottom:20px}#simple_thread .children .children .children .children .post .post-body{margin-left:48px}#simple_thread .children .children .children .children .post .indicator{left:0}#simple_thread.mobile .post-list .post .post-content.target .avatar{margin-left:8px}#simple_thread.mobile .post-list .post .children .children .children{border-left:none;padding-left:0}#simple_thread.mobile .post-list .post.minimized>.post-content .post-body-inner{clear:none} {{end}} diff --git a/views/st_blog.js b/views/st_blog.js index c85b5b9..6195c48 100644 --- a/views/st_blog.js +++ b/views/st_blog.js @@ -1,3 +1,3 @@ {{define "blog_js"}} -var stringProto=String.prototype;stringProto.stripTags=function(){return this.replace(/<[^>]*>/gi,"")},stringProto.decode4Html=function(){var t=document.createElement("div");return t.innerHTML=this.stripTags(),t.childNodes[0]?t.childNodes[0].nodeValue||"":""},stringProto.queryUrl=function(t){var a=this.replace(/^[^?=]*\?/gi,"").split("#")[0],e={};return a.replace(/(^|&)([^&=]+)=([^&]*)/g,function(t,a,n,i){try{n=decodeURIComponent(n)}catch(o){}try{i=decodeURIComponent(i)}catch(o){}n in e?e[n] instanceof Array?e[n].push(i):e[n]=[e[n],i]:e[n]=/\[\]$/.test(n)?[i]:i}),t?e[t]:e},function(t){t.disqus_shortname="deepzz",$.each(["CURRENT_PAGE","CDN_DOMAIN"],function(a,e){t[e]="";var n=$("#"+e);n&&(t[e]=n.val())})}(this),function(t){function a(a){var e,n,i={selector:null,height:200};i=$.extend(i,a),e=i.height,n=function(){var a=$(t).scrollTop(),n=$(t).height()+a;$(i.selector).find("img[data-src]").each(function(){var t=$(this);setTimeout(function(){var i,o=t.offset(),s=t.height();o.top>n+e||o.top+s'),e.insertAfter(i)),o.html().split("\n").length>3&&o.prop("className").indexOf("language")>-1)){switch(n=o.prop("className").replace("language-","").toUpperCase()){case"XML":n="HTML";break;case"SHELL":n="BASH"}$(''+n+"").insertBefore(o)}}),$(".entry-content input.runcode").each(function(){var a=$(this);a.click(function(a){var e,n,i;a.preventDefault(),e=$("#"+$(this).data("id")).html().stripTags().decode4Html(),n=t.open("","_preview",""),i=n.document,i.open(),i.write(e),i.close()})}),$(".entry-content > pre code").each(function(i,block){hljs.highlightBlock(block)})})}(this),function(){$(function(){$(".entry-content img[data-replace]").each(function(){var t=$(this);t.click(function(){var a,e,n,i,o=1000*(t.data("dur")||20);t.css("cursor")&&(a="/static/img/blank.gif",e=t.prop("src"),n=t.data("replace"),t.prop("src",a),t.css("cursor",""),i=new Image,i.onload=function(){t.prop("src",n),setTimeout(function(){t.prop("src",e),t.css("cursor","pointer")},o)},i.src=n)}),t.css("cursor","pointer")})})}(this),function(t){var a=function(){var e=[],n="comment_type",i=function(){if(!t.atob){return 1}try{t.postMessage("ping","*")}catch(a){return 2}return 0};return{addService:function(t){e.push(t)},clear:function(){localStorage.removeItem(n)},init:function(t){var o,r,s,c;return e.length?t.length?(o=t.data("url")||location.href,r=t.data("identifier"),o&&r?i()?void t.html("很抱歉,本站评论功能只支持这些浏览器:Chrome、Firefox、Safari、Opera、Edge、IE11+。"):(s=function(i){var c,l=e[i];l&&(c=$("
").prop("id",l.id),t.append(c),l.init(c,o,r),l.check(function(t){t?(c.hide(),s(++i)):(l.load(),localStorage[n]=i,a.currentServer=l)},c,o,r))},c=0,localStorage.comment_type&&(c=parseInt(localStorage[n],10)||0),c=Math.min(e.length-1,c),c=Math.max(c,0),void s(c)):void alert("没有找到评论所需标记!")):void alert("没有找到评论容器!"):void alert("没有找到可用的服务!")}}}();t.TotalThread=a}(this),function(t){var a=function(){var a=!1;return{id:"disqus_thread",check:function(a){var e,n,i=["https://c.disquscdn.com/favicon.ico","https://disqus.com/favicon.ico"],o=0,r=0,s=function(){o==i.length&&a(r==o?0:1)};for(t.__disqus_img=[],e=function(a){var e=new Image,n=setTimeout(function(){e.onerror=e.onload=null,o++,s()},2500);e.onerror=function(){clearTimeout(n),o++,s()},e.onload=function(){clearTimeout(n),o++,r++,s()},e.src=i[a]+"?"+ +new Date,t.__disqus_img[a]=e},n=0;n
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。"),this.elThread=t,this.url=a,this.identifier=e}}}();t.TotalThread.addService(a)}(this),function(t){var a=function(){var e=!1,n=function(e,n){var i,o,r=!1,s="",c=function(a){var e='
  • '+(a.url?'':'')+'
    '+a.message+'
    • ';return e},l=function(t){for(;t.length;){var a=[];t.forEach(function(t){var n=t.parent,i=e.find('ul[data-id="'+n+'"]');return i.length?void i.append(c(t)):void a.push(t)}),t=a}},d=function(a){var n=parseInt(a.parent,10),i=e.find('ul[data-id="'+n+'"]');i.prepend(c(a)),e.find(".no-result").hide(),$(t).trigger("scroll"),$(t).trigger("hashchange","scrollIntoView")};a.insertItem=d,i=function(t){var a='';e.attr("data-thread",t.thread),e.attr("data-identifier",n),e.html(a),t.comments.length||e.find(".thread-post-list").append('

      本文目前还没有人评论~

      ')},o=function(){if(!r){r=!0;var a;a=s?"/disqus/"+n+"/"+encodeURIComponent(s):"/disqus/"+n,$.get(a,{},function(a){var n;r=!1,a&&0==a.errno?(s?l(a.data.comments):(i(a.data),l(a.data.comments),$(t).trigger("hashchange","scrollIntoView")),n=e.find(".load-more a"),a.data.next?n.removeClass("busy"):n.hide(),s=a.data.next,$(t).trigger("scroll")):e.html('

      获取数据失败,请稍后再试!

      ')})}},e.on("click",".load-more a",function(t){t.preventDefault(),$(this).addClass("busy"),o()}).on("click","a.time-ago",function(t){t.preventDefault(),location.hash="comment-"+$(this).data("id")}).on("click","a.reload",function(a){a.preventDefault(),t.TotalThread.clear(),location.hash="comments",location.reload()}).on("click","a.reply, button.create-post",function(a){var n,i,o,r,s,c,l,d,u;a.preventDefault(),n=e.data("identifier"),i=e.data("thread"),o=$(this).data("next"),r=$(this).data("id"),s=420,c=520,l=t.screen.width-s/2,d=t.screen.height-c/2,u=[n,i,r,o].join("|"),t.open("/disqus/form/"+encodeURIComponent(u)+"/","_create_post","width="+s+",height="+c+",location=1,status=1,resizable=1,scrollbars=1,left="+l+",top="+d)}),$(t).on("hashchange",function(a,n){var i,o=location.hash.match(/#comment\-(\d+)/);o&&(i=e.find("#post-"+o[1]),i.length&&(e.find(".post-content.target").removeClass("target"),i.find("> .post-content").addClass("target"),n&&$(t).scrollTop(i.offset().top-90)))}),/(iPhone|Android)/.test(navigator.userAgent)&&e.addClass("mobile"),o()};return{id:"simple_thread",check:function(t){t(0)},load:function(){e||(e=!0,n(this.elThread,this.identifier))},init:function(t,a,e){t.html("评论基础模式加载中...

      注:本模式仅支持最基本的评论功能,如需完整体验请针对 disq.us | disquscdn.com | disqus.com 启用代理。"),this.elThread=t,this.url=a,this.identifier=e}}}();t.TotalThread.addService(a)}(this),function(t,a){var e=a.domain;return"st.deepzz.com"==e?void (location.href=location.href.replace(/(https?:\/\/[^\/]+)\//i,"//deepzz.com/")):(function(){var t,a=location.search.queryUrl();"1"==a.clear_ls&&(delete a.clear_ls,t=$.param(a),setTimeout(function(){t?location.search=$.param(a):location.href=location.href.replace(/\?.*$/,"")},300))}(),void $(function(){lazyLoad({selector:"#content",height:100}),function(){var t=$("#content"),a=t.find("img"),e=t.width();a.each(function(){var t=$(this),a=0|t.attr("width"),n=0|t.attr("height"),i=t.prop("complete");a>e&&t.attr("height",Math.ceil(n/a*e)),t.prop("src")&&(i?t.addClass("loaded"):t.on("load",function(){t.addClass("loaded")}))})}(),function(){if("search-post"==CURRENT_PAGE){var t=$("#keyword");t.val()||t.focus()}}(),function(){var a=$(".total_thread");a.length&&setTimeout(function(){/ #comment - \d + $ /.test(location.hash)&&$("#comments").get(0).scrollIntoView();var e=setInterval(function(){var n=a.offset().top,i=$(t).scrollTop();Math.abs(n-i)<1000&&(clearTimeout(e),t.TotalThread.init(a))},150)},250)}()}))}(this,document); +var stringProto=String.prototype;stringProto.stripTags=function(){return this.replace(/<[^>]*>/gi,"")},stringProto.decode4Html=function(){var t=document.createElement("div");return t.innerHTML=this.stripTags(),t.childNodes[0]?t.childNodes[0].nodeValue||"":""},stringProto.queryUrl=function(t){var a=this.replace(/^[^?=]*\?/gi,"").split("#")[0],e={};return a.replace(/(^|&)([^&=]+)=([^&]*)/g,function(t,a,n,i){try{n=decodeURIComponent(n)}catch(o){}try{i=decodeURIComponent(i)}catch(o){}n in e?e[n] instanceof Array?e[n].push(i):e[n]=[e[n],i]:e[n]=/\[\]$/.test(n)?[i]:i}),t?e[t]:e},function(t){t.disqus_shortname="{{.ShortName}}",$.each(["CURRENT_PAGE","CDN_DOMAIN"],function(a,e){t[e]="";var n=$("#"+e);n&&(t[e]=n.val())})}(this),function(t){function a(a){var e,n,i={selector:null,height:200};i=$.extend(i,a),e=i.height,n=function(){var a=$(t).scrollTop(),n=$(t).height()+a;$(i.selector).find("img[data-src]").each(function(){var t=$(this);setTimeout(function(){var i,o=t.offset(),s=t.height();o.top>n+e||o.top+s'),e.insertAfter(i)),o.html().split("\n").length>3&&o.prop("className").indexOf("language")>-1)){switch(n=o.prop("className").replace("language-","").toUpperCase()){case"XML":n="HTML";break;case"SHELL":n="BASH"}$(''+n+"").insertBefore(o)}}),$(".entry-content input.runcode").each(function(){var a=$(this);a.click(function(a){var e,n,i;a.preventDefault(),e=$("#"+$(this).data("id")).html().stripTags().decode4Html(),n=t.open("","_preview",""),i=n.document,i.open(),i.write(e),i.close()})}),$(".entry-content > pre code").each(function(i,block){hljs.highlightBlock(block)})})}(this),function(){$(function(){$(".entry-content img[data-replace]").each(function(){var t=$(this);t.click(function(){var a,e,n,i,o=1000*(t.data("dur")||20);t.css("cursor")&&(a="/static/img/blank.gif",e=t.prop("src"),n=t.data("replace"),t.prop("src",a),t.css("cursor",""),i=new Image,i.onload=function(){t.prop("src",n),setTimeout(function(){t.prop("src",e),t.css("cursor","pointer")},o)},i.src=n)}),t.css("cursor","pointer")})})}(this),function(t){var a=function(){var e=[],n="comment_type",i=function(){if(!t.atob){return 1}try{t.postMessage("ping","*")}catch(a){return 2}return 0};return{addService:function(t){e.push(t)},clear:function(){localStorage.removeItem(n)},init:function(t){var o,r,s,c;return e.length?t.length?(o=t.data("url")||location.href,r=t.data("identifier"),o&&r?i()?void t.html("很抱歉,本站评论功能只支持这些浏览器:Chrome、Firefox、Safari、Opera、Edge、IE11+。"):(s=function(i){var c,l=e[i];l&&(c=$("
      ").prop("id",l.id),t.append(c),l.init(c,o,r),l.check(function(t){t?(c.hide(),s(++i)):(l.load(),localStorage[n]=i,a.currentServer=l)},c,o,r))},c=0,localStorage.comment_type&&(c=parseInt(localStorage[n],10)||0),c=Math.min(e.length-1,c),c=Math.max(c,0),void s(c)):void alert("没有找到评论所需标记!")):void alert("没有找到评论容器!"):void alert("没有找到可用的服务!")}}}();t.TotalThread=a}(this),function(t){var a=function(){var a=!1;return{id:"disqus_thread",check:function(a){var e,n,i=["https://c.disquscdn.com/favicon.ico","https://disqus.com/favicon.ico"],o=0,r=0,s=function(){o==i.length&&a(r==o?0:1)};for(t.__disqus_img=[],e=function(a){var e=new Image,n=setTimeout(function(){e.onerror=e.onload=null,o++,s()},2500);e.onerror=function(){clearTimeout(n),o++,s()},e.onload=function(){clearTimeout(n),o++,r++,s()},e.src=i[a]+"?"+ +new Date,t.__disqus_img[a]=e},n=0;n
      注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。"),this.elThread=t,this.url=a,this.identifier=e}}}();t.TotalThread.addService(a)}(this),function(t){var a=function(){var e=!1,n=function(e,n){var i,o,r=!1,s="",c=function(a){var e='
    • '+(a.url?'':'')+'
      '+a.message+'
      • ';return e},l=function(t){for(;t.length;){var a=[];t.forEach(function(t){var n=t.parent,i=e.find('ul[data-id="'+n+'"]');return i.length?void i.append(c(t)):void a.push(t)}),t=a}},d=function(a){var n=parseInt(a.parent,10),i=e.find('ul[data-id="'+n+'"]');i.prepend(c(a)),e.find(".no-result").hide(),$(t).trigger("scroll"),$(t).trigger("hashchange","scrollIntoView")};a.insertItem=d,i=function(t){var a='';e.attr("data-thread",t.thread),e.attr("data-identifier",n),e.html(a),t.comments.length||e.find(".thread-post-list").append('

        本文目前还没有人评论~

        ')},o=function(){if(!r){r=!0;var a;a=s?"/disqus/"+n+"/"+encodeURIComponent(s):"/disqus/"+n,$.get(a,{},function(a){var n;r=!1,a&&0==a.errno?(s?l(a.data.comments):(i(a.data),l(a.data.comments),$(t).trigger("hashchange","scrollIntoView")),n=e.find(".load-more a"),a.data.next?n.removeClass("busy"):n.hide(),s=a.data.next,$(t).trigger("scroll")):e.html('

        获取数据失败,请稍后再试!

        ')})}},e.on("click",".load-more a",function(t){t.preventDefault(),$(this).addClass("busy"),o()}).on("click","a.time-ago",function(t){t.preventDefault(),location.hash="comment-"+$(this).data("id")}).on("click","a.reload",function(a){a.preventDefault(),t.TotalThread.clear(),location.hash="comments",location.reload()}).on("click","a.reply, button.create-post",function(a){var n,i,o,r,s,c,l,d,u;a.preventDefault(),n=e.data("identifier"),i=e.data("thread"),o=$(this).data("next"),r=$(this).data("id"),s=420,c=520,l=t.screen.width-s/2,d=t.screen.height-c/2,u=[n,i,r,o].join("|"),t.open("/disqus/form/"+encodeURIComponent(u)+"/","_create_post","width="+s+",height="+c+",location=1,status=1,resizable=1,scrollbars=1,left="+l+",top="+d)}),$(t).on("hashchange",function(a,n){var i,o=location.hash.match(/#comment\-(\d+)/);o&&(i=e.find("#post-"+o[1]),i.length&&(e.find(".post-content.target").removeClass("target"),i.find("> .post-content").addClass("target"),n&&$(t).scrollTop(i.offset().top-90)))}),/(iPhone|Android)/.test(navigator.userAgent)&&e.addClass("mobile"),o()};return{id:"simple_thread",check:function(t){t(0)},load:function(){e||(e=!0,n(this.elThread,this.identifier))},init:function(t,a,e){t.html("评论基础模式加载中...

        注:本模式仅支持最基本的评论功能,如需完整体验请针对 disq.us | disquscdn.com | disqus.com 启用代理。"),this.elThread=t,this.url=a,this.identifier=e}}}();t.TotalThread.addService(a)}(this),function(t,a){var e=a.domain;return"{{.Kodo.Domain}}"==e?void (location.href=location.href.replace(/(https?:\/\/[^\/]+)\//i,"//{{.Domain}}")):(function(){var t,a=location.search.queryUrl();"1"==a.clear_ls&&(delete a.clear_ls,t=$.param(a),setTimeout(function(){t?location.search=$.param(a):location.href=location.href.replace(/\?.*$/,"")},300))}(),void $(function(){lazyLoad({selector:"#content",height:100}),function(){var t=$("#content"),a=t.find("img"),e=t.width();a.each(function(){var t=$(this),a=0|t.attr("width"),n=0|t.attr("height"),i=t.prop("complete");a>e&&t.attr("height",Math.ceil(n/a*e)),t.prop("src")&&(i?t.addClass("loaded"):t.on("load",function(){t.addClass("loaded")}))})}(),function(){if("search-post"==CURRENT_PAGE){var t=$("#keyword");t.val()||t.focus()}}(),function(){var a=$(".total_thread");a.length&&setTimeout(function(){/ #comment - \d + $ /.test(location.hash)&&$("#comments").get(0).scrollIntoView();var e=setInterval(function(){var n=a.offset().top,i=$(t).scrollTop();Math.abs(n-i)<1000&&(clearTimeout(e),t.TotalThread.init(a))},150)},250)}()}))}(this,document); {{end}} diff --git a/xml.go b/xml.go index 3a76b3f..7c6c6a9 100644 --- a/xml.go +++ b/xml.go @@ -43,7 +43,7 @@ func doFeed() { params := map[string]interface{}{ "Title": Ei.BTitle, "SubTitle": Ei.SubTitle, - "Domain": setting.Conf.Mode.Domain, + "Domain": setting.Conf.Mode.Domains[0], "FeedrURL": setting.Conf.FeedrURL, "BuildDate": buildDate.Format(time.RFC1123Z), "Artcs": artcs, @@ -69,7 +69,7 @@ func doSitemap() { logd.Error("not found sitemapTpl.") return } - params := map[string]interface{}{"Artcs": Ei.Articles, "Domain": setting.Conf.Mode.Domain} + params := map[string]interface{}{"Artcs": Ei.Articles, "Domain": setting.Conf.Mode.Domains[0]} f, err := os.OpenFile("static/sitemap.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) if err != nil { logd.Error(err) @@ -93,7 +93,7 @@ func doOpensearch() { params := map[string]string{ "BTitle": Ei.BTitle, "SubTitle": Ei.SubTitle, - "Domain": setting.Conf.Mode.Domain, + "Domain": setting.Conf.Mode.Domains[0], } f, err := os.OpenFile("static/opensearch.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) if err != nil { @@ -115,7 +115,7 @@ func doRobots() { return } params := map[string]string{ - "Domain": setting.Conf.Mode.Domain, + "Domain": setting.Conf.Mode.Domains[0], } f, err := os.OpenFile("static/robots.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) if err != nil { @@ -137,7 +137,7 @@ func doCrossdomain() { return } params := map[string]string{ - "Domain": setting.Conf.Mode.Domain, + "Domain": setting.Conf.Mode.Domains[0], } f, err := os.OpenFile("static/crossdomain.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) if err != nil {