Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32942530
D7130.1768257548.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D7130.1768257548.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D7130: [Identity] Add client device service to identity service
Attached
Detach File
Event Timeline
Log In to Comment