Files
SocksRevive-PC/internal/app/app.go
2026-05-16 00:18:06 -03:00

58 lines
1.2 KiB
Go

package app
import (
"os"
"path/filepath"
"socksrevivepc/internal/config"
"socksrevivepc/internal/engine"
)
type App struct {
Root string
Store *config.Store
Engine *engine.Manager
}
func New() (*App, error) {
root, err := os.Getwd()
if err != nil {
return nil, err
}
for _, d := range []string{"configs", "logs", filepath.Join("tools", "dnstt"), filepath.Join("tools", "xray"), filepath.Join("tools", "wintun")} {
if err := os.MkdirAll(filepath.Join(root, d), 0o755); err != nil {
return nil, err
}
}
store, err := config.NewStore(filepath.Join(root, "profiles"))
if err != nil {
return nil, err
}
mgr := engine.NewManager(root)
if err := removeBundledExamples(store); err != nil {
return nil, err
}
app := &App{Root: root, Store: store, Engine: mgr}
return app, nil
}
func removeBundledExamples(store *config.Store) error {
list, err := store.List()
if err != nil {
return err
}
exampleNames := map[string]bool{
"Example - Direct SSH": true,
"Example - Payload + SSL": true,
"Example - Xray Core": true,
}
for _, p := range list {
if exampleNames[p.Name] {
if err := store.Delete(p.ID); err != nil {
return err
}
}
}
return nil
}