Add Security on NATS PEER CREATE flow + drone test

This commit is contained in:
mr
2026-02-06 08:49:43 +01:00
parent 2552eb5f56
commit fdf651d188
4 changed files with 62 additions and 3 deletions

30
.drone.yml Normal file
View File

@@ -0,0 +1,30 @@
kind: pipeline
type: docker
name: build-and-push
trigger:
branch:
- main
steps:
- name: docker-login-build-push
image: docker:26
volumes:
- name: docker_sock
path: /var/run/docker.sock
environment:
DOCKER_USERNAME:
from_secret: docker-user
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_REGISTRY:
from_secret: docker-pw
IMAGE_NAME: ghcr.io/mon-org/mon-app
commands:
- echo "$DOCKER_PASSWORD" | docker login opencloudregistry -u "$DOCKER_USERNAME" --password-stdin
- make ci
volumes:
- name: docker_sock
host:
path: /var/run/docker.sock

View File

@@ -35,8 +35,15 @@ docker-deploy:
run-docker: docker publish-kind publish-registry docker-deploy run-docker: docker publish-kind publish-registry docker-deploy
prepare-multiarch:
docker buildx create --name multiarch --driver docker-container --use
docker run --privileged --rm tonistiigi/binfmt --install all | true
docker-multiarch:
DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t opencloudregistry/oc-peer:latest --push .
ci: prepare-multiarch docker-multiarch
all: docker publish-kind all: docker publish-kind
ci: docker publish-registry
.PHONY: build run clean docker publish-kind publish-registry .PHONY: build run clean docker publish-kind publish-registry

View File

@@ -1,7 +1,10 @@
package controllers package controllers
import ( import (
"encoding/json"
oclib "cloud.o-forge.io/core/oc-lib" oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/config"
"cloud.o-forge.io/core/oc-lib/dbs" "cloud.o-forge.io/core/oc-lib/dbs"
"cloud.o-forge.io/core/oc-lib/models/peer" "cloud.o-forge.io/core/oc-lib/models/peer"
"cloud.o-forge.io/core/oc-lib/tools" "cloud.o-forge.io/core/oc-lib/tools"
@@ -199,6 +202,16 @@ func (o *PeerController) changeRelation(dest *peer.Peer, relation peer.PeerRelat
"relation": relation, "relation": relation,
}, dest.GetID()) }, dest.GetID())
if data.Err != "" && data.Data != nil {
b, _ := json.Marshal(data.Data)
go tools.NewNATSCaller().SetNATSPub(tools.CREATE_RESOURCE, tools.NATSResponse{
FromApp: config.GetAppName(),
Datatype: tools.DataType(tools.PEER),
Method: int(tools.CREATE_PEER),
Payload: b,
})
}
o.Data["json"] = data o.Data["json"] = data
o.ServeJSON() o.ServeJSON()
return return
@@ -211,6 +224,8 @@ func (o *PeerController) changeRelation(dest *peer.Peer, relation peer.PeerRelat
o.ServeJSON() o.ServeJSON()
} }
// TODO : link
// @Title DeleteState // @Title DeleteState
// @Description delete state peer by peerid // @Description delete state peer by peerid
// @Param id path string true "the peer id you want to delete state" // @Param id path string true "the peer id you want to delete state"

View File

@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
oclib "cloud.o-forge.io/core/oc-lib" oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/config"
"cloud.o-forge.io/core/oc-lib/models" "cloud.o-forge.io/core/oc-lib/models"
"cloud.o-forge.io/core/oc-lib/models/peer" "cloud.o-forge.io/core/oc-lib/models/peer"
"cloud.o-forge.io/core/oc-lib/tools" "cloud.o-forge.io/core/oc-lib/tools"
@@ -14,6 +15,9 @@ func ListenNATS() {
fmt.Println("ListenNATS") fmt.Println("ListenNATS")
tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){ tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){
tools.CREATE_PEER: func(resp tools.NATSResponse) { tools.CREATE_PEER: func(resp tools.NATSResponse) {
if resp.FromApp == config.GetAppName() {
return
}
logger := oclib.GetLogger() logger := oclib.GetLogger()
m := map[string]interface{}{} m := map[string]interface{}{}
err := json.Unmarshal(resp.Payload, &m) err := json.Unmarshal(resp.Payload, &m)
@@ -33,7 +37,10 @@ func ListenNATS() {
} }
}, },
tools.REMOVE_PEER: func(tools.NATSResponse) { tools.REMOVE_PEER: func(resp tools.NATSResponse) {
if resp.FromApp == config.GetAppName() {
return
}
p := &peer.Peer{} p := &peer.Peer{}
access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil) access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
access.DeleteOne(p.GetID()) access.DeleteOne(p.GetID())