Some fixes and improvements (#1997)

* [refactor] api controller

* [fix] access log path

better to not hardcode the access log path, maybe some ppl dont want to use the default ./access.log

* [fix] set select options from logs paths in xray settings

* [update] .gitignore

* [lint] all .go files

* [update] use status code for jsonMsg and 401 to unauthorize

* [update] handle response status code via axios

* [fix] set correct value if log paths is set to 'none'

we also use the default value for the paths if its set to none

* [fix] iplimit - only warning access log if f2b is installed
This commit is contained in:
Hamidreza
2024-03-11 01:01:24 +03:30
committed by GitHub
parent 32afd7200a
commit 64a5a9f1bc
45 changed files with 211 additions and 200 deletions
+4 -4
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"strings"
"time"
"x-ui/database"
"x-ui/database/model"
"x-ui/logger"
@@ -90,7 +91,6 @@ func (s *InboundService) getAllEmails() ([]string, error) {
FROM inbounds,
JSON_EACH(JSON_EXTRACT(inbounds.settings, '$.clients')) AS client
`).Scan(&emails).Error
if err != nil {
return nil, err
}
@@ -1074,7 +1074,9 @@ func (s *InboundService) UpdateClientStat(tx *gorm.DB, email string, client *mod
"email": client.Email,
"total": client.TotalGB,
"expiry_time": client.ExpiryTime,
"reset": client.Reset})
"reset": client.Reset,
})
err := result.Error
if err != nil {
return err
@@ -1573,7 +1575,6 @@ func (s *InboundService) ResetAllClientTraffics(id int) error {
Updates(map[string]interface{}{"enable": true, "up": 0, "down": 0})
err := result.Error
if err != nil {
return err
}
@@ -1588,7 +1589,6 @@ func (s *InboundService) ResetAllTraffics() error {
Updates(map[string]interface{}{"up": 0, "down": 0})
err := result.Error
if err != nil {
return err
}
+1 -2
View File
@@ -9,8 +9,7 @@ import (
"gorm.io/gorm"
)
type OutboundService struct {
}
type OutboundService struct{}
func (s *OutboundService) AddTraffic(traffics []*xray.Traffic, clientTraffics []*xray.ClientTraffic) (error, bool) {
var err error
+2 -2
View File
@@ -4,11 +4,11 @@ import (
"os"
"syscall"
"time"
"x-ui/logger"
)
type PanelService struct {
}
type PanelService struct{}
func (s *PanelService) RestartPanel(delay time.Duration) error {
p, err := os.FindProcess(syscall.Getpid())
-1
View File
@@ -382,7 +382,6 @@ func (s *ServerService) UpdateXray(version string) error {
}
return nil
}
func (s *ServerService) GetLogs(count string, level string, syslog string) []string {
+3 -2
View File
@@ -9,6 +9,7 @@ import (
"strconv"
"strings"
"time"
"x-ui/database"
"x-ui/database/model"
"x-ui/logger"
@@ -64,8 +65,7 @@ var defaultValueMap = map[string]string{
"warp": "",
}
type SettingService struct {
}
type SettingService struct{}
func (s *SettingService) GetDefaultJsonConfig() (interface{}, error) {
var jsonData interface{}
@@ -444,6 +444,7 @@ func (s *SettingService) GetDatepicker() (string, error) {
func (s *SettingService) GetWarp() (string, error) {
return s.getString("warp")
}
func (s *SettingService) SetWarp(data string) error {
return s.setString("warp", data)
}
+19 -12
View File
@@ -10,6 +10,7 @@ import (
"strconv"
"strings"
"time"
"x-ui/config"
"x-ui/database"
"x-ui/database/model"
@@ -26,12 +27,14 @@ import (
"github.com/valyala/fasthttp/fasthttpproxy"
)
var bot *telego.Bot
var botHandler *th.BotHandler
var adminIds []int64
var isRunning bool
var hostname string
var hashStorage *global.HashStorage
var (
bot *telego.Bot
botHandler *th.BotHandler
adminIds []int64
isRunning bool
hostname string
hashStorage *global.HashStorage
)
type LoginStatus byte
@@ -280,7 +283,6 @@ func (t *Tgbot) answerCommand(message *telego.Message, chatId int64, isAdmin boo
}
func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool) {
chatId := callbackQuery.Message.GetChat().ID
if isAdmin {
@@ -866,7 +868,7 @@ func (t *Tgbot) SendMsgToTgbot(chatId int64, msg string, replyMarkup ...telego.R
Text: message,
ParseMode: "HTML",
}
//only add replyMarkup to last message
// only add replyMarkup to last message
if len(replyMarkup) > 0 && n == (len(allMessages)-1) {
params.ReplyMarkup = replyMarkup[0]
}
@@ -1030,9 +1032,15 @@ func (t *Tgbot) getInboundUsages() string {
return info
}
func (t *Tgbot) clientInfoMsg(traffic *xray.ClientTraffic, printEnabled bool, printOnline bool, printActive bool,
printDate bool, printTraffic bool, printRefreshed bool) string {
func (t *Tgbot) clientInfoMsg(
traffic *xray.ClientTraffic,
printEnabled bool,
printOnline bool,
printActive bool,
printDate bool,
printTraffic bool,
printRefreshed bool,
) string {
now := time.Now().Unix()
expiryTime := ""
flag := false
@@ -1544,7 +1552,6 @@ func (t *Tgbot) sendBackup(chatId int64) {
}
} else {
logger.Error("Error in opening db file for backup: ", err)
}
file, err = os.Open(xray.GetConfigPath())
+2 -2
View File
@@ -2,6 +2,7 @@ package service
import (
"errors"
"x-ui/database"
"x-ui/database/model"
"x-ui/logger"
@@ -9,8 +10,7 @@ import (
"gorm.io/gorm"
)
type UserService struct {
}
type UserService struct{}
func (s *UserService) GetFirstUser() (*model.User, error) {
db := database.GetDB()
+7 -10
View File
@@ -4,16 +4,19 @@ import (
"encoding/json"
"errors"
"sync"
"x-ui/logger"
"x-ui/xray"
"go.uber.org/atomic"
)
var p *xray.Process
var lock sync.Mutex
var isNeedXrayRestart atomic.Bool
var result string
var (
p *xray.Process
lock sync.Mutex
isNeedXrayRestart atomic.Bool
result string
)
type XrayService struct {
inboundService InboundService
@@ -87,7 +90,6 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
// check users active or not
clientStats := inbound.ClientStats
for _, clientTraffic := range clientStats {
indexDecrease := 0
for index, client := range clients {
c := client.(map[string]interface{})
@@ -96,20 +98,15 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
clients = RemoveIndex(clients, index-indexDecrease)
indexDecrease++
logger.Info("Remove Inbound User ", c["email"], " due the expire or traffic limit")
}
}
}
}
// clear client config for additional parameters
var final_clients []interface{}
for _, client := range clients {
c := client.(map[string]interface{})
if c["enable"] != nil {
if enable, ok := c["enable"].(bool); ok && !enable {
continue
+1
View File
@@ -8,6 +8,7 @@ import (
"net/http"
"os"
"time"
"x-ui/util/common"
"x-ui/xray"
)