Page MenuHomePhorge

D7130.1768257548.diff
No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None

D7130.1768257548.diff

diff --git a/services/identity/Dockerfile b/services/identity/Dockerfile
--- a/services/identity/Dockerfile
+++ b/services/identity/Dockerfile
@@ -1,7 +1,12 @@
FROM rust:1.67
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- protobuf-compiler && rm -rf /var/lib/apt/lists/*
+ build-essential cmake git libgtest-dev libssl-dev zlib1g-dev \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install more recent version of protobuf, must be ran as root
+COPY scripts/install_protobuf.sh ../../scripts/install_protobuf.sh
+RUN ../../scripts/install_protobuf.sh
# Create a new user comm and use it to run subsequent commands
RUN useradd -m comm
@@ -24,6 +29,7 @@
COPY services/identity .
COPY shared/protos/identity.proto ../../shared/protos/
+COPY shared/protos/identity_client.proto ../../shared/protos/
# Remove the previously-built binary so that only the application itself is
# rebuilt
diff --git a/services/identity/build.rs b/services/identity/build.rs
--- a/services/identity/build.rs
+++ b/services/identity/build.rs
@@ -1,4 +1,13 @@
fn main() -> Result<(), Box<dyn std::error::Error>> {
- tonic_build::compile_protos("../../shared/protos/identity.proto")?;
+ tonic_build::configure()
+ .build_server(true)
+ .build_client(false)
+ .compile(
+ &[
+ "../../shared/protos/identity.proto",
+ "../../shared/protos/identity_client.proto",
+ ],
+ &["../../shared/protos/"],
+ )?;
Ok(())
}
diff --git a/services/identity/src/client_service.rs b/services/identity/src/client_service.rs
new file mode 100644
--- /dev/null
+++ b/services/identity/src/client_service.rs
@@ -0,0 +1,117 @@
+pub mod client_proto {
+ tonic::include_proto!("identity.client");
+}
+
+use crate::client_service::client_proto::{
+ DeleteUserRequest, DeviceKeysForUserRequest, DeviceKeysForUserResponse,
+ Empty, GenerateNonceResponse, KeyserverKeysRequest, KeyserverKeysResponse,
+ OpaqueLoginFinishRequest, OpaqueLoginFinishResponse, OpaqueLoginStartRequest,
+ OpaqueLoginStartResponse, RefreshUserPreKeysRequest,
+ RegistrationFinishRequest, RegistrationFinishResponse,
+ RegistrationStartRequest, RegistrationStartResponse,
+ UpdateUserPasswordFinishRequest, UpdateUserPasswordFinishResponse,
+ UpdateUserPasswordStartRequest, UpdateUserPasswordStartResponse,
+ UploadOneTimeKeysRequest, WalletLoginRequest, WalletLoginResponse,
+};
+pub use client_proto::identity_client_service_server::{
+ IdentityClientService, IdentityClientServiceServer,
+};
+
+#[derive(derive_more::Constructor)]
+pub struct ClientService {}
+
+#[tonic::async_trait]
+impl IdentityClientService for ClientService {
+ async fn register_password_user_start(
+ &self,
+ _request: tonic::Request<RegistrationStartRequest>,
+ ) -> Result<tonic::Response<RegistrationStartResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn register_password_user_finish(
+ &self,
+ _request: tonic::Request<RegistrationFinishRequest>,
+ ) -> Result<tonic::Response<RegistrationFinishResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn update_user_password_start(
+ &self,
+ _request: tonic::Request<UpdateUserPasswordStartRequest>,
+ ) -> Result<tonic::Response<UpdateUserPasswordStartResponse>, tonic::Status>
+ {
+ unimplemented!();
+ }
+
+ async fn update_user_password_finish(
+ &self,
+ _request: tonic::Request<UpdateUserPasswordFinishRequest>,
+ ) -> Result<tonic::Response<UpdateUserPasswordFinishResponse>, tonic::Status>
+ {
+ unimplemented!();
+ }
+
+ async fn login_password_user_start(
+ &self,
+ _request: tonic::Request<OpaqueLoginStartRequest>,
+ ) -> Result<tonic::Response<OpaqueLoginStartResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn login_password_user_finish(
+ &self,
+ _request: tonic::Request<OpaqueLoginFinishRequest>,
+ ) -> Result<tonic::Response<OpaqueLoginFinishResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn login_wallet_user(
+ &self,
+ _request: tonic::Request<WalletLoginRequest>,
+ ) -> Result<tonic::Response<WalletLoginResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn delete_user(
+ &self,
+ _request: tonic::Request<DeleteUserRequest>,
+ ) -> Result<tonic::Response<Empty>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn generate_nonce(
+ &self,
+ _request: tonic::Request<Empty>,
+ ) -> Result<tonic::Response<GenerateNonceResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn get_device_keys_for_user(
+ &self,
+ _request: tonic::Request<DeviceKeysForUserRequest>,
+ ) -> Result<tonic::Response<DeviceKeysForUserResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn get_keyserver_keys(
+ &self,
+ _request: tonic::Request<KeyserverKeysRequest>,
+ ) -> Result<tonic::Response<KeyserverKeysResponse>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn upload_one_time_keys(
+ &self,
+ _request: tonic::Request<UploadOneTimeKeysRequest>,
+ ) -> Result<tonic::Response<Empty>, tonic::Status> {
+ unimplemented!();
+ }
+
+ async fn refresh_user_pre_keys(
+ &self,
+ _request: tonic::Request<RefreshUserPreKeysRequest>,
+ ) -> Result<tonic::Response<Empty>, tonic::Status> {
+ unimplemented!();
+ }
+}
diff --git a/services/identity/src/main.rs b/services/identity/src/main.rs
--- a/services/identity/src/main.rs
+++ b/services/identity/src/main.rs
@@ -4,6 +4,7 @@
use tonic::transport::Server;
use tracing_subscriber::FmtSubscriber;
+mod client_service;
mod config;
mod constants;
mod database;
@@ -20,6 +21,8 @@
use service::{IdentityKeyserverServiceServer, MyIdentityService};
use tracing::info;
+use client_service::{ClientService, IdentityClientServiceServer};
+
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
#[clap(propagate_version = true)]
@@ -57,10 +60,16 @@
let aws_config = aws_config::from_env().region("us-east-2").load().await;
let database_client = DatabaseClient::new(&aws_config);
let server = MyIdentityService::new(database_client);
- let svc =
+ let keyserver_service =
IdentityKeyserverServiceServer::with_interceptor(server, check_auth);
+ let client_server =
+ IdentityClientServiceServer::new(ClientService::new());
info!("Listening to gRPC traffic on {}", addr);
- Server::builder().add_service(svc).serve(addr).await?;
+ Server::builder()
+ .add_service(keyserver_service)
+ .add_service(client_server)
+ .serve(addr)
+ .await?;
}
Commands::PopulateDB => unimplemented!(),
}

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 12, 10:39 PM (5 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5925107
Default Alt Text
D7130.1768257548.diff (6 KB)

Event Timeline