XFFXFF commited on
Commit
a5b7d08
2 Parent(s): c4a2d87 9d3a8e0

Merge pull request #174 from neon-mmd/patch-csrf-security-with-cors

Browse files
Files changed (3) hide show
  1. Cargo.lock +23 -7
  2. Cargo.toml +2 -1
  3. src/lib.rs +13 -1
Cargo.lock CHANGED
@@ -19,6 +19,21 @@ dependencies = [
19
  "tracing",
20
  ]
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  [[package]]
23
  name = "actix-files"
24
  version = "0.6.2"
@@ -190,7 +205,7 @@ dependencies = [
190
  "serde_urlencoded 0.7.1",
191
  "smallvec 1.11.0",
192
  "socket2",
193
- "time 0.3.24",
194
  "url 2.4.0",
195
  ]
196
 
@@ -583,7 +598,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
583
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
584
  dependencies = [
585
  "percent-encoding 2.3.0",
586
- "time 0.3.24",
587
  "version_check",
588
  ]
589
 
@@ -801,9 +816,9 @@ dependencies = [
801
 
802
  [[package]]
803
  name = "deranged"
804
- version = "0.3.6"
805
  source = "registry+https://github.com/rust-lang/crates.io-index"
806
- checksum = "8810e7e2cf385b1e9b50d68264908ec367ba642c96d02edfe61c39e88e2a3c01"
807
 
808
  [[package]]
809
  name = "derive_more"
@@ -3000,9 +3015,9 @@ dependencies = [
3000
 
3001
  [[package]]
3002
  name = "time"
3003
- version = "0.3.24"
3004
  source = "registry+https://github.com/rust-lang/crates.io-index"
3005
- checksum = "b79eabcd964882a646b3584543ccabeae7869e9ac32a46f6f22b7a5bd405308b"
3006
  dependencies = [
3007
  "deranged",
3008
  "itoa 1.0.9",
@@ -3519,8 +3534,9 @@ dependencies = [
3519
 
3520
  [[package]]
3521
  name = "websurfx"
3522
- version = "0.16.0"
3523
  dependencies = [
 
3524
  "actix-files",
3525
  "actix-web",
3526
  "async-trait",
 
19
  "tracing",
20
  ]
21
 
22
+ [[package]]
23
+ name = "actix-cors"
24
+ version = "0.6.4"
25
+ source = "registry+https://github.com/rust-lang/crates.io-index"
26
+ checksum = "b340e9cfa5b08690aae90fb61beb44e9b06f44fe3d0f93781aaa58cfba86245e"
27
+ dependencies = [
28
+ "actix-utils",
29
+ "actix-web",
30
+ "derive_more",
31
+ "futures-util",
32
+ "log",
33
+ "once_cell",
34
+ "smallvec 1.11.0",
35
+ ]
36
+
37
  [[package]]
38
  name = "actix-files"
39
  version = "0.6.2"
 
205
  "serde_urlencoded 0.7.1",
206
  "smallvec 1.11.0",
207
  "socket2",
208
+ "time 0.3.25",
209
  "url 2.4.0",
210
  ]
211
 
 
598
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
599
  dependencies = [
600
  "percent-encoding 2.3.0",
601
+ "time 0.3.25",
602
  "version_check",
603
  ]
604
 
 
816
 
817
  [[package]]
818
  name = "deranged"
819
+ version = "0.3.7"
820
  source = "registry+https://github.com/rust-lang/crates.io-index"
821
+ checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
822
 
823
  [[package]]
824
  name = "derive_more"
 
3015
 
3016
  [[package]]
3017
  name = "time"
3018
+ version = "0.3.25"
3019
  source = "registry+https://github.com/rust-lang/crates.io-index"
3020
+ checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
3021
  dependencies = [
3022
  "deranged",
3023
  "itoa 1.0.9",
 
3534
 
3535
  [[package]]
3536
  name = "websurfx"
3537
+ version = "0.16.1"
3538
  dependencies = [
3539
+ "actix-cors",
3540
  "actix-files",
3541
  "actix-web",
3542
  "async-trait",
Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
  [package]
2
  name = "websurfx"
3
- version = "0.16.0"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
@@ -14,6 +14,7 @@ handlebars = { version = "4.3.6", features = ["dir_source"] }
14
  scraper = {version="*"}
15
  actix-web = {version="4.3.1", features = ["cookies"]}
16
  actix-files = {version="0.6.2"}
 
17
  serde_json = {version="*"}
18
  fake-useragent = {version="*"}
19
  env_logger = {version="0.10.0"}
 
1
  [package]
2
  name = "websurfx"
3
+ version = "0.16.1"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
 
14
  scraper = {version="*"}
15
  actix-web = {version="4.3.1", features = ["cookies"]}
16
  actix-files = {version="0.6.2"}
17
+ actix-cors = {version="0.6.4"}
18
  serde_json = {version="*"}
19
  fake-useragent = {version="*"}
20
  env_logger = {version="0.10.0"}
src/lib.rs CHANGED
@@ -12,8 +12,9 @@ use std::net::TcpListener;
12
 
13
  use crate::server::routes;
14
 
 
15
  use actix_files as fs;
16
- use actix_web::{dev::Server, middleware::Logger, web, App, HttpServer};
17
  use config::parser::Config;
18
  use handlebars::Handlebars;
19
  use handler::public_paths::public_path;
@@ -52,9 +53,20 @@ pub fn run(listener: TcpListener, config: Config) -> std::io::Result<Server> {
52
  let cloned_config_threads_opt: u8 = config.threads;
53
 
54
  let server = HttpServer::new(move || {
 
 
 
 
 
 
 
 
 
 
55
  App::new()
56
  .app_data(handlebars_ref.clone())
57
  .app_data(web::Data::new(config.clone()))
 
58
  .wrap(Logger::default()) // added logging middleware for logging.
59
  // Serve images and static files (css and js files).
60
  .service(
 
12
 
13
  use crate::server::routes;
14
 
15
+ use actix_cors::Cors;
16
  use actix_files as fs;
17
+ use actix_web::{dev::Server, http::header, middleware::Logger, web, App, HttpServer};
18
  use config::parser::Config;
19
  use handlebars::Handlebars;
20
  use handler::public_paths::public_path;
 
53
  let cloned_config_threads_opt: u8 = config.threads;
54
 
55
  let server = HttpServer::new(move || {
56
+ let cors: Cors = Cors::default()
57
+ .allow_any_origin()
58
+ .allowed_methods(vec!["GET"])
59
+ .allowed_headers(vec![
60
+ header::ORIGIN,
61
+ header::CONTENT_TYPE,
62
+ header::REFERER,
63
+ header::COOKIE,
64
+ ]);
65
+
66
  App::new()
67
  .app_data(handlebars_ref.clone())
68
  .app_data(web::Data::new(config.clone()))
69
+ .wrap(cors)
70
  .wrap(Logger::default()) // added logging middleware for logging.
71
  // Serve images and static files (css and js files).
72
  .service(