types

package
v0.33.0 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2023 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TS_TO_NANO_TS  = NanoTS(1000000000) // 10^9
	MIN_TO_NANO_TS = NanoTS(60) * TS_TO_NANO_TS
	YEAR_NANO_TS   = NanoTS(365*86400) * TS_TO_NANO_TS
)

Variables

View Source
var (
	SERVICE_MODE = DEV // can be DEV, PRODUCTION, INFO, DEBUG

	HTTP_HOST       = "localhost:3457"            // serving http-host
	URL_PREFIX      = "http://localhost:3457/bbs" // advertising url-prefix
	BACKEND_PREFIX  = "http://localhost:3456/v1"  // backend url-prefix
	FRONTEND_PREFIX = "http://localhost:3457"     // frontend-prefix, email
	API_PREFIX      = "/api"                      // api-prefix

	PTTSYSOP = bbs.UUserID("SYSOP")

	BBSNAME  = "新批踢踢" /* 中文站名 */
	BBSENAME = "PTT2" /* 英文站名 */

	// web
	STATIC_DIR           = "static"
	ALLOW_ORIGINS        = []string{}
	ALLOW_ORIGINS_MAP    = map[string]bool{}
	BLOCKED_REFERERS     = []string{}
	BLOCKED_REFERERS_MAP = map[string]bool{}
	IS_ALLOW_CROSSDOMAIN = true

	COOKIE_DOMAIN       = "localhost"
	TOKEN_COOKIE_SUFFIX = "Secure;"

	CSRF_SECRET            = []byte("test_csrf_secret")
	CSRF_TOKEN             = "csrftoken"
	CSRF_TOKEN_TS          = 3600 // csrf-token expires in 1 hour.
	CSRF_TOKEN_TS_DURATION = time.Duration(CSRF_TOKEN_TS) * time.Second

	ACCESS_TOKEN_NAME               = "token" // access-token-name in cookie
	ACCESS_TOKEN_EXPIRE_TS          = 86400
	ACCESS_TOKEN_EXPIRE_TS_DURATION = time.Duration(ACCESS_TOKEN_EXPIRE_TS) * time.Second

	// email
	EMAIL_TOKEN_NAME = "token" // email-token in email-url

	EMAIL_FROM   = "noreply@localhost"
	EMAIL_SERVER = "localhost:25"

	EMAILTOKEN_TITLE            = "更換 " + BBSNAME + " 的聯絡信箱 (Updating " + BBSENAME + " Contact Email)"
	IDEMAILTOKEN_TITLE          = "更換 " + BBSNAME + " 的認證信箱 (Updating " + BBSENAME + " Identity Email)"
	ATTEMPT_REGISTER_USER_TITLE = "註冊 " + BBSNAME + " 的確認碼 (Registering " + BBSENAME + " Confirmation Code)"

	EMAILTOKEN_TEMPLATE                    = "/etc/go-openbbsmiddleware/emailtoken.template"
	IDEMAILTOKEN_TEMPLATE                  = "/etc/go-openbbsmiddleware/idemailtoken.template"
	ATTEMPT_REGISTER_USER_TEMPLATE         = "/etc/go-openbbsmiddleware/attemptregister.template"
	ATTEMPT_REGISTER_USER_TEMPLATE_CONTENT = "__USER__, __TOKEN__"

	EMAILTOKEN_TEMPLATE_CONTENT   = "__EMAIL__, __USER__, __URL__"
	IDEMAILTOKEN_TEMPLATE_CONTENT = "__EMAIL__, __USER__, __URL__"

	EXPIRE_USER_ID_EMAIL_IS_SET_NANO_TS = NanoTS(100 * 86400 * 1000000000) // 100 days
	EXPIRE_USER_EMAIL_IS_SET_NANO_TS    = NanoTS(1 * 86400 * 1000000000)   // 1 day

	EXPIRE_USER_ID_EMAIL_IS_NOT_SET_NANO_TS = NanoTS(300 * 1000000000) // 5 mins
	EXPIRE_USER_EMAIL_IS_NOT_SET_NANO_TS    = NanoTS(300 * 1000000000) // 5 mins

	EXPIRE_ATTEMPT_REGISTER_USER_EMAIL_TS          = 300
	EXPIRE_ATTEMPT_REGISTER_USER_EMAIL_TS_DURATION = time.Duration(EXPIRE_ATTEMPT_REGISTER_USER_EMAIL_TS) * time.Second // 5 mins

	// 2fa
	IS_2FA              = true
	MAX_2FA_TOKEN int64 = 10000

	// big5
	BIG5_TO_UTF8 = "types/uao250-b2u.big5.txt"
	UTF8_TO_BIG5 = "types/uao250-u2b.big5.txt"
	AMBCJK       = "types/ambcjk.big5.txt"

	// time-location
	TIME_LOCATION = "Asia/Taipei"

	// carriage-return
	IS_CARRIAGE_RETURN = true
)
View Source
var (
	DefaultColor = Color{Foreground: COLOR_FOREGROUND_WHITE, Background: COLOR_BACKGROUND_BLACK}
	InvalidColor = Color{Foreground: COLOR_INVALID, Background: COLOR_INVALID}
	ResetColor   = Color{Foreground: COLOR_FOREGROUND_WHITE, Background: COLOR_BACKGROUND_BLACK, IsReset: true}
)
View Source
var (
	TIMEZONE, _ = time.LoadLocation(TIME_LOCATION)
	VERSION     = ""
	GIT_VERSION = ""

	LEN_DATE_YEAR_TIME_STR = len("01/02/2006 15:04:05")
	LEN_DATE_MIN_STR       = len("2006/01/02 15:04")

	COLOR_PREFIX_BYTES  = []byte("\x1b[")
	COLOR_POSTFIX_BYTES = []byte("m")
	COLOR_RESET_BYTES   = []byte("\x1b[m")

	DEFAULT_LEN_COLOR_BYTES = 20 //\x1b[0;1;5;37;40m
)

Functions

func Big5ToUtf8 added in v0.4.0

func Big5ToUtf8(big5 []byte) (utf8 string)

func DateMinStrToTime added in v0.15.0

func DateMinStrToTime(dateTimeStr string) (time.Time, error)

DateMinStrToTime

(YYYY/)MM/DD hh:mm

used in comment.

golang requires year to parse TIMEZONE with CST. https://github.com/golang/go/issues/34101

func DateStrToTime added in v0.4.0

func DateStrToTime(dateStr string) (time.Time, error)

DateStrToTime

(YYYY/)MM/DD

used in old-comment.

golang requires year to parse TIMEZONE with CST. https://github.com/golang/go/issues/34101

func DateYearTimeStrToTime added in v0.4.0

func DateYearTimeStrToTime(dateYearTimeStr string) (time.Time, error)

DateYearTimeStrToTime

MM/DD/YYYY hh:mm:ss

used in edit (編輯)

func InitConfig

func InitConfig() (err error)

func IsReplyID added in v0.22.0

func IsReplyID(commentID CommentID) bool

func NewDateTime added in v0.4.0

func NewDateTime(year int, month time.Month, day int, hr int, minute int, second int) time.Time

func SetIsTest added in v0.4.0

func SetIsTest(pkgName string)

func StringsSplitAsRune added in v0.19.4

func StringsSplitAsRune(str string, sep string) (strs []string)

StringsSplitAsRune

sep: single-rune string

func UnsetIsTest added in v0.4.0

func UnsetIsTest(pkgName string)

func Utf8ToBig5 added in v0.4.0

func Utf8ToBig5(utf8 string) (big5 []byte)

Types

type ClientType added in v0.5.0

type ClientType string
const (
	CLIENT_TYPE_APP ClientType = "app"
	CLIENT_TYPE_WEB ClientType = "web"
)

type Color added in v0.4.0

type Color struct {
	Foreground ColorMap `json:"foreground" bson:"f"`
	Background ColorMap `json:"background" bson:"b"`
	Blink      bool     `json:"blink" bson:"k"`
	Highlight  bool     `json:"highlight" bson:"h"`
	IsReset    bool     `json:"reset" bson:"r"`
}

func (*Color) BytesWithPreColor added in v0.13.0

func (c *Color) BytesWithPreColor(color *Color) (theBytes []byte)

type ColorMap added in v0.4.0

type ColorMap int8
const (
	COLOR_FOREGROUND_BLACK   ColorMap = 30
	COLOR_FOREGROUND_RED     ColorMap = 31
	COLOR_FOREGROUND_GREEN   ColorMap = 32
	COLOR_FOREGROUND_YELLOW  ColorMap = 33
	COLOR_FOREGROUND_BLUE    ColorMap = 34
	COLOR_FOREGROUND_MAGENTA ColorMap = 35
	COLOR_FOREGROUND_CYAN    ColorMap = 36
	COLOR_FOREGROUND_WHITE   ColorMap = 37
	COLOR_BACKGROUND_BLACK   ColorMap = 40
	COLOR_BACKGROUND_RED     ColorMap = 41
	COLOR_BACKGROUND_GREEN   ColorMap = 42
	COLOR_BACKGROUND_YELLOW  ColorMap = 43
	COLOR_BACKGROUND_BLUE    ColorMap = 44
	COLOR_BACKGROUND_MAGENTA ColorMap = 45
	COLOR_BACKGROUND_CYAN    ColorMap = 46
	COLOR_BACKGROUND_WHITE   ColorMap = 47
	COLOR_INVALID            ColorMap = -1
)

func (ColorMap) String added in v0.15.0

func (c ColorMap) String() string

type CommentID added in v0.3.2

type CommentID string

CommentID

XXX currently it's very hard to maintain the comment-id. if we do comment-id only based on MD5:

got duplicated md5-id if the owner posts the same comments
within 1 min.

if we add the inferred CreateTime into the comment-id:

the CreateTime may be changed if the author deletes
some other comments within same minute.

func ToCommentID added in v0.4.0

func ToCommentID(nanoTS NanoTS, md5 string) CommentID

func ToReplyID added in v0.4.0

func ToReplyID(commentID CommentID) CommentID

type ContentID added in v0.24.0

type ContentID string

ContentID

func ToContentID added in v0.24.0

func ToContentID(nanoTS NanoTS, md5 string) ContentID

type ManArticleID added in v0.28.0

type ManArticleID string

ManArticleID

func (ManArticleID) ToCreateTime added in v0.28.0

func (m ManArticleID) ToCreateTime() (createTime NanoTS)

type NanoTS added in v0.2.1

type NanoTS int64

func Base64ToNanoTS added in v0.4.0

func Base64ToNanoTS(b64 string) (NanoTS, error)

func NowNanoTS added in v0.4.0

func NowNanoTS() NanoTS

func Time4ToNanoTS added in v0.4.0

func Time4ToNanoTS(t pttbbstypes.Time4) NanoTS

func TimeToNanoTS added in v0.4.0

func TimeToNanoTS(t time.Time) NanoTS

func (NanoTS) Base64 added in v0.4.0

func (t NanoTS) Base64() string

func (NanoTS) ToNanoTSByMin added in v0.4.0

func (t NanoTS) ToNanoTSByMin() NanoTS

ToNanoTSByMin

nano-ts by minutes. used in comment-time-slot.

func (NanoTS) ToTime added in v0.4.0

func (t NanoTS) ToTime() time.Time

func (NanoTS) ToTime4 added in v0.4.0

func (t NanoTS) ToTime4() pttbbstypes.Time4

func (NanoTS) ToTime8 added in v0.4.0

func (t NanoTS) ToTime8() Time8

type ReadStatus added in v0.19.0

type ReadStatus uint8
const (
	READ_STATUS_UNREAD       ReadStatus = 0
	READ_STATUS_CREATE_TIME  ReadStatus = 1
	READ_STATUS_COMMENT_TIME ReadStatus = 2
	READ_STATUS_MTIME        ReadStatus = 3
)

func (ReadStatus) String added in v0.19.0

func (r ReadStatus) String() string

type Rune added in v0.4.0

type Rune struct {
	Utf8    string `json:"text" bson:"utf8"` // utf8-string
	Big5    []byte `json:"-" bson:"big5"`    // big5-bytes, stored in db for debugging.
	DBCS    []byte `json:"-" bson:"dbcs"`    // dbcs-bytes, stored in db for concat and debugging.
	DBCSStr string `json:"-" bson:"dbcsstr"` // dbcs-str, stored in db for concat and debugging.
	Color0  Color  `json:"color0" bson:"color0"`
	Color1  Color  `json:"color1" bson:"color1"`
}

func (*Rune) Big5ToUtf8 added in v0.4.0

func (r *Rune) Big5ToUtf8()

func (*Rune) Utf8ToBig5 added in v0.4.0

func (r *Rune) Utf8ToBig5()

func (*Rune) Utf8ToDBCS added in v0.27.0

func (r *Rune) Utf8ToDBCS(origColor Color, isAddCR bool)

type ServiceMode

type ServiceMode string
const (
	// in DEV mode, client_secret is always test_client_secret, log set to INFO
	DEV ServiceMode = "DEV"

	// in PRODUCTION mode, log set to WARN
	PRODUCTION ServiceMode = "PRODUCTION"

	// in INFO mode, log set to INFO
	INFO ServiceMode = "INFO"

	// in DEBUG mode, log set to DEBUG
	DEBUG ServiceMode = "DEBUG"

	// in test mode
	TEST ServiceMode = "TEST"
)

type Time8 added in v0.2.1

type Time8 int64

func (Time8) ToNanoTS added in v0.2.1

func (t Time8) ToNanoTS() NanoTS

Jump to

Keyboard shortcuts

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