From d8ac5ed35a0723c35ab40019030f9081c8ca5db4 Mon Sep 17 00:00:00 2001 From: Adrien Waksberg Date: Wed, 12 Oct 2016 23:23:03 +0200 Subject: [PATCH] first cut binary --- bin/mpw | 173 +-------------------------------------- bin/mpw-old | 214 +++++++++++++++++++++++++++++++++++++++++++++++++ bin/mpw-passwd | 50 ++++++++++++ 3 files changed, 268 insertions(+), 169 deletions(-) create mode 100755 bin/mpw-old create mode 100644 bin/mpw-passwd diff --git a/bin/mpw b/bin/mpw index 5f0d64d..2d32700 100755 --- a/bin/mpw +++ b/bin/mpw @@ -18,13 +18,9 @@ $: << File.expand_path('../../lib', __FILE__) -require 'optparse' require 'locale' require 'set' require 'i18n' -require 'mpw/mpw' -require 'mpw/config' -require 'mpw/cli' # --------------------------------------------------------- # # Set local @@ -45,170 +41,9 @@ I18n.locale = lang.to_sym # Options # --------------------------------------------------------- # -options_password = {} -options = {} -options[:force] = false -options[:otp] = false -options[:sync] = true -options[:clipboard] = true -options[:group] = nil -options[:config] = nil -options[:wallet] = nil +bin_dir = File.dirname(__FILE__) +command = "#{bin_dir}/mpw-#{ARGV[0]}" -OptionParser.new do |opts| - opts.banner = "#{I18n.t('option.usage')}: mpw [options]" - - opts.on('-a', '--add', I18n.t('option.add')) do - options[:add] = true - end - - opts.on('-A', '--show-all', I18n.t('option.show_all')) do - options[:type] = nil - options[:show] = '' - end - - opts.on('-c', '--config CONFIG', I18n.t('option.config')) do |config| - options[:config] = config - end - - opts.on('-C', '--no-clipboard', I18n.t('option.clipboard')) do - options[:clipboard] = false - end - - opts.on('-e', '--export', I18n.t('option.export')) do - options[:export] = true - end - - opts.on('-f', '--file FILE', I18n.t('option.file')) do |file| - options[:file] = file - end - - opts.on('-F', '--force', I18n.t('option.force')) do - options[:force] = true - end - - opts.on('-g', '--group GROUP', I18n.t('option.group')) do |group| - options[:group] = group - end - - opts.on('-G', '--generate-password [LENGTH]', I18n.t('option.generate_password')) do |length| - options_password[:length] = length - end - - opts.on('-h', '--help', I18n.t('option.help')) do - puts opts - exit 0 - end - - opts.on('-I', '--import', I18n.t('option.import')) do - options[:import] = true - end - - opts.on('-k', '--key KEY', I18n.t('option.key')) do |key| - options[:key] = key - end - - opts.on('-n', '--numeric', I18n.t('option.numeric')) do - options_password[:numeric] = true - end - - opts.on('-N', '--no-sync', I18n.t('option.no_sync')) do - options[:sync] = false - end - - opts.on('-O', '--otp', I18n.t('option.otp')) do - options[:otp] = true - end - - opts.on('-s', '--show [SEARCH]', I18n.t('option.show')) do |search| - search.nil? ? (options[:show] = '') : (options[:show] = search) - end - - opts.on('-S', '--setup', I18n.t('option.setup')) do - options[:setup] = true - end - - opts.on('-w', '--wallet WALLET', I18n.t('option.wallet')) do |wallet| - options[:wallet] = wallet - end - - opts.on('-W', '--setup-wallet', I18n.t('option.setup_wallet')) do - options[:setup_wallet] = true - end - - opts.on('-x', '--special-chars', I18n.t('option.special_chars')) do - options_password[:special] = true - end - - opts.on('-y', '--alpha', I18n.t('option.alpha')) do - options_password[:alpha] = true - end -end.parse! - -# --------------------------------------------------------- # -# Main -# --------------------------------------------------------- # - -# Generate password -if not options_password.empty? - puts MPW::MPW::password(options_password) - exit 0 -end - -begin - config = MPW::Config.new(options[:config]) - cli = MPW::Cli.new(config, options[:clipboard], options[:sync], options[:otp]) - - # Setup a new config - if not options[:setup].nil? - cli.setup(lang) - exit 0 - end - - cli.setup(lang) if not config.is_valid? - cli.setup_gpg_key if not config.check_gpg_key? - - cli.get_wallet(options[:wallet]) - cli.decrypt - - # Display the item's informations - if not options[:show].nil? - opts = {search: options[:show], - group: options[:group], - } - - cli.display(opts) - - # Add a new item - elsif not options[:add].nil? and options[:key].nil? - cli.add - - # Add a new public key in wallet - elsif not options[:add].nil? and not options[:key].nil? - cli.add_key(options[:key], options[:file]) - - # Delete a public key in wallet - elsif not options[:delete].nil? and not options[:key].nil? - cli.delete_key(options[:key]) - - # Export - elsif not options[:export].nil? and not options[:file].nil? - cli.export(options[:file]) - - # Import - elsif not options[:import].nil? and not options[:file].nil? - cli.import(options[:file]) - - # Setup wallet config - elsif not options[:setup_wallet].nil? - cli.setup_wallet_config - - end - - cli = nil - - exit 0 - -rescue SystemExit, Interrupt - exit 3 +if Dir.glob("#{bin_dir}/mpw-*").include?("#{command}") + Kernel.load(command) end diff --git a/bin/mpw-old b/bin/mpw-old new file mode 100755 index 0000000..5f0d64d --- /dev/null +++ b/bin/mpw-old @@ -0,0 +1,214 @@ +#!/usr/bin/ruby +# MPW is a software to crypt and manage your passwords +# Copyright (C) 2016 Adrien Waksberg +# +# This program 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 2 +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +$: << File.expand_path('../../lib', __FILE__) + +require 'optparse' +require 'locale' +require 'set' +require 'i18n' +require 'mpw/mpw' +require 'mpw/config' +require 'mpw/cli' + +# --------------------------------------------------------- # +# Set local +# --------------------------------------------------------- # + +lang = Locale::Tag.parse(ENV['LANG']).to_simple.to_s[0..1] + +if defined?(I18n.enforce_available_locales) + I18n.enforce_available_locales = true +end + +I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) +I18n.load_path = Dir["#{File.expand_path('../../i18n', __FILE__)}/*.yml"] +I18n.default_locale = :en +I18n.locale = lang.to_sym + +# --------------------------------------------------------- # +# Options +# --------------------------------------------------------- # + +options_password = {} +options = {} +options[:force] = false +options[:otp] = false +options[:sync] = true +options[:clipboard] = true +options[:group] = nil +options[:config] = nil +options[:wallet] = nil + +OptionParser.new do |opts| + opts.banner = "#{I18n.t('option.usage')}: mpw [options]" + + opts.on('-a', '--add', I18n.t('option.add')) do + options[:add] = true + end + + opts.on('-A', '--show-all', I18n.t('option.show_all')) do + options[:type] = nil + options[:show] = '' + end + + opts.on('-c', '--config CONFIG', I18n.t('option.config')) do |config| + options[:config] = config + end + + opts.on('-C', '--no-clipboard', I18n.t('option.clipboard')) do + options[:clipboard] = false + end + + opts.on('-e', '--export', I18n.t('option.export')) do + options[:export] = true + end + + opts.on('-f', '--file FILE', I18n.t('option.file')) do |file| + options[:file] = file + end + + opts.on('-F', '--force', I18n.t('option.force')) do + options[:force] = true + end + + opts.on('-g', '--group GROUP', I18n.t('option.group')) do |group| + options[:group] = group + end + + opts.on('-G', '--generate-password [LENGTH]', I18n.t('option.generate_password')) do |length| + options_password[:length] = length + end + + opts.on('-h', '--help', I18n.t('option.help')) do + puts opts + exit 0 + end + + opts.on('-I', '--import', I18n.t('option.import')) do + options[:import] = true + end + + opts.on('-k', '--key KEY', I18n.t('option.key')) do |key| + options[:key] = key + end + + opts.on('-n', '--numeric', I18n.t('option.numeric')) do + options_password[:numeric] = true + end + + opts.on('-N', '--no-sync', I18n.t('option.no_sync')) do + options[:sync] = false + end + + opts.on('-O', '--otp', I18n.t('option.otp')) do + options[:otp] = true + end + + opts.on('-s', '--show [SEARCH]', I18n.t('option.show')) do |search| + search.nil? ? (options[:show] = '') : (options[:show] = search) + end + + opts.on('-S', '--setup', I18n.t('option.setup')) do + options[:setup] = true + end + + opts.on('-w', '--wallet WALLET', I18n.t('option.wallet')) do |wallet| + options[:wallet] = wallet + end + + opts.on('-W', '--setup-wallet', I18n.t('option.setup_wallet')) do + options[:setup_wallet] = true + end + + opts.on('-x', '--special-chars', I18n.t('option.special_chars')) do + options_password[:special] = true + end + + opts.on('-y', '--alpha', I18n.t('option.alpha')) do + options_password[:alpha] = true + end +end.parse! + +# --------------------------------------------------------- # +# Main +# --------------------------------------------------------- # + +# Generate password +if not options_password.empty? + puts MPW::MPW::password(options_password) + exit 0 +end + +begin + config = MPW::Config.new(options[:config]) + cli = MPW::Cli.new(config, options[:clipboard], options[:sync], options[:otp]) + + # Setup a new config + if not options[:setup].nil? + cli.setup(lang) + exit 0 + end + + cli.setup(lang) if not config.is_valid? + cli.setup_gpg_key if not config.check_gpg_key? + + cli.get_wallet(options[:wallet]) + cli.decrypt + + # Display the item's informations + if not options[:show].nil? + opts = {search: options[:show], + group: options[:group], + } + + cli.display(opts) + + # Add a new item + elsif not options[:add].nil? and options[:key].nil? + cli.add + + # Add a new public key in wallet + elsif not options[:add].nil? and not options[:key].nil? + cli.add_key(options[:key], options[:file]) + + # Delete a public key in wallet + elsif not options[:delete].nil? and not options[:key].nil? + cli.delete_key(options[:key]) + + # Export + elsif not options[:export].nil? and not options[:file].nil? + cli.export(options[:file]) + + # Import + elsif not options[:import].nil? and not options[:file].nil? + cli.import(options[:file]) + + # Setup wallet config + elsif not options[:setup_wallet].nil? + cli.setup_wallet_config + + end + + cli = nil + + exit 0 + +rescue SystemExit, Interrupt + exit 3 +end diff --git a/bin/mpw-passwd b/bin/mpw-passwd new file mode 100644 index 0000000..c99d002 --- /dev/null +++ b/bin/mpw-passwd @@ -0,0 +1,50 @@ +#!/usr/bin/ruby +# MPW is a software to crypt and manage your passwords +# Copyright (C) 2016 Adrien Waksberg +# +# This program 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 2 +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require 'optparse' +require 'mpw/mpw' + +options = {} + +OptionParser.new do |opts| + opts.banner = "#{I18n.t('option.usage')}: mpw-passwd [options]" + + opts.on('-h', '--help', I18n.t('option.help')) do + puts opts + exit 0 + end + + opts.on('-l', '--length NUMBER', I18n.t('option.length')) do |length| + options[:length] = length.to_i + end + + opts.on('-n', '--numeric', I18n.t('option.numeric')) do + options[:numeric] = true + end + + opts.on('-s', '--special-chars', I18n.t('option.special_chars')) do + options[:special] = true + end + + opts.on('-a', '--alpha', I18n.t('option.alpha')) do + options[:alpha] = true + end +end.parse! + +puts MPW::MPW::password(options) +exit 0