Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 89ffab8

Browse files
committed
Merge branch 'master' into app
2 parents 25f028c + 6469368 commit 89ffab8

37 files changed

+276
-267
lines changed

config/env.sample.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ activate_sign_salt = Gj&NaEqio1Tv2&4&3$
4848
access_key = xxxxxx
4949
secret_key = xxxxxxx
5050
bucket_name = xxxx
51+
; CND HTTP 的域名
52+
http_domain = xxx
53+
; CND HTTPS 的域名
54+
https_domain = xxx
5155

5256
; 抓取程序
5357
[crawl]

src/global/app.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ import (
3232
"github.com/polaris1119/config"
3333
)
3434

35+
const (
36+
DefaultCDNHttp = "http://studygolang.qiniudn.com/"
37+
DefaultCDNHttps = "https://dn-studygolang.qbox.me/"
38+
)
39+
3540
var Build string
3641

3742
type app struct {
@@ -48,6 +53,10 @@ type app struct {
4853

4954
Host string
5055
Port string
56+
57+
// CDN 资源域名
58+
CDNHttp string
59+
CDNHttps string
5160
}
5261

5362
var App = app{}
@@ -74,6 +83,9 @@ func init() {
7483
App.Date = fileInfo.ModTime()
7584

7685
App.Env = config.ConfigFile.MustValue("global", "env")
86+
87+
App.CDNHttp = config.ConfigFile.MustValue("qiniu", "http_domain", DefaultCDNHttp)
88+
App.CDNHttps = config.ConfigFile.MustValue("qiniu", "https_domain", DefaultCDNHttps)
7789
}
7890

7991
func (this *app) SetUptime() {

src/http/controller/comment.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ func (self CommentController) RegisterRoute(g *echo.Group) {
2929
// AtUsers 评论或回复 @ 某人 suggest
3030
func (CommentController) AtUsers(ctx echo.Context) error {
3131
term := ctx.QueryParam("term")
32-
users := logic.DefaultUser.GetUserMentions(term, 10)
32+
isHttps := goutils.MustBool(ctx.Request().Header().Get("X-Https"), false)
33+
users := logic.DefaultUser.GetUserMentions(term, 10, isHttps)
3334
return ctx.JSON(http.StatusOK, users)
3435
}
3536

src/http/controller/image.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package controller
88

99
import (
10+
"global"
1011
"io/ioutil"
1112
"logic"
1213
"os"
@@ -15,6 +16,7 @@ import (
1516
. "http"
1617

1718
"github.com/labstack/echo"
19+
"github.com/polaris1119/goutils"
1820
"github.com/polaris1119/times"
1921
)
2022

@@ -76,5 +78,10 @@ func (ImageController) Transfer(ctx echo.Context) error {
7678
return fail(ctx, 2, "文件上传失败!")
7779
}
7880

79-
return success(ctx, map[string]interface{}{"uri": logic.ImageDomain + path})
81+
cdnDomain := global.App.CDNHttp
82+
if goutils.MustBool(ctx.Request().Header().Get("X-Https")) {
83+
cdnDomain = global.App.CDNHttps
84+
}
85+
86+
return success(ctx, map[string]interface{}{"uri": cdnDomain + path})
8087
}

src/http/http.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,15 @@ func executeTpl(ctx echo.Context, tpl *template.Template, data map[string]interf
212212
data["wshost"] = global.App.Host + ":" + global.App.Port
213213
}
214214
global.App.SetUptime()
215+
216+
isHttps := goutils.MustBool(ctx.Request().Header().Get("X-Https"))
217+
cdnDomain := global.App.CDNHttp
218+
if isHttps {
219+
cdnDomain = global.App.CDNHttps
220+
}
215221
data["app"] = global.App
222+
data["is_https"] = goutils.MustBool(ctx.Request().Header().Get("X-Https"))
223+
data["cdn_domain"] = cdnDomain
216224

217225
data["online_users"] = map[string]int{"online": logic.Book.Len(), "maxonline": logic.MaxOnlineNum()}
218226

src/logic/project.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ func (self ProjectLogic) Publish(ctx context.Context, user *model.Me, form url.V
3434
id := form.Get("id")
3535
isModify := id != ""
3636

37-
if !isModify && self.UriExists(ctx, form.Get("uri")) {
38-
err = errors.New("uri存在")
39-
return
40-
}
41-
4237
project := &model.OpenProject{}
4338

4439
if isModify {
@@ -66,9 +61,16 @@ func (self ProjectLogic) Publish(ctx context.Context, user *model.Me, form url.V
6661

6762
project.Username = user.Username
6863
}
69-
64+
if project.Uri == "" {
65+
project.Uri = strings.Replace(project.Name, " ", "-", -1)
66+
}
7067
project.Uri = strings.ToLower(project.Uri)
7168

69+
if !isModify && self.UriExists(ctx, form.Get("uri")) {
70+
err = errors.New("项目已存在")
71+
return
72+
}
73+
7274
github := "github.com"
7375
pos := strings.Index(project.Src, github)
7476
if pos != -1 {
@@ -234,24 +236,24 @@ func (self ProjectLogic) ParseProjectList(pUrl string) error {
234236
}
235237

236238
// 最后面的先入库处理
237-
projectsSelection := doc.Find(".news-list .box")
239+
projectsSelection := doc.Find(".news-list").Children()
238240

239241
for i := projectsSelection.Length() - 1; i >= 0; i-- {
240242

241243
contentSelection := goquery.NewDocumentFromNode(projectsSelection.Get(i)).Selection
242-
projectUrl, ok := contentSelection.Find(".box-aw a").Attr("href")
244+
projectUrl, ok := contentSelection.Find(".box-aw a").First().Attr("href")
243245

244246
if !ok || projectUrl == "" {
245247
logger.Errorln("project url is empty")
246248
continue
247249
}
248-
go func() {
250+
go func(projectUrl string) {
249251
err := self.ParseOneProject(projectUrl)
250252

251253
if err != nil {
252254
logger.Errorln(err)
253255
}
254-
}()
256+
}(projectUrl)
255257
}
256258

257259
return err

src/logic/uploader.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import (
3838
)
3939

4040
const (
41-
ImageDomain = "http://studygolang.qiniudn.com/"
4241
MaxImageSize = 5 << 20 // 5M
4342
)
4443

src/logic/user.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ func (UserLogic) FindNewUsers(ctx context.Context, limit int, offset ...int) []*
540540
}
541541

542542
// GetUserMentions 获取 @ 的 suggest 列表
543-
func (UserLogic) GetUserMentions(term string, limit int) []map[string]string {
543+
func (UserLogic) GetUserMentions(term string, limit int, isHttps bool) []map[string]string {
544544
userActives := make([]*model.UserActive, 0)
545545
err := MasterDB.Where("username like ?", "%"+term+"%").Desc("mtime").Limit(limit).Find(&userActives)
546546
if err != nil {
@@ -552,7 +552,7 @@ func (UserLogic) GetUserMentions(term string, limit int) []map[string]string {
552552
for i, userActive := range userActives {
553553
user := make(map[string]string, 2)
554554
user["username"] = userActive.Username
555-
user["avatar"] = util.Gravatar(userActive.Avatar, userActive.Email, 20)
555+
user["avatar"] = util.Gravatar(userActive.Avatar, userActive.Email, 20, isHttps)
556556
users[i] = user
557557
}
558558

src/util/tool.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,30 @@ package util
88

99
import (
1010
"fmt"
11+
"global"
1112
"regexp"
1213
"strings"
1314

1415
"github.com/polaris1119/goutils"
1516
)
1617

17-
const qiniuDomain = "http://studygolang.qiniudn.com"
18-
1918
// 获取头像
20-
func Gravatar(avatar string, emailI interface{}, size uint16) string {
19+
func Gravatar(avatar string, emailI interface{}, size uint16, isHttps bool) string {
20+
cdnDomain := global.App.CDNHttp
21+
gravatarDomain := "http://gravatar.com"
22+
if isHttps {
23+
cdnDomain = global.App.CDNHttps
24+
gravatarDomain = "https://secure.gravatar.com"
25+
}
2126
if avatar != "" {
22-
return fmt.Sprintf("%s/avatar/%s?imageView2/2/w/%d", qiniuDomain, avatar, size)
27+
return fmt.Sprintf("%savatar/%s?imageView2/2/w/%d", cdnDomain, avatar, size)
2328
}
2429

2530
email, ok := emailI.(string)
2631
if !ok {
27-
return fmt.Sprintf("%s/avatar/gopher28.png?imageView2/2/w/%d", qiniuDomain, size)
32+
return fmt.Sprintf("%savatar/gopher28.png?imageView2/2/w/%d", cdnDomain, size)
2833
}
29-
return fmt.Sprintf("http://gravatar.duoshuo.com/avatar/%s?s=%d", goutils.Md5(email), size)
34+
return fmt.Sprintf("%s/avatar/%s?s=%d", gravatarDomain, goutils.Md5(email), size)
3035
}
3136

3237
// 内嵌 Wide iframe 版

static/css/fonts_googleapi.css

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,70 +3,70 @@
33
font-family: 'Source Sans Pro';
44
font-style: normal;
55
font-weight: 300;
6-
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGD_j0nMiB9fPhg_k1wdK2h0.woff2) format('woff2');
6+
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGD_j0nMiB9fPhg_k1wdK2h0.woff2) format('woff2');
77
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
88
}
99
/* latin-ext */
1010
@font-face {
1111
font-family: 'Source Sans Pro';
1212
font-style: normal;
1313
font-weight: 300;
14-
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGDRVvBvQIc1z78c__uoBcyI.woff2) format('woff2');
14+
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGDRVvBvQIc1z78c__uoBcyI.woff2) format('woff2');
1515
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
1616
}
1717
/* latin */
1818
@font-face {
1919
font-family: 'Source Sans Pro';
2020
font-style: normal;
2121
font-weight: 300;
22-
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGHPU7CIF47hG64WdfUow7GU.woff2) format('woff2');
22+
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGHPU7CIF47hG64WdfUow7GU.woff2) format('woff2');
2323
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
2424
}
2525
/* vietnamese */
2626
@font-face {
2727
font-family: 'Source Sans Pro';
2828
font-style: normal;
2929
font-weight: 400;
30-
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNOAHFN6BivSraYkjhveRHY.woff2) format('woff2');
30+
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNOAHFN6BivSraYkjhveRHY.woff2) format('woff2');
3131
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
3232
}
3333
/* latin-ext */
3434
@font-face {
3535
font-family: 'Source Sans Pro';
3636
font-style: normal;
3737
font-weight: 400;
38-
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlC2Q8seG17bfDXYR_jUsrzg.woff2) format('woff2');
38+
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlC2Q8seG17bfDXYR_jUsrzg.woff2) format('woff2');
3939
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
4040
}
4141
/* latin */
4242
@font-face {
4343
font-family: 'Source Sans Pro';
4444
font-style: normal;
4545
font-weight: 400;
46-
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlDKRFmJUU_JfdI4amS9F_UY.woff2) format('woff2');
46+
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlDKRFmJUU_JfdI4amS9F_UY.woff2) format('woff2');
4747
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
4848
}
4949
/* vietnamese */
5050
@font-face {
5151
font-family: 'Source Sans Pro';
5252
font-style: normal;
5353
font-weight: 700;
54-
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGDovqjS_dXPZszO_XltPdNg.woff2) format('woff2');
54+
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGDovqjS_dXPZszO_XltPdNg.woff2) format('woff2');
5555
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
5656
}
5757
/* latin-ext */
5858
@font-face {
5959
font-family: 'Source Sans Pro';
6060
font-style: normal;
6161
font-weight: 700;
62-
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFxe-GPfKKFmiXaJ_Q0GFr8.woff2) format('woff2');
62+
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFxe-GPfKKFmiXaJ_Q0GFr8.woff2) format('woff2');
6363
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
6464
}
6565
/* latin */
6666
@font-face {
6767
font-family: 'Source Sans Pro';
6868
font-style: normal;
6969
font-weight: 700;
70-
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKBBe7f1mpvECReg0afxak4.woff2) format('woff2');
70+
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKBBe7f1mpvECReg0afxak4.woff2) format('woff2');
7171
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
7272
}

static/css/outer/hight-light.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/js/comment.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,13 @@
7373

7474
var avatar = user.avatar;
7575
if (avatar == "") {
76-
avatar = 'http://gravatar.duoshuo.com/avatar/'+md5(user.email)+"?s=48";
76+
if (isHttps) {
77+
avatar = 'http://gravatar.com/avatar/'+md5(user.email)+"?s=48";
78+
} else {
79+
avatar = 'https://secure.gravatar.com/avatar/'+md5(user.email)+"?s=48";
80+
}
7781
} else {
78-
avatar = 'http://studygolang.qiniudn.com/avatar/'+avatar+'?imageView2/2/w/40';
82+
avatar = cdnDomain+'avatar/'+avatar+'?imageView2/2/w/40';
7983
}
8084

8185
var cmtTime = SG.timeago(comments[i].ctime);

static/js/sidebar.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,13 @@ $(function(){
148148

149149
var avatar = user.avatar;
150150
if (avatar == "") {
151-
avatar = 'http://gravatar.duoshuo.com/avatar/'+md5(user.email)+"?s=40";
151+
if (isHttps) {
152+
avatar = 'http://gravatar.com/avatar/'+md5(user.email)+"?s=48";
153+
} else {
154+
avatar = 'https://secure.gravatar.com/avatar/'+md5(user.email)+"?s=48";
155+
}
152156
} else {
153-
avatar = 'http://studygolang.qiniudn.com/avatar/'+avatar+'?imageView2/2/w/40';
157+
avatar = cdnDomain+'avatar/'+avatar+'?imageView2/2/w/40';
154158
}
155159

156160
var cmtTime = SG.timeago(comments[i].ctime);
@@ -200,9 +204,13 @@ $(function(){
200204
for(var i in data) {
201205
var avatar = data[i].avatar;
202206
if (avatar == "") {
203-
avatar = 'http://gravatar.duoshuo.com/avatar/'+md5(data[i].email)+"?s=40";
207+
if (isHttps) {
208+
avatar = 'http://gravatar.com/avatar/'+md5(user.email)+"?s=48";
209+
} else {
210+
avatar = 'https://secure.gravatar.com/avatar/'+md5(user.email)+"?s=48";
211+
}
204212
} else {
205-
avatar = 'http://studygolang.qiniudn.com/avatar/'+avatar+'?imageView2/2/w/40';
213+
avatar = cdnDomain+'avatar/'+avatar+'?imageView2/2/w/40';
206214
}
207215

208216
content += '<li class="pull-left">'+

template/404.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ <h2>抱歉!页面无法访问……</h2>
1919
</div>
2020
</div>
2121
<div class="col-md-6">
22-
<iframe scrolling="no" frameborder="0" src="http://yibo.iyiyun.com/Home/Distribute/ad404/key/17812" width="550" height="340" style="display:block;"></iframe>
22+
<iframe scrolling="no" frameborder="0" src="//yibo.iyiyun.com/Home/Distribute/ad404/key/17812" width="550" height="340" style="display:block;"></iframe>
2323
</div>
2424
</div>
2525
{{end}}

0 commit comments

Comments
 (0)