added bounds for /agent/access#[autoStartPort|autoEndPort] (#967)

This commit is contained in:
Michael Quigley 2025-06-04 15:12:13 -04:00
parent 6b995e0f35
commit c761a6636c
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
6 changed files with 124 additions and 9 deletions

View File

@ -11,9 +11,11 @@ import (
"fmt"
"io"
"github.com/go-openapi/errors"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
"github.com/go-openapi/validate"
)
// RemoteAccessReader is a Reader for the RemoteAccess structure.
@ -301,12 +303,16 @@ type RemoteAccessBody struct {
AutoAddress string `json:"autoAddress,omitempty"`
// auto end port
// Maximum: 65535
// Minimum: 1
AutoEndPort int64 `json:"autoEndPort,omitempty"`
// auto mode
AutoMode bool `json:"autoMode,omitempty"`
// auto start port
// Maximum: 65535
// Minimum: 1
AutoStartPort int64 `json:"autoStartPort,omitempty"`
// bind address
@ -324,6 +330,51 @@ type RemoteAccessBody struct {
// Validate validates this remote access body
func (o *RemoteAccessBody) Validate(formats strfmt.Registry) error {
var res []error
if err := o.validateAutoEndPort(formats); err != nil {
res = append(res, err)
}
if err := o.validateAutoStartPort(formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (o *RemoteAccessBody) validateAutoEndPort(formats strfmt.Registry) error {
if swag.IsZero(o.AutoEndPort) { // not required
return nil
}
if err := validate.MinimumInt("body"+"."+"autoEndPort", "body", o.AutoEndPort, 1, false); err != nil {
return err
}
if err := validate.MaximumInt("body"+"."+"autoEndPort", "body", o.AutoEndPort, 65535, false); err != nil {
return err
}
return nil
}
func (o *RemoteAccessBody) validateAutoStartPort(formats strfmt.Registry) error {
if swag.IsZero(o.AutoStartPort) { // not required
return nil
}
if err := validate.MinimumInt("body"+"."+"autoStartPort", "body", o.AutoStartPort, 1, false); err != nil {
return err
}
if err := validate.MaximumInt("body"+"."+"autoStartPort", "body", o.AutoStartPort, 65535, false); err != nil {
return err
}
return nil
}

View File

@ -206,13 +206,17 @@ func init() {
"type": "string"
},
"autoEndPort": {
"type": "integer"
"type": "integer",
"maximum": 65535,
"minimum": 1
},
"autoMode": {
"type": "boolean"
},
"autoStartPort": {
"type": "integer"
"type": "integer",
"maximum": 65535,
"minimum": 1
},
"bindAddress": {
"type": "string"
@ -3026,13 +3030,17 @@ func init() {
"type": "string"
},
"autoEndPort": {
"type": "integer"
"type": "integer",
"maximum": 65535,
"minimum": 1
},
"autoMode": {
"type": "boolean"
},
"autoStartPort": {
"type": "integer"
"type": "integer",
"maximum": 65535,
"minimum": 1
},
"bindAddress": {
"type": "string"

View File

@ -9,9 +9,11 @@ import (
"context"
"net/http"
"github.com/go-openapi/errors"
"github.com/go-openapi/runtime/middleware"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
"github.com/go-openapi/validate"
"github.com/openziti/zrok/rest_model_zrok"
)
@ -82,12 +84,16 @@ type RemoteAccessBody struct {
AutoAddress string `json:"autoAddress,omitempty"`
// auto end port
// Maximum: 65535
// Minimum: 1
AutoEndPort int64 `json:"autoEndPort,omitempty"`
// auto mode
AutoMode bool `json:"autoMode,omitempty"`
// auto start port
// Maximum: 65535
// Minimum: 1
AutoStartPort int64 `json:"autoStartPort,omitempty"`
// bind address
@ -105,6 +111,51 @@ type RemoteAccessBody struct {
// Validate validates this remote access body
func (o *RemoteAccessBody) Validate(formats strfmt.Registry) error {
var res []error
if err := o.validateAutoEndPort(formats); err != nil {
res = append(res, err)
}
if err := o.validateAutoStartPort(formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (o *RemoteAccessBody) validateAutoEndPort(formats strfmt.Registry) error {
if swag.IsZero(o.AutoEndPort) { // not required
return nil
}
if err := validate.MinimumInt("body"+"."+"autoEndPort", "body", o.AutoEndPort, 1, false); err != nil {
return err
}
if err := validate.MaximumInt("body"+"."+"autoEndPort", "body", o.AutoEndPort, 65535, false); err != nil {
return err
}
return nil
}
func (o *RemoteAccessBody) validateAutoStartPort(formats strfmt.Registry) error {
if swag.IsZero(o.AutoStartPort) { // not required
return nil
}
if err := validate.MinimumInt("body"+"."+"autoStartPort", "body", o.AutoStartPort, 1, false); err != nil {
return err
}
if err := validate.MaximumInt("body"+"."+"autoStartPort", "body", o.AutoStartPort, 65535, false); err != nil {
return err
}
return nil
}

View File

@ -40,8 +40,8 @@ class TestRemoteAccessRequest(unittest.TestCase):
bind_address = '',
auto_mode = True,
auto_address = '',
auto_start_port = 56,
auto_end_port = 56,
auto_start_port = 1,
auto_end_port = 1,
response_headers = [
''
]

View File

@ -17,8 +17,9 @@ import pprint
import re # noqa: F401
import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from typing import Optional, Set
from typing_extensions import Self
@ -31,8 +32,8 @@ class RemoteAccessRequest(BaseModel):
bind_address: Optional[StrictStr] = Field(default=None, alias="bindAddress")
auto_mode: Optional[StrictBool] = Field(default=None, alias="autoMode")
auto_address: Optional[StrictStr] = Field(default=None, alias="autoAddress")
auto_start_port: Optional[StrictInt] = Field(default=None, alias="autoStartPort")
auto_end_port: Optional[StrictInt] = Field(default=None, alias="autoEndPort")
auto_start_port: Optional[Annotated[int, Field(le=65535, strict=True, ge=1)]] = Field(default=None, alias="autoStartPort")
auto_end_port: Optional[Annotated[int, Field(le=65535, strict=True, ge=1)]] = Field(default=None, alias="autoEndPort")
response_headers: Optional[List[StrictStr]] = Field(default=None, alias="responseHeaders")
__properties: ClassVar[List[str]] = ["envZId", "token", "bindAddress", "autoMode", "autoAddress", "autoStartPort", "autoEndPort", "responseHeaders"]

View File

@ -640,8 +640,12 @@ paths:
type: string
autoStartPort:
type: integer
minimum: 1
maximum: 65535
autoEndPort:
type: integer
minimum: 1
maximum: 65535
responseHeaders:
type: array
items: