Ocpp: reject unwanted local sessions (#14861)

This commit is contained in:
andig 2024-07-14 10:00:43 +02:00 • committed by GitHub
parent 5c9d63f0d9
commit e8b526feae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 8 deletions

View file

@ -133,6 +133,7 @@ func NewOCPP(id string, connector int, idtag string,
if err != nil {
return nil, err
}
conn.AllowStart(autoStart)
c := &OCPP{
log: log,
@ -376,6 +377,11 @@ func (c *OCPP) enableRemote(enable bool) error {
return err
}
if enable {
c.conn.AllowStart(true)
defer c.conn.AllowStart(false)
}
rc := make(chan error, 1)
if enable {
if txn > 0 {

View file

@ -22,8 +22,9 @@ type Connector struct {
cp *CP
id int
status *core.StatusNotificationRequest
statusC chan struct{}
allowStart bool
status *core.StatusNotificationRequest
statusC chan struct{}
meterUpdated time.Time
measurements map[types.Measurand]types.SampledValue
@ -68,6 +69,12 @@ func (conn *Connector) IdTag() string {
return conn.idTag
}
func (conn *Connector) AllowStart(allow bool) {
conn.mu.Lock()
defer conn.mu.Unlock()
conn.allowStart = allow
}
func (conn *Connector) TriggerMessageRequest(feature remotetrigger.MessageTrigger, f ...func(request *remotetrigger.TriggerMessageRequest)) {
Instance().TriggerMessageRequest(conn.cp.ID(), feature, func(request *remotetrigger.TriggerMessageRequest) {
request.ConnectorId = &conn.id

View file

@ -86,15 +86,19 @@ func (conn *Connector) StartTransaction(request *core.StartTransactionRequest) (
return res, nil
}
conn.txnCount++
conn.txnId = conn.txnCount
conn.idTag = request.IdTag
res := &core.StartTransactionConfirmation{
IdTagInfo: &types.IdTagInfo{
Status: types.AuthorizationStatusAccepted,
Status: types.AuthorizationStatusBlocked,
},
TransactionId: conn.txnId,
}
if conn.allowStart {
conn.txnCount++
conn.txnId = conn.txnCount
conn.idTag = request.IdTag
res.IdTagInfo.Status = types.AuthorizationStatusAccepted
res.TransactionId = conn.txnId
}
return res, nil