mirror of
https://github.com/ivabus/aliurl
synced 2025-06-08 00:00:29 +03:00
Compare commits
No commits in common. "master" and "0.3.2" have entirely different histories.
5 changed files with 6 additions and 24 deletions
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aliurl"
|
name = "aliurl"
|
||||||
version = "0.3.3"
|
version = "0.3.2"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/ivabus/aliurl"
|
repository = "https://github.com/ivabus/aliurl"
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
## Archived, see [ivabus/urouter](https://github.com/ivabus/urouter) or something else as a replacement
|
|
||||||
|
|
||||||
# aliurl
|
# aliurl
|
||||||
|
|
||||||
> ALIaser for URLs
|
> ALIaser for URLs
|
||||||
|
@ -146,4 +144,4 @@ See `./redirect.html.example` to understand what's going on.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
The project is licensed under the terms of the [MIT license](./LICENSE).
|
The project is licensed under the terms of the [MIT license](./LICENSE).
|
11
src/main.rs
11
src/main.rs
|
@ -50,17 +50,7 @@ struct Alias {
|
||||||
redirect_with_ad: Option<bool>,
|
redirect_with_ad: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lock() {
|
|
||||||
while std::path::Path::new("./alias.json.lock").exists() {}
|
|
||||||
std::fs::File::create("./alias.json.lock").unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn unlock() {
|
|
||||||
std::fs::remove_file("./alias.json.lock").unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn read_aliases() -> Vec<Alias> {
|
fn read_aliases() -> Vec<Alias> {
|
||||||
lock();
|
|
||||||
if !std::path::Path::new("./alias.json").exists() {
|
if !std::path::Path::new("./alias.json").exists() {
|
||||||
let mut file = std::fs::File::create("./alias.json").unwrap();
|
let mut file = std::fs::File::create("./alias.json").unwrap();
|
||||||
file.write_all(b"[]").unwrap();
|
file.write_all(b"[]").unwrap();
|
||||||
|
@ -76,7 +66,6 @@ fn read_aliases() -> Vec<Alias> {
|
||||||
let mut contents = String::new();
|
let mut contents = String::new();
|
||||||
buf_reader.read_to_string(&mut contents).unwrap();
|
buf_reader.read_to_string(&mut contents).unwrap();
|
||||||
let aliases_list: Vec<Alias> = serde_json::from_str(&contents).unwrap();
|
let aliases_list: Vec<Alias> = serde_json::from_str(&contents).unwrap();
|
||||||
unlock();
|
|
||||||
aliases_list
|
aliases_list
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
src/post.rs
11
src/post.rs
|
@ -71,7 +71,7 @@ fn check_access_key(key: Option<String>) -> Result<String, (Status, RawJson<Stri
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/api/create_alias", data = "<data>")]
|
#[post("/api/create_alias", data = "<data>")]
|
||||||
pub async fn create_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
pub fn create_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
let data: CreateAliasRequest = match serde_json::from_str(&data.to_string()) {
|
let data: CreateAliasRequest = match serde_json::from_str(&data.to_string()) {
|
||||||
Ok(req) => req,
|
Ok(req) => req,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -82,8 +82,8 @@ pub async fn create_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
if let Err(e) = check_access_key(data.access_key) {
|
if let Err(e) = check_access_key(data.access_key) {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut aliases_list = read_aliases();
|
let mut aliases_list = read_aliases();
|
||||||
lock();
|
|
||||||
let mut file = std::fs::File::options().write(true).open("./alias.json").unwrap();
|
let mut file = std::fs::File::options().write(true).open("./alias.json").unwrap();
|
||||||
let alias = match data.alias {
|
let alias = match data.alias {
|
||||||
None => {
|
None => {
|
||||||
|
@ -128,13 +128,12 @@ pub async fn create_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
|
|
||||||
file.write_all(serde_json::to_string(&aliases_list).unwrap().as_bytes()).unwrap();
|
file.write_all(serde_json::to_string(&aliases_list).unwrap().as_bytes()).unwrap();
|
||||||
file.sync_all().unwrap();
|
file.sync_all().unwrap();
|
||||||
unlock();
|
|
||||||
|
|
||||||
return (Status::Ok, RawJson(serde_json::to_string(&alias).unwrap()));
|
return (Status::Ok, RawJson(serde_json::to_string(&alias).unwrap()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/api/get_aliases", data = "<data>")]
|
#[post("/api/get_aliases", data = "<data>")]
|
||||||
pub async fn get_aliases(data: &RawStr) -> (Status, RawJson<String>) {
|
pub fn get_aliases(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
let data: GetAliasesRequest = match serde_json::from_str(&data.to_string()) {
|
let data: GetAliasesRequest = match serde_json::from_str(&data.to_string()) {
|
||||||
Ok(req) => req,
|
Ok(req) => req,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -150,7 +149,7 @@ pub async fn get_aliases(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/api/remove_alias", data = "<data>")]
|
#[post("/api/remove_alias", data = "<data>")]
|
||||||
pub async fn remove_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
pub fn remove_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
let data: RemoveAliasRequest = match serde_json::from_str(&data.to_string()) {
|
let data: RemoveAliasRequest = match serde_json::from_str(&data.to_string()) {
|
||||||
Ok(req) => req,
|
Ok(req) => req,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -162,7 +161,6 @@ pub async fn remove_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
}
|
}
|
||||||
let mut aliases_list = read_aliases();
|
let mut aliases_list = read_aliases();
|
||||||
let mut removed_aliases: Vec<Alias> = vec![];
|
let mut removed_aliases: Vec<Alias> = vec![];
|
||||||
lock();
|
|
||||||
let mut file = std::fs::File::options().write(true).open("./alias.json").unwrap();
|
let mut file = std::fs::File::options().write(true).open("./alias.json").unwrap();
|
||||||
|
|
||||||
for i in (0..aliases_list.len()).rev() {
|
for i in (0..aliases_list.len()).rev() {
|
||||||
|
@ -174,7 +172,6 @@ pub async fn remove_alias(data: &RawStr) -> (Status, RawJson<String>) {
|
||||||
file.write_all(&aliases_list.as_bytes()).unwrap();
|
file.write_all(&aliases_list.as_bytes()).unwrap();
|
||||||
file.set_len(aliases_list.as_bytes().len() as u64).unwrap();
|
file.set_len(aliases_list.as_bytes().len() as u64).unwrap();
|
||||||
file.sync_all().unwrap();
|
file.sync_all().unwrap();
|
||||||
unlock();
|
|
||||||
|
|
||||||
return (Status::Ok, RawJson(serde_json::to_string(&removed_aliases).unwrap()));
|
return (Status::Ok, RawJson(serde_json::to_string(&removed_aliases).unwrap()));
|
||||||
}
|
}
|
||||||
|
|
2
tea.yaml
2
tea.yaml
|
@ -1,2 +0,0 @@
|
||||||
dependencies:
|
|
||||||
rust-lang.org/cargo: '*'
|
|
Loading…
Reference in a new issue