arvados-login-sync 0.1.20161012155037 → 0.1.20161018143726

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/arvados-login-sync +32 -9
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e9f6e86f167fa7c609285a33749c95377225667
4
- data.tar.gz: 50d7d9079b53aa1e2ea6b3680b57b1abe2dc2dae
3
+ metadata.gz: 4e3ad3433425add7575e18420152fff83fb8c738
4
+ data.tar.gz: 5efbc9ab38321f8b6a4e997d63c469195919d7bb
5
5
  SHA512:
6
- metadata.gz: 14ec34078a358fd675c730c9049e48477624a726e716b24ff865fdb21495c31a3dde12afd55af59c7bc3d412356fabb994cdb97597b21981026583e685f7c89c
7
- data.tar.gz: ebc548d79a9c5d4d14519253126499b72c7bed4b13cea423f6797708c868cb869b3124d17dc911909bdb513f6b7c6014df0b90eb82b96761975486f7dd947311
6
+ metadata.gz: b7c09fb2e812e1bf248e64312046998fcb3de7f1b001c82960dd10e2cff44698646c56a8fc23f09cfd8f75dca2abdf5231035e7c94ab8f204ccb4de0eec16e18
7
+ data.tar.gz: afc9b71294d789cdc032cb66495e0a97eaf961ad3844047eff9afed70025c751779d5c8785f03a2a3006a797b9dca44740b8a858b50e2ed22b05484ce3c16c54
@@ -14,6 +14,13 @@ req_envs.each do |k|
14
14
  end
15
15
  end
16
16
 
17
+ exclusive_mode = ARGV.index("--exclusive")
18
+ exclusive_banner = "#######################################################################################
19
+ # THIS FILE IS MANAGED BY #{$0} -- CHANGES WILL BE OVERWRITTEN #
20
+ #######################################################################################\n\n"
21
+ start_banner = "### BEGIN Arvados-managed keys -- changes between markers will be overwritten\n"
22
+ end_banner = "### END Arvados-managed keys -- changes between markers will be overwritten\n"
23
+
17
24
  keys = ''
18
25
 
19
26
  seen = Hash.new
@@ -87,20 +94,36 @@ begin
87
94
  @homedir = Etc.getpwnam(l[:username]).dir
88
95
  userdotssh = File.join(@homedir, ".ssh")
89
96
  Dir.mkdir(userdotssh) if !File.exists?(userdotssh)
90
- @key = "#######################################################################################
91
- # THIS FILE IS MANAGED BY #{$0} -- CHANGES WILL BE OVERWRITTEN #
92
- #######################################################################################\n\n"
93
- @key += keys[l[:username]].join("\n") + "\n"
94
- userauthkeys = File.join(userdotssh, "authorized_keys")
95
- if !File.exists?(userauthkeys) or IO::read(userauthkeys) != @key then
96
- f = File.new(userauthkeys, 'w')
97
- f.write(@key)
97
+
98
+ newkeys = "###\n###\n" + keys[l[:username]].join("\n") + "\n###\n###\n"
99
+
100
+ keysfile = File.join(userdotssh, "authorized_keys")
101
+
102
+ if File.exists?(keysfile)
103
+ oldkeys = IO::read(keysfile)
104
+ else
105
+ oldkeys = ""
106
+ end
107
+
108
+ if exclusive_mode
109
+ newkeys = exclusive_banner + newkeys
110
+ elsif oldkeys.start_with?(exclusive_banner)
111
+ newkeys = start_banner + newkeys + end_banner
112
+ elsif (m = /^(.*?\n|)#{start_banner}(.*?\n|)#{end_banner}(.*)/m.match(oldkeys))
113
+ newkeys = m[1] + start_banner + newkeys + end_banner + m[3]
114
+ else
115
+ newkeys = start_banner + newkeys + end_banner + oldkeys
116
+ end
117
+
118
+ if oldkeys != newkeys then
119
+ f = File.new(keysfile, 'w')
120
+ f.write(newkeys)
98
121
  f.close()
99
122
  end
100
123
  FileUtils.chown_R(l[:username], nil, userdotssh)
101
124
  File.chmod(0700, userdotssh)
102
125
  File.chmod(0750, @homedir)
103
- File.chmod(0600, userauthkeys)
126
+ File.chmod(0600, keysfile)
104
127
  end
105
128
 
106
129
  devnull.close
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arvados-login-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20161012155037
4
+ version: 0.1.20161018143726
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arvados Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-12 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arvados
@@ -31,7 +31,7 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.1.20150615153458
33
33
  description: Creates and updates local login accounts for Arvados users. Built from
34
- git commit b1b6efe84c40e5672a33f9a08cb7e1e4979460b5
34
+ git commit 94588fc14c200e4163144cd53bfa548a27fff7e0
35
35
  email: gem-dev@curoverse.com
36
36
  executables:
37
37
  - arvados-login-sync