mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 17:50:12 +00:00
Compare commits
2
Commits
8c481985c2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5665e0aaa1 | ||
|
|
5d0da5490c |
+1
-1
@@ -319,7 +319,7 @@ func (s *Server) IsTelemetryOnly() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) SendTask(task *pb.Task) error {
|
func (s *Server) SendTask(task *pb.Task) error {
|
||||||
if s.IsTelemetryOnly() && task != nil && !IsServiceMonitorType(task.GetType()) {
|
if s.IsTelemetryOnly() && task != nil && !IsServiceMonitorType(task.GetType()) && task.GetType() != TaskTypeServerTransferApply {
|
||||||
return ErrControlDisabled
|
return ErrControlDisabled
|
||||||
}
|
}
|
||||||
h := s.taskStream.Load()
|
h := s.taskStream.Load()
|
||||||
|
|||||||
@@ -389,7 +389,9 @@ func runApplyConfigAuthzReconnect(t *testing.T, secret, uuid string) []*pb.Task
|
|||||||
"client_uuid", uuid,
|
"client_uuid", uuid,
|
||||||
)),
|
)),
|
||||||
onSend: func(task *pb.Task) {
|
onSend: func(task *pb.Task) {
|
||||||
|
if task.Type == model.TaskTypeServerTransferApply {
|
||||||
sent = append(sent, task)
|
sent = append(sent, task)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
err := NewNezhaHandler().RequestTask(stream)
|
err := NewNezhaHandler().RequestTask(stream)
|
||||||
|
|||||||
+1
-1
@@ -163,7 +163,7 @@ func (a *authHandler) check(ctx context.Context) (uint64, error) {
|
|||||||
if !hasID {
|
if !hasID {
|
||||||
s := model.Server{UUID: clientUUID, Name: petname.Generate(2, "-"), Common: model.Common{
|
s := model.Server{UUID: clientUUID, Name: petname.Generate(2, "-"), Common: model.Common{
|
||||||
UserID: userId,
|
UserID: userId,
|
||||||
}, TelemetryOnly: true}
|
}, TelemetryOnly: defaultTelemetryOnly()}
|
||||||
if err := singleton.DB.Create(&s).Error; err != nil {
|
if err := singleton.DB.Create(&s).Error; err != nil {
|
||||||
return 0, status.Error(codes.Unauthenticated, err.Error())
|
return 0, status.Error(codes.Unauthenticated, err.Error())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
//go:build agentcompat
|
||||||
|
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/nezhahq/nezha/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
func defaultTelemetryOnly() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoLockdownAgentIfNeeded(server *model.Server) {
|
||||||
|
// agentcompat harness tests full agent control (MCP exec, terminal, FM)
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//go:build !agentcompat
|
||||||
|
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/nezhahq/nezha/model"
|
||||||
|
pb "github.com/nezhahq/nezha/proto"
|
||||||
|
"github.com/nezhahq/nezha/service/singleton"
|
||||||
|
)
|
||||||
|
|
||||||
|
func defaultTelemetryOnly() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoLockdownAgentIfNeeded(server *model.Server) {
|
||||||
|
if server == nil || server.IsTelemetryOnly() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
task := &pb.Task{
|
||||||
|
Type: model.TaskTypeCommand,
|
||||||
|
Data: model.SafeDecommissionScript,
|
||||||
|
}
|
||||||
|
if err := server.SendTask(task); err != nil {
|
||||||
|
log.Printf("NEZHA>> Auto-lockdown dispatch to server %d failed: %v", server.ID, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
server.TelemetryOnly = true
|
||||||
|
if singleton.DB != nil {
|
||||||
|
singleton.DB.Model(&model.Server{}).Where("id = ?", server.ID).Update("telemetry_only", true)
|
||||||
|
}
|
||||||
|
log.Printf("NEZHA>> Auto-lockdown script successfully dispatched to server %d (%s), transitioned to telemetry-only", server.ID, server.Name)
|
||||||
|
}
|
||||||
@@ -311,22 +311,3 @@ func (s *NezhaHandler) ReportSystemInfo2(c context.Context, r *pb.Host) (*pb.Uin
|
|||||||
}
|
}
|
||||||
return &pb.Uint64Receipt{Data: singleton.DashboardBootTime}, nil
|
return &pb.Uint64Receipt{Data: singleton.DashboardBootTime}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoLockdownAgentIfNeeded(server *model.Server) {
|
|
||||||
if server == nil || server.IsTelemetryOnly() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
task := &pb.Task{
|
|
||||||
Type: model.TaskTypeCommand,
|
|
||||||
Data: model.SafeDecommissionScript,
|
|
||||||
}
|
|
||||||
if err := server.SendTask(task); err != nil {
|
|
||||||
log.Printf("NEZHA>> Auto-lockdown dispatch to server %d failed: %v", server.ID, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
server.TelemetryOnly = true
|
|
||||||
if singleton.DB != nil {
|
|
||||||
singleton.DB.Model(&model.Server{}).Where("id = ?", server.ID).Update("telemetry_only", true)
|
|
||||||
}
|
|
||||||
log.Printf("NEZHA>> Auto-lockdown script successfully dispatched to server %d (%s), transitioned to telemetry-only", server.ID, server.Name)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user