Skip to content

Commit 17e2e83

Browse files
committed
feat: Add node service detection
1 parent da73f26 commit 17e2e83

File tree

10 files changed

+151
-20
lines changed

10 files changed

+151
-20
lines changed

agent/app/api/v2/setting.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,11 @@ func (b *BaseApi) UpdateSetting(c *gin.Context) {
6363
func (b *BaseApi) LoadBaseDir(c *gin.Context) {
6464
helper.SuccessWithData(c, global.CONF.System.DataDir)
6565
}
66+
67+
func (b *BaseApi) ReloadConn(c *gin.Context) {
68+
if err := settingService.ReloadConn(); err != nil {
69+
helper.InternalServer(c, err)
70+
return
71+
}
72+
helper.SuccessWithOutData(c)
73+
}

agent/app/service/setting.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,20 @@ import (
55
"time"
66

77
"github.com/1Panel-dev/1Panel/agent/app/dto"
8+
"github.com/1Panel-dev/1Panel/agent/app/repo"
89
"github.com/1Panel-dev/1Panel/agent/constant"
10+
"github.com/1Panel-dev/1Panel/agent/global"
11+
"github.com/1Panel-dev/1Panel/agent/utils/encrypt"
12+
"github.com/1Panel-dev/1Panel/agent/utils/xpack"
913
)
1014

1115
type SettingService struct{}
1216

1317
type ISettingService interface {
1418
GetSettingInfo() (*dto.SettingInfo, error)
1519
Update(key, value string) error
20+
21+
ReloadConn() error
1622
}
1723

1824
func NewISettingService() ISettingService {
@@ -59,3 +65,52 @@ func (u *SettingService) Update(key, value string) error {
5965
}
6066
return nil
6167
}
68+
69+
func (u *SettingService) ReloadConn() error {
70+
if global.IsMaster {
71+
return nil
72+
}
73+
isLocal, nodeInfo, err := xpack.LoadNodeInfo()
74+
if err != nil {
75+
global.LOG.Errorf("load new node info failed, err: %v", err)
76+
return nil
77+
}
78+
if isLocal {
79+
return nil
80+
}
81+
82+
settingRepo := repo.NewISettingRepo()
83+
itemKey, _ := encrypt.StringEncrypt(nodeInfo.ServerKey)
84+
if err := settingRepo.Update("ServerKey", itemKey); err != nil {
85+
global.LOG.Errorf("update server key failed, err: %v", err)
86+
return nil
87+
}
88+
itemCrt, _ := encrypt.StringEncrypt(nodeInfo.ServerCrt)
89+
if err := settingRepo.Update("ServerCrt", itemCrt); err != nil {
90+
global.LOG.Errorf("update server crt failed, err: %v", err)
91+
return nil
92+
}
93+
if err := settingRepo.Update("CurrentNode", nodeInfo.CurrentNode); err != nil {
94+
global.LOG.Errorf("update current node failed, err: %v", err)
95+
return nil
96+
}
97+
if err := settingRepo.Update("SystemVersion", nodeInfo.Version); err != nil {
98+
global.LOG.Errorf("update system version failed, err: %v", err)
99+
return nil
100+
}
101+
if err := settingRepo.Update("BaseDir", nodeInfo.BaseDir); err != nil {
102+
global.LOG.Errorf("update base dir failed, err: %v", err)
103+
return nil
104+
}
105+
if err := settingRepo.Update("MasterAddr", nodeInfo.MasterAddr); err != nil {
106+
global.LOG.Errorf("update master addr failed, err: %v", err)
107+
return nil
108+
}
109+
110+
global.CONF.System.BaseDir, _ = settingRepo.GetValueByKey("BaseDir")
111+
global.CONF.System.Version, _ = settingRepo.GetValueByKey("SystemVersion")
112+
global.CONF.System.EncryptKey, _ = settingRepo.GetValueByKey("EncryptKey")
113+
global.CONF.System.CurrentNode, _ = settingRepo.GetValueByKey("CurrentNode")
114+
global.CONF.System.MasterAddr, _ = settingRepo.GetValueByKey("MasterAddr")
115+
return nil
116+
}

agent/go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ require (
1111
github.com/docker/docker v27.1.0+incompatible
1212
github.com/docker/go-connections v0.5.0
1313
github.com/fsnotify/fsnotify v1.7.0
14-
github.com/gin-contrib/gzip v1.0.1
1514
github.com/gin-gonic/gin v1.10.0
1615
github.com/glebarez/sqlite v1.11.0
1716
github.com/go-acme/lego/v4 v4.17.4

agent/go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,6 @@ github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM4
217217
github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
218218
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
219219
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
220-
github.com/gin-contrib/gzip v1.0.1 h1:HQ8ENHODeLY7a4g1Au/46Z92bdGFl74OhxcZble9WJE=
221-
github.com/gin-contrib/gzip v1.0.1/go.mod h1:njt428fdUNRvjuJf16tZMYZ2Yl+WQB53X5wmhDwXvC4=
222220
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
223221
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
224222
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=

agent/init/hook/hook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
func Init() {
17-
initWithNodeJson()
17+
service.NewISettingService().ReloadConn()
1818
initGlobalData()
1919
handleCronjobStatus()
2020
handleSnapStatus()

agent/router/ro_setting.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ func (s *SettingRouter) InitRouter(Router *gin.RouterGroup) {
1414
settingRouter.POST("/search", baseApi.GetSettingInfo)
1515
settingRouter.GET("/search/available", baseApi.GetSystemAvailable)
1616
settingRouter.POST("/update", baseApi.UpdateSetting)
17+
settingRouter.POST("/conn/reload", baseApi.ReloadConn)
1718

1819
settingRouter.GET("/snapshot/load", baseApi.LoadSnapshotData)
1920
settingRouter.POST("/snapshot", baseApi.CreateSnapshot)

core/app/service/setting.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func (u *SettingService) UpdatePort(port uint) error {
187187
if common.ScanPort(int(port)) {
188188
return buserr.WithDetail(constant.ErrPortInUsed, port, nil)
189189
}
190-
oldPort, err := settingRepo.Get(repo.WithByKey("Port"))
190+
oldPort, err := settingRepo.Get(repo.WithByKey("ServerPort"))
191191
if err != nil {
192192
return err
193193
}
@@ -197,6 +197,20 @@ func (u *SettingService) UpdatePort(port uint) error {
197197
if err := firewall.UpdatePort(oldPort.Value, fmt.Sprintf("%v", port)); err != nil {
198198
return err
199199
}
200+
masterAddr, err := settingRepo.Get(repo.WithByKey("MasterAddr"))
201+
if err != nil {
202+
global.LOG.Errorf("load master addr from db failed, err: %v", err)
203+
return err
204+
}
205+
if len(masterAddr.Value) != 0 {
206+
oldMasterPort := loadPort(masterAddr.Value)
207+
if len(oldMasterPort) != 0 {
208+
if err := xpack.UpdateMasterAddr(strings.ReplaceAll(masterAddr.Value, oldMasterPort, fmt.Sprintf("%v", port))); err != nil {
209+
global.LOG.Errorf("update master addr from db failed, err: %v", err)
210+
return err
211+
}
212+
}
213+
}
200214

201215
if err := settingRepo.Update("ServerPort", strconv.Itoa(int(port))); err != nil {
202216
return err
@@ -208,20 +222,6 @@ func (u *SettingService) UpdatePort(port uint) error {
208222
global.LOG.Errorf("restart system port failed, err: %v", err)
209223
}
210224
}()
211-
masterAddr, err := settingRepo.Get(repo.WithByKey("MasterAddr"))
212-
if err != nil {
213-
global.LOG.Errorf("load master addr from db failed, err: %v", err)
214-
return
215-
}
216-
if len(masterAddr.Value) != 0 {
217-
oldMasterPort := loadPort(masterAddr.Value)
218-
if len(oldMasterPort) != 0 {
219-
if err := xpack.UpdateMasterAddr(strings.ReplaceAll(masterAddr.Value, oldMasterPort, fmt.Sprintf("%v", port))); err != nil {
220-
global.LOG.Errorf("update master addr from db failed, err: %v", err)
221-
return
222-
}
223-
}
224-
}
225225
}()
226226
return nil
227227
}

core/constant/status.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const (
88
StatusWaiting = "Waiting"
99
StatusPacking = "Packing"
1010
StatusSending = "Sending"
11-
StatusChecking = "Checking"
1211
StatusStarting = "Starting"
1312
StatusHealthy = "Healthy"
1413
StatusUnhealthy = "Unhealthy"
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<template>
2+
<el-dialog
3+
:title="title"
4+
v-model="dialogVisible"
5+
:destroy-on-close="true"
6+
:close-on-click-modal="false"
7+
:width="size"
8+
>
9+
<div v-if="slots.content">
10+
<slot name="content"></slot>
11+
</div>
12+
<el-row v-else>
13+
<el-col :span="22" :offset="1">
14+
<slot></slot>
15+
</el-col>
16+
</el-row>
17+
18+
<template #footer v-if="slots.footer">
19+
<slot name="footer"></slot>
20+
</template>
21+
</el-dialog>
22+
</template>
23+
24+
<script lang="ts" setup>
25+
import { computed, useSlots } from 'vue';
26+
defineOptions({ name: 'DrawerPro' });
27+
28+
const props = defineProps({
29+
title: String,
30+
size: {
31+
type: String,
32+
default: 'normal',
33+
},
34+
modelValue: {
35+
type: Boolean,
36+
default: false,
37+
},
38+
});
39+
40+
const slots = useSlots();
41+
42+
const emit = defineEmits(['update:modelValue', 'close']);
43+
44+
const size = computed(() => {
45+
switch (props.size) {
46+
case 'small':
47+
return '30%';
48+
case 'normal':
49+
return '40%';
50+
case 'large':
51+
return '50%';
52+
case 'full':
53+
return '100%';
54+
case '60%':
55+
return '60%';
56+
default:
57+
return '50%';
58+
}
59+
});
60+
61+
const dialogVisible = computed({
62+
get() {
63+
return props.modelValue;
64+
},
65+
set(value: boolean) {
66+
emit('update:modelValue', value);
67+
},
68+
});
69+
</script>

frontend/src/components/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import CopyButton from '@/components/copy-button/index.vue';
1212
import MsgInfo from '@/components/msg-info/index.vue';
1313
import MainDiv from '@/components/main-div/index.vue';
1414
import DrawerPro from '@/components/drawer-pro/index.vue';
15+
import DialogPro from '@/components/dialog-pro/index.vue';
1516
export default {
1617
install(app: App) {
1718
app.component(LayoutContent.name, LayoutContent);
@@ -27,5 +28,6 @@ export default {
2728
app.component(MsgInfo.name, MsgInfo);
2829
app.component(MainDiv.name, MainDiv);
2930
app.component(DrawerPro.name, DrawerPro);
31+
app.component(DialogPro.name, DialogPro);
3032
},
3133
};

0 commit comments

Comments
 (0)