Package: ppass
Welcome to ppassGPG Password Managerppassis heavily inspired frompassI wanted to extend some of its functionnalities, and decided to rewrite the application in Python. It was a good exercice to try Python as I am more used to program in js/ts and c++/qt.This beeing said,ppassis not as well tested or stable aspass. I intend to make it evolve in the future, as I am using it on a daily basis. I am however alone on this one. If you want stability and portability, with a great community, please usepass.Stores created withppassare compatible withpass. They are thus also compatible with pass clients likeAndroid Password Store.Main featuresgpg password creation (one file per password)enhanced password file with username, url and commentsopen web browser from password fileautomatic fill in username and password to web browserautomatic ssh connexion with username and passwordcli commands shortcuts for fast access to passwordsgit integrationpossibility to handle several distinct storescommands and params autocompletioncli user interface or json responseRoadmapenhanced filterenhanced clip functionnalitytest on other platformscode cleaningmore to come...Welcome to ppassInstallationRequirementsInstall from pypiInstall from deb packageUsageInitialiseCreate a folderCreate a new passwordClip username and passwordFilterAdd a new storeUse a storeInitialise new git repositoryInitialise from existing git repositoryPublish to gitChange output to JSONCreate a one time passwordShortcuts and AliasesSSH ConnexionBuildDependenciesAuthorIssuesLicenseInstallationRequirementsThe application is developped and used on ubuntu 22.04, with python 3.10.4. Any feedback on other platforms is welcomed.python3 >=3.6.2,<4.0xdotool:sudo apt install xdotoolgit:sudo apt install gitgpg:sudo apt install gnupgnano:sudo apt install nanoxclip:sudo apt install xclipInstall from pypipipinstallppassFor an isolated environment withpipx:pipxinstallppassInstall from deb packageA deb package is available, built usingdh-virtualenv. Installing this package will create a new Python virtual environment inopt/venvs. It will then create the symlinkusr/bin/ppasspointing toopt/venvs/ppass/bin/ppass.Note thatdh-virtualenvbuilt packages are dependent of python version. Use this only if you have default python version installed:ubuntu bionic 18.04: Python 3.6ubuntu focal 20.04: Python 3.8ubuntu hirsute 21.04: Python 3.9 : deprecated (new releases will not be available)ubuntu impish 21.10: Python 3.9 : deprecated (new releases will not be available)ubuntu jammy 22.04: Python 3.10Download latest.debfile from therelease page.sudodpkg-ippass_1.3.3_{{os}}_amd64.debUsageInitialiseInitialisation is required before using the application, to select GPG identity.ppassinitA configuration file.ppassrcis created in the user home directory.By default, passwords will be stored in${HOME}/.ppass/folder.The--editoption will open configuration file in edit mode.Create a folderA folder needs to be created before creating a password file.ppassfolderscreate# orppassfolderscreate--name"${NAME}"Create a new passwordYou can then create a new password file.If you want a new password to be generated:ppassgenerateIf you already know the password:ppassinsertIf there is only one folder, it will be selected by default. Otherwise the list of available folders will be prompted for selection.Clip username and passwordppass openwill open a new webbrowser with the saved urlppass clipwill copy and paste to the active window the username as well as the password :{username} {TAB} {password} {RETURN}ppass userwill copy username to clipboardppass passwill copy password to clipboardIn case a password is saved with your GPG identity, it will be prompted through a modal window.FilterCurrently password filter is only done on the password name, not on the folder name.A future enhancement will provide a better filter functionnality.ppass <command> <anything>will filter displayed passwords based onanythingvalue (name containing this value).Add a new storeYou can create several stores (config sections). Default store path is${HOME}/.ppass-${NAME}/ppass-c"${STORE}"init--new-sectionYou can also select path via the option--path. The folder will be created if it does not exist.ppass-c"${STORE}"init--new-section--path"${PATH}"Use a storeAll functions can be used for a specific store by using the-coption fromppassapplication.ppass-c"${STORE}"generate...
ppass-c"${STORE}"insert...
ppass-c"${STORE}"open...
ppass-c"${STORE}"clip...# etc.Initialise new git repositoryYou can initialise a new git repository in store path. It will set automatic git push for every password creation or modification. The git repository needs to be created on your platform before.A default branchmainis created.ppass-c"${STORE}"init-gitYou can also pass parameter through cli command:ppass-c"${STORE}"init-git--repo"${REPO}"--user"${USER}"--mail"${EMAIL}"--branch"${BRANCH}"Initialise from existing git repositoryIf the git repository already exists, you can restore it in the current store folder by adding the--pulloption toinit-gitcommand.It will download the latest commit frommainbranch. If the branch name is different, you can update it in the config file throughppass init --editor through--branchoption.Publish to gitWhen a git repository is enabled, all changes to passwords will be pushed to remote. However, there will never be automatic pull to retrieve potential password changes from remote (from other application, computer, user, android app, aso.).Automatic pull is not activated so that access to password remain fast.It can be done manually throughppass-c"${STORE}git pull"# orppass-c"${STORE}git sync"# pull then pushIn case a remote change is done but not pulled, the automatic push on password modification will fail. A manualgit syncwill be required to merge local and remote.Change output to JSONDefault application prints in the cli items in a user friendly way: tables, prompts, aso.It is however possible to pass all required parameters through command options, and retrieve function results in JSON format.ppass--json<command>...Create a one time passwordIt is possible to generate a password for direct usage, without saving it to any password file.ppassotpppassdoes not need to be initialized.By default, the password will be saved to clipboard.It is possible to output json file:ppass --json otpIt is also possible to output raw text password:ppass otp --textShortcuts and AliasesApplication must give a fast access to passwords to be useful.All commands can be called by shortcuts with their first letter(s):gforgeneratecforclipoforopen...I personnaly also defined shortcuts in my home.bashrcfile:aliaspp='ppass -c PRO'aliasppc='ppass -c PRO clip'aliasppo='ppass -c PRO open'aliasppp='ppass -c PERSO'aliaspppc='ppass -c PERSO clip'aliaspppo='ppass -c PERSO open'SSH ConnexionIn case you are using login / password to connect to a server through SSH, it can be done viappass. Please note that we discourage such type of connexion. Prefer a connexion withSSH keysinstead.Inppass, set"ssh+${DOMAIN}"in the url field.Theopenandclipcommands will open a new terminal and fill in SSH connexion.Please note this is usinggnome-terminalas an additional application dependency.BuildRequirementsdebhelper:sudo apt install debhelperdh-virtualenvbuildvirtualenvCommandspoetryinstall# build debdpkg-buildpackage-us-uc
dpkg-buildpackage-Tclean# build python packagepython3-mbuildDependenciesPython Librariesclickrichpyclippython-gnupgPython Development LibrariespoetryAuthorSébastien Guerri -github pageIssuesContributions, issues and feature requests are welcome!Feel free to checkissues page. You can also contact me.LicenseCopyright (C) 2022 Sebastien Guerrippass is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.ppass 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 General Public License for more details.You should have received a copy of the GNU General Public License along with ppass. If not, seehttps://www.gnu.org/licenses/.