From 70c632fd379359f0a2361e485ebf8ef1c03e2f73 Mon Sep 17 00:00:00 2001 From: usanth <111899981+usanth@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:23:27 -0700 Subject: [PATCH] Access Control Entry Expiration (#327) * adding expiration to access control * adding access control expiraiton * update go version * adding access control entry expiraiton --------- Co-authored-by: Utsa Santhosh --- cs/src/Contracts/TunnelAccessControlEntry.cs | 9 +++++++++ go/tunnels/tunnel_access_control_entry.go | 9 +++++++++ go/tunnels/tunnels.go | 2 +- .../tunnels/contracts/TunnelAccessControlEntry.java | 9 +++++++++ rs/src/contracts/tunnel_access_control_entry.rs | 6 ++++++ ts/src/contracts/tunnelAccessControlEntry.ts | 7 +++++++ 6 files changed, 41 insertions(+), 1 deletion(-) diff --git a/cs/src/Contracts/TunnelAccessControlEntry.cs b/cs/src/Contracts/TunnelAccessControlEntry.cs index 1702382c..40071005 100644 --- a/cs/src/Contracts/TunnelAccessControlEntry.cs +++ b/cs/src/Contracts/TunnelAccessControlEntry.cs @@ -157,6 +157,15 @@ public TunnelAccessControlEntry() [ArrayStringLength(TunnelAccessScopes.MaxLength)] public string[] Scopes { get; set; } + /// + /// Gets or sets the expiration for an access control entry. + /// + /// + /// If no value is set then this value is null. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public DateTime? Expiration { get; set; } + /// /// Gets a compact textual representation of the access control entry. /// diff --git a/go/tunnels/tunnel_access_control_entry.go b/go/tunnels/tunnel_access_control_entry.go index 6879ec3e..cf9b6f0d 100644 --- a/go/tunnels/tunnel_access_control_entry.go +++ b/go/tunnels/tunnel_access_control_entry.go @@ -4,6 +4,10 @@ package tunnels +import ( + "time" +) + // Data contract for an access control entry on a `Tunnel` or `TunnelPort`. // // An access control entry (ACE) grants or denies one or more access scopes to one or more @@ -68,6 +72,11 @@ type TunnelAccessControlEntry struct { // // These must be one or more values from `TunnelAccessScopes`. Scopes []string `json:"scopes"` + + // Gets or sets the expiration for an access control entry. + // + // If no value is set then this value is null. + Expiration *time.Time `json:"expiration,omitempty"` } // Constants for well-known identity providers. diff --git a/go/tunnels/tunnels.go b/go/tunnels/tunnels.go index 87c457ac..f6c0704e 100644 --- a/go/tunnels/tunnels.go +++ b/go/tunnels/tunnels.go @@ -10,7 +10,7 @@ import ( "github.com/rodaine/table" ) -const PackageVersion = "0.0.24" +const PackageVersion = "0.0.25" func (tunnel *Tunnel) requestObject() (*Tunnel, error) { convertedTunnel := &Tunnel{ diff --git a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelAccessControlEntry.java b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelAccessControlEntry.java index fe54202c..9d020566 100644 --- a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelAccessControlEntry.java +++ b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelAccessControlEntry.java @@ -5,6 +5,7 @@ package com.microsoft.tunnels.contracts; import com.google.gson.annotations.Expose; +import java.util.Date; /** * Data contract for an access control entry on a {@link Tunnel} or {@link TunnelPort}. @@ -99,6 +100,14 @@ public class TunnelAccessControlEntry { @Expose public String[] scopes; + /** + * Gets or sets the expiration for an access control entry. + * + * If no value is set then this value is null. + */ + @Expose + public Date expiration; + /** * Constants for well-known identity providers. */ diff --git a/rs/src/contracts/tunnel_access_control_entry.rs b/rs/src/contracts/tunnel_access_control_entry.rs index 25846f4c..b36863a9 100644 --- a/rs/src/contracts/tunnel_access_control_entry.rs +++ b/rs/src/contracts/tunnel_access_control_entry.rs @@ -2,6 +2,7 @@ // Licensed under the MIT license. // Generated from ../../../cs/src/Contracts/TunnelAccessControlEntry.cs +use chrono::{DateTime, Utc}; use crate::contracts::TunnelAccessControlEntryType; use serde::{Deserialize, Serialize}; @@ -77,6 +78,11 @@ pub struct TunnelAccessControlEntry { // // These must be one or more values from `TunnelAccessScopes`. pub scopes: Vec, + + // Gets or sets the expiration for an access control entry. + // + // If no value is set then this value is null. + pub expiration: Option>, } // Constants for well-known identity providers. diff --git a/ts/src/contracts/tunnelAccessControlEntry.ts b/ts/src/contracts/tunnelAccessControlEntry.ts index abfc47ed..a05c9ad1 100644 --- a/ts/src/contracts/tunnelAccessControlEntry.ts +++ b/ts/src/contracts/tunnelAccessControlEntry.ts @@ -89,6 +89,13 @@ export interface TunnelAccessControlEntry { * These must be one or more values from {@link TunnelAccessScopes}. */ scopes: string[]; + + /** + * Gets or sets the expiration for an access control entry. + * + * If no value is set then this value is null. + */ + expiration?: Date; } namespace TunnelAccessControlEntry {