pub struct LicenseConfig {
pub file: String,
pub grace_period_days: u32,
}Expand description
Enterprise license configuration (DW-032, gateway.license).
When present, the gateway verifies the license file at startup (if
compiled with the ent cargo feature) and gates enterprise features
behind the license’s feature claims. The public key is NOT in this
block — it comes from the DWARA_LICENSE_PUBLIC_KEY env var (or the
compiled-in development key when unset), never user-configurable, so
an operator cannot substitute their own key to forge a license. When
the ent feature is NOT compiled in, the block is accepted but inert
(the gate is always LicenseGate::none()).
Fields§
§file: StringFilesystem path of the license file (JSON: claims + Ed25519 signature). The file is read and verified at startup and on every config reload. A missing file refuses to start at cold start (exit 1); on reload, a missing file keeps the running generation serving.
grace_period_days: u32Grace period in days after the license expires before the gate degrades to OSS (default 7; validated to 0..=30). During the grace window enterprise features still work and a warning is logged. 0 means no grace (immediate degradation on expiry).
Trait Implementations§
Source§impl Clone for LicenseConfig
impl Clone for LicenseConfig
Source§fn clone(&self) -> LicenseConfig
fn clone(&self) -> LicenseConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LicenseConfig
impl Debug for LicenseConfig
Source§impl<'de> Deserialize<'de> for LicenseConfig
impl<'de> Deserialize<'de> for LicenseConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for LicenseConfig
impl JsonSchema for LicenseConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for LicenseConfig
impl PartialEq for LicenseConfig
Source§impl Serialize for LicenseConfig
impl Serialize for LicenseConfig
impl StructuralPartialEq for LicenseConfig
Auto Trait Implementations§
impl Freeze for LicenseConfig
impl RefUnwindSafe for LicenseConfig
impl Send for LicenseConfig
impl Sync for LicenseConfig
impl Unpin for LicenseConfig
impl UnwindSafe for LicenseConfig
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more