Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
2f20e64e20
5 changed files with 131 additions and 127 deletions
|
@ -7,7 +7,7 @@ require (
|
|||
github.com/88250/css v0.1.2
|
||||
github.com/88250/flock v0.8.2
|
||||
github.com/88250/gulu v1.2.3-0.20220916075322-eb117059d70a
|
||||
github.com/88250/lute v1.7.5-0.20220927074749-900f0dcf1c81
|
||||
github.com/88250/lute v1.7.5-0.20220928025238-bda91cbd4072
|
||||
github.com/88250/pdfcpu v0.3.13
|
||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
|
||||
github.com/ConradIrwin/font v0.0.0-20210318200717-ce8d41cc0732
|
||||
|
@ -28,7 +28,7 @@ require (
|
|||
github.com/gin-contrib/gzip v0.0.6
|
||||
github.com/gin-contrib/sessions v0.0.5
|
||||
github.com/gin-gonic/gin v1.8.1
|
||||
github.com/imroc/req/v3 v3.23.0
|
||||
github.com/imroc/req/v3 v3.24.0
|
||||
github.com/jinzhu/copier v0.3.5
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible
|
||||
github.com/mitchellh/go-ps v1.0.0
|
||||
|
@ -42,7 +42,7 @@ require (
|
|||
github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75
|
||||
github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da
|
||||
github.com/siyuan-note/filelock v0.0.0-20220720144616-011221f7e128
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220906125021-bb9ddffaea0e
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220928030253-4f6a778563e9
|
||||
github.com/siyuan-note/logging v0.0.0-20220717040626-f796b05ee520
|
||||
github.com/steambap/captcha v1.4.1
|
||||
github.com/vmihailenco/msgpack/v5 v5.3.5
|
||||
|
@ -111,12 +111,12 @@ require (
|
|||
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
|
||||
go.uber.org/atomic v1.10.0 // indirect
|
||||
go.uber.org/multierr v1.8.0 // indirect
|
||||
golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7 // indirect
|
||||
golang.org/x/exp v0.0.0-20220921164117-439092de6870 // indirect
|
||||
golang.org/x/crypto v0.0.0-20220926161630-eccd6366d1be // indirect
|
||||
golang.org/x/exp v0.0.0-20220927162542-c76eaa363f9d // indirect
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
||||
golang.org/x/net v0.0.0-20220923203811-8be639271d50 // indirect
|
||||
golang.org/x/net v0.0.0-20220927171203-f486391704dc // indirect
|
||||
golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 // indirect
|
||||
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect
|
||||
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 // indirect
|
||||
golang.org/x/tools v0.1.12 // indirect
|
||||
google.golang.org/protobuf v1.28.1 // indirect
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
||||
|
|
|
@ -19,10 +19,8 @@ github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5 h1:8HdZozCsXS
|
|||
github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/88250/gulu v1.2.3-0.20220916075322-eb117059d70a h1:qQdnk8clbgA+MXtf5bXOTOby32iQYjqMOn6oBIMV/Tk=
|
||||
github.com/88250/gulu v1.2.3-0.20220916075322-eb117059d70a/go.mod h1:I1qBzsksFL2ciGSuqDE7R3XW4BUMrfDgOvSXEk7FsAI=
|
||||
github.com/88250/lute v1.7.5-0.20220926155035-518f58c05151 h1:EssPM5yyEXae3Ilak7cV2yYWcISv2YtzfDNGFhwpV64=
|
||||
github.com/88250/lute v1.7.5-0.20220926155035-518f58c05151/go.mod h1:cEoBGi0zArPqAsp0MdG9SKinvH/xxZZWXU7sRx8vHSA=
|
||||
github.com/88250/lute v1.7.5-0.20220927074749-900f0dcf1c81 h1:NIED063lHDzC+BJuRWKuNlw/3PAB4MDxWOGt0OHv1rs=
|
||||
github.com/88250/lute v1.7.5-0.20220927074749-900f0dcf1c81/go.mod h1:cEoBGi0zArPqAsp0MdG9SKinvH/xxZZWXU7sRx8vHSA=
|
||||
github.com/88250/lute v1.7.5-0.20220928025238-bda91cbd4072 h1:0d7YXGtw2ybeGs6oClIFiKvTqySfJCu5SUdJJWil6MA=
|
||||
github.com/88250/lute v1.7.5-0.20220928025238-bda91cbd4072/go.mod h1:cEoBGi0zArPqAsp0MdG9SKinvH/xxZZWXU7sRx8vHSA=
|
||||
github.com/88250/pdfcpu v0.3.13 h1:touMWMZkCGalMIbEg9bxYp7rETM+zwb9hXjwhqi4I7Q=
|
||||
github.com/88250/pdfcpu v0.3.13/go.mod h1:S5YT38L/GCjVjmB4PB84PymA1qfopjEhfhTNQilLpv4=
|
||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=
|
||||
|
@ -198,8 +196,8 @@ github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq
|
|||
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
|
||||
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
|
||||
github.com/imroc/req/v3 v3.23.0 h1:H/keAKrf8+JDDFGfKd1GZfSUzEZbPQNM8gBiHxo86SE=
|
||||
github.com/imroc/req/v3 v3.23.0/go.mod h1:EluRnkfh8A39BmrCARYhcUrfGyR8qPw+O0BZyTy4j9k=
|
||||
github.com/imroc/req/v3 v3.24.0 h1:I3f6cn14mYh2BSklfDMEduOf6f/2I59Yv13v7BmsGBw=
|
||||
github.com/imroc/req/v3 v3.24.0/go.mod h1:EluRnkfh8A39BmrCARYhcUrfGyR8qPw+O0BZyTy4j9k=
|
||||
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
|
||||
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
|
||||
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
||||
|
@ -358,8 +356,8 @@ github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da h1:/jNhl7LC+9
|
|||
github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da/go.mod h1:Sqo4FYX5lAXu7gWkbEdJF0e6P57tNNVV4WDKYDctokI=
|
||||
github.com/siyuan-note/filelock v0.0.0-20220720144616-011221f7e128 h1:p90RgCJ0BFRY60wOFQ+XHAgI6ey3sUWbqHcQ7T3KWfQ=
|
||||
github.com/siyuan-note/filelock v0.0.0-20220720144616-011221f7e128/go.mod h1:NeC98UUl+U62YScI0qWIjzrK+L4Z6WsBL5bueShjBKs=
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220906125021-bb9ddffaea0e h1:iSjaFQk9v8FEMaKMiS9yg8eqxz4jtKC3oKEd6NLN1aA=
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220906125021-bb9ddffaea0e/go.mod h1:3jflmXEfJKvq+80WvLTLVUVdYfVh26vO05wddmUyXaM=
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220928030253-4f6a778563e9 h1:3fa7E/3isQ+22RQfHctL65sUOFbBspYBq2wiHZPtyCY=
|
||||
github.com/siyuan-note/httpclient v0.0.0-20220928030253-4f6a778563e9/go.mod h1:fa1KsHyCuOedk1CKXDi7Y6USwwU5oNo1Zd4jDo3BpDM=
|
||||
github.com/siyuan-note/logging v0.0.0-20220717040626-f796b05ee520 h1:kscYjMt7jXYdd7Qj2OSUoBnoHc5B0U/E6OSx86VRLr4=
|
||||
github.com/siyuan-note/logging v0.0.0-20220717040626-f796b05ee520/go.mod h1:t1zRGxK13L/9ZFoGyTD39IbFCbee3CsypDj4b5dt4qM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
|
@ -422,12 +420,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
|
|||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7 h1:WJywXQVIb56P2kAvXeMGTIgQ1ZHQxR60+F9dLsodECc=
|
||||
golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20220926161630-eccd6366d1be h1:fmw3UbQh+nxngCAHrDCCztao/kbYFnWjoqop8dHx05A=
|
||||
golang.org/x/crypto v0.0.0-20220926161630-eccd6366d1be/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4=
|
||||
golang.org/x/exp v0.0.0-20220921164117-439092de6870 h1:j8b6j9gzSigH28O5SjSpQSSh9lFd6f5D/q0aHjNTulc=
|
||||
golang.org/x/exp v0.0.0-20220921164117-439092de6870/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
|
||||
golang.org/x/exp v0.0.0-20220927162542-c76eaa363f9d h1:3wgmvnqHUJ8SxiNWwea5NCzTwAVfhTtuV+0ClVFlClc=
|
||||
golang.org/x/exp v0.0.0-20220927162542-c76eaa363f9d/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.0.0-20190823064033-3a9bac650e44/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
|
@ -468,8 +466,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
|
|||
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
|
||||
golang.org/x/net v0.0.0-20220923203811-8be639271d50 h1:vKyz8L3zkd+xrMeIaBsQ/MNVPVFSffdaU3ZyYlBGFnI=
|
||||
golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
|
||||
golang.org/x/net v0.0.0-20220927171203-f486391704dc h1:FxpXZdoBqT8RjqTy6i1E8nXHhW21wK7ptQ/EPIGxzPQ=
|
||||
golang.org/x/net v0.0.0-20220927171203-f486391704dc/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
|
@ -516,8 +514,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc=
|
||||
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 h1:cy1ko5847T/lJ45eyg/7uLprIE/amW5IXxGtEnQdYMI=
|
||||
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.0.0-20180302201248-b7ef84aaf62a/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
|
|
|
@ -379,6 +379,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) {
|
|||
// return true
|
||||
//})
|
||||
|
||||
waitSecondForExecInstallPkg := false
|
||||
if !skipNewVerInstallPkg() {
|
||||
newVerInstallPkgPath := getNewVerInstallPkgPath()
|
||||
if "" != newVerInstallPkgPath {
|
||||
|
@ -387,6 +388,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) {
|
|||
logging.LogInfof("the new version install pkg is ready [%s], waiting for the user's next instruction", newVerInstallPkgPath)
|
||||
return
|
||||
} else if 2 == execInstallPkg { // 执行新版本安装
|
||||
waitSecondForExecInstallPkg = true
|
||||
go execNewVerInstallPkg(newVerInstallPkgPath)
|
||||
}
|
||||
}
|
||||
|
@ -398,6 +400,9 @@ func Close(force bool, execInstallPkg int) (exitCode int) {
|
|||
|
||||
go func() {
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
if waitSecondForExecInstallPkg {
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
logging.LogInfof("exited kernel")
|
||||
util.WebSocketServer.Close()
|
||||
os.Exit(util.ExitCodeOk)
|
||||
|
|
|
@ -150,105 +150,112 @@ var (
|
|||
|
||||
func AutoRefreshCheck() {
|
||||
for {
|
||||
if !subscriptionExpirationReminded {
|
||||
subscriptionExpirationReminded = true
|
||||
go func() {
|
||||
defer logging.Recover()
|
||||
|
||||
if "ios" == util.Container {
|
||||
return
|
||||
}
|
||||
if IsSubscriber() && -1 != Conf.User.UserSiYuanProExpireTime {
|
||||
expired := int64(Conf.User.UserSiYuanProExpireTime)
|
||||
if time.Now().UnixMilli() >= expired { // 已经过期
|
||||
time.Sleep(time.Second * 30)
|
||||
util.PushErrMsg(Conf.Language(128), 0)
|
||||
return
|
||||
}
|
||||
remains := (expired - time.Now().UnixMilli()) / 1000 / 60 / 60 / 24
|
||||
if 0 < remains && 15 > remains { // 15 后过期
|
||||
time.Sleep(3 * time.Minute)
|
||||
util.PushErrMsg(fmt.Sprintf(Conf.Language(127), remains), 0)
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
go func() {
|
||||
defer logging.Recover()
|
||||
|
||||
if nil != Conf.User {
|
||||
time.Sleep(2 * time.Minute)
|
||||
if nil != Conf.User {
|
||||
RefreshUser(Conf.User.UserToken)
|
||||
}
|
||||
subscriptionExpirationReminded = false
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer logging.Recover()
|
||||
|
||||
time.Sleep(1 * time.Minute)
|
||||
announcementConf := filepath.Join(util.HomeDir, ".config", "siyuan", "announcement.json")
|
||||
var existingAnnouncements, newAnnouncements []*Announcement
|
||||
if gulu.File.IsExist(announcementConf) {
|
||||
data, err := os.ReadFile(announcementConf)
|
||||
if nil != err {
|
||||
logging.LogErrorf("read announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, &existingAnnouncements); nil != err {
|
||||
logging.LogErrorf("unmarshal announcement conf failed: %s", err)
|
||||
os.Remove(announcementConf)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for _, announcement := range GetAnnouncements() {
|
||||
var exist bool
|
||||
for _, existingAnnouncement := range existingAnnouncements {
|
||||
if announcement.Id == existingAnnouncement.Id {
|
||||
exist = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !exist {
|
||||
existingAnnouncements = append(existingAnnouncements, announcement)
|
||||
newAnnouncements = append(newAnnouncements, announcement)
|
||||
}
|
||||
}
|
||||
|
||||
data, err := gulu.JSON.MarshalJSON(existingAnnouncements)
|
||||
if nil != err {
|
||||
logging.LogErrorf("marshal announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
if err = os.WriteFile(announcementConf, data, 0644); nil != err {
|
||||
logging.LogErrorf("write announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
for _, newAnnouncement := range newAnnouncements {
|
||||
util.PushMsg(fmt.Sprintf(Conf.Language(11), newAnnouncement.URL, newAnnouncement.Title), 0)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer logging.Recover()
|
||||
|
||||
time.Sleep(3 * time.Minute)
|
||||
checkDownloadInstallPkg()
|
||||
if "" != getNewVerInstallPkgPath() {
|
||||
util.PushMsg(Conf.Language(62), 0)
|
||||
}
|
||||
}()
|
||||
go refreshSubscriptionExpirationRemind()
|
||||
go refreshUser()
|
||||
go refreshAnnouncement()
|
||||
go refreshCheckDownloadInstallPkg()
|
||||
|
||||
<-refreshCheckTicker.C
|
||||
}
|
||||
}
|
||||
|
||||
func refreshSubscriptionExpirationRemind() {
|
||||
if subscriptionExpirationReminded {
|
||||
return
|
||||
}
|
||||
subscriptionExpirationReminded = true
|
||||
|
||||
defer logging.Recover()
|
||||
|
||||
if "ios" == util.Container {
|
||||
return
|
||||
}
|
||||
if IsSubscriber() && -1 != Conf.User.UserSiYuanProExpireTime {
|
||||
expired := int64(Conf.User.UserSiYuanProExpireTime)
|
||||
if time.Now().UnixMilli() >= expired { // 已经过期
|
||||
time.Sleep(time.Second * 30)
|
||||
util.PushErrMsg(Conf.Language(128), 0)
|
||||
return
|
||||
}
|
||||
remains := (expired - time.Now().UnixMilli()) / 1000 / 60 / 60 / 24
|
||||
if 0 < remains && 15 > remains { // 15 后过期
|
||||
time.Sleep(3 * time.Minute)
|
||||
util.PushErrMsg(fmt.Sprintf(Conf.Language(127), remains), 0)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func refreshUser() {
|
||||
defer logging.Recover()
|
||||
|
||||
if nil != Conf.User {
|
||||
time.Sleep(2 * time.Minute)
|
||||
if nil != Conf.User {
|
||||
RefreshUser(Conf.User.UserToken)
|
||||
}
|
||||
subscriptionExpirationReminded = false
|
||||
}
|
||||
}
|
||||
|
||||
func refreshCheckDownloadInstallPkg() {
|
||||
defer logging.Recover()
|
||||
|
||||
time.Sleep(3 * time.Minute)
|
||||
checkDownloadInstallPkg()
|
||||
if "" != getNewVerInstallPkgPath() {
|
||||
util.PushMsg(Conf.Language(62), 0)
|
||||
}
|
||||
}
|
||||
|
||||
func refreshAnnouncement() {
|
||||
defer logging.Recover()
|
||||
|
||||
time.Sleep(1 * time.Minute)
|
||||
announcementConf := filepath.Join(util.HomeDir, ".config", "siyuan", "announcement.json")
|
||||
var existingAnnouncements, newAnnouncements []*Announcement
|
||||
if gulu.File.IsExist(announcementConf) {
|
||||
data, err := os.ReadFile(announcementConf)
|
||||
if nil != err {
|
||||
logging.LogErrorf("read announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, &existingAnnouncements); nil != err {
|
||||
logging.LogErrorf("unmarshal announcement conf failed: %s", err)
|
||||
os.Remove(announcementConf)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for _, announcement := range GetAnnouncements() {
|
||||
var exist bool
|
||||
for _, existingAnnouncement := range existingAnnouncements {
|
||||
if announcement.Id == existingAnnouncement.Id {
|
||||
exist = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !exist {
|
||||
existingAnnouncements = append(existingAnnouncements, announcement)
|
||||
newAnnouncements = append(newAnnouncements, announcement)
|
||||
}
|
||||
}
|
||||
|
||||
data, err := gulu.JSON.MarshalJSON(existingAnnouncements)
|
||||
if nil != err {
|
||||
logging.LogErrorf("marshal announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
if err = os.WriteFile(announcementConf, data, 0644); nil != err {
|
||||
logging.LogErrorf("write announcement conf failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
for _, newAnnouncement := range newAnnouncements {
|
||||
util.PushMsg(fmt.Sprintf(Conf.Language(11), newAnnouncement.URL, newAnnouncement.Title), 0)
|
||||
}
|
||||
}
|
||||
|
||||
func RefreshUser(token string) error {
|
||||
threeDaysAfter := util.CurrentTimeMillis() + 1000*60*60*24*3
|
||||
if "" == token {
|
||||
|
|
|
@ -46,12 +46,11 @@ func execNewVerInstallPkg(newVerInstallPkgPath string) {
|
|||
cmd = exec.Command("sh", "-c", newVerInstallPkgPath)
|
||||
}
|
||||
util.CmdAttr(cmd)
|
||||
data, cmdErr := cmd.CombinedOutput()
|
||||
cmdErr := cmd.Start()
|
||||
if nil != cmdErr {
|
||||
logging.LogErrorf("exec install new version failed: %s", cmdErr)
|
||||
return
|
||||
}
|
||||
logging.LogInfof("installed new version output [%s]", data)
|
||||
}
|
||||
|
||||
func getNewVerInstallPkgPath() string {
|
||||
|
@ -148,18 +147,13 @@ func downloadInstallPkg(pkgURL, checksum string) {
|
|||
|
||||
logging.LogInfof("downloading install package [%s]", pkgURL)
|
||||
client := req.C().SetTimeout(60 * time.Minute)
|
||||
callback := func(info req.DownloadInfo) {
|
||||
//logging.LogDebugf("downloading install package [%s %.2f%%]", pkgURL, float64(info.DownloadedSize)/float64(info.Response.ContentLength)*100.0)
|
||||
}
|
||||
resp, err := client.R().SetOutputFile(savePath).SetDownloadCallback(callback).Get(pkgURL)
|
||||
err := client.NewParallelDownload(pkgURL).SetConcurrency(8).SetSegmentSize(1024 * 1024 * 4).
|
||||
SetOutputFile(savePath).Do()
|
||||
if nil != err {
|
||||
logging.LogErrorf("download install package failed: %s", err)
|
||||
return
|
||||
}
|
||||
if 200 != resp.StatusCode {
|
||||
logging.LogErrorf("download install package [%s] failed [sc=%d]", pkgURL, resp.StatusCode)
|
||||
return
|
||||
}
|
||||
|
||||
localChecksum, _ := sha256Hash(savePath)
|
||||
if checksum != localChecksum {
|
||||
logging.LogErrorf("verify checksum failed, download install package [%s] checksum [%s] not equal to downloaded [%s] checksum [%s]", pkgURL, checksum, savePath, localChecksum)
|
||||
|
|
Loading…
Add table
Reference in a new issue