non version locked lua fucked shit over jfc
This commit is contained in:
@@ -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())
|
||||||
}
|
}
|
||||||
|
|||||||
79
src/main.rs
79
src/main.rs
@@ -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()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user