-
Notifications
You must be signed in to change notification settings - Fork 0
/
eng_state_run.go
98 lines (82 loc) · 2.3 KB
/
eng_state_run.go
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package engine
import (
"JkLNetDef/engine/config"
"JkLNetDef/engine/interfacies"
"JkLNetDef/engine/modules/base_logger"
"JkLNetDef/engine/proxy"
"errors"
"fmt"
)
// engineRun - состояние движка - запущен.
type engineStateRun struct {
*Engine
}
// run - запуск движка.
func (engine *engineStateRun) run() error {
return errors.New("Движок уже запущен.. ")
}
// stop - остановка движка.
func (engine *engineStateRun) stop() error {
engine.Modules.Logger.INFO(base_logger.Message{
Sender: "ENGINE",
Text: "Завершение работы движка... ",
})
// Остановка прокси
{
prxs, err := engine.ProxyStorage.GetAll()
if err != nil {
engine.Modules.Logger.ERROR(err.Error())
return err
}
for _, prx := range prxs {
if err := prx.Stop(); err != nil {
engine.Modules.Logger.ERROR(err.Error())
continue
}
}
}
// Остановка анализа контроллера репутации
{
engine.Modules.ControllerReputation.StopAnalise()
}
// Остановка API
{
if err := engine.Api.Http.Stop(); err != nil {
engine.Modules.Logger.ERROR(err.Error())
return err
}
}
// Отключение бд
{
if err := engine.Databases.Disconnect(); err != nil {
engine.Modules.Logger.ERROR(err.Error())
}
}
engine.Modules.Logger.INFO(base_logger.Message{
Sender: "ENGINE",
Text: "Движок остановлен. ",
})
return nil
}
// newProxy - создание прокси.
func (engine *engineStateRun) newProxy(cfg *config.ProxyConfig) (interfacies.HttpProxy, error) {
prx, err := proxy.New(cfg, engine.Modules.Blocker, engine.Utils.Synchronizer, engine.Modules.ControllerReputation,
engine.Modules.Logger, engine.Services)
if err != nil {
engine.Modules.Logger.ERROR(err.Error())
return nil, err
}
// Сохранение прокси
{
if err = engine.ProxyStorage.Add(prx); err != nil {
engine.Modules.Logger.ERROR(err.Error())
return nil, err
}
engine.Config.Proxies[prx.GetID().String()] = prx.GetConfig()
}
engine.Modules.Logger.INFO(base_logger.Message{
Sender: "ENGINE",
Text: fmt.Sprintf("Прокси '%s %s' по протоколу %s создан. ", prx.GetTitle(), prx.GetType(), prx.GetProtocol()),
})
return prx, nil
}