sspanel按月結算,修改go版代碼【mysql api】

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

開頭感謝sspanel的作者orvice大神!【轉載請註明】

博主最近在搭建sspanel v3,中間坑確實挺多的,我回頭開貼補充一下,ss伺服器端我選擇了orvice的shadowsocks-go mu版,因為作者是基於流量控制的機理,實際上奸商都是通過時間控制(233),所以我就尋思在作者的基礎上加以修改,添加時間的限制。

註:此版本基於mysqlapi,webapi的修改方式令開貼

我在sspanel資料的user表中添加了兩個欄位:end_time int,到期日(1970開始的時間戳記);package_type int 套餐類型(無,月,三個月,半年,一年)。


具體可以根據自己實際需要情況修改。

首先,我們找到使用者控制碼,在shadowsocks-go-mu\mu\mysql\mysql.go中,作者在這裡用struct讀取mysql中的資料

type User struct {id             intport           intpasswd         stringmethod         stringenable         inttransferEnable intu              intd              int}

需要在裡面加上我們新加的三個欄位(因為我不知道go語言如何擷取時間戳記,所以直接從sql讀了,有一個好處是如果配置多個伺服器,可以保持時間同步,不受本地時間 )

end_time        int//從mysql讀取伺服器目前時間戳now_time        intpackage_type   int

找到讀取資料庫資料的方法,給上述欄位賦值

func (c *Client) GetUsers() ([]user.User, error) {log.Log.Info("get mysql users")var datas []*User//查詢資料庫加上新增的欄位rows, err := c.db.Model(User{}).Select("id, passwd, port, method,enable,transfer_enable,u,d,end_time,UNIX_TIMESTAMP(LOCALTIME()) as now_time,package_type").Rows()if err != nil {log.Log.Error(err)var users []user.Userreturn users, err}defer rows.Close()for rows.Next() {var data User//將讀取到的到期時間和賬戶類型賦值err := rows.Scan(&data.id, &data.passwd, &data.port, &data.method, &data.enable, &data.transferEnable, &data.u, &data.d, &data.end_time, &data.now_time, &data.package_type)if err != nil {log.Log.Error(err)continue}datas = append(datas, &data)}log.Log.Info(len(datas))users := make([]user.User, len(datas))for k, v := range datas {users[k] = v}return users, nil}

下一步,找到控制方法,增加到期自動斷開

func (u *User) IsEnable() bool {if u.enable == 0 {return false}if u.u+u.d > u.transferEnable {return false}//如果到期,停用使用者if u.now_time > u.end_time {return false}return true}


以上,改完之後重新編譯,替換掉原有的mu檔案,將服務端重新啟動即可


有疑問的可以加群討論,群號256950656


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.