safedb 0.7.1001 → 0.10.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +50 -3
- data/Dockerfile +46 -0
- data/Jenkinsfile +45 -0
- data/README.md +16 -0
- data/Rakefile +2 -2
- data/cucumber-test.sh +55 -0
- data/lib/cli.rb +20 -7
- data/lib/controller/abstract/controller.rb +2 -3
- data/lib/controller/access/init.rb +11 -7
- data/lib/controller/access/login.rb +0 -2
- data/lib/controller/book/commit.rb +1 -0
- data/lib/controller/db/obliterate.feature +45 -0
- data/lib/controller/db/obliterate.rb +58 -0
- data/lib/controller/db/pull.rb +10 -26
- data/lib/controller/db/push.rb +29 -321
- data/lib/controller/db/{remote.rb → remote-github-keypair.rb} +11 -6
- data/lib/controller/db/remote-github-token.rb +69 -0
- data/lib/controller/db/state.rb +63 -0
- data/lib/controller/query/publish.rb +27 -0
- data/lib/controller/requirer.rb +0 -1
- data/lib/manual/git-interaction.md +176 -0
- data/lib/manual/remote.md +0 -1
- data/lib/model/book.rb +13 -1
- data/lib/model/checkin.feature +15 -27
- data/lib/model/content.rb +25 -27
- data/lib/model/indices.rb +35 -8
- data/lib/model/state_evolve.rb +21 -0
- data/lib/model/text_chunk.rb +1 -1
- data/lib/utils/extend/string.rb +28 -0
- data/lib/utils/git/gitflow.rb +565 -0
- data/lib/utils/git/github.rb +69 -0
- data/lib/utils/identity/machine.id.rb +2 -2
- data/lib/utils/keys/keypair.rb +93 -0
- data/lib/utils/logs/logger.rb +3 -4
- data/lib/utils/time/timestamp.rb +2 -0
- data/lib/version.rb +1 -1
- data/pod-image-builder.yaml +27 -0
- data/pod-image-safetty.yaml +18 -0
- data/safedb.gemspec +1 -6
- metadata +17 -64
- data/genius-decision.txt +0 -25
- data/lib/controller/db/model_git_service.rb +0 -399
- data/lib/plugin/github.rb +0 -53
- data/lib/utils/store/github.rb +0 -27
data/lib/utils/keys/keypair.rb
CHANGED
@@ -8,6 +8,99 @@ module SafeDb
|
|
8
8
|
# ssh formatted public key and/or the pem formatted private key.
|
9
9
|
class Keypair
|
10
10
|
|
11
|
+
######## ################################################################## #####################
|
12
|
+
######## ################################################################## #####################
|
13
|
+
######## KeyPair Creation with ssh_config SSH config file in .ssh Directory #####################
|
14
|
+
######## ################################################################## #####################
|
15
|
+
######## ################################################################## #####################
|
16
|
+
|
17
|
+
=begin
|
18
|
+
|
19
|
+
|
20
|
+
private_key_path = File.join( Indices::SSH_DIRECTORY_PATH, @verse[ Indices::REMOTE_PRIVATE_KEY_KEYNAME ] )
|
21
|
+
private_key_exists = File.file?( private_key_path )
|
22
|
+
puts "private key found at #{private_key_path}" if private_key_exists
|
23
|
+
|
24
|
+
unless private_key_exists
|
25
|
+
|
26
|
+
puts "private key will be created at #{private_key_path}"
|
27
|
+
file_writer = Write.new()
|
28
|
+
file_writer.file_key = Indices::PRIVATE_KEY_DEFAULT_KEY_NAME
|
29
|
+
file_writer.to_dir = Indices::SSH_DIRECTORY_PATH
|
30
|
+
file_writer.flow()
|
31
|
+
|
32
|
+
FileUtils.chmod( 0600, private_key_path, :verbose => true )
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
git_username = @verse[ Indices::GIT_REPOSITORY_USER_KEYNAME ]
|
37
|
+
git_reponame = @verse[ Indices::GIT_REPOSITORY_NAME_KEYNAME ]
|
38
|
+
|
39
|
+
ssh_host_name = @verse[ Indices::REMOTE_MIRROR_SSH_HOST_KEYNAME ]
|
40
|
+
ssh_config_exists = File.file?( Indices::SSH_CONFIG_FILE_PATH )
|
41
|
+
config_file_contents = File.read( Indices::SSH_CONFIG_FILE_PATH ) if ssh_config_exists
|
42
|
+
ssh_config_written = ssh_config_exists && config_file_contents.include?( ssh_host_name )
|
43
|
+
puts "ssh config for host #{ssh_host_name} has already been written" if ssh_config_written
|
44
|
+
|
45
|
+
unless ssh_config_written
|
46
|
+
|
47
|
+
puts "ssh config for host #{ssh_host_name} will be written"
|
48
|
+
config_backup_path = File.join( Indices::SSH_DIRECTORY_PATH, "safe.clobbered.ssh.config-#{TimeStamp.yyjjj_hhmm_sst()}" )
|
49
|
+
File.write( config_backup_path, config_file_contents ) if ssh_config_exists
|
50
|
+
puts "original ssh config at #{config_backup_path}" if ssh_config_exists
|
51
|
+
|
52
|
+
File.open( Indices::SSH_CONFIG_FILE_PATH, "a" ) do |line|
|
53
|
+
line.puts( "\n" )
|
54
|
+
line.puts( "Host #{ ssh_host_name }" )
|
55
|
+
line.puts( "HostName github.com" )
|
56
|
+
line.puts( "User #{ git_username }" )
|
57
|
+
line.puts( "IdentityFile #{ private_key_path }" )
|
58
|
+
line.puts( "StrictHostKeyChecking no" )
|
59
|
+
end
|
60
|
+
|
61
|
+
puts "ssh config has been successfully written"
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
puts ""
|
66
|
+
|
67
|
+
ssh_test_cmd_string = "ssh -i #{private_key_path} -vT git@github.com"
|
68
|
+
system( ssh_test_cmd_string )
|
69
|
+
ssh_cmd_exit_status = $?.exitstatus
|
70
|
+
|
71
|
+
unless ssh_cmd_exit_status == 1
|
72
|
+
|
73
|
+
puts ""
|
74
|
+
puts "The command exit status is #{ssh_test_exitstatus}"
|
75
|
+
puts ""
|
76
|
+
puts "### ##### : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
77
|
+
puts "### Error : SSH test result did not contain expected string."
|
78
|
+
puts "### Query : #{ ssh_test_cmd_string }"
|
79
|
+
puts "### ##### : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
80
|
+
puts ""
|
81
|
+
|
82
|
+
return
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
puts ""
|
87
|
+
puts "### ####### : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
88
|
+
puts "### Success : The SSH connection test was a roaring success."
|
89
|
+
puts "### Command : #{ ssh_test_cmd_string }"
|
90
|
+
puts "### ####### : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
91
|
+
puts ""
|
92
|
+
|
93
|
+
=end
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
######## ################################################################## #####################
|
99
|
+
######## ################################################################## #####################
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
11
104
|
# Generate an elliptic curve cryptographic keypair. After the key is
|
12
105
|
# generated, both the public and private keys can be retrieved through
|
13
106
|
# the accessors.
|
data/lib/utils/logs/logger.rb
CHANGED
@@ -24,10 +24,9 @@ require "logger"
|
|
24
24
|
#
|
25
25
|
module LogImpl
|
26
26
|
|
27
|
-
@@
|
28
|
-
@@gem_base = File.join( Dir.home(), ".#{@@gem_name}" )
|
27
|
+
@@gem_base = File.join( File.join( Dir.home, ".config" ), "safedb" )
|
29
28
|
FileUtils.mkdir_p( @@gem_base ) unless File.exists?( @@gem_base )
|
30
|
-
@@log_path = File.join( @@gem_base, "safedb-
|
29
|
+
@@log_path = File.join( @@gem_base, "safedb-cli-usage.log" )
|
31
30
|
|
32
31
|
|
33
32
|
# Classes that include (MIXIN) this logging module will
|
@@ -88,7 +87,7 @@ module LogImpl
|
|
88
87
|
def get_logger
|
89
88
|
|
90
89
|
file_logger = Logger.new @@log_path
|
91
|
-
file_logger.level = Logger::
|
90
|
+
file_logger.level = Logger::INFO
|
92
91
|
original_formatter = Logger::Formatter.new
|
93
92
|
|
94
93
|
file_logger.formatter = proc { |severity, datetime, progname, msg|
|
data/lib/utils/time/timestamp.rb
CHANGED
@@ -470,6 +470,8 @@ module SafeDb
|
|
470
470
|
# move method contents into test class
|
471
471
|
def self.log_instance_time
|
472
472
|
|
473
|
+
log.info(x) { "activity timestamp is #{yyjjj_hhmm_sst} representing #{TimeStamp.instance.time_now.ctime}" }
|
474
|
+
|
473
475
|
log.debug(x) { "[stamp] -------------- => -------------------------------- #" }
|
474
476
|
log.debug(x) { "[stamp] eco time stamp => [#{TimeStamp.instance.time_now.ctime}]" }
|
475
477
|
log.debug(x) { "[stamp] -------------- => -------------------------------- #" }
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
# This kubernetes pod template instantiates a slave (JNLP) sidecar container
|
2
|
+
# for Jenkins master slave communications and the Google Kaniko container for
|
3
|
+
# building docker images without demanding privileged docker in/out access.
|
4
|
+
---
|
5
|
+
kind: Pod
|
6
|
+
metadata:
|
7
|
+
name: kaniko
|
8
|
+
spec:
|
9
|
+
containers:
|
10
|
+
- name: jnlp
|
11
|
+
image: jenkins/jnlp-slave:latest
|
12
|
+
- name: kaniko
|
13
|
+
image: gcr.io/kaniko-project/executor:debug
|
14
|
+
imagePullPolicy: Always
|
15
|
+
volumeMounts:
|
16
|
+
- name: regcredsvolume
|
17
|
+
mountPath: /kaniko/.docker
|
18
|
+
command:
|
19
|
+
- /busybox/sh
|
20
|
+
- "-c"
|
21
|
+
args:
|
22
|
+
- /busybox/cat
|
23
|
+
tty: true
|
24
|
+
volumes:
|
25
|
+
- name: regcredsvolume
|
26
|
+
secret:
|
27
|
+
secretName: registrycreds
|
@@ -0,0 +1,18 @@
|
|
1
|
+
metadata:
|
2
|
+
labels:
|
3
|
+
pod-type: jenkins-worker
|
4
|
+
spec:
|
5
|
+
containers:
|
6
|
+
- name: jnlp
|
7
|
+
env:
|
8
|
+
- name: CONTAINER_ENV_VAR
|
9
|
+
value: jnlp
|
10
|
+
- name: safettytests
|
11
|
+
image: devops4me/safetty:latest
|
12
|
+
imagePullPolicy: Always
|
13
|
+
command:
|
14
|
+
- cat
|
15
|
+
tty: true
|
16
|
+
env:
|
17
|
+
- name: CONTAINER_ENV_VAR
|
18
|
+
value: safettytests
|
data/safedb.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.bindir = "bin"
|
24
24
|
spec.executables = [ 'safe' ]
|
25
25
|
spec.require_paths = ["lib"]
|
26
|
-
spec.required_ruby_version = '>= 2.
|
26
|
+
spec.required_ruby_version = '>= 2.5.1'
|
27
27
|
|
28
28
|
spec.add_dependency 'bcrypt', '~> 3.1'
|
29
29
|
spec.add_dependency 'thor', '~> 0.20'
|
@@ -31,9 +31,4 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency 'octokit', '~> 4.14'
|
32
32
|
spec.add_dependency 'net-ssh', '~> 5.2'
|
33
33
|
|
34
|
-
spec.add_development_dependency "bundler", "~> 0"
|
35
|
-
spec.add_development_dependency "cucumber", "~> 2.0"
|
36
|
-
spec.add_development_dependency "aruba", "~> 1.0.0-alpha.1"
|
37
|
-
spec.add_development_dependency "gem-release", "~> 0"
|
38
|
-
|
39
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safedb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Apollo Akora
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt
|
@@ -80,62 +80,6 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '5.2'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: bundler
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: cucumber
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '2.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '2.0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: aruba
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.0.0.pre.alpha.1
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 1.0.0.pre.alpha.1
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: gem-release
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
83
|
description: safe is a credentials manager for the linux command line written in Ruby.
|
140
84
|
It locks and unlocks secrets in a safe simple and intuitive manner. You can then
|
141
85
|
visit websites, manufacture keys and passwords, inject credentials into Jenkins,
|
@@ -150,12 +94,14 @@ files:
|
|
150
94
|
- ".gitignore"
|
151
95
|
- ".yardopts"
|
152
96
|
- CONTRIBUTING.md
|
97
|
+
- Dockerfile
|
153
98
|
- Gemfile
|
99
|
+
- Jenkinsfile
|
154
100
|
- LICENSE
|
155
101
|
- README.md
|
156
102
|
- Rakefile
|
157
103
|
- bin/safe
|
158
|
-
-
|
104
|
+
- cucumber-test.sh
|
159
105
|
- lib/cli.rb
|
160
106
|
- lib/controller/abstract/authenticate.rb
|
161
107
|
- lib/controller/abstract/controller.rb
|
@@ -185,10 +131,13 @@ files:
|
|
185
131
|
- lib/controller/book/refresh.rb
|
186
132
|
- lib/controller/book/view.rb
|
187
133
|
- lib/controller/config/README.md
|
188
|
-
- lib/controller/db/
|
134
|
+
- lib/controller/db/obliterate.feature
|
135
|
+
- lib/controller/db/obliterate.rb
|
189
136
|
- lib/controller/db/pull.rb
|
190
137
|
- lib/controller/db/push.rb
|
191
|
-
- lib/controller/db/remote.rb
|
138
|
+
- lib/controller/db/remote-github-keypair.rb
|
139
|
+
- lib/controller/db/remote-github-token.rb
|
140
|
+
- lib/controller/db/state.rb
|
192
141
|
- lib/controller/edit/README.md
|
193
142
|
- lib/controller/edit/generate.rb
|
194
143
|
- lib/controller/edit/keys.rb
|
@@ -207,6 +156,7 @@ files:
|
|
207
156
|
- lib/controller/navigate/open.rb
|
208
157
|
- lib/controller/query/copy.rb
|
209
158
|
- lib/controller/query/print.rb
|
159
|
+
- lib/controller/query/publish.rb
|
210
160
|
- lib/controller/query/show.rb
|
211
161
|
- lib/controller/query/tell.rb
|
212
162
|
- lib/controller/requirer.rb
|
@@ -218,6 +168,7 @@ files:
|
|
218
168
|
- lib/manual/crypto-math.md
|
219
169
|
- lib/manual/dir-structure.md
|
220
170
|
- lib/manual/drag-drop.md
|
171
|
+
- lib/manual/git-interaction.md
|
221
172
|
- lib/manual/login-logout.md
|
222
173
|
- lib/manual/push-pull.md
|
223
174
|
- lib/manual/remote.md
|
@@ -234,7 +185,6 @@ files:
|
|
234
185
|
- lib/model/state_evolve.rb
|
235
186
|
- lib/model/state_query.rb
|
236
187
|
- lib/model/text_chunk.rb
|
237
|
-
- lib/plugin/github.rb
|
238
188
|
- lib/utils/ciphers/aes-256.rb
|
239
189
|
- lib/utils/ciphers/blowfish.rb
|
240
190
|
- lib/utils/ciphers/cipher.rb
|
@@ -246,6 +196,8 @@ files:
|
|
246
196
|
- lib/utils/extend/hash.rb
|
247
197
|
- lib/utils/extend/string.rb
|
248
198
|
- lib/utils/facts/fact.rb
|
199
|
+
- lib/utils/git/gitflow.rb
|
200
|
+
- lib/utils/git/github.rb
|
249
201
|
- lib/utils/identity/identifier.rb
|
250
202
|
- lib/utils/identity/machine.id.rb
|
251
203
|
- lib/utils/inspect/inspector.rb
|
@@ -263,13 +215,14 @@ files:
|
|
263
215
|
- lib/utils/logs/logger.rb
|
264
216
|
- lib/utils/store/datamap.rb
|
265
217
|
- lib/utils/store/datastore.rb
|
266
|
-
- lib/utils/store/github.rb
|
267
218
|
- lib/utils/store/merge-boys-school.json
|
268
219
|
- lib/utils/store/merge-girls-school.json
|
269
220
|
- lib/utils/store/merge-merged-data.json
|
270
221
|
- lib/utils/store/struct.rb
|
271
222
|
- lib/utils/time/timestamp.rb
|
272
223
|
- lib/version.rb
|
224
|
+
- pod-image-builder.yaml
|
225
|
+
- pod-image-safetty.yaml
|
273
226
|
- safedb.gemspec
|
274
227
|
homepage: https://www.safedb.net
|
275
228
|
licenses:
|
@@ -284,7 +237,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
284
237
|
requirements:
|
285
238
|
- - ">="
|
286
239
|
- !ruby/object:Gem::Version
|
287
|
-
version: 2.
|
240
|
+
version: 2.5.1
|
288
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
289
242
|
requirements:
|
290
243
|
- - ">="
|
data/genius-decision.txt
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
|
2
|
-
###########################################################################
|
3
|
-
Put the JSOn files together with the crypts in the same git repository
|
4
|
-
###########################################################################
|
5
|
-
|
6
|
-
|
7
|
-
The bottom line to simplify is that everything goes up - the file
|
8
|
-
|
9
|
-
safe pull does not need any authentication
|
10
|
-
safe push requires you to be authenticated
|
11
|
-
|
12
|
-
|
13
|
-
Maybe safe pull will create a subdirectory in .safedb.net and then writes into a config (say json) file in ~/.safedb.net the directory name.
|
14
|
-
Maybe safe switch changes the safe database folder by writing that config file
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
Simplify the Safe
|
20
|
-
|
21
|
-
- safe pull https://github.com..../repo-name?branch-or-commit-name
|
22
|
-
- pull backs up the current directory into ~/.safe-backups
|
23
|
-
|
24
|
-
- safe push (will send wherever the pull came from)
|
25
|
-
- or safe push (from a verse uses the config in the verse to do the push
|