tuwunel_api_admin/
routes.rs1use axum::{
2 Router,
3 routing::{get, post},
4};
5use tuwunel_api::router::RouterExt;
6use tuwunel_core::Server;
7
8use crate::{self as admin, State, mas_active};
9
10pub fn build(server: &Server) -> Router<State> {
14 let mas_active = mas_active(&server.config);
15 let router = Router::new();
16 let router = register_synapse_admin_users_routes(router, mas_active);
17 let router = register_synapse_admin_devices_routes(router, mas_active);
18 let router = register_synapse_admin_rooms_routes(router);
19 let router = register_synapse_admin_media_routes(router);
20 let router = register_synapse_admin_federation_routes(router);
21 let router = register_synapse_admin_misc_routes(router);
22
23 router
24 .ruma_route(&admin::is_user_suspended_route)
25 .ruma_route(&admin::suspend_user_route)
26 .ruma_route(&admin::is_user_locked_route)
27 .ruma_route(&admin::lock_user_route)
28}
29
30fn register_synapse_admin_users_routes(router: Router<State>, mas_active: bool) -> Router<State> {
31 let router = router
32 .ruma_route(&admin::users::admin_list_users_v2_route)
33 .ruma_route(&admin::users::admin_list_users_v3_route)
34 .ruma_route(&admin::users::admin_get_details_route)
35 .ruma_route(&admin::users::admin_create_or_modify_route)
36 .ruma_route(&admin::users::admin_deactivate_account_route)
37 .ruma_route(&admin::users::admin_list_joined_rooms_route)
38 .ruma_route(&admin::users::admin_memberships_route)
39 .ruma_route(&admin::users::admin_pushers_route)
40 .ruma_route(&admin::users::admin_account_data_route)
41 .ruma_route(&admin::users::admin_suspend_route)
42 .ruma_route(&admin::users::admin_username_available_route)
43 .ruma_route(&admin::users::admin_lookup_threepid_route)
44 .ruma_route(&admin::users::admin_allow_cross_signing_replacement_route)
45 .ruma_route(&admin::users::admin_redact_user_route)
46 .ruma_route(&admin::users::admin_redact_status_route)
47 .route("/_synapse/admin/v1/whois/{user_id}", get(admin::users::admin_whois_route))
50 .route("/_matrix/client/v3/admin/whois/{user_id}", get(admin::users::admin_whois_route))
51 .route("/_matrix/client/r0/admin/whois/{user_id}", get(admin::users::admin_whois_route))
52 .route(
53 "/_matrix/client/unstable/admin/whois/{user_id}",
54 get(admin::users::admin_whois_route),
55 );
56
57 if mas_active {
61 router
62 } else {
63 router
64 .ruma_route(&admin::admin_register_nonce_route)
65 .ruma_route(&admin::admin_register_route)
66 .ruma_route(&admin::users::admin_reset_password_route)
67 .ruma_route(&admin::users::admin_is_user_admin_route)
68 .ruma_route(&admin::users::admin_login_as_route)
69 }
70}
71
72fn register_synapse_admin_devices_routes(
73 router: Router<State>,
74 mas_active: bool,
75) -> Router<State> {
76 let router = router
77 .ruma_route(&admin::devices::admin_list_devices_route)
78 .ruma_route(&admin::devices::admin_create_device_route)
79 .ruma_route(&admin::devices::admin_get_device_route)
80 .ruma_route(&admin::devices::admin_update_device_route)
81 .ruma_route(&admin::devices::admin_delete_device_route)
82 .ruma_route(&admin::devices::admin_delete_devices_route);
83
84 if mas_active {
87 router
88 } else {
89 router
90 .ruma_route(&admin::tokens::admin_list_tokens_route)
91 .ruma_route(&admin::tokens::admin_create_token_route)
92 .ruma_route(&admin::tokens::admin_get_token_route)
93 .ruma_route(&admin::tokens::admin_update_token_route)
94 .ruma_route(&admin::tokens::admin_delete_token_route)
95 }
96}
97
98fn register_synapse_admin_rooms_routes(router: Router<State>) -> Router<State> {
99 router
100 .ruma_route(&admin::rooms::admin_list_rooms_route)
101 .ruma_route(&admin::rooms::admin_room_details_route)
102 .ruma_route(&admin::rooms::admin_room_members_route)
103 .ruma_route(&admin::rooms::admin_join_room_route)
104 .ruma_route(&admin::rooms::admin_get_room_block_route)
105 .ruma_route(&admin::rooms::admin_set_room_block_route)
106 .ruma_route(&admin::rooms::admin_make_room_admin_route)
107 .ruma_route(&admin::rooms::admin_delete_room_v1_route)
108 .ruma_route(&admin::rooms::admin_delete_room_v2_route)
109 .ruma_route(&admin::rooms::admin_delete_status_by_id_route)
110 .ruma_route(&admin::rooms::admin_delete_status_by_room_route)
111 .ruma_route(&admin::rooms::admin_get_forward_extremities_route)
112 .ruma_route(&admin::rooms::admin_delete_forward_extremities_route)
113 .ruma_route(&admin::rooms::admin_purge_history_route)
114 .ruma_route(&admin::rooms::admin_purge_history_by_event_route)
115 .ruma_route(&admin::rooms::admin_purge_history_status_route)
116 .ruma_route(&admin::rooms::admin_room_state_route)
117 .ruma_route(&admin::rooms::admin_room_messages_route)
118 .ruma_route(&admin::rooms::admin_room_context_route)
119 .ruma_route(&admin::rooms::admin_room_timestamp_to_event_route)
120 .ruma_route(&admin::rooms::admin_room_hierarchy_route)
121}
122
123fn register_synapse_admin_media_routes(router: Router<State>) -> Router<State> {
124 router
125 .ruma_route(&admin::media::admin_query_media_route)
126 .ruma_route(&admin::media::admin_delete_media_route)
127 .ruma_route(&admin::media::admin_list_user_media_route)
128 .ruma_route(&admin::media::admin_list_room_media_route)
129 .ruma_route(&admin::media::admin_delete_user_media_route)
130 .ruma_route(&admin::media::admin_purge_media_cache_route)
131 .ruma_route(&admin::media::admin_user_media_statistics_route)
132 .route(
133 "/_synapse/admin/v1/media/delete",
134 post(admin::media::admin_delete_media_by_date_size_route),
135 )
136 .route(
138 "/_synapse/admin/v1/media/{server_name}/delete",
139 post(admin::media::admin_delete_media_by_date_size_route),
140 )
141}
142
143fn register_synapse_admin_federation_routes(router: Router<State>) -> Router<State> {
144 router
145 .ruma_route(&admin::federation::admin_list_destinations_route)
146 .ruma_route(&admin::federation::admin_destination_details_route)
147 .ruma_route(&admin::federation::admin_destination_rooms_route)
148 .ruma_route(&admin::federation::admin_reset_connection_route)
149}
150
151fn register_synapse_admin_misc_routes(router: Router<State>) -> Router<State> {
152 router
153 .ruma_route(&admin::misc::admin_server_version_route)
154 .ruma_route(&admin::misc::admin_fetch_event_route)
155 .ruma_route(&admin::misc::admin_scheduled_tasks_route)
156 .ruma_route(&admin::misc::admin_send_server_notice_route)
157 .ruma_route(&admin::misc::admin_send_server_notice_txn_route)
158}