conradkleinespel / rooster Goto Github PK
View Code? Open in Web Editor NEWA simple password manager for Windows, macOS and Linux.
License: Apache License 2.0
A simple password manager for Windows, macOS and Linux.
License: Apache License 2.0
It would be nice if an application name could be used multiple times.
A common situation is an administrator using different logins on the same server, like
server_hot root pwd0
server_hot smith pwd1
server_yellow root pwd2
server_yellow smith pwd3
Presently rooster does not support it.
(The macOS Sierra thing may or may not be related, but that's the one thing that's changed recently on my setup)
RUST_BACKTRACE=1 rooster generate tessssssst maxjacobson
Type your master password:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ()', ../src/libcore/result.rs:788
stack backtrace:
1: 0x103b78deb - std::sys::backtrace::tracing::imp::write::h29f5fdb9fc0a7395
2: 0x103b7ae3a - std::panicking::default_hook::_{{closure}}::h2cc84f0378700526
3: 0x103b79fd8 - std::panicking::default_hook::hbbe7fa36a995aca0
4: 0x103b7a618 - std::panicking::rust_panic_with_hook::h105c3d42fcd2fb5e
5: 0x103b7a476 - std::panicking::begin_panic::hbf62ea4a5ff3f9de
6: 0x103b7a388 - std::panicking::begin_panic_fmt::h20f5943904e5791d
7: 0x103b7a2df - rust_begin_unwind
8: 0x103ba0560 - core::panicking::panic_fmt::h19323e466869c656
9: 0x103b733c5 - core::result::unwrap_failed::hbc58bb4cc0bc5dd4
10: 0x103b737d2 - rooster_clipboard::main::hc48126e8c5f27f80
11: 0x103b7a29d - std::panicking::try::call::h5df3ac2979db3c90
12: 0x103b7b15b - __rust_try
13: 0x103b7b015 - __rust_maybe_catch_panic
14: 0x103b79951 - std::rt::lang_start::hfe9ab243c60ffb9b
Alright! Here is your password: KSt0pp032B3E@\+;-\;i>9.GK{5G6XeH
It doesn't totally fail, but it is unexpected that it displays the password rather than copying it to my clipboard.
I think something in the clipboard code isn't compatible with macOS Sierra, maybe?
Thanks for this great program! Could you maybe add a Cargo.lock please?
Rooster needs a Dockerfile.
A lot of people seem to be using Dockerfile to run apps in these days, as it's a cross platform way to use apps without having to care much about dependencies.
In addition, the Rooster Docker image will be used for testing Rooster's growing feature-set, automatically and on every commit.
Tasks:
alpine
as the base image/data/.passwords.rooster
--cap-drop=ALL --network=none
and see if it works, if it crashes, figure out what capabilities are required by adding them one by one with --cap-drop=ALL --cap-add=xxx
rooster
/rooster-clipboard
binaries after the buildThanks a lot for your help ❤️ If you have any questions, just let us know and we'll jump in to help.
When Rooster does not succeed in copying a password to the clipboard, the user is currently not notified of the failure, which can be confusing. @maxjacobson talked about this in #9 and it's an interesting question.
The one thing I'm wondering is whether rooster should notify the user
that something went wrong during the copying so they can attempt to fix
it. What do you think?
Some failures are reported by rust-clipboard
, for instance if you are on a platform that rust-clipboard
does not support. Other failures are silently ignored.
If you are willing to work on fixing this, feel free to tell us about yourself here and we'll help you get started. The basic idea would be to improve the error handling in src/command/*.rs
files, for instance here:
Line 63 in d5d5f9f
@maxjacobson how would you like to have been notified when you encountered this bug ?
Linux and some other Unix-like systems are replacing the X11 display protocol with the new Wayland protocol.
There is a safe Rust crate for working with the Wayland clipboard. Currently, wlroots compositors are the best-supported, but other compositors are encouraged to use their portable Wayland clipboard extension.
Whenever you call rooster get <app>
, Rooster will try to find app names that match your query with a fuzzy search. This means that rooster get ggl
will match Google
but also Goggles
. When that happens, Rooster allows you to choose whether you want the password for Google
or Goggles
. This is mostly helpful when you dont remember the exact name of an app.
You can see this in action by running the following commands:
# create a temporary rooster file for tests
rm -f /tmp/test.rooster
export ROOSTER_FILE=/tmp/test.rooster
# add a password for Google
printf "y\ntest\nn\n" | rooster generate Google [email protected]
# add a password for Goggles
printf "test\ntest\n" | rooster generate Goggles [email protected]
# now, get the password for "ggl" as described above
printf "test\n2\n" | rooster get --show ggl
You'll see that at the last command rooster get --show ggl
, Rooster will suggest both passwords. Typing in 2
, as in the test script above, selects the password for Google
.
This is the behavior we should have in all commands that require searching for a password: delete
, change
, regenerate
, rename
, transfer
.
Tasks:
rooster get
behavior for password search on the following commands:
delete
change
regenerate
rename
transfer
Thanks a lot for your help ❤️ If you have any questions, just let us know and we'll jump in to help.
If there is no password file stored, Rooster tries to create one when running rooster uninstall
.
This should not happen, because rooster uninstall
does not need to access the password file.
Some error messages use {:?}
, which can be unfriendly (not always, but sometimes).
Rooster would benefit from removing {:?}
in favor of humanly readable error messages that are both informative and friendly.
Are you up for the task?
The current Rooster installers build the code both in release
and debug
modes, because there used to be a bug in the clipboard library on Linux. This bug has been resolved. So as to speed up install times, we shall build only in release
mode.
Tasks:
git clone https://github.com/conradkdotcom/rooster.git
cargo build --release
)ROOSTER_FILE=/tmp/test.rooster rooster add test test
rooster get test
rooster
binary)README.md
in alphabetical orderIf you have any questions, just let us know and we'll jump in to help.
install.sh
is broken on OSX. From what I hear, the problem is with the sha256sum
command: it exists on Linux but not on OSX. OSX uses shasum -a 256
instead.
Tasks:
shasum -a 256
instead of sha256sum
in install.sh
brew
or port
README.md
in alphabetical orderTo check for OSX, you can use something like this:
if [ "`uname`" = "Darwin" ]; then
# code for osx, ie shasum -a 256 ...
else
# code for other OSes, ie sha256sum ...
fi
Thanks a lot for your help ❤️ If you have any questions, just let us know and we'll jump in to help.
Rooster needs cc
to compile. We'll need to add it to install.sh
so people can easily install Rooster.
I am using MAC M2. I can use rooster before. Today I updated my software and now I can neither use or install rooster.
When I run 'rooster' command, the error message goes like this dyld[41309]: Library not loaded: /opt/homebrew/opt/libsodium/lib/libsodium.23.dylib
And when I reinstall rooster, the error message goes like this
ld: library sodium not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I can see that the rooster trying to access libsodium.23.dylib
. However, the latest version of libsodium has libsodium.26.dylib
Could you please fix this?
It has been deprecated: announcement.
Is there any functionality you would require from another library before this would be possible?
Can't seem to get rooster to install on ubuntu. This can be reproduced exactly in a docker container:
root@dockerhost:/# docker run -it ubuntu bash
root@6a956b281c:/# apt-get update
[ ... ]
root@6a956b281c:/# apt-get install curl gcc make file sudo
[ ... ]
root@6a956b281c:/# curl -sSf https://static.rust-lang.org/rustup.sh | sh
rustup: gpg available. signatures will be verified
rustup: downloading manifest for 'stable'
rustup: downloading toolchain for 'stable'
######################################################################## 100.0%
gpg: assuming signed data in `/root/.rustup/dl/481cfcf7d473f81de22d/rust-1.12.1-x86_64-unknown-linux-gnu.tar.gz'
gpg: Signature made Thu Oct 20 20:32:08 2016 UTC using RSA key ID 7B3B09DC
gpg: Good signature from "Rust Language (Tag and Release Signing Key) <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 108F 6620 5EAE B0AA A8DD 5E1C 85AB 96E6 FA1B E5FE
Subkey fingerprint: C134 66B7 E169 A085 1886 3216 5CB4 A934 7B3B 09DC
rustup: installing toolchain for 'stable'
rustup: extracting installer
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-x86_64-unknown-linux-gnu'
install: installing component 'rust-docs'
install: installing component 'cargo'
Rust is ready to roll.
root@6a956b281c:/# cargo install rooster
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading rooster v2.3.0
Downloading rpassword v0.2.3
Downloading rustc-serialize v0.3.19
Downloading clipboard v0.1.2
Downloading byteorder v0.5.3
Downloading rand v0.3.14
Downloading libc v0.2.17
Downloading getopts v0.2.14
Downloading rust-crypto v0.2.36
Downloading unix-daemonize v0.1.2
Downloading time v0.1.35
Downloading winapi v0.2.8
Downloading kernel32-sys v0.2.2
Downloading winapi-build v0.1.1
Downloading gcc v0.3.38
Downloading termios v0.2.2
Downloading x11 v2.11.0
Downloading pkg-config v0.3.8
Compiling byteorder v0.5.3
Compiling winapi v0.2.8
Compiling winapi-build v0.1.1
Compiling rustc-serialize v0.3.19
Compiling gcc v0.3.38
Compiling pkg-config v0.3.8
Compiling kernel32-sys v0.2.2
Compiling libc v0.2.17
Compiling termios v0.2.2
Compiling unix-daemonize v0.1.2
Compiling x11 v2.11.0
Compiling rand v0.3.14
Compiling time v0.1.35
Compiling rust-crypto v0.2.36
Build failed, waiting for other jobs to finish...
error: failed to compile `rooster v2.3.0`, intermediate artifacts can be found at `/tmp/cargo-install.Q8oAJxea4HXk`
Caused by:
failed to run custom build command for `x11 v2.11.0`
process didn't exit successfully: `/tmp/cargo-install.Q8oAJxea4HXk/release/build/x11-0ca340fb7c96474d/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"x11\"`: No such file or directory (os error 2)"', ../src/libcore/result.rs:788
note: Run with `RUST_BACKTRACE=1` for a backtrace.
There is a possible use case for Rooster to store private keys, such as SSH or GPG keys, cryptocurrency account keys. But there is currently no convenient UI to do so. One can copy-paste file contents into rooster add
input, but that wouldn't work with multiple lines.
I propose adding a way for users to add
passwords from a file path and to get
passwords into a file path. This change wouldn't require to create any new entities in the interface or invent new commands. There are at least two ways to do so:
Add an optional command-line flag -p <path>
or -f <file>
which can be used by different commands as a signal, that they have to interact with a specified file, rather than with stdin or clipboard.
Suggested usage:
rooster add prod-ssh master -f ./id_rsa
rooster get prod-ssh -f ./id_rsa
.This method has a flaw: -f
flag is used sometimes as an input, sometimes as an output, therefore it might not always be clear what is does (as in rooster change someapp -f ./pwd
for example).
Add an optional positional argument [path]
to the commands that accept it.
Suggested usage:
rooster add prod-ssh master ./id_rsa
rooster get prod-ssh ./id_rsa
.Every command will have to have an explanation of this argument's function in the help text.
Same flag or argument could be added to change
, generate
and regenerate
commands as well to ensure that commands act similarly.
It would be cool to have packages for the main platforms people might use Rooster on. This would make it easier to install. People shouldn't need to know that Rooster runs on Rust or uses 3rd party libraries in order to use Rooster.
Here are options for some OSs:
Let us know what you think might be the best way to go about this 😃
By building the program without lacking in any dependencies on MX-Linux Fluxbox 21 get these errors on terminal
Updating crates.io index
Installing rooster v2.9.0
Compiling libc v0.2.132
Compiling cfg-if v1.0.0
Compiling autocfg v1.1.0
Compiling proc-macro2 v1.0.43
Compiling unicode-ident v1.0.3
Compiling quote v1.0.21
Compiling serde v1.0.144
Compiling cc v1.0.73
Compiling log v0.4.17
Compiling pkg-config v0.3.25
Compiling syn v1.0.99
Compiling memchr v2.5.0
Compiling getrandom v0.1.16
Compiling regex-automata v0.1.10
Compiling openssl v0.10.41
Compiling bitflags v1.3.2
Compiling ryu v1.0.11
Compiling os_str_bytes v6.3.0
Compiling hashbrown v0.12.3
Compiling lazy_static v1.4.0
Compiling foreign-types-shared v0.1.1
Compiling serde_json v1.0.85
Compiling serde_derive v1.0.144
Compiling ppv-lite86 v0.2.16
Compiling itoa v0.4.8
Compiling textwrap v0.15.0
Compiling once_cell v1.14.0
Compiling remove_dir_all v0.5.3
Compiling fastrand v1.8.0
Compiling rooster v2.9.0
Compiling strsim v0.10.0
Compiling termcolor v1.1.3
Compiling itoa v1.0.3
Compiling ansi_term v0.12.1
Compiling byteorder v1.4.3
Compiling rprompt v1.0.5
Compiling indexmap v1.9.1
Compiling openssl-sys v0.9.75
Compiling clap_lex v0.2.4
Compiling foreign-types v0.3.2
Compiling dirs-sys v0.3.7
Compiling atty v0.2.14
Compiling tempfile v3.3.0
Compiling rpassword v5.0.1
Compiling xcb v0.8.2
Compiling csv-core v0.1.10
Compiling bstr v0.2.17
Compiling rand_core v0.5.1
Compiling dirs v3.0.2
Compiling clap v3.2.20
Compiling csv v1.1.6
Compiling rand_chacha v0.2.2
Compiling openssl-macros v0.1.0
Compiling rand v0.7.3
Compiling x11-clipboard v0.3.3
Compiling clipboard v0.5.0
error[E0599]: no variant or associated item named HelpRequired
found for enum AppSettings
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:300:38
|
300 | .global_setting(AppSettings::HelpRequired)
| ^^^^^^^^^^^^ variant or associated item not found in AppSettings
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:310:22
|
310 | .about("Forces initializing the file, used in integration tests only"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:319:26
|
319 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:324:26
|
324 | .about("Your username for this account"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:330:26
|
330 | .about("Show the password instead of copying it to the clipboard"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:339:26
|
339 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:345:26
|
345 | .about("Show the password instead of copying it to the clipboard"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:352:22
|
352 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:361:26
|
361 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:366:26
|
366 | .about("Your username for this account"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:372:26
|
372 | .about("Show the password instead of copying it to the clipboard"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:378:26
|
378 | .about("Only use alpha numeric (a-z, A-Z, 0-9) in generated passwords"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:385:26
|
385 | .about("Set a custom length for the generated password")
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:395:26
|
395 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:401:26
|
401 | .about("Show the password instead of copying it to the clipboard"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:407:26
|
407 | .about("Only use alpha numeric (a-z, A-Z, 0-9) in generated passwords"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:414:26
|
414 | .about("Set a custom length for the generated password")
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:424:26
|
424 | .about("The name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:430:26
|
430 | .about("Show the password instead of copying it to the clipboard"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:439:26
|
439 | .about("The current name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:444:26
|
444 | .about("The new name of the app"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:453:26
|
453 | .about("The current name of the app (fuzzy-matched)"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:458:26
|
458 | .about("Your new username for this account"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:472:34
|
472 | ... .about("The path to the file you want to import"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:481:34
|
481 | ... .about("The path to the file you want to import"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:490:34
|
490 | ... .about("The path to the file you want to import"),
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:512:26
|
512 | .about("The log2n parameter")
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:518:26
|
518 | .about("The r parameter")
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:524:26
|
524 | .about("The p parameter")
| ^^^^^ method not found in Arg<'_>
error[E0599]: no method named about
found for struct Arg
in the current scope
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rooster-2.9.0/src/lib.rs:531:26
|
531 | .about("Disable parameter checks"),
| ^^^^^ method not found in Arg<'_>
For more information about this error, try rustc --explain E0599
.
error: could not compile rooster
due to 30 previous errors
error: failed to compile rooster v2.9.0
, intermediate artifacts can be found at /tmp/cargo-installFynSyz
I would like to have some sort of multi-factor authentication if possible. Using TOTP would be great. I have no experience implementing that though. I don't know if it possible given the offline nature of Rooster.
Any other suggestions are appreciated.
I like to have a long master password, however without GUI I have to retype it for every operation, which is really bothersome. Is there a solution to this?
In order to make dependency upgrade easier to audit, Rooster needs vendored dependencies.
This is probably the right tool for the job: https://github.com/alexcrichton/cargo-vendor
Are you up for the task?
It would be awesome to have a way to see if we have any weak/hacked passwords in our Rooster file.
What do you think ? Please post your thoughts here before working on this issue because we have to agree on the solution before we start coding.
My thoughts:
rooster weak
could show a list of weak passwordsI'd like to introduce measures to protect us from a 3rd party library going rogue and sending data to the internet at some point. Imagine the maintainer for a library has his crates.io account hacked and for some reason we don't realise that an updated crate was hacked, that could mean disaster.
Would you know of any way we could prevent that from happening?
I was thinking of calling seccomp
early in Rooster to prevent most syscalls, but a rogue library could hook into Rooster early on and defeat the seccomp
rules. Another possibility I see is providing a shell wrapper around Rooster that would call unshare
(or similar things on bsd/osx) to remove network access (and other dangerous things).
Build with nightly and stable on Windows fails while compiling 'quale' package.
error[E0433]: failed to resolve. Could not find `unix` in `os`
--> C:\Users\Chad Baxter\.cargo\registry\src\github.com-1ecc6299db9ec823\quale-1.0.0\lib.rs:3:14
|
3 | use std::os::unix::fs::PermissionsExt;
| ^^^^ Could not find `unix` in `os`
error[E0425]: cannot find value `X_OK` in module `libc`
--> C:\Users\Chad Baxter\.cargo\registry\src\github.com-1ecc6299db9ec823\quale-1.0.0\lib.rs:46:50
|
46 | libc::access(file_path.into_raw(), libc::X_OK) == libc::EXIT_SUCCESS
| ^^^^ not found in `libc`
error[E0425]: cannot find value `S_IXGRP` in module `libc`
--> C:\Users\Chad Baxter\.cargo\registry\src\github.com-1ecc6299db9ec823\quale-1.0.0\lib.rs:49:32
|
49 | (libc::S_IEXEC | libc::S_IXGRP | libc::S_IXOTH) as u32;
| ^^^^^^^ not found in `libc`
error[E0425]: cannot find value `S_IXOTH` in module `libc`
--> C:\Users\Chad Baxter\.cargo\registry\src\github.com-1ecc6299db9ec823\quale-1.0.0\lib.rs:49:48
|
49 | (libc::S_IEXEC | libc::S_IXGRP | libc::S_IXOTH) as u32;
| ^^^^^^^ not found in `libc`
error[E0599]: no method named `mode` found for type `std::fs::Permissions` in the current scope
--> C:\Users\Chad Baxter\.cargo\registry\src\github.com-1ecc6299db9ec823\quale-1.0.0\lib.rs:51:37
|
51 | file_metadata.permissions().mode() & EXECUTABLE_FLAGS != 0;
| ^^^^
error: aborting due to 5 previous errors
error: Could not compile `quale`.
Seems to be looking for unix options in libc where there is none. Will file an issue with 'quale' if needed.
Could not install in ubuntu 18 04
Compiling rooster v2.7.1 (file:///tmp/rooster-2.7.1)
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster0-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster1-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster10-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster11-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster12-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster13-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster14-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster15-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster2-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster3-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster4-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster5-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster6-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster7-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster8-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.rooster9-bd2969b0910c611e4c10efec5863b409.rs.rcgu.o" "-o" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d" "/tmp/rooster-2.7.1/target/release/deps/rooster-23e2c115a743235d.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs" "-L" "/tmp/rooster-2.7.1/target/release/deps" "-L" "/tmp/rooster-2.7.1/target/release/build/backtrace-sys-35af6ac32f24f884/out/.libs" "-L" "/tmp/rooster-2.7.1/target/release/build/rust-crypto-6d8b2ec129d770b6/out" "-L" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/rooster-2.7.1/target/release/deps/libzxcvbn-614a37b5ee0c6d5c.rlib" "/tmp/rooster-2.7.1/target/release/deps/libquick_error-e09c82b5ecd66f83.rlib" "/tmp/rooster-2.7.1/target/release/deps/libitertools-10ace6d731182608.rlib" "/tmp/rooster-2.7.1/target/release/deps/libeither-efc16737a5a28f09.rlib" "/tmp/rooster-2.7.1/target/release/deps/libfancy_regex-249e45468f28a2ac.rlib" "/tmp/rooster-2.7.1/target/release/deps/libbit_set-10539f8d9cc10540.rlib" "/tmp/rooster-2.7.1/target/release/deps/libbit_vec-9eee8fb45e49dc6c.rlib" "/tmp/rooster-2.7.1/target/release/deps/libregex-c279a8f091ade9cf.rlib" "/tmp/rooster-2.7.1/target/release/deps/libutf8_ranges-7b4e8573c661902f.rlib" "/tmp/rooster-2.7.1/target/release/deps/libregex_syntax-054de8a249b552b3.rlib" "/tmp/rooster-2.7.1/target/release/deps/libthread_local-81882703703bc390.rlib" "/tmp/rooster-2.7.1/target/release/deps/libunreachable-67e686944e678e11.rlib" "/tmp/rooster-2.7.1/target/release/deps/libvoid-9b6684705abad601.rlib" "/tmp/rooster-2.7.1/target/release/deps/libaho_corasick-6b2ae24ef57fcc12.rlib" "/tmp/rooster-2.7.1/target/release/deps/libmemchr-0d1535e246b65428.rlib" "/tmp/rooster-2.7.1/target/release/deps/liblazy_static-3e935b0e32977efc.rlib" "/tmp/rooster-2.7.1/target/release/deps/libshell_escape-5127dfc079549bab.rlib" "/tmp/rooster-2.7.1/target/release/deps/libclipboard-4759c40c02b82879.rlib" "/tmp/rooster-2.7.1/target/release/deps/libx11_clipboard-c20c735f68f15279.rlib" "/tmp/rooster-2.7.1/target/release/deps/libxcb-89e01d1e6dac881e.rlib" "/tmp/rooster-2.7.1/target/release/deps/liblog-6e10b76700dd84cb.rlib" "/tmp/rooster-2.7.1/target/release/deps/liberror_chain-0f77ad9d3edb57ae.rlib" "/tmp/rooster-2.7.1/target/release/deps/libbacktrace-d69f6348a36783df.rlib" "/tmp/rooster-2.7.1/target/release/deps/libbacktrace_sys-4e4a532499daa7c5.rlib" "/tmp/rooster-2.7.1/target/release/deps/librustc_demangle-635b8c8435a383ec.rlib" "/tmp/rooster-2.7.1/target/release/deps/libcfg_if-6f2d9f85a12ab73f.rlib" "/tmp/rooster-2.7.1/target/release/deps/libserde_json-3ba5ac61e9434ce9.rlib" "/tmp/rooster-2.7.1/target/release/deps/libdtoa-9ce4e1f29b04c5a8.rlib" "/tmp/rooster-2.7.1/target/release/deps/libitoa-484e119a5b0ddfaa.rlib" "/tmp/rooster-2.7.1/target/release/deps/libnum_traits-287c946108740372.rlib" "/tmp/rooster-2.7.1/target/release/deps/libserde-2f796c40e322cc8d.rlib" "/tmp/rooster-2.7.1/target/release/deps/libquale-be04633d39f12fcc.rlib" "/tmp/rooster-2.7.1/target/release/deps/libbyteorder-bc27024ac813f832.rlib" "/tmp/rooster-2.7.1/target/release/deps/librpassword-6f1aab5fb706438f.rlib" "/tmp/rooster-2.7.1/target/release/deps/libcrypto-558c5f6b41b8f98e.rlib" "/tmp/rooster-2.7.1/target/release/deps/libtime-5ecf0b1cef4e684c.rlib" "/tmp/rooster-2.7.1/target/release/deps/librustc_serialize-62cc95d6ddf3a7be.rlib" "/tmp/rooster-2.7.1/target/release/deps/librand-2de97ff967cb4fa1.rlib" "/tmp/rooster-2.7.1/target/release/deps/libgetopts-b4c03b8696861173.rlib" "/tmp/rooster-2.7.1/target/release/deps/liblibc-1a7fc5b6bb2a31a1.rlib" "-Wl,--start-group" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-0cce0e0e34e933aa.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-7bed87070cafeede.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-e76963fdf0c94daa.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-8cd3b0417a81fb26.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-387bd949d1b36a91.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-453d825a151d7dec.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-5235bf36189564a3.rlib" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5725e7f9b84bd931.rlib" "-Wl,--end-group" "/home/fabien/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-874d313336916306.rlib" "-Wl,-Bdynamic" "-l" "xcb" "-l" "xcb" "-l" "xcb" "-l" "xcb" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
= note: /usr/bin/x86_64-linux-gnu-ld: cannot find -lxcb
/usr/bin/x86_64-linux-gnu-ld: cannot find -lxcb
/usr/bin/x86_64-linux-gnu-ld: cannot find -lxcb
/usr/bin/x86_64-linux-gnu-ld: cannot find -lxcb
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: Could not compile `rooster`.
Rooster is going to get a companion library called librooster
. This library will make Rooster's functionnality accessible without having to use Rooster itself. The end goal is to allow you to build custom software on top of Rooster's functionnality.
For instance, let's say you want to have custom password strength checks on your Rooster file. Well, with librooster
, you can create a new Rust project, add just your custom check code and be done. No need to fiddle with Rooster's binary file format.
Or you want to build a web interface for Rooster. With librooster
and web development crates, you can get started quickly.
This issue will help track progress on the librooster
project.
Feel free to comment below for any suggestions, questions or specific needs you might have! 👍
Some code is duplicated in the code for the rooster get
command, specifically this part (lines 65-85) and this part (lines 108-128).
The goal of this issue is to deduplicate this code.
Tasks:
src/commands/get.rs
, make a function with the duplicated codex.x.X
) in Cargo.toml
so I can publish to crates.ioThanks a lot for your help ❤️ If you have any questions, just let us know and we'll jump in to help.
If I understand correct, currently there can be only one user:password pair for an application.
Wouldn't it be nice to allow multiple user:password pairs for the same application? For example, for people who have two accounts for some service with different privileges? This could be a potential feature upgrade.
rooster change
rooster add
rooster export
rooster uninstall
Testing option for the different commands would also be good. Currently, only -s
on rooster get
is tested. Testing rooster generate -a -l8
and rooster regenerate -a -l8
would be cool! Simple tests are fine. We just need to make sure that basic functionnality works as expected.
Testing error cases is not expected here. See #38 regarding errors.
Are you up for the task?
At some point, Rooster will include an "Analytics" module so that we can use data to make Rooster better. Let's see what this whole "Analytics" thing is about.
Given the nature of Rooster, including some kind of tracking system inside of it could seem crazy. I get that. Matter of fact, when I am not sure what data is collected about me and/or don't understand what's being done with that data, I usually try to opt-out.
And, just so you know, when Rooster gets analytics, there will be a way to opt-out.
However, as with a lot of software projects, knowing what users do with the software helps in making it better. Here are some thing that I think Rooster could benefit from knowing:
rooster list
, rooster get
, etc): this information could be used to removed unused commands or improve heavily used ones,These things will help make Rooster better for every user, including you. So yeah, at some point, Rooster will track how you use it. If you don't want to be tracked, you will be able opt-out.
Any feedback is welcome.
Hello again!
Currently when I rooster get github
, for example, and mistype my master password, the output looks like this:
I could not upgrade the Rooster file. This could be because:
- you explicitly told Rooster not to open the file,
- your version of Rooster is outdated,
- your Rooster file is corrupted,
- your master password is wrong.
Try upgrading to the latest version of Rooster.
IMO rooster should know which scenario has occurred, and print just the most accurate thing.
Hi @conradkdotcom
error: the listed checksum of `/builddir/rooster-2.7.1/vendor/backtrace-sys/src/libbacktrace/config.sub` has changed:
expected: 3b739084e4b409aacf8531f87b57efa602eccdd17b5cddbc4ae1313a2c866f34
actual: 82745ce935695e7984a053c155a64b9ad16ece3a07d931cc90ab3fb28b7221af
What's wrong ?
Regards.
Is there a way to use rooster as a password command for a configuration file? e.g. as with pass
with pass show gmail
.
I hate issues for discussing stuff, but there we go:
I was trying to build the same thing you've done with rooster, with two big differences
The library is ultra fast and provides encryption which is going to last. (It's taken from djb's nacl after all), and the main consequence for this one would be having a better key derivation scheme - we definitely don't want to have SHA256 for keys :)
my reasoning for this one is having a file format which is well documented, stable and with all the bonus points of being almost drop-in compatible with android - which means less hassle for doing the mobile app.
Thoughts? I'd be more than happy to discuss more on this, since I don't want to duplicate effort :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.