mirror of
https://github.com/shiroyashik/sculptor.git
synced 2025-12-06 04:51:13 +03:00
Avatar upload restriction has been finalized! Update your Config.toml!!!
This commit is contained in:
parent
0103c31d69
commit
7196c719e2
5 changed files with 18 additions and 7 deletions
|
|
@ -63,8 +63,9 @@ customText = """
|
||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
### Full update of these parameters occurs only after restarting the Sculptor!!!
|
||||||
[limitations]
|
[limitations]
|
||||||
maxAvatarSize = 100000 # 100 KB
|
maxAvatarSize = 100 # KB
|
||||||
maxAvatars = 10
|
maxAvatars = 10
|
||||||
|
|
||||||
[advancedUsers.66004548-4de5-49de-bade-9c3933d8eb97]
|
[advancedUsers.66004548-4de5-49de-bade-9c3933d8eb97]
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ pub async fn limits(State(state): State<AppState>) -> Json<Value> {
|
||||||
"upload": 1
|
"upload": 1
|
||||||
},
|
},
|
||||||
"limits": {
|
"limits": {
|
||||||
"maxAvatarSize": state.max_avatar_size,
|
"maxAvatarSize": state.max_avatar_size * 1000,
|
||||||
"maxAvatars": state.max_avatars,
|
"maxAvatars": state.max_avatars,
|
||||||
"allowedBadges": {
|
"allowedBadges": {
|
||||||
"special": [0,0,0,0,0,0],
|
"special": [0,0,0,0,0,0],
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ mod users;
|
||||||
mod types;
|
mod types;
|
||||||
mod avatars;
|
mod avatars;
|
||||||
|
|
||||||
pub fn router() -> Router<AppState> {
|
pub fn router(limit: usize) -> Router<AppState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/verify", get(http2ws::verify))
|
.route("/verify", get(http2ws::verify))
|
||||||
.route("/raw", post(http2ws::raw))
|
.route("/raw", post(http2ws::raw))
|
||||||
|
|
@ -16,6 +16,6 @@ pub fn router() -> Router<AppState> {
|
||||||
.route("/user/create", post(users::create_user))
|
.route("/user/create", post(users::create_user))
|
||||||
.route("/user/:uuid/ban", post(users::ban))
|
.route("/user/:uuid/ban", post(users::ban))
|
||||||
.route("/user/:uuid/unban", post(users::unban))
|
.route("/user/:uuid/unban", post(users::unban))
|
||||||
.route("/avatar/:uuid", put(avatars::upload_avatar).layer(DefaultBodyLimit::disable()))
|
.route("/avatar/:uuid", put(avatars::upload_avatar).layer(DefaultBodyLimit::max(limit)))
|
||||||
.route("/avatar/:uuid", delete(avatars::delete_avatar))
|
.route("/avatar/:uuid", delete(avatars::delete_avatar))
|
||||||
}
|
}
|
||||||
12
src/main.rs
12
src/main.rs
|
|
@ -35,7 +35,12 @@ use state::Config;
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
mod utils;
|
mod utils;
|
||||||
use utils::{check_updates, download_assets, get_commit_sha, get_log_file, get_path_to_assets_hash, is_assets_outdated, remove_assets, update_advanced_users, update_bans_from_minecraft, write_sha_to_file, FiguraVersions};
|
use utils::{
|
||||||
|
check_updates, download_assets, get_commit_sha,
|
||||||
|
get_limit_as_bytes, get_log_file, get_path_to_assets_hash,
|
||||||
|
is_assets_outdated, remove_assets, update_advanced_users,
|
||||||
|
update_bans_from_minecraft, write_sha_to_file, FiguraVersions
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct AppState {
|
pub struct AppState {
|
||||||
|
|
@ -120,6 +125,7 @@ async fn main() -> Result<()> {
|
||||||
// Config
|
// Config
|
||||||
let config = Arc::new(RwLock::new(Config::parse(CONFIG_VAR.clone().into())));
|
let config = Arc::new(RwLock::new(Config::parse(CONFIG_VAR.clone().into())));
|
||||||
let listen = config.read().await.listen.clone();
|
let listen = config.read().await.listen.clone();
|
||||||
|
let limit = get_limit_as_bytes(config.read().await.limitations.max_avatar_size.clone() as usize);
|
||||||
|
|
||||||
if config.read().await.assets_updater_enabled {
|
if config.read().await.assets_updater_enabled {
|
||||||
// Force update assets if folder or hash file doesn't exists.
|
// Force update assets if folder or hash file doesn't exists.
|
||||||
|
|
@ -183,14 +189,14 @@ async fn main() -> Result<()> {
|
||||||
let api = Router::new()
|
let api = Router::new()
|
||||||
.nest("//auth", api_auth::router()) // => /api//auth ¯\_(ツ)_/¯
|
.nest("//auth", api_auth::router()) // => /api//auth ¯\_(ツ)_/¯
|
||||||
.nest("//assets", api_assets::router())
|
.nest("//assets", api_assets::router())
|
||||||
.nest("/v1", api::v1::router())
|
.nest("/v1", api::v1::router(limit))
|
||||||
.route("/limits", get(api_info::limits))
|
.route("/limits", get(api_info::limits))
|
||||||
.route("/version", get(api_info::version))
|
.route("/version", get(api_info::version))
|
||||||
.route("/motd", get(api_info::motd))
|
.route("/motd", get(api_info::motd))
|
||||||
.route("/equip", post(api_profile::equip_avatar))
|
.route("/equip", post(api_profile::equip_avatar))
|
||||||
.route("/:uuid", get(api_profile::user_info))
|
.route("/:uuid", get(api_profile::user_info))
|
||||||
.route("/:uuid/avatar", get(api_profile::download_avatar))
|
.route("/:uuid/avatar", get(api_profile::download_avatar))
|
||||||
.route("/avatar", put(api_profile::upload_avatar).layer(DefaultBodyLimit::disable()))
|
.route("/avatar", put(api_profile::upload_avatar).layer(DefaultBodyLimit::max(limit)))
|
||||||
.route("/avatar", delete(api_profile::delete_avatar));
|
.route("/avatar", delete(api_profile::delete_avatar));
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
|
|
|
||||||
|
|
@ -143,4 +143,8 @@ pub fn get_log_file(folder: &str) -> String {
|
||||||
}
|
}
|
||||||
index += 1;
|
index += 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_limit_as_bytes(limit: usize) -> usize {
|
||||||
|
1024 + limit * 1024 // Adding additional 1 KB just for fun :)
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue