v3
Some checks are pending
Release 3X-UI / build (386) (push) Waiting to run
Release 3X-UI / build (amd64) (push) Waiting to run
Release 3X-UI / build (arm64) (push) Waiting to run
Release 3X-UI / build (armv5) (push) Waiting to run
Release 3X-UI / build (armv6) (push) Waiting to run
Release 3X-UI / build (armv7) (push) Waiting to run
Release 3X-UI / build (s390x) (push) Waiting to run
Release 3X-UI / Build for Windows (push) Waiting to run

This commit is contained in:
MHSanaei 2026-05-10 02:13:42 +02:00
parent 267fb1c866
commit 7cd26a0583
No known key found for this signature in database
GPG key ID: 7E4060F2FBE5AB7A
70 changed files with 220 additions and 220 deletions

View file

@ -12,10 +12,10 @@ import (
"path" "path"
"slices" "slices"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/util/crypto" "github.com/mhsanaei/3x-ui/v3/util/crypto"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"

View file

@ -4,8 +4,8 @@ package model
import ( import (
"fmt" "fmt"
"github.com/mhsanaei/3x-ui/v2/util/json_util" "github.com/mhsanaei/3x-ui/v3/util/json_util"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// Protocol represents the protocol type for Xray inbounds. // Protocol represents the protocol type for Xray inbounds.

2
go.mod
View file

@ -1,4 +1,4 @@
module github.com/mhsanaei/3x-ui/v2 module github.com/mhsanaei/3x-ui/v3
go 1.26.3 go 1.26.3

View file

@ -9,7 +9,7 @@ import (
"runtime" "runtime"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/op/go-logging" "github.com/op/go-logging"
) )

18
main.go
View file

@ -11,15 +11,15 @@ import (
"syscall" "syscall"
_ "unsafe" _ "unsafe"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/sub" "github.com/mhsanaei/3x-ui/v3/sub"
"github.com/mhsanaei/3x-ui/v2/util/crypto" "github.com/mhsanaei/3x-ui/v3/util/crypto"
"github.com/mhsanaei/3x-ui/v2/util/sys" "github.com/mhsanaei/3x-ui/v3/util/sys"
"github.com/mhsanaei/3x-ui/v2/web" "github.com/mhsanaei/3x-ui/v3/web"
"github.com/mhsanaei/3x-ui/v2/web/global" "github.com/mhsanaei/3x-ui/v3/web/global"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/joho/godotenv" "github.com/joho/godotenv"
"github.com/op/go-logging" "github.com/op/go-logging"

View file

@ -13,13 +13,13 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
webpkg "github.com/mhsanaei/3x-ui/v2/web" webpkg "github.com/mhsanaei/3x-ui/v3/web"
"github.com/mhsanaei/3x-ui/v2/web/locale" "github.com/mhsanaei/3x-ui/v3/web/locale"
"github.com/mhsanaei/3x-ui/v2/web/middleware" "github.com/mhsanaei/3x-ui/v3/web/middleware"
"github.com/mhsanaei/3x-ui/v2/web/network" "github.com/mhsanaei/3x-ui/v3/web/network"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -7,10 +7,10 @@ import (
"github.com/goccy/go-json" "github.com/goccy/go-json"
yaml "github.com/goccy/go-yaml" yaml "github.com/goccy/go-yaml"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
type SubClashService struct { type SubClashService struct {

View file

@ -9,8 +9,8 @@ import (
"strconv" "strconv"
"strings" "strings"
webpkg "github.com/mhsanaei/3x-ui/v2/web" webpkg "github.com/mhsanaei/3x-ui/v3/web"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -7,12 +7,12 @@ import (
"maps" "maps"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/json_util" "github.com/mhsanaei/3x-ui/v3/util/json_util"
"github.com/mhsanaei/3x-ui/v2/util/random" "github.com/mhsanaei/3x-ui/v3/util/random"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
//go:embed default.json //go:embed default.json

View file

@ -13,13 +13,13 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/goccy/go-json" "github.com/goccy/go-json"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/util/random" "github.com/mhsanaei/3x-ui/v3/util/random"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// SubService provides business logic for generating subscription links and managing subscription data. // SubService provides business logic for generating subscription links and managing subscription data.

View file

@ -5,7 +5,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
// NewErrorf creates a new error with formatted message. // NewErrorf creates a new error with formatted message.

View file

@ -4,9 +4,9 @@ import (
"net/http" "net/http"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/web/middleware" "github.com/mhsanaei/3x-ui/v3/web/middleware"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -5,9 +5,9 @@ package controller
import ( import (
"net/http" "net/http"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/locale" "github.com/mhsanaei/3x-ui/v3/web/locale"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -5,10 +5,10 @@ import (
"net/http" "net/http"
"strconv" "strconv"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -10,9 +10,9 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
) )
// distFS is filled in once at startup by the web package via SetDistFS. // distFS is filled in once at startup by the web package via SetDistFS.

View file

@ -6,10 +6,10 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -5,10 +5,10 @@ import (
"text/template" "text/template"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/middleware" "github.com/mhsanaei/3x-ui/v3/web/middleware"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -7,8 +7,8 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -8,11 +8,11 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/mhsanaei/3x-ui/v2/web/global" "github.com/mhsanaei/3x-ui/v3/web/global"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -4,10 +4,10 @@ import (
"errors" "errors"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/util/crypto" "github.com/mhsanaei/3x-ui/v3/util/crypto"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -7,8 +7,8 @@ import (
"net/netip" "net/netip"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -6,9 +6,9 @@ import (
"net/url" "net/url"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
ws "github.com/gorilla/websocket" ws "github.com/gorilla/websocket"

View file

@ -3,8 +3,8 @@ package controller
import ( import (
"encoding/json" "encoding/json"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -3,9 +3,9 @@ package controller
import ( import (
"net/http" "net/http"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/mhsanaei/3x-ui/v2/web/middleware" "github.com/mhsanaei/3x-ui/v3/web/middleware"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -8,7 +8,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
) )
// Msg represents a standard API response message with success status, message text, and optional data object. // Msg represents a standard API response message with success status, message text, and optional data object.

View file

@ -13,10 +13,10 @@ import (
"sort" "sort"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// IPWithTimestamp tracks an IP address with its last seen timestamp // IPWithTimestamp tracks an IP address with its last seen timestamp

View file

@ -9,9 +9,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
xuilogger "github.com/mhsanaei/3x-ui/v2/logger" xuilogger "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/op/go-logging" "github.com/op/go-logging"
) )

View file

@ -4,7 +4,7 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/shirou/gopsutil/v4/cpu" "github.com/shirou/gopsutil/v4/cpu"
) )

View file

@ -1,7 +1,7 @@
package job package job
import ( import (
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
) )
// CheckHashStorageJob periodically cleans up expired hash entries from the Telegram bot's hash storage. // CheckHashStorageJob periodically cleans up expired hash entries from the Telegram bot's hash storage.

View file

@ -3,8 +3,8 @@
package job package job
import ( import (
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
) )
// CheckXrayRunningJob monitors Xray process health and restarts it if it crashes. // CheckXrayRunningJob monitors Xray process health and restarts it if it crashes.

View file

@ -5,8 +5,8 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// ClearLogsJob clears old log files to prevent disk space issues. // ClearLogsJob clears old log files to prevent disk space issues.

View file

@ -5,10 +5,10 @@ import (
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
ldaputil "github.com/mhsanaei/3x-ui/v2/util/ldap" ldaputil "github.com/mhsanaei/3x-ui/v3/util/ldap"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"strconv" "strconv"

View file

@ -5,10 +5,10 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
) )
// nodeHeartbeatConcurrency caps how many remote panels we probe at once. // nodeHeartbeatConcurrency caps how many remote panels we probe at once.

View file

@ -5,11 +5,11 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/runtime" "github.com/mhsanaei/3x-ui/v3/web/runtime"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
) )
// nodeTrafficSyncConcurrency caps how many nodes we sync simultaneously. // nodeTrafficSyncConcurrency caps how many nodes we sync simultaneously.

View file

@ -1,8 +1,8 @@
package job package job
import ( import (
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
) )
// Period represents the time period for traffic resets. // Period represents the time period for traffic resets.

View file

@ -1,7 +1,7 @@
package job package job
import ( import (
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
) )
// LoginStatus represents the status of a login attempt. // LoginStatus represents the status of a login attempt.

View file

@ -3,10 +3,10 @@ package job
import ( import (
"encoding/json" "encoding/json"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"github.com/valyala/fasthttp" "github.com/valyala/fasthttp"
) )

View file

@ -9,7 +9,7 @@ import (
"os" "os"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/nicksnyder/go-i18n/v2/i18n" "github.com/nicksnyder/go-i18n/v2/i18n"

View file

@ -3,7 +3,7 @@ package middleware
import ( import (
"net/http" "net/http"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )

View file

@ -5,7 +5,7 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"github.com/mhsanaei/3x-ui/v2/web/session" "github.com/mhsanaei/3x-ui/v3/web/session"
"github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie" "github.com/gin-contrib/sessions/cookie"

View file

@ -6,8 +6,8 @@ import (
"errors" "errors"
"sync" "sync"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// LocalDeps wires the runtime to the panel's xray process and the // LocalDeps wires the runtime to the panel's xray process and the

View file

@ -4,8 +4,8 @@ import (
"errors" "errors"
"sync" "sync"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
) )
// Manager is the entry point for service code that needs a Runtime. // Manager is the entry point for service code that needs a Runtime.

View file

@ -14,8 +14,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
// remoteHTTPTimeout bounds a single remote API call. Generous enough for // remoteHTTPTimeout bounds a single remote API call. Generous enough for

View file

@ -12,7 +12,7 @@ package runtime
import ( import (
"context" "context"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
) )
// Runtime is the live-engine adapter for one inbound's worth of // Runtime is the live-engine adapter for one inbound's worth of

View file

@ -14,10 +14,10 @@ import (
"strings" "strings"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
const ( const (

View file

@ -10,7 +10,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
) )
// disableSSRFCheck disables the SSRF guard for the duration of a test, // disableSSRFCheck disables the SSRF guard for the duration of a test,

View file

@ -12,12 +12,12 @@ import (
"time" "time"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/runtime" "github.com/mhsanaei/3x-ui/v3/web/runtime"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/clause" "gorm.io/gorm/clause"

View file

@ -10,10 +10,10 @@ import (
"strings" "strings"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/runtime" "github.com/mhsanaei/3x-ui/v3/web/runtime"
) )
// HeartbeatPatch is the slice of fields a single Probe() result writes // HeartbeatPatch is the slice of fields a single Probe() result writes

View file

@ -7,7 +7,7 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
) )
type NordService struct { type NordService struct {

View file

@ -11,13 +11,13 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/util/json_util" "github.com/mhsanaei/3x-ui/v3/util/json_util"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"gorm.io/gorm" "gorm.io/gorm"
) )

View file

@ -13,8 +13,8 @@ import (
"syscall" "syscall"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
// PanelService provides business logic for panel management operations. // PanelService provides business logic for panel management operations.

View file

@ -5,9 +5,9 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
) )
// transportBits is a bitmask of L4 transports an inbound listens on. // transportBits is a bitmask of L4 transports an inbound listens on.

View file

@ -5,9 +5,9 @@ import (
"sync" "sync"
"testing" "testing"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
xuilogger "github.com/mhsanaei/3x-ui/v2/logger" xuilogger "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/op/go-logging" "github.com/op/go-logging"
) )

View file

@ -20,12 +20,12 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/util/sys" "github.com/mhsanaei/3x-ui/v3/util/sys"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/shirou/gopsutil/v4/cpu" "github.com/shirou/gopsutil/v4/cpu"

View file

@ -12,14 +12,14 @@ import (
"strings" "strings"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/util/random" "github.com/mhsanaei/3x-ui/v3/util/random"
"github.com/mhsanaei/3x-ui/v2/util/reflect_util" "github.com/mhsanaei/3x-ui/v3/util/reflect_util"
"github.com/mhsanaei/3x-ui/v2/web/entity" "github.com/mhsanaei/3x-ui/v3/web/entity"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
//go:embed config.json //go:embed config.json

View file

@ -22,14 +22,14 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/global" "github.com/mhsanaei/3x-ui/v3/web/global"
"github.com/mhsanaei/3x-ui/v2/web/locale" "github.com/mhsanaei/3x-ui/v3/web/locale"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/mymmrac/telego" "github.com/mymmrac/telego"

View file

@ -3,11 +3,11 @@ package service
import ( import (
"errors" "errors"
"github.com/mhsanaei/3x-ui/v2/database" "github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/crypto" "github.com/mhsanaei/3x-ui/v3/util/crypto"
ldaputil "github.com/mhsanaei/3x-ui/v2/util/ldap" ldaputil "github.com/mhsanaei/3x-ui/v3/util/ldap"
"github.com/xlzd/gotp" "github.com/xlzd/gotp"
"gorm.io/gorm" "gorm.io/gorm"
) )

View file

@ -9,7 +9,7 @@ import (
"os" "os"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
) )
// WarpService provides business logic for Cloudflare WARP integration. // WarpService provides business logic for Cloudflare WARP integration.

View file

@ -7,9 +7,9 @@ package service
import ( import (
"time" "time"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
"github.com/google/uuid" "github.com/google/uuid"
ws "github.com/gorilla/websocket" ws "github.com/gorilla/websocket"

View file

@ -6,8 +6,8 @@ import (
"runtime" "runtime"
"sync" "sync"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
"go.uber.org/atomic" "go.uber.org/atomic"
) )

View file

@ -4,8 +4,8 @@ import (
_ "embed" _ "embed"
"encoding/json" "encoding/json"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/xray" "github.com/mhsanaei/3x-ui/v3/xray"
) )
// XraySettingService provides business logic for Xray configuration management. // XraySettingService provides business logic for Xray configuration management.

View file

@ -5,8 +5,8 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/database/model" "github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"

View file

@ -15,17 +15,17 @@ import (
"strings" "strings"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/mhsanaei/3x-ui/v2/web/controller" "github.com/mhsanaei/3x-ui/v3/web/controller"
"github.com/mhsanaei/3x-ui/v2/web/job" "github.com/mhsanaei/3x-ui/v3/web/job"
"github.com/mhsanaei/3x-ui/v2/web/locale" "github.com/mhsanaei/3x-ui/v3/web/locale"
"github.com/mhsanaei/3x-ui/v2/web/middleware" "github.com/mhsanaei/3x-ui/v3/web/middleware"
"github.com/mhsanaei/3x-ui/v2/web/network" "github.com/mhsanaei/3x-ui/v3/web/network"
"github.com/mhsanaei/3x-ui/v2/web/runtime" "github.com/mhsanaei/3x-ui/v3/web/runtime"
"github.com/mhsanaei/3x-ui/v2/web/service" "github.com/mhsanaei/3x-ui/v3/web/service"
"github.com/mhsanaei/3x-ui/v2/web/websocket" "github.com/mhsanaei/3x-ui/v3/web/websocket"
"github.com/gin-contrib/gzip" "github.com/gin-contrib/gzip"
"github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions"

View file

@ -7,7 +7,7 @@ import (
"sync" "sync"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
// MessageType identifies the kind of WebSocket message. // MessageType identifies the kind of WebSocket message.

View file

@ -2,8 +2,8 @@
package websocket package websocket
import ( import (
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/web/global" "github.com/mhsanaei/3x-ui/v3/web/global"
) )
// GetHub returns the global WebSocket hub instance. // GetHub returns the global WebSocket hub instance.

View file

@ -11,8 +11,8 @@ import (
"regexp" "regexp"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
"github.com/xtls/xray-core/app/proxyman/command" "github.com/xtls/xray-core/app/proxyman/command"
statsService "github.com/xtls/xray-core/app/stats/command" statsService "github.com/xtls/xray-core/app/stats/command"

View file

@ -3,7 +3,7 @@ package xray
import ( import (
"bytes" "bytes"
"github.com/mhsanaei/3x-ui/v2/util/json_util" "github.com/mhsanaei/3x-ui/v3/util/json_util"
) )
// Config represents the complete Xray configuration structure. // Config represents the complete Xray configuration structure.

View file

@ -3,7 +3,7 @@ package xray
import ( import (
"bytes" "bytes"
"github.com/mhsanaei/3x-ui/v2/util/json_util" "github.com/mhsanaei/3x-ui/v3/util/json_util"
) )
// InboundConfig represents an Xray inbound configuration. // InboundConfig represents an Xray inbound configuration.

View file

@ -5,7 +5,7 @@ import (
"runtime" "runtime"
"strings" "strings"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
) )
// NewLogWriter returns a new LogWriter for processing Xray log output. // NewLogWriter returns a new LogWriter for processing Xray log output.

View file

@ -14,9 +14,9 @@ import (
"syscall" "syscall"
"time" "time"
"github.com/mhsanaei/3x-ui/v2/config" "github.com/mhsanaei/3x-ui/v3/config"
"github.com/mhsanaei/3x-ui/v2/logger" "github.com/mhsanaei/3x-ui/v3/logger"
"github.com/mhsanaei/3x-ui/v2/util/common" "github.com/mhsanaei/3x-ui/v3/util/common"
) )
// GetBinaryName returns the Xray binary filename for the current OS and architecture. // GetBinaryName returns the Xray binary filename for the current OS and architecture.