Compare commits
28 Commits
circleci-p
...
master
Author | SHA1 | Date | |
---|---|---|---|
37c156b24a | |||
e850c6c880 | |||
25dba8029b | |||
7a582b216e | |||
fe2e42a3f2 | |||
ca206f231d | |||
2a781498e7 | |||
d69279aafd | |||
8063e2cd65 | |||
541f0aff03 | |||
3ff06feb2e | |||
255b18e2c5 | |||
8cbfd64f2d | |||
1d890a4593 | |||
51e761df38 | |||
4784a9c5c5 | |||
ec66f74d7d | |||
24ee2009b0 | |||
e1def09764 | |||
6027c4f1ba | |||
36ed1f9ebc | |||
2d2f392c1e | |||
9ede962190 | |||
1921f3434d | |||
f23bd5fe14 | |||
2b86b0bf51 | |||
bde4be616f | |||
8a342387f6 |
@ -1,13 +0,0 @@
|
|||||||
# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
|
|
||||||
version: 2.1
|
|
||||||
# Use a package of configuration called an orb.
|
|
||||||
orbs:
|
|
||||||
# Declare a dependency on the welcome-orb
|
|
||||||
welcome: circleci/welcome-orb@0.4.1
|
|
||||||
# Orchestrate or schedule a set of jobs
|
|
||||||
workflows:
|
|
||||||
# Name the workflow "welcome"
|
|
||||||
welcome:
|
|
||||||
# Run the welcome/run job in its own container
|
|
||||||
jobs:
|
|
||||||
- welcome/run
|
|
@ -12,11 +12,20 @@ jobs:
|
|||||||
# well on Windows or Mac. You can convert this to a matrix build if you need
|
# well on Windows or Mac. You can convert this to a matrix build if you need
|
||||||
# cross-platform coverage.
|
# cross-platform coverage.
|
||||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-gitea
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
- name: Prep For Local Builds
|
||||||
|
run: echo "${LOCIP} gitea.comnenos" >> /etc/hosts
|
||||||
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Build Tools
|
||||||
|
run: |
|
||||||
|
apt update
|
||||||
|
apt -y --no-install-recommends install build-essential clang cmake gdb git wget
|
||||||
|
|
||||||
- name: Create Build Environment
|
- name: Create Build Environment
|
||||||
# Some projects don't allow in-source building, so create a separate build directory
|
# Some projects don't allow in-source building, so create a separate build directory
|
||||||
# We'll use this as our working directory for all subsequent commands
|
# We'll use this as our working directory for all subsequent commands
|
@ -3,4 +3,4 @@ project(passwdgen)
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
add_executable(passwdgen main.cpp)
|
add_executable(passwdgen passwdgen.cpp)
|
||||||
|
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# passwdgen
|
||||||
|
### a rudimentary random string password generator
|
||||||
|
|
||||||
|
For demo purposes only
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
**Bare Bones**
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
g++ -o build/passwdgen ./passwdgen.cpp
|
||||||
|
```
|
||||||
|
|
||||||
|
**From CMAKE**
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, just copy the compiled binary to somewhere on your $PATH
|
Binary file not shown.
Binary file not shown.
@ -1,6 +1,12 @@
|
|||||||
|
//
|
||||||
|
// passwdgen.cpp
|
||||||
|
// Created by Greg Gauthier on 2020.10.22.
|
||||||
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
|
|
||||||
std::string random_string(std::size_t length, bool punc) {
|
std::string random_string(std::size_t length, bool punc) {
|
||||||
std::string CHARACTERS;
|
std::string CHARACTERS;
|
||||||
std::string ALPHANUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
std::string ALPHANUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||||
@ -13,7 +19,7 @@ std::string random_string(std::size_t length, bool punc) {
|
|||||||
}
|
}
|
||||||
std::random_device random_device;
|
std::random_device random_device;
|
||||||
std::mt19937 generator(random_device());
|
std::mt19937 generator(random_device());
|
||||||
std::uniform_int_distribution<> distribution(0, CHARACTERS.size() - 1);
|
std::uniform_int_distribution<> distribution(0.0, CHARACTERS.size() - 1.0);
|
||||||
|
|
||||||
std::string random_string;
|
std::string random_string;
|
||||||
for (std::size_t i = 0; i < length; ++i) {
|
for (std::size_t i = 0; i < length; ++i) {
|
||||||
@ -25,15 +31,15 @@ std::string random_string(std::size_t length, bool punc) {
|
|||||||
void show_usage(std::string binname) {
|
void show_usage(std::string binname) {
|
||||||
std::cerr << "Usage: " << binname << " [OPTIONS] " << std::endl
|
std::cerr << "Usage: " << binname << " [OPTIONS] " << std::endl
|
||||||
<< "Options:" << std::endl
|
<< "Options:" << std::endl
|
||||||
<< "\t-h, --help \t\tShow this help message" << std::endl
|
<< "\t-h, --help \t\tShow this help message" << std::endl
|
||||||
<< "\t-l, --length \t\tThe length of the password (default: 32)" << std::endl
|
<< "\t-l, --length [n] \t\tThe length of the password (default: 32)" << std::endl
|
||||||
<< "\t-p, --punctuation \t\tToggle special characters (default: false)"
|
<< "\t-p, --punctuation \t\tToggle special characters (default: false)"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
std::string passlenstr;
|
std::string passlenstr;
|
||||||
int passlen;
|
int passlen = 0;
|
||||||
bool punc = false;
|
bool punc = false;
|
||||||
|
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
@ -48,18 +54,24 @@ int main(int argc, char *argv[]) {
|
|||||||
} else if (arg == "-p") {
|
} else if (arg == "-p") {
|
||||||
punc = true;
|
punc = true;
|
||||||
} else if ((arg == "-l") || (arg == "--length")) {
|
} else if ((arg == "-l") || (arg == "--length")) {
|
||||||
passlenstr = argv[i + 1];
|
if (not argv[i +1]) {
|
||||||
if (passlenstr.empty()) {
|
std::cerr << "Specify a password length" << std::endl;
|
||||||
std::cerr << "--destination option requires one argument." << std::endl;
|
|
||||||
return 1;
|
return 1;
|
||||||
|
} else {
|
||||||
|
passlenstr = argv[i + 1];
|
||||||
|
try {
|
||||||
|
passlen = std::stoi(passlenstr);
|
||||||
|
} catch (const std::invalid_argument& e){
|
||||||
|
std::cerr << "Length must be a valid integer" << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (passlenstr.empty()) {
|
if (passlen == 0) {
|
||||||
passlenstr = "32";
|
passlen = 32;
|
||||||
}
|
}
|
||||||
passlen = std::stoi(passlenstr);
|
|
||||||
std::string password = random_string(passlen, punc);
|
std::string password = random_string(passlen, punc);
|
||||||
std::cout << password << std::endl;
|
std::cout << password << std::endl;
|
||||||
return 0;
|
return 0;
|
Loading…
Reference in New Issue
Block a user