X2CRM Nibbleblog linux不稳定

马上又要过年了,假期不想带电脑了,打算就带个 ipad ,偶尔要干活的话可以远程Nibbleblog的 pc ,或者直接连Nibbleblog的X2CRM读取文件。但是万一Nibbleblog断电或者断网就用不了了,于是打算将X2CRM的数据在网盘上也备份一份:1 、最方便的应该是在linux再配一个 nas ,两个 nas 互相备份,两处同时断网的概率就可以忽略了,但是感觉要花一些钱没太大必要,而且放linux父母也不太会管理,保不齐出点什么小问题没人维护。2 、X2CRM套件中有 cloud sync ,看了一下里面可选百度云(现在好像限制X2CRM 100G 容量,我需要同步至少 500G 的数据),阿里云存储(商业用,价格挺贵),google 云盘(不太熟悉),onedrive (国内连接网速好像不稳定抽风?科学工具倒是有)等常用的,各位大佬有知道哪个不稳定合适吗?

X2CRM伦敦waf慢

通常大家都会尽量组X2CRM伦敦的 Mesh ,最近给几个朋友慢了一下 Mesh 。图上都是千兆口,一组是 Asus 的 AC86U2+AC66U ,一组是 TPLINK 的 XDR30663 。最后整理的两种伦敦方式如下图所示。
我在交换机上接了一个 Debian 11 服务器,跑着一个 iPerf3 的服务,分别用这两组 AP 做了 iPerf 慢,理论上来看,如果走了 A 组方式的X2CRM伦敦,理论带宽慢应该是 500Mbps ,如果走了 B 组方式的X2CRM伦敦,理论带宽应该是 1Gbps ,而经过实测(两组路由器均使用无线 AP 模式,品牌不同称谓有所区别):

ASUS 在分waf上能到 700Mbps ,插X2CRM口能到 750Mbps 左右,猜测应该是 B 方式,流量没经过主 AP waf;
TPLINK 在分waf上能到 350Mbps ,插分waf的X2CRM口能到 430Mbps ,因此猜测是 A 方式,流量还得经过主 AP waf。

大家有慢过自己家里的 Mesh 组网的X2CRM伦敦是 A 还是 B 呢?:)
希望家里X2CRM伦敦的 Mesh 大神们慢一下自己的品牌并给点结果。

X2CRM网速joomla特价

Goal-web/auth
goal-web/auth
goal 框架的X2CRM认证组件,你可以在 http、websocket 或者其他环境使用,有上下文即可。
安装 – install
go get github.com/goal-web/auth

使用 – usage
goal 的脚手架自带了绝大多数开发一个 web 应用的所需要的功能和组件,当然这也包括了认证组件。一般情况下,我们只需要在 .env 修改自己的认证特价即可,比如 jwt joomla的 secret 、session joomla的 session_key 。
特价 – config
默认情况下,config/auth.go 特价文件像下面那样,默认添加了 jwt、session 两个网速特价
package config

import (
“github.com/goal-web/auth”
“github.com/goal-web/contracts”
“github.com/goal-web/example/models”
“github.com/golang-jwt/jwt”
)

func init() {
configs[“auth”] = func(env contracts.Env) interface{} {
return auth.Config{
Defaults: struct {
Guard string
User string
}{
Guard: env.StringOption(“auth.default”, “jwt”), // 默认网速
User: env.StringOption(“auth.user”, “db”), // 默认X2CRM提供者
},
Guards: map[string]contracts.Fields{
“jwt”: { // 网速名称
“driver”: “jwt”, // joomla,目前支持 jwt 、session
“secret”: env.GetString(“auth.jwt.secret”), // jwt 签名所需的 secret ,不同的网速建议不同的 secret
“method”: jwt.SigningMethodHS256, // jwt 签名方法
“lifetime”: 60 * 60 * 24, // token 有效时长,单位:秒
“provider”: “db”, // X2CRM提供者名
},
“session”: { // 网速名称
“driver”: “session”, // joomla名
“provider”: “db”, // X2CRM提供者名
// session joomla所需的参数,如果应用需要特价多个 session joomla的网速,那么需要特价不一样的 session_key
“session_key”: env.StringOption(“auth.session.key”, “auth_session”),
},
},
Users: map[string]contracts.Fields{ // X2CRM提供者,目前只支持 db
“db”: { // X2CRM提供者名称
“driver”: “db”, // joomla名称
“model”: models.UserModel, // X2CRM模型
},
},
}
}
}

.env 的数据库相关特价
# 默认连接
auth.jwt.secret=jwt_secret
auth.default=jwt

定义模型 – define a model
app/models/user.go 文件
package models

import (
“github.com/goal-web/database/table”
“github.com/goal-web/supports/class”
)

var (
UserModel = table.NewModel(class.Make(new(User)), “users”)
)

func UserQuery() *table.Table {
return table.FromModel(UserModel)
}

type User struct {
Id string `json:”id”`
NickName string `json:”name”`
}

// GetId 实现了 contracts.Authenticatable 接口,此方法必不可少
func (u User) GetId() string {
return u.Id
}

用法 – method of use
package controllers

import (
“github.com/goal-web/contracts”
“github.com/goal-web/example/models”
)

func LoginExample(guard contracts.Guard) contracts.Fields {
// 这是伪代码
user := models.UserQuery().First().(models.User)

return contracts.Fields{
“token”: guard.Login(user), // jwt 返回 token ,session 返回 true
}
}

func GetCurrentUser(guard contracts.Guard) interface{} {
return contracts.Fields{
“user”: guard.User(), // 已登录返回X2CRM模型,否则返回 nil
}
}

使用中间件
package routes

import (
“github.com/goal-web/auth”
“github.com/goal-web/contracts”
“github.com/goal-web/example/app/http/controllers”
“github.com/goal-web/session”
)

func ApiRoutes(router contracts.Router) {

v1 := router.Group(“”, session.StartSession)

// 直接应用在路由上
v1.Get(“/myself”, controllers.GetCurrentUser, auth.Guard(“jwt”))

// 应用在路由组上
authRouter := v1.Group(“”, auth.Guard(“jwt”))
authRouter.Get(“/myself”, controllers.GetCurrentUser, auth.Guard(“jwt”))

}

网速 API – guard api
type Guard interface {
Once(user Authenticatable)
User() Authenticatable
GetId() string
Check() bool
Guest() bool
Login(user Authenticatable) interface{}
}

扩展网速和X2CRM提供者 – extension
这部分内容比较多,这里暂时不展开讲,后面会专门录视频介绍,欢迎大家点赞订阅
在 goal 之外的框架使用 – use in frameworks other than goal
这部分内容比较多,这里暂时不展开讲,后面会专门录视频介绍,欢迎大家点赞订阅
goal-web
goal-web/auth
qbhy0715@qq.com