site.go 3.5 KB
Newer Older
1 2 3 4
package controllers

import (
	model "github.com/HFO4/cloudreve/models"
H
HFO4 已提交
5
	"github.com/HFO4/cloudreve/pkg/conf"
6
	"github.com/HFO4/cloudreve/pkg/serializer"
H
HFO4 已提交
7
	"github.com/HFO4/cloudreve/pkg/util"
8
	"github.com/gin-gonic/gin"
H
HFO4 已提交
9
	"github.com/mojocn/base64Captcha"
10 11 12 13
)

// SiteConfig 获取站点全局配置
func SiteConfig(c *gin.Context) {
H
HFO4 已提交
14
	siteConfig := model.GetSettingByNames(
15 16 17 18 19 20 21 22 23
		"siteName",
		"login_captcha",
		"qq_login",
		"reg_captcha",
		"email_active",
		"forget_captcha",
		"email_active",
		"themes",
		"defaultTheme",
H
HFO4 已提交
24 25
		"score_enabled",
		"share_score_rate",
26 27
		"home_view_method",
		"share_view_method",
H
HFO4 已提交
28
		"authn_enabled",
H
HFO4 已提交
29
	)
30

H
HFO4 已提交
31
	// 如果已登录,则同时返回用户信息和标签
32 33 34 35 36 37 38
	user, _ := c.Get("user")
	if user, ok := user.(*model.User); ok {
		c.JSON(200, serializer.BuildSiteConfig(siteConfig, user))
		return
	}

	c.JSON(200, serializer.BuildSiteConfig(siteConfig, nil))
39
}
H
HFO4 已提交
40 41 42 43 44

// Ping 状态检查页面
func Ping(c *gin.Context) {
	c.JSON(200, serializer.Response{
		Code: 0,
H
HFO4 已提交
45
		Data: conf.BackendVersion,
H
HFO4 已提交
46 47 48 49 50
	})
}

// Captcha 获取验证码
func Captcha(c *gin.Context) {
51 52 53 54 55 56 57
	options := model.GetSettingByNames(
		"captcha_IsShowHollowLine",
		"captcha_IsShowNoiseDot",
		"captcha_IsShowNoiseText",
		"captcha_IsShowSlimeLine",
		"captcha_IsShowSineLine",
	)
H
HFO4 已提交
58 59
	// 验证码配置
	var configD = base64Captcha.ConfigCharacter{
60 61
		Height: model.GetIntSetting("captcha_height", 60),
		Width:  model.GetIntSetting("captcha_width", 240),
H
HFO4 已提交
62
		//const CaptchaModeNumber:数字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算术,CaptchaModeNumberAlphabet:数字字母混合.
63 64 65 66 67 68 69 70 71
		Mode:               model.GetIntSetting("captcha_mode", 3),
		ComplexOfNoiseText: model.GetIntSetting("captcha_ComplexOfNoiseText", 0),
		ComplexOfNoiseDot:  model.GetIntSetting("captcha_ComplexOfNoiseDot", 0),
		IsShowHollowLine:   model.IsTrueVal(options["captcha_IsShowHollowLine"]),
		IsShowNoiseDot:     model.IsTrueVal(options["captcha_IsShowNoiseDot"]),
		IsShowNoiseText:    model.IsTrueVal(options["captcha_IsShowNoiseText"]),
		IsShowSlimeLine:    model.IsTrueVal(options["captcha_IsShowSlimeLine"]),
		IsShowSineLine:     model.IsTrueVal(options["captcha_IsShowSineLine"]),
		CaptchaLen:         model.GetIntSetting("captcha_CaptchaLen", 6),
H
HFO4 已提交
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
	}

	// 生成验证码
	idKeyD, capD := base64Captcha.GenerateCaptcha("", configD)
	// 将验证码UID存入Session以便后续验证
	util.SetSession(c, map[string]interface{}{
		"captchaID": idKeyD,
	})

	// 将验证码图像编码为Base64
	base64stringD := base64Captcha.CaptchaWriteToBase64Encoding(capD)

	c.JSON(200, serializer.Response{
		Code: 0,
		Data: base64stringD,
	})
}
H
HFO4 已提交
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

// Manifest 获取manifest.json
func Manifest(c *gin.Context) {
	options := model.GetSettingByNames(
		"siteName",
		"siteTitle",
		"pwa_small_icon",
		"pwa_medium_icon",
		"pwa_large_icon",
		"pwa_display",
		"pwa_theme_color",
		"pwa_background_color",
	)

	c.JSON(200, map[string]interface{}{
		"short_name": options["siteName"],
		"name":       options["siteTitle"],
		"icons": []map[string]string{
			{
				"src":   options["pwa_small_icon"],
				"sizes": "64x64 32x32 24x24 16x16",
				"type":  "image/x-icon",
			},
			{
				"src":   options["pwa_medium_icon"],
				"type":  "image/png",
				"sizes": "192x192",
			},
			{
				"src":   options["pwa_large_icon"],
				"type":  "image/png",
				"sizes": "512x512",
			},
		},
H
HFO4 已提交
123
		"start_url":        ".",
H
HFO4 已提交
124 125 126 127 128
		"display":          options["pwa_display"],
		"theme_color":      options["pwa_theme_color"],
		"background_color": options["pwa_background_color"],
	})
}