| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package job
- import (
- "github.com/mhsanaei/3x-ui/v3/internal/amneziawgnet"
- "github.com/mhsanaei/3x-ui/v3/internal/logger"
- "github.com/mhsanaei/3x-ui/v3/internal/web/service"
- )
- // AmneziaWGJob reconciles the running embedded AmneziaWG interfaces
- // (internal/amneziawgnet -- amneziawg-go over a gVisor netstack, no kernel
- // module) against the enabled AmneziaWG inbounds in the database,
- // rebuilding/reconfiguring any that drifted. Unlike the retired
- // kernel-module Manager this job used to drive, there is no traffic/
- // online-status accounting here at all: once a peer's decapsulated traffic
- // is relayed into Xray's own SOCKS5 inbound (see
- // internal/web/service/xray.go's injectAmneziawgnetSocks, and
- // internal/amneziawgnet.Manager's automatic forwarder/relay wiring), it's
- // an ordinary Xray user, and XrayTrafficJob's existing, protocol-blind
- // stats/online-status polling already picks it up for free.
- type AmneziaWGJob struct {
- inboundService service.InboundService
- }
- // NewAmneziaWGJob creates a new AmneziaWG reconcile job instance.
- func NewAmneziaWGJob() *AmneziaWGJob {
- return new(AmneziaWGJob)
- }
- // Run reconciles desired AmneziaWG inbounds with running embedded interfaces.
- func (j *AmneziaWGJob) Run() {
- desired, err := j.inboundService.DesiredAmneziaWGInstances()
- if err != nil {
- logger.Warning("amneziawg job: get desired instances failed:", err)
- return
- }
- wanted := make([]amneziawgnet.Desired, 0, len(desired))
- for _, inst := range desired {
- wanted = append(wanted, amneziawgnet.Desired{
- Instance: inst,
- Options: amneziawgnet.DeviceOptions{
- HeaderProtectionKey: inst.Obfuscation.HeaderProtectionKey,
- ContentPaddingAddition: inst.Obfuscation.ContentPaddingAddition,
- RekeyAfterTime: inst.Obfuscation.RekeyAfterTime,
- RekeyTimeout: inst.Obfuscation.RekeyTimeout,
- RejectAfterTime: inst.Obfuscation.RejectAfterTime,
- KeepaliveTimeout: inst.Obfuscation.KeepaliveTimeout,
- MaxHandshakeAttempts: inst.Obfuscation.MaxHandshakeAttempts,
- RandomTrailers: inst.Obfuscation.RandomTrailers,
- DisableCookies: inst.Obfuscation.DisableCookies,
- },
- })
- }
- amneziawgnet.GetManager().Reconcile(wanted)
- }
|