Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/release.yml56
-rw-r--r--web/controller/index.go10
-rw-r--r--web/service/user.go2
3 files changed, 51 insertions, 17 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 9e94fb74..ed9417c9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,11 +2,9 @@ name: Release 3X-UI
on:
workflow_dispatch:
- release:
- types: [published]
push:
branches:
- - main
+ - '**'
tags:
- "v*.*.*"
paths:
@@ -20,9 +18,48 @@ on:
- 'x-ui.service.debian'
- 'x-ui.service.arch'
- 'x-ui.service.rhel'
+ pull_request:
jobs:
+ analyze:
+ name: Analyze Go code
+ permissions:
+ contents: read
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Set up Go
+ uses: actions/setup-go@v6
+ with:
+ go-version-file: go.mod
+ cache: true
+
+ - name: Check formatting
+ run: |
+ unformatted=$(gofmt -l .)
+ if [ -n "$unformatted" ]; then
+ echo "These files are not gofmt-formatted:"
+ echo "$unformatted"
+ exit 1
+ fi
+
+ - name: Run go vet
+ run: go vet ./...
+
+ - name: Run staticcheck
+ uses: dominikh/staticcheck-action@v1
+ with:
+ version: "latest"
+ install-go: false
+
+ - name: Run tests
+ run: go test -race -shuffle=on ./...
+
build:
+ needs: analyze
permissions:
contents: write
strategy:
@@ -140,12 +177,10 @@ jobs:
- name: Upload files to GH release
uses: svenstaro/upload-release-action@v2
- if: |
- (github.event_name == 'release' && github.event.action == 'published') ||
- (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
- tag: ${{ github.ref }}
+ tag: ${{ github.ref_name }}
file: x-ui-linux-${{ matrix.platform }}.tar.gz
asset_name: x-ui-linux-${{ matrix.platform }}.tar.gz
overwrite: true
@@ -156,6 +191,7 @@ jobs:
# =================================
build-windows:
name: Build for Windows
+ needs: analyze
permissions:
contents: write
strategy:
@@ -237,12 +273,10 @@ jobs:
- name: Upload files to GH release
uses: svenstaro/upload-release-action@v2
- if: |
- (github.event_name == 'release' && github.event.action == 'published') ||
- (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
- tag: ${{ github.ref }}
+ tag: ${{ github.ref_name }}
file: x-ui-windows-amd64.zip
asset_name: x-ui-windows-amd64.zip
overwrite: true
diff --git a/web/controller/index.go b/web/controller/index.go
index 605f874f..dd58e5e5 100644
--- a/web/controller/index.go
+++ b/web/controller/index.go
@@ -1,10 +1,10 @@
package controller
import (
+ "fmt"
"net/http"
"text/template"
"time"
- "fmt"
"github.com/mhsanaei/3x-ui/v2/logger"
"github.com/mhsanaei/3x-ui/v2/web/service"
@@ -79,12 +79,12 @@ func (a *IndexController) login(c *gin.Context) {
if user == nil {
logger.Warningf("wrong username: \"%s\", password: \"%s\", IP: \"%s\"", safeUser, safePass, getRemoteIp(c))
-
- notifyPass := safePass
-
+
+ notifyPass := safePass
+
if checkErr != nil && checkErr.Error() == "invalid 2fa code" {
translatedError := a.tgbot.I18nBot("tgbot.messages.2faFailed")
- notifyPass = fmt.Sprintf("*** (%s)", translatedError)
+ notifyPass = fmt.Sprintf("*** (%s)", translatedError)
}
a.tgbot.UserLoginNotify(safeUser, notifyPass, getRemoteIp(c), timeStr, 0)
diff --git a/web/service/user.go b/web/service/user.go
index 0a2a3f3e..6fcf17e7 100644
--- a/web/service/user.go
+++ b/web/service/user.go
@@ -95,7 +95,7 @@ func (s *UserService) CheckUser(username string, password string, twoFactorCode
}
if gotp.NewDefaultTOTP(twoFactorToken).Now() != twoFactorCode {
- return nil, errors.New("invalid 2fa code")
+ return nil, errors.New("invalid 2fa code")
}
}