non version locked lua fucked shit over jfc

This commit is contained in:
2025-07-26 12:25:41 +02:00
parent 28ca6c1415
commit 17c47560cc
2 changed files with 43 additions and 42 deletions

View File

@@ -49,11 +49,11 @@ pub fn iconize(value: &Value, _args: &HashMap<String, Value>) -> TeraResult<Valu
let icon = if icons.contains_key(icon) { let icon = if icons.contains_key(icon) {
&icons[icon] &icons[icon]
} else { } else {
println!("Unknown filetype: {}", icon); println!("Unknown filetype: {icon}");
&icons["unknown"] &icons["unknown"]
}; };
let str = format!("<img src=\"data:image/png;base64,{}\" alt=\"\" />", icon); let str = format!("<img src=\"data:image/png;base64,{icon}\" alt=\"\" />");
Ok(to_value(str).unwrap()) Ok(to_value(str).unwrap())
} }
@@ -73,7 +73,7 @@ pub fn from_ico(value: &Value, _args: &HashMap<String, Value>) -> TeraResult<Val
let data = BASE64_STANDARD.encode(icon); let data = BASE64_STANDARD.encode(icon);
let str = format!("<img src=\"data:image/png;base64,{}\" alt=\"\"/>", data); let str = format!("<img src=\"data:image/png;base64,{data}\" alt=\"\"/>");
Ok(to_value(str).unwrap()) Ok(to_value(str).unwrap())
} }

View File

@@ -79,10 +79,11 @@ async fn main() -> AResult<()> {
} }
async fn file_handler(request: Request) -> impl IntoResponse { async fn file_handler(request: Request) -> impl IntoResponse {
println!("{}", request.uri());
std::env::set_current_dir(&*CWD).unwrap(); std::env::set_current_dir(&*CWD).unwrap();
let base_dir = BASE_DIR.canonicalize().map_err(|e| { let base_dir = BASE_DIR.canonicalize().map_err(|e| {
eprintln!("{:#?}", e); eprintln!("{e:#?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
@@ -102,18 +103,18 @@ async fn file_handler(request: Request) -> impl IntoResponse {
let mut path = base_dir.clone(); let mut path = base_dir.clone();
let uri = urlencoding::decode(&request_uri_path[1..]).map_err(|e| { let uri = urlencoding::decode(&request_uri_path[1..]).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?; })?;
path.push(&*uri); path.push(&*uri);
let full_path = fs::canonicalize(&path).map_err(|e| { let full_path = fs::canonicalize(&path).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
let full_base_path = fs::canonicalize(&base_dir).map_err(|e| { let full_base_path = fs::canonicalize(&base_dir).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
@@ -122,7 +123,7 @@ async fn file_handler(request: Request) -> impl IntoResponse {
} }
let script = fs::read_to_string(&full_path).map_err(|e| { let script = fs::read_to_string(&full_path).map_err(|e| {
eprintln!("Lua Read Error: {:?}", e); eprintln!("Lua Read Error: {e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?; })?;
@@ -151,14 +152,14 @@ async fn file_handler(request: Request) -> impl IntoResponse {
)) ))
.exec() .exec()
.map_err(|e| { .map_err(|e| {
eprintln!("Lua Error: {:#?}", e); eprintln!("Lua Error: {e:#?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
let globals = lua.globals(); let globals = lua.globals();
let request_table = lua.create_table().map_err(|e| { let request_table = lua.create_table().map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
@@ -170,7 +171,7 @@ async fn file_handler(request: Request) -> impl IntoResponse {
.map(|(k, v)| (k.to_string(), v.to_str().unwrap())), .map(|(k, v)| (k.to_string(), v.to_str().unwrap())),
) )
.map_err(|e| { .map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
@@ -178,7 +179,7 @@ async fn file_handler(request: Request) -> impl IntoResponse {
let query: HashMap<String, String> = serde_qs::from_str(query) let query: HashMap<String, String> = serde_qs::from_str(query)
.map_err(|e| { .map_err(|e| {
println!("{:#?}", e); println!("{e:#?}");
( (
StatusCode::INTERNAL_SERVER_ERROR, StatusCode::INTERNAL_SERVER_ERROR,
"500: Unable to parse query string".to_string(), "500: Unable to parse query string".to_string(),
@@ -187,42 +188,42 @@ async fn file_handler(request: Request) -> impl IntoResponse {
.unwrap_or(HashMap::new()); .unwrap_or(HashMap::new());
let query_table = lua.create_table_from(query).map_err(|e| { let query_table = lua.create_table_from(query).map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
request_table.set("headers", headers_table).map_err(|e| { request_table.set("headers", headers_table).map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
request_table request_table
.set("uri", request.uri().to_string()) .set("uri", request.uri().to_string())
.map_err(|e| { .map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
request_table request_table
.set("method", request.method().to_string()) .set("method", request.method().to_string())
.map_err(|e| { .map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
request_table.set("query", query_table).map_err(|e| { request_table.set("query", query_table).map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
// Inject functions to change headers and such // Inject functions to change headers and such
globals.set("request", request_table).map_err(|e| { globals.set("request", request_table).map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
let response_table = lua.create_table().map_err(|e| { let response_table = lua.create_table().map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
@@ -230,35 +231,35 @@ async fn file_handler(request: Request) -> impl IntoResponse {
.set( .set(
"headers", "headers",
lua.create_table().map_err(|e| { lua.create_table().map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?, })?,
) )
.map_err(|e| { .map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
globals.set("response", response_table).map_err(|e| { globals.set("response", response_table).map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
let mut path = base_dir.clone(); let mut path = base_dir.clone();
let uri = urlencoding::decode(&request_uri_path[1..]).map_err(|e| { let uri = urlencoding::decode(&request_uri_path[1..]).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?; })?;
path.push(&*uri); path.push(&*uri);
let full_path = fs::canonicalize(&path).map_err(|e| { let full_path = fs::canonicalize(&path).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
let full_base_path = fs::canonicalize(base_dir).map_err(|e| { let full_base_path = fs::canonicalize(base_dir).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
@@ -267,7 +268,7 @@ async fn file_handler(request: Request) -> impl IntoResponse {
} }
let script = fs::read_to_string(full_path).map_err(|e| { let script = fs::read_to_string(full_path).map_err(|e| {
eprintln!("Lua Read Error: {:?}", e); eprintln!("Lua Read Error: {e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?; })?;
@@ -291,19 +292,19 @@ async fn file_handler(request: Request) -> impl IntoResponse {
.exec() .exec()
.map_err(|e| { .map_err(|e| {
std::env::set_current_dir(&*CWD).unwrap(); std::env::set_current_dir(&*CWD).unwrap();
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
let script = lua.load(script).eval::<LuaValue>().map_err(|e| { let script = lua.load(script).eval::<LuaValue>().map_err(|e| {
std::env::set_current_dir(&*CWD).unwrap(); std::env::set_current_dir(&*CWD).unwrap();
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
std::env::set_current_dir(&*CWD).unwrap(); std::env::set_current_dir(&*CWD).unwrap();
let result = lua.load("return response").eval::<Table>().map_err(|e| { let result = lua.load("return response").eval::<Table>().map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
@@ -313,10 +314,10 @@ async fn file_handler(request: Request) -> impl IntoResponse {
script.to_string_lossy().to_string() script.to_string_lossy().to_string()
} else { } else {
serde_json::to_string(&script).map_err(|e| { serde_json::to_string(&script).map_err(|e| {
eprintln!("Serde Error: {:?}", e); eprintln!("Serde Error: {e:?}");
( (
StatusCode::INTERNAL_SERVER_ERROR, StatusCode::INTERNAL_SERVER_ERROR,
format!("Serde error: {}", e), format!("Serde error: {e}"),
) )
})? })?
}; };
@@ -334,16 +335,16 @@ async fn file_handler(request: Request) -> impl IntoResponse {
for pair in pairs { for pair in pairs {
let (k, v) = pair.map_err(|e| { let (k, v) = pair.map_err(|e| {
eprintln!("Lua Error: {:?}", e); eprintln!("Lua Error: {e:?}");
render_lua_error(e) render_lua_error(e)
})?; })?;
response.headers_mut().insert( response.headers_mut().insert(
HeaderName::from_str(&k).map_err(|e| { HeaderName::from_str(&k).map_err(|e| {
eprintln!("Response Error: {:?}", e); eprintln!("Response Error: {e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?, })?,
HeaderValue::from_str(&v).map_err(|e| { HeaderValue::from_str(&v).map_err(|e| {
eprintln!("Response Error: {:?}", e); eprintln!("Response Error: {e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?, })?,
); );
@@ -424,17 +425,17 @@ fn render_lua_error(e: mlua::Error) -> (StatusCode, String) {
mlua::Error::MismatchedRegistryKey => (StatusCode::INTERNAL_SERVER_ERROR, String::new()), mlua::Error::MismatchedRegistryKey => (StatusCode::INTERNAL_SERVER_ERROR, String::new()),
mlua::Error::CallbackError { traceback, cause } => ( mlua::Error::CallbackError { traceback, cause } => (
StatusCode::INTERNAL_SERVER_ERROR, StatusCode::INTERNAL_SERVER_ERROR,
format!("{}\n\n{:#?}", traceback, cause), format!("{traceback}\n\n{cause:#?}"),
), ),
mlua::Error::PreviouslyResumedPanic => (StatusCode::INTERNAL_SERVER_ERROR, String::new()), mlua::Error::PreviouslyResumedPanic => (StatusCode::INTERNAL_SERVER_ERROR, String::new()),
mlua::Error::SerializeError(message) => (StatusCode::INTERNAL_SERVER_ERROR, message), mlua::Error::SerializeError(message) => (StatusCode::INTERNAL_SERVER_ERROR, message),
mlua::Error::DeserializeError(message) => (StatusCode::INTERNAL_SERVER_ERROR, message), mlua::Error::DeserializeError(message) => (StatusCode::INTERNAL_SERVER_ERROR, message),
mlua::Error::ExternalError(error) => { mlua::Error::ExternalError(error) => {
(StatusCode::INTERNAL_SERVER_ERROR, format!("{:#?}", error)) (StatusCode::INTERNAL_SERVER_ERROR, format!("{error:#?}"))
} }
mlua::Error::WithContext { context, cause } => ( mlua::Error::WithContext { context, cause } => (
StatusCode::INTERNAL_SERVER_ERROR, StatusCode::INTERNAL_SERVER_ERROR,
format!("{}\n\n{:#?}", context, cause), format!("{context}\n\n{cause:#?}"),
), ),
_ => ( _ => (
StatusCode::INTERNAL_SERVER_ERROR, StatusCode::INTERNAL_SERVER_ERROR,
@@ -448,18 +449,18 @@ async fn handler(request: Request) -> Result<Html<String>, (StatusCode, String)>
let mut path = BASE_DIR.clone(); let mut path = BASE_DIR.clone();
let uri = urlencoding::decode(&request.uri().path()[1..]).map_err(|e| { let uri = urlencoding::decode(&request.uri().path()[1..]).map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) (StatusCode::INTERNAL_SERVER_ERROR, e.to_string())
})?; })?;
path.push(&*uri); path.push(&*uri);
let full_path = path.canonicalize().map_err(|e| { let full_path = path.canonicalize().map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
let full_base_path = BASE_DIR.canonicalize().map_err(|e| { let full_base_path = BASE_DIR.canonicalize().map_err(|e| {
println!("{:?}", e); println!("{e:?}");
(StatusCode::NOT_FOUND, "404: Not Found".to_string()) (StatusCode::NOT_FOUND, "404: Not Found".to_string())
})?; })?;
@@ -475,11 +476,11 @@ async fn handler(request: Request) -> Result<Html<String>, (StatusCode, String)>
if ioerror.kind() == ErrorKind::NotFound { if ioerror.kind() == ErrorKind::NotFound {
Err((StatusCode::NOT_FOUND, "404: Not Found".to_string())) Err((StatusCode::NOT_FOUND, "404: Not Found".to_string()))
} else { } else {
println!("{:?}", ioerror); println!("{ioerror:?}");
Err((StatusCode::INTERNAL_SERVER_ERROR, e.to_string())) Err((StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))
} }
} else { } else {
println!("{:?}", e); println!("{e:?}");
Err((StatusCode::INTERNAL_SERVER_ERROR, e.to_string())) Err((StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))
} }
} }