Skip to content

Commit d155c5d

Browse files
authored
support protobuf versioning (#2458)
* update protos * adjust protobuf imports for new proto structure * update service name * go back to a simpler approach * update protos * fall back to v1 worker module * update protobuf submodule * update imports for new client_types protobuf module * update proto submodule * update imports for updated protos * handle updated handshake type * formatting * handle proto naming updates * update protobuf submodule * replace raw integers with enum
1 parent 3d64e42 commit d155c5d

28 files changed

Lines changed: 275 additions & 164 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ parse_link_header = "0.4"
7676
paste = "1.0"
7777
pgp = { version = "0.19", default-features = false }
7878
prost = "0.14"
79+
prost-types = "0.14"
7980
pulldown-cmark = "0.13"
8081
# match version used by sqlx
8182
rand = "0.8"

crates/defguard_core/src/enterprise/firewall/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,7 @@ fn get_source_addrs(
559559
None
560560
}
561561
}
562+
IpVersion::Unspecified => None,
562563
})
563564
.collect();
564565

crates/defguard_core/src/enterprise/grpc/desktop_client_mfa.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
use defguard_common::{db::models::Settings, types::AuthFlowType};
2-
use defguard_proto::proxy::{ClientMfaOidcAuthenticateRequest, DeviceInfo, MfaMethod};
2+
use defguard_proto::{
3+
client_types::MfaMethod,
4+
proxy::{ClientMfaOidcAuthenticateRequest, DeviceInfo},
5+
};
36
use openidconnect::{AuthorizationCode, Nonce};
47
use tonic::Status;
58

crates/defguard_core/src/enterprise/grpc/polling.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ use defguard_common::db::{
22
Id,
33
models::{Device, polling_token::PollingToken, user::User},
44
};
5-
use defguard_proto::proxy::{DeviceInfo, InstanceInfoRequest, InstanceInfoResponse};
5+
use defguard_proto::{
6+
client_types::{InstanceInfoRequest, InstanceInfoResponse},
7+
proxy::DeviceInfo,
8+
};
69
use sqlx::PgPool;
710
use tonic::Status;
811

crates/defguard_core/src/events.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use defguard_common::db::{
88
gateway::Gateway, group::Group, oauth2client::OAuth2Client, proxy::Proxy,
99
},
1010
};
11-
use defguard_proto::proxy::MfaMethod;
11+
use defguard_proto::client_types::MfaMethod;
1212

1313
use crate::{
1414
db::WebHook,

crates/defguard_core/src/grpc/client_version.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use base64::{Engine, prelude::BASE64_STANDARD};
2-
use defguard_proto::proxy::{ClientPlatformInfo, DeviceInfo};
2+
use defguard_proto::{client_types::ClientPlatformInfo, proxy::DeviceInfo};
33
use prost::Message;
44
use semver::Version;
55

crates/defguard_core/src/grpc/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ impl InstanceInfo {
194194
}
195195
}
196196

197-
impl From<InstanceInfo> for defguard_proto::proxy::InstanceInfo {
197+
impl From<InstanceInfo> for defguard_proto::client_types::InstanceInfo {
198198
fn from(instance: InstanceInfo) -> Self {
199199
Self {
200200
name: instance.name,

crates/defguard_core/src/grpc/proxy/client_mfa.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ use defguard_common::{
1919
types::user_info::UserInfo,
2020
};
2121
use defguard_mail::templates::mfa_code_mail;
22-
use defguard_proto::proxy::{
23-
self, AwaitRemoteMfaFinishRequest, AwaitRemoteMfaFinishResponse, ClientMfaFinishRequest,
24-
ClientMfaFinishResponse, ClientMfaStartRequest, ClientMfaStartResponse,
25-
ClientMfaTokenValidationRequest, ClientMfaTokenValidationResponse, CoreResponse, MfaMethod,
26-
core_response::Payload,
22+
use defguard_proto::{
23+
client_types::{
24+
ClientMfaFinishRequest, ClientMfaFinishResponse, ClientMfaStartRequest,
25+
ClientMfaStartResponse, MfaMethod,
26+
},
27+
proxy::{
28+
self, AwaitRemoteMfaFinishRequest, AwaitRemoteMfaFinishResponse,
29+
ClientMfaTokenValidationRequest, ClientMfaTokenValidationResponse, CoreResponse,
30+
core_response::Payload,
31+
},
2732
};
2833
use sqlx::{PgConnection, PgPool};
2934
use thiserror::Error;

crates/defguard_core/src/grpc/utils.rs

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ use defguard_common::{
1111
},
1212
},
1313
};
14-
use defguard_proto::proxy::{
15-
DeviceConfig as ProtoDeviceConfig, DeviceConfigResponse, DeviceInfo,
16-
LocationMfaMode as ProtoLocationMfaMode,
14+
use defguard_proto::{
15+
client_types::{
16+
DeviceConfig as ProtoDeviceConfig, DeviceConfigResponse,
17+
LocationMfaMode as ProtoLocationMfaMode,
18+
},
19+
proxy::DeviceInfo,
1720
};
1821
use sqlx::PgPool;
1922
use tonic::Status;
@@ -94,33 +97,31 @@ pub async fn build_device_config_response(
9497

9598
// DEPRECATED(1.5): superseeded by location_mfa_mode
9699
let mfa_enabled = network.location_mfa_mode == LocationMfaMode::Internal;
97-
let config =
98-
ProtoDeviceConfig {
99-
config: Device::create_config(&network, &wireguard_network_device),
100-
network_id: network.id,
101-
network_name: network.name,
102-
assigned_ip: wireguard_network_device.wireguard_ips.as_csv(),
103-
endpoint: format!("{}:{}", network.endpoint, network.port),
104-
pubkey: network.pubkey,
105-
allowed_ips: network.allowed_ips.as_csv(),
106-
dns: network.dns,
107-
keepalive_interval: network.keepalive_interval,
108-
#[allow(deprecated)]
109-
mfa_enabled,
110-
location_mfa_mode: Some(
111-
<LocationMfaMode as Into<ProtoLocationMfaMode>>::into(
112-
network.location_mfa_mode,
113-
)
114-
.into(),
115-
),
116-
service_location_mode:
117-
Some(
118-
<ServiceLocationMode as Into<
119-
defguard_proto::proxy::ServiceLocationMode,
120-
>>::into(network.service_location_mode)
121-
.into(),
122-
),
123-
};
100+
let config = ProtoDeviceConfig {
101+
config: Device::create_config(&network, &wireguard_network_device),
102+
network_id: network.id,
103+
network_name: network.name,
104+
assigned_ip: wireguard_network_device.wireguard_ips.as_csv(),
105+
endpoint: format!("{}:{}", network.endpoint, network.port),
106+
pubkey: network.pubkey,
107+
allowed_ips: network.allowed_ips.as_csv(),
108+
dns: network.dns,
109+
keepalive_interval: network.keepalive_interval,
110+
#[allow(deprecated)]
111+
mfa_enabled,
112+
location_mfa_mode: Some(
113+
<LocationMfaMode as Into<ProtoLocationMfaMode>>::into(
114+
network.location_mfa_mode,
115+
)
116+
.into(),
117+
),
118+
service_location_mode: Some(
119+
<ServiceLocationMode as Into<
120+
defguard_proto::client_types::ServiceLocationMode,
121+
>>::into(network.service_location_mode)
122+
.into(),
123+
),
124+
};
124125
configs.push(config);
125126
}
126127
} else {
@@ -173,13 +174,12 @@ pub async fn build_device_config_response(
173174
)
174175
.into(),
175176
),
176-
service_location_mode:
177-
Some(
178-
<ServiceLocationMode as Into<
179-
defguard_proto::proxy::ServiceLocationMode,
180-
>>::into(network.service_location_mode)
181-
.into(),
182-
),
177+
service_location_mode: Some(
178+
<ServiceLocationMode as Into<
179+
defguard_proto::client_types::ServiceLocationMode,
180+
>>::into(network.service_location_mode)
181+
.into(),
182+
),
183183
};
184184
configs.push(config);
185185
}

0 commit comments

Comments
 (0)