diff --git a/Cargo.lock b/Cargo.lock
index af860d44..f967b622 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -60,6 +60,20 @@ dependencies = [
"trust-dns-resolver",
]
+[[package]]
+name = "actix-cors"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36b133d8026a9f209a9aeeeacd028e7451bcca975f592881b305d37983f303d7"
+dependencies = [
+ "actix-web",
+ "derive_more",
+ "futures-util",
+ "log",
+ "once_cell",
+ "tinyvec",
+]
+
[[package]]
name = "actix-http"
version = "2.2.0"
@@ -1279,6 +1293,7 @@ name = "guard"
version = "0.1.0"
dependencies = [
"actix",
+ "actix-cors",
"actix-http",
"actix-identity",
"actix-rt",
diff --git a/Cargo.toml b/Cargo.toml
index 16d8c431..5d72a22c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -27,6 +27,9 @@ actix = "0.10"
actix-identity = "0.3"
actix-http = "2.2"
actix-rt = "1"
+actix-cors= "0.5.4"
+
+
mime_guess = "2.0.3"
rust-embed = "5.9.0"
cache-buster = { version = "0.1", git = "https://github.com/realaravinth/cache-buster" }
diff --git a/config/default.toml b/config/default.toml
index 2409e931..0b88e6a4 100644
--- a/config/default.toml
+++ b/config/default.toml
@@ -28,9 +28,7 @@ ip= "0.0.0.0"
# enter your hostname, eg: example.com
domain = "localhost"
allow_registration = true
-# directory containing static files
-static_files_dir = "./frontend/dist"
-
+#url_prefix = ""
[pow]
# Please set a unique value, your mCaptcha instance's security depends on this being
diff --git a/src/api/v1/pow/mod.rs b/src/api/v1/pow/mod.rs
index 20cf2294..e1e60e03 100644
--- a/src/api/v1/pow/mod.rs
+++ b/src/api/v1/pow/mod.rs
@@ -15,6 +15,9 @@
* along with this program. If not, see .
*/
+//use actix_cors::Cors;
+//use lazy_static::lazy_static;
+
pub mod get_config;
pub mod verify_pow;
pub mod verify_token;
@@ -22,3 +25,12 @@ pub mod verify_token;
pub use super::mcaptcha::duration::GetDurationResp;
pub use super::mcaptcha::is_authenticated;
pub use super::mcaptcha::levels::I32Levels;
+
+//lazy_static! {
+// pub static ref CORS: Cors = Cors::default()
+// .allow_any_origin()
+// .allowed_methods(vec!["POST"])
+// .allow_any_header()
+// .max_age(0)
+// .send_wildcard();
+//}
diff --git a/src/settings.rs b/src/settings.rs
index 9683b51e..c90a4a3a 100644
--- a/src/settings.rs
+++ b/src/settings.rs
@@ -29,6 +29,7 @@ pub struct Server {
pub domain: String,
pub cookie_secret: String,
pub ip: String,
+ pub url_prefix: Option,
}
#[derive(Debug, Clone, Deserialize)]
@@ -42,6 +43,15 @@ impl Server {
pub fn get_ip(&self) -> String {
format!("{}:{}", self.ip, self.port)
}
+
+ fn check_url_prefix(&mut self) {
+ if let Some(prefix) = self.url_prefix.clone() {
+ self.url_prefix = Some(prefix.trim().into());
+ if prefix.trim().is_empty() {
+ panic!("URL prefix is set to empty string")
+ }
+ }
+ }
}
#[derive(Debug, Clone, Deserialize)]
@@ -162,3 +172,24 @@ fn set_database_url(s: &mut Config) {
)
.expect("Couldn't set databse url");
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn url_prefix_test() {
+ let mut settings = Settings::new().unwrap();
+ assert!(settings.server.url_prefix.is_none());
+ settings.server.url_prefix = Some("test".into());
+ settings.server.check_url_prefix();
+ }
+
+ #[test]
+ #[should_panic]
+ fn url_prefix_panic_test() {
+ let mut settings = Settings::new().unwrap();
+ settings.server.url_prefix = Some(" ".into());
+ settings.server.check_url_prefix();
+ }
+}