-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathmain.go
More file actions
69 lines (54 loc) · 1.83 KB
/
Copy pathmain.go
File metadata and controls
69 lines (54 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"log"
"strings"
"remnawave-migrate/config"
"remnawave-migrate/migrator"
"remnawave-migrate/remnawave"
"remnawave-migrate/source"
"remnawave-migrate/util"
)
var version = "unknown"
func main() {
cfg := config.Parse(version)
cfg.SourceHeaders = util.ParseHeaderMap(cfg.SourceHeadersRaw)
cfg.DestHeaders = util.ParseHeaderMap(cfg.DestHeadersRaw)
if cfg.RemnawaveToken != "" {
if _, exists := cfg.DestHeaders["Authorization"]; !exists {
cfg.DestHeaders["Authorization"] = "Bearer " + cfg.RemnawaveToken
}
}
if cfg.PanelPassword == "" {
log.Fatal("Panel password is required")
}
if cfg.RemnawaveToken == "" {
log.Fatal("Remnawave token is required")
}
if cfg.PreferredStrategy != "" {
validStrategies := map[string]bool{
"NO_RESET": true,
"DAY": true,
"WEEK": true,
"MONTH": true,
}
strategy := strings.ToUpper(cfg.PreferredStrategy)
if !validStrategies[strategy] {
log.Fatalf("Invalid preferred-strategy value: %s. Must be one of: NO_RESET, DAY, WEEK, MONTH", cfg.PreferredStrategy)
}
cfg.PreferredStrategy = strategy
}
log.Printf("Starting migration from %s panel...", cfg.PanelType)
sourcePanel, err := source.Factory(cfg.PanelType, cfg.PanelURL, cfg.SourceHeaders)
if err != nil {
log.Fatalf("Failed to create source panel: %v", err)
}
if err := sourcePanel.Login(cfg.PanelUsername, cfg.PanelPassword); err != nil {
log.Fatalf("Login failed: %v", err)
}
remnaPanel := remnawave.NewPanel(cfg.RemnawaveURL, cfg.RemnawaveToken, cfg.DestHeaders)
m := migrator.New(sourcePanel, remnaPanel, cfg.PreferredStrategy, cfg.PreserveStatus, cfg.PreserveSubHash, cfg.InternalSquad, cfg.ExternalSquad)
if err := m.MigrateUsers(cfg.BatchSize, cfg.LastUsers); err != nil {
log.Fatalf("Migration failed: %v", err)
}
log.Println("Migration completed successfully!")
}