_api

package
v0.0.0-...-a0f2cbd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2026 License: GPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const MaxFidSeqCount = 100

Variables

View Source
var BackupAllowOptionKeys = []string{"go_bark_key", "go_daily_report", "go_daily_report_status", "go_message_type", "go_ntfy_topic", "go_pushdeer_key", "kd_growth_break_icon_tasks", "kd_growth_ext_tasks", "kd_growth_sign_only", "kd_wenku_tasks_checkin_only", "kd_wenku_tasks_vip_matrix", "kd_wenku_tasks_vip_matrix_id_set", "ver4_rank_check", "ver4_lottery_check", "ver4_ban_open", "kd_renew_manager_alert", "kd_renew_manager_interval", "kd_renew_manager_open"}
View Source
var BackupUsersOptionDangerKeys = []string{"session_expired_at"}
View Source
var BackupUsersOptionKeys = []string{"go_bark_key", "go_daily_report", "go_message_type", "go_ntfy_topic", "go_pushdeer_key"}
View Source
var FaviconBinCache []byte
View Source
var FaviconCacheTime time.Time
View Source
var IndependentFEPath = []string{"/robots.txt", "/favicon.ico", "/icp.jsonp", "/site.jsonp"}
View Source
var NoFavicon = false
View Source
var RequestSingleFlight singleflight.Group
View Source
var SettingsRules = map[string]*_function.OptionRule{
	"sign_mode": {
		Custom: func(val string) error {
			if val == "" {
				return nil
			}
			signMode := strings.SplitSeq(val, ",")
			for v := range signMode {
				if !slices.Contains([]string{"1", "2", "3"}, v) {
					return errors.New("invalid value " + v)
				}
			}
			return nil
		},
		Transform: func(val string) string {
			signMode := strings.Split(val, ",")

			if len(signMode) == 0 {
				signMode = append(signMode, "1")
			}

			return encodeSignMode(signMode)
		},
	},
	"mail_auth":                   {Enum: []string{"0", "1", "2"}},
	"enable_reg":                  {Enum: []string{"0", "1"}},
	"go_export_personal_data":     {Enum: []string{"0", "1"}},
	"go_import_personal_data":     {Enum: []string{"0", "1"}},
	"mail_secure":                 {Enum: []string{"none", "ssl", "tls"}},
	"cron_limit":                  {Min: _function.VPtr(int64(0))},
	"retry_max":                   {Min: _function.VPtr(int64(0))},
	"sign_sleep":                  {Min: _function.VPtr(int64(0))},
	"sign_multith":                {Min: _function.VPtr(int64(0))},
	"mail_port":                   {Min: _function.VPtr(int64(0)), Max: _function.VPtr(int64(65535))},
	"cktime":                      {Min: _function.VPtr(int64(0))},
	"go_re_check_in_max_interval": {Min: _function.VPtr(int64(1))},

	"sign_hour":            {Min: _function.VPtr(int64(-1)), Max: _function.VPtr(int64(23))},
	"go_daily_report_hour": {Min: _function.VPtr(int64(-1)), Max: _function.VPtr(int64(23))},

	"go_forum_sync_policy": {
		Enum: []string{"add_delete", "add_only", ""},
		Transform: func(val string) string {
			if val == "" {
				return "add_only"
			}
			return val
		},
	},

	"go_ntfy_addr":     {IsURL: true},
	"go_bark_addr":     {IsURL: true},
	"go_pushdeer_addr": {IsURL: true},

	"bduss_num": {Min: _function.VPtr(int64(-1)), Max: _function.VPtr(int64(999999999))},

	"go_favicon": {
		Custom: func(s string) error {
			if s == "" {
				return nil
			}

			if !strings.HasPrefix(s, "data:image/x-icon;base64,") {
				return errors.New("invalid favicon")
			}
			s = strings.TrimPrefix(s, "data:image/x-icon;base64,")
			if len(s) == 0 {
				return errors.New("invalid favicon")
			}

			icoBin, err := base64.StdEncoding.DecodeString(s)
			if err != nil {
				return errors.New("invalid favicon")
			}

			if len(icoBin) < 6 {
				return errors.New("invalid favicon")
			}

			reserved := binary.LittleEndian.Uint16(icoBin[0:2])
			typ := binary.LittleEndian.Uint16(icoBin[2:4])
			count := binary.LittleEndian.Uint16(icoBin[4:6])

			if reserved == 0 &&
				typ == 1 &&
				count > 0 {
				return nil
			}

			return errors.New("invalid favicon")
		},
		Transform: func(s string) string {
			if s == "" {
				FaviconBinCache = []byte{}
			} else {
				FaviconBinCache, _ = base64.StdEncoding.DecodeString(strings.TrimPrefix(s, "data:image/x-icon;base64,"))
				FaviconCacheTime = time.Now()
			}
			return s
		},
	},
}

Functions

func AddTieba

func AddTieba(c echo.Context) error

func AddTiebaAccount

func AddTiebaAccount(c echo.Context) error

func AdminCheck

func AdminCheck(next echo.HandlerFunc) echo.HandlerFunc

func AdminDeleteAccount

func AdminDeleteAccount(c echo.Context) error

func AdminDeleteAccountToken

func AdminDeleteAccountToken(c echo.Context) error

func AdminDeleteTiebaAccountList

func AdminDeleteTiebaAccountList(c echo.Context) error

func AdminModifyAccountInfo

func AdminModifyAccountInfo(c echo.Context) error

func AdminResetAccountPlugin

func AdminResetAccountPlugin(c echo.Context) error

func AdminResetPassword

func AdminResetPassword(c echo.Context) error

func AdminResetTiebaList

func AdminResetTiebaList(c echo.Context) error

func Api

func Api(address string)

func AuthCheck

func AuthCheck(next echo.HandlerFunc) echo.HandlerFunc

func CheckIsManager

func CheckIsManager(c echo.Context) error

func CheckTiebaAccount

func CheckTiebaAccount(c echo.Context) error

func CleanTiebaList

func CleanTiebaList(c echo.Context) error

func DeleteAccount

func DeleteAccount(c echo.Context) error

func DeleteSessionExpiredAt

func DeleteSessionExpiredAt(uid string) (bool, error)

func ExportAccountData

func ExportAccountData(c echo.Context) error

func ForumListObj2Arr

func ForumListObj2Arr(tiebaList []*model.TcTieba) [][9]any

func GetAccountInfo

func GetAccountInfo(c echo.Context) error

func GetAccountsList

func GetAccountsList(c echo.Context) error

func GetAdminSettings

func GetAdminSettings(c echo.Context) error

func GetBDUSS

func GetBDUSS(c echo.Context) error

func GetBodyMap

func GetBodyMap(c echo.Context) (map[string][]string, error)

func GetFidByFname

func GetFidByFname(c echo.Context) error

func GetForumStatus

func GetForumStatus(c echo.Context) error

func GetLoginPageConfig

func GetLoginPageConfig(c echo.Context) error

func GetLoginQRCode

func GetLoginQRCode(c echo.Context) error

func GetNotifications

func GetNotifications(c echo.Context) error

func GetPluginSettings

func GetPluginSettings(c echo.Context) error

func GetPluginsList

func GetPluginsList(c echo.Context) error

func GetServerStatus

func GetServerStatus(c echo.Context) error

func GetSessionExpiredAt

func GetSessionExpiredAt(uid string) int64

func GetSettings

func GetSettings(c echo.Context) error

func GetTiebaAccountItem

func GetTiebaAccountItem(c echo.Context) error

func GetTiebaAccountList

func GetTiebaAccountList(c echo.Context) error

func GetTiebaList

func GetTiebaList(c echo.Context) error

func GetUserByTiebaUID

func GetUserByTiebaUID(c echo.Context) error

func GetUserByUsernameOrPortrait

func GetUserByUsernameOrPortrait(c echo.Context) error

func HmacSessionToken

func HmacSessionToken(uid, password, expiredAt string) []byte

func HookAddCronTime

func HookAddCronTime(c echo.Context) error

func IgnoreTieba

func IgnoreTieba(c echo.Context) error

func ImportAccountData

func ImportAccountData(c echo.Context) error

func IsArrayMode

func IsArrayMode(c echo.Context) bool

func Login

func Login(c echo.Context) error

func Logout

func Logout(c echo.Context) error

func ParsePath

func ParsePath(next echo.HandlerFunc) echo.HandlerFunc

func PluginPathPrecheck

func PluginPathPrecheck(next echo.HandlerFunc) echo.HandlerFunc

func PluginSwitch

func PluginSwitch(c echo.Context) error

func PluginUninstall

func PluginUninstall(c echo.Context) error

func RateLimit

func RateLimit(_rate int, expiresIn time.Duration) echo.MiddlewareFunc

func RefreshTiebaList

func RefreshTiebaList(c echo.Context) error

func RemoveTieba

func RemoveTieba(c echo.Context) error

func RemoveTiebaAccount

func RemoveTiebaAccount(c echo.Context) error

func ResetAccountPlugin

func ResetAccountPlugin(c echo.Context) error

func ResetAdminSettings

func ResetAdminSettings(c echo.Context) error

func ResetMessageBuilder

func ResetMessageBuilder(uid int32, forceMode bool) *_function.VerifyCodeStruct

func ResetPassword

func ResetPassword(c echo.Context) error

func ResetTieba

func ResetTieba(c echo.Context) error

func SendResetMessage

func SendResetMessage(uid int32, pushType string, forceMode bool) (string, error)

func SendTestMessage

func SendTestMessage(c echo.Context) error

func SetHeaders

func SetHeaders(next echo.HandlerFunc) echo.HandlerFunc

func ShutdownSystem

func ShutdownSystem(c echo.Context) error

func Signup

func Signup(c echo.Context) error

func UpdateAccountInfo

func UpdateAccountInfo(c echo.Context) error

func UpdateAdminSettings

func UpdateAdminSettings(c echo.Context) error

func UpdatePassword

func UpdatePassword(c echo.Context) error

func UpdatePluginSettings

func UpdatePluginSettings(c echo.Context) error

func UpdateSessionExpiredAt

func UpdateSessionExpiredAt(uid string, t int64) (int64, error)

func UpdateSettings

func UpdateSettings(c echo.Context) error

TODO verify password

func UpgradeSystem

func UpgradeSystem(c echo.Context) error

func UpgradeSystem2

func UpgradeSystem2(c echo.Context) error

Types

type FESettings

type FESettings struct {
	SystemName        string `json:"system_name"`
	SystemKeywords    string `json:"system_keywords"`
	SystemDescription string `json:"system_description"`
	Footer            string `json:"footer"`
	ICP               string `json:"icp"`
}

type ICPStruct

type ICPStruct struct {
	ICP string `json:"icp"`
}

type ModifyForumIDList

type ModifyForumIDList struct {
	InvalidFid []string `json:"invalid_fid"`
	ValidFid   []int64  `json:"valid_fid"`
}

func VerifyFidList

func VerifyFidList(fid string) ModifyForumIDList

type PluginListContent

type PluginListContent struct {
	Name   string `json:"name"`
	Ver    string `json:"ver"`
	Status bool   `json:"status"`

	PluginNameCN      string `json:"plugin_name_cn"`
	PluginNameCNShort string `json:"plugin_name_cn_short"`
	PluginNameFE      string `json:"plugin_name_fe"`

	SettingOptions []PluginListSettingOption `json:"setting_options,omitempty"`
}

type PluginListSettingOption

type PluginListSettingOption struct {
	OptionName   string `json:"option_name"`
	OptionNameCN string `json:"option_name_cn"`
}

type ResetAccountPluginParams

type ResetAccountPluginParams struct {
	PluginName string `param:"plugin_name"`
	Pid        uint64 `param:"pid"`
	Tid        uint64 `param:"tid"`
}

type SiteAccountsResponse

type SiteAccountsResponse struct {
	ID    int32  `json:"id"`
	Name  string `json:"name"`
	Email string `json:"email"`
	Role  string `json:"role"`
	T     string `json:"t"`

	BaiduAccountCount int `json:"baidu_account_count"`
	ForumCount        int `json:"forum_count"`

	// checkin status
	CheckinSuccess int `json:"checkin_success"`
	CheckinFailed  int `json:"checkin_failed"`
	CheckinWaiting int `json:"checkin_waiting"`
	CheckinIgnore  int `json:"checkin_ignore"`
}

type TcBackupExportStructTcBaiduid

type TcBackupExportStructTcBaiduid struct {
	*model.TcBaiduid
	Bduss  string `gorm:"column:bduss;type:text;not null" json:"bduss"`
	Stoken string `gorm:"column:stoken;type:text;not null" json:"stoken"`
}

type TcBackupExportStructTcTieba

type TcBackupExportStructTcTieba struct {
	*model.TcTieba
	No bool `json:"no"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL