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 | build | ||||||
| detee_challenge_nodes | detee_challenge_nodes | ||||||
| .cargo | .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