start rewrite based on ticket #2
keys go migrated to solana_sdk in a 01b889d
This commit is contained in:
		
							parent
							
								
									01b889d273
								
							
						
					
					
						commit
						d7b0c3fd2c
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| /target | ||||
| target | ||||
| build | ||||
| detee_challenge_nodes | ||||
| .cargo | ||||
|  | ||||
							
								
								
									
										0
									
								
								Cargo.lock → legacy_challenge/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										0
									
								
								Cargo.lock → legacy_challenge/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
									
										1297
									
								
								rewrite/Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										1297
									
								
								rewrite/Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								rewrite/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								rewrite/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| [package] | ||||
| name = "rewrite" | ||||
| version = "0.1.0" | ||||
| edition = "2021" | ||||
| 
 | ||||
| [dependencies] | ||||
| actix-web = "4.9.0" | ||||
| rand = "0.8.5" | ||||
| serde = { version = "1.0.210", features = ["derive"] } | ||||
| tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread", "fs"] } | ||||
							
								
								
									
										110
									
								
								rewrite/src/http_server.rs
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										110
									
								
								rewrite/src/http_server.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,110 @@ | ||||
| use actix_web::{ | ||||
|     error::ResponseError, get, http::StatusCode, post, web, App, HttpResponse, HttpServer, | ||||
|     Responder, Result, | ||||
| }; | ||||
| use rand::Rng; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| use std::{fmt, sync::Arc}; | ||||
| 
 | ||||
| const HOMEPAGE: &str = r#"Welcome, beloved hacker!
 | ||||
| 
 | ||||
| This node is part of the DeTEE hacker-challenge network. This network allows you | ||||
| to mint the token {token_address}, | ||||
| and owns the mint address {mint_address}. | ||||
| 
 | ||||
| To be able to mint, you will need to send SOL to {mint_address}, however: | ||||
| 
 | ||||
| BE AWARE THAT THE ONLY WAY TO GET THE SOL OUT IS BY HACKING THIS NETWORK! | ||||
| DeTEE REPRESENTATIVES DON'T KNOW HOW TO HACK IT! THAT'S ACTUALLY WHY THIS GOT CREATED... | ||||
| 
 | ||||
| Allowed operations: | ||||
| 
 | ||||
| /nodes <- information about nodes and counters of network activity | ||||
| /mint (address) <- mint DHCT tokens to the address; the wallet needs sol for this operation | ||||
| 
 | ||||
| Feel free to use this as a faucet for HCKT tokens, that you can use for testing in any dApp. | ||||
| 
 | ||||
| The objective of the hacker challenge is to get the SOL out of {mint_address}. | ||||
| If you hack it, contact us at https://detee.cloud cause we have lots of rewards.
 | ||||
| "#;
 | ||||
| 
 | ||||
| #[get("/")] | ||||
| async fn homepage() -> impl Responder { | ||||
|     HttpResponse::Ok().body(HOMEPAGE) | ||||
| } | ||||
| 
 | ||||
| #[derive(Serialize)] | ||||
| struct NodesResp { | ||||
|     ip: String, | ||||
|     last_keepalive: u64, | ||||
|     online: bool, | ||||
|     public: bool, | ||||
|     mints: u64, | ||||
|     mint_requests: u64, | ||||
|     ratls_attacks: u64, | ||||
| } | ||||
| 
 | ||||
| #[get("/nodes")] | ||||
| async fn get_nodes() -> HttpResponse { | ||||
|     let mock_nodes = generate_mock_data(); | ||||
|     HttpResponse::Ok().json(mock_nodes) | ||||
| } | ||||
| 
 | ||||
| #[derive(Deserialize)] | ||||
| struct MintReq { | ||||
|     wallet: String, | ||||
| } | ||||
| 
 | ||||
| #[post("/mint")] | ||||
| async fn mint(req: web::Json<MintReq>) -> impl Responder { | ||||
|     HttpResponse::Ok().json({}) | ||||
| } | ||||
| 
 | ||||
| // TODO: init(ds: Arc<Store>)
 | ||||
| pub async fn init() { | ||||
|     HttpServer::new(move || { | ||||
|         App::new() | ||||
|             // .app_data(web::Data::new(ds.clone()))
 | ||||
|             .service(homepage) | ||||
|             .service(get_nodes) | ||||
|             .service(mint) | ||||
|     }) | ||||
|     .bind("0.0.0.0:31372") | ||||
|     .unwrap() | ||||
|     .run() | ||||
|     .await | ||||
|     .unwrap(); | ||||
| } | ||||
| 
 | ||||
| fn generate_mock_data() -> Vec<NodesResp> { | ||||
|     let mut rng = rand::thread_rng(); | ||||
|     let mut nodes = Vec::new(); | ||||
| 
 | ||||
|     for _ in 0..15 { | ||||
|         let ip = format!( | ||||
|             "{}.{}.{}.{}", | ||||
|             rng.gen_range(1..=255), | ||||
|             rng.gen_range(1..=255), | ||||
|             rng.gen_range(1..=255), | ||||
|             rng.gen_range(1..=255) | ||||
|         ); | ||||
|         let last_keepalive = rng.gen_range(1_000_000..10_000_000); | ||||
|         let online = rng.gen_bool(0.5); | ||||
|         let public = rng.gen_bool(0.5); | ||||
|         let mints = rng.gen_range(0..500); | ||||
|         let mint_requests = rng.gen_range(0..1000); | ||||
|         let ratls_attacks = rng.gen_range(0..10); | ||||
| 
 | ||||
|         nodes.push(NodesResp { | ||||
|             ip, | ||||
|             last_keepalive, | ||||
|             online, | ||||
|             public, | ||||
|             mints, | ||||
|             mint_requests, | ||||
|             ratls_attacks, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     nodes | ||||
| } | ||||
							
								
								
									
										14
									
								
								rewrite/src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										14
									
								
								rewrite/src/main.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| mod http_server; | ||||
| 
 | ||||
| use tokio::task::JoinSet; | ||||
| 
 | ||||
| #[tokio::main] | ||||
| async fn main() { | ||||
|     let mut long_term_tasks = JoinSet::new(); | ||||
| 
 | ||||
|     long_term_tasks.spawn(http_server::init()); | ||||
| 
 | ||||
|     long_term_tasks.join_next().await; | ||||
|     println!("Shutting down..."); | ||||
| } | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user