cli/src/main.rs

54 lines
1.7 KiB
Rust
Raw Normal View History

/*
* mCaptcha - A proof of work based DoS protection system
* Copyright © 2023 Aravinth Manivannan <realravinth@batsense.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
use clap::*;
2021-03-10 15:07:51 +05:30
use pow_sha256::ConfigBuilder;
2021-03-09 15:51:11 +05:30
/// Simple program to greet a person
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
/// Salt with which PoW should be computed
#[arg(short, long)]
salt: String,
/// Phrase over which PoW should be computed
#[arg(short, long)]
phrase: String,
/// Difficulty Factor
#[arg(short, long)]
difficulty_factor: u32,
}
2021-03-09 15:51:11 +05:30
fn main() {
let matches = Args::parse();
let phrase = matches.phrase;
let salt = matches.salt;
let difficulty_factor = matches.difficulty_factor;
2021-03-09 15:51:11 +05:30
2021-03-10 15:07:51 +05:30
let config = ConfigBuilder::default().salt(salt.into()).build().unwrap();
let work = config.prove_work(&phrase, difficulty_factor).unwrap();
println!("difficulty: {}", &difficulty_factor);
println!("nonce: {}", &work.nonce);
println!("original phrase: {}", &phrase);
println!("result: {}", &work.result);
2021-03-09 15:51:11 +05:30
}