From 017e03cb880145ba521ec54065c6415f3516b3cd Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 10 Aug 2020 16:29:38 +0200 Subject: [PATCH 1/4] ignore vendor dir --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 677c465..180bf07 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .bundle +vendor -- GitLab From ed5ca3f0cf379d4f95840251566520e2fb6e6be6 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 10 Aug 2020 16:30:03 +0200 Subject: [PATCH 2/4] add rerun for development --- Gemfile | 4 ++++ Gemfile.lock | 12 ++++++++++++ buildah.sh | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 73659d7..9f85e16 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,10 @@ gem 'sinatra', '~> 2.0' gem 'thin' gem 'base32' +group :development do + gem 'rerun' +end + group :test do gem 'rack-test' gem 'rspec' diff --git a/Gemfile.lock b/Gemfile.lock index 39e8902..bec1522 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,13 +6,22 @@ GEM daemons (1.3.1) diff-lcs (1.3) eventmachine (1.2.7) + ffi (1.13.1) irb (1.0.0) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mustermann (1.0.3) rack (2.0.7) rack-protection (2.0.5) rack rack-test (1.1.0) rack (>= 1.0, < 3) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) + rerun (0.13.0) + listen (~> 3.0) rspec (3.8.0) rspec-core (~> 3.8.0) rspec-expectations (~> 3.8.0) @@ -45,7 +54,10 @@ DEPENDENCIES byebug irb rack-test + rerun rspec sinatra (~> 2.0) thin +BUNDLED WITH + 1.16.1 diff --git a/buildah.sh b/buildah.sh index cd79d52..5a310a3 100755 --- a/buildah.sh +++ b/buildah.sh @@ -23,7 +23,7 @@ build_pkgs="rh-ruby26-ruby-devel openssl-devel gcc gcc-c++ bzip2 make" # For some reason tar can't be uninstalled once it is in the system # (reverse-dependencies up to systemd). buildah run $image_id -- yum install -y $build_pkgs tar -buildah run --user $user $image_id -- bundle install --without test --deployment --jobs $(nproc) +buildah run --user $user $image_id -- bundle install --without test --without development --deployment --jobs $(nproc) buildah run $image_id -- yum remove -y $build_pkgs buildah run $image_id -- rm -rf /var/cache/* /var/log/yum.* /home/$user/.bundle/cache buildah run $image_id -- chown -R 1000:1000 /home/$user -- GitLab From b2fa606c34009ad44ff1dcf5f04b51f46372c309 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 10 Aug 2020 16:30:55 +0200 Subject: [PATCH 3/4] Fix #1 - support keys with UTF-8 in uids If wkd-srv runs with LANG=C (which is what happens in our images), ruby will default to US-ASCII as the default encoding. OpenPGP Key uids should be UTF-8 strings, thus let's switch to UTF-8 as the default encoding. Additionally, there are keys in the wild with broken character encoding. Thus let's be more on the safe side and enforce UTF-8 strings. See: * https://0xacab.org/schleuder/schleuder/-/issues/276 * https://0xacab.org/schleuder/schleuder/-/merge_requests/325 * https://0xacab.org/schleuder/schleuder/-/merge_requests/301 For more background on the details from another project. Keys imported were fetched from the SKS network. --- lib/wkd-srv.rb | 3 + lib/wkd-srv/key.rb | 10 +- ...02B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub | 29 +++ ...B152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub | 187 ++++++++++++++++++ spec/wkd-srv/key_spec.rb | 23 +++ 5 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 spec/fixtures/keys/3102B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub create mode 100644 spec/fixtures/keys/7AB152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub diff --git a/lib/wkd-srv.rb b/lib/wkd-srv.rb index f898f4f..fcfca98 100644 --- a/lib/wkd-srv.rb +++ b/lib/wkd-srv.rb @@ -1,4 +1,7 @@ #!/usr/bin/env ruby +# default to UTF-8 encoding as early as possible for external +# data. As in general gpg keys should contain UTF-8 +Encoding.default_external = Encoding::UTF_8 require 'shellwords' require 'tmpdir' diff --git a/lib/wkd-srv/key.rb b/lib/wkd-srv/key.rb index 4bb3dba..3da3ea9 100644 --- a/lib/wkd-srv/key.rb +++ b/lib/wkd-srv/key.rb @@ -85,7 +85,6 @@ module WkdSrv runcli('gpg', [base_args, args], &block) end - def runcli(cmd, args) exitcode = -1 errors = [] @@ -121,7 +120,7 @@ module WkdSrv def get_distinct_key_id!(emailaddr) _, keylisting, _ = gpg("--with-colons --list-keys '<#{emailaddr}>'") - pub_lines = keylisting.grep(/^pub/) + pub_lines = keylisting.map{|s| sanitize_encoding(s) }.grep(/^pub/) case pub_lines.size when 0 raise "Error: key material contains no key matching the given address!" @@ -132,6 +131,13 @@ module WkdSrv end end + def sanitize_encoding(str) + if str.is_a?(String) && str.encoding != 'UTF-8' + str.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: '') + else + str + end + end end end end diff --git a/spec/fixtures/keys/3102B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub b/spec/fixtures/keys/3102B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub new file mode 100644 index 0000000..a68dcbd --- /dev/null +++ b/spec/fixtures/keys/3102B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBD4tUP0RBADyrM6g52fnEgXryP54M2R+2AXcyXo6qEd7ZXzqoh9myckJ3gLS +DsS7Og/TOev8w3h5ZHmFvDgWBZjzcqg0DGC17pSyBvOx8Byhz6Wd6U7YibxjpBuS +/N+WMm5xEjlJVV1SJvNzMSxD5rVOprA61DgfsbW6ScAMk3VDW7jxLcG05wCg/ynJ +j/vdowhlqjPJIlSZK49mQfcD/0IhBgd4M4SxxUWQNUdhm7GMXuC2pxqhqnKoSMM7 +zmndGPOlf29Xn7Zc3mW8LUvaz2HmJyztMqk0F3qfNTPXEUu8OvyheN5vFNwysF2O +zE8wSv8LcyH4GVxwNUSSy3dxcKfJfIoLOpmJ7TZjJ5rkPkYg5UpOlTohAW8EhPSW +KU+RA/sH/h8wVdQclBJ3IxJylZ0sk2OyEbaobmGtJbch8Yqo/cbYhprmDKgE6L3h +e4cKan78NTr+g7q4O+enHkkql7PW91aormHpCIDd8q01wcbvcdnjsgS4adESq/Eb +p8ZZj5itaOslJWvqvyi4j2X0c1hXXHG0MxMvyOIHPHgU4krnd7Q5QvxuZG5pcyBB +bGxlIGdlZ2VuIFJlY2h0cyA8aW5mb0BidWVuZG5pcy1nZWdlbi1yZWNodHMuY2g+ +iFgEEBECABgFAj4tUP0ICwMJCAcCAQoCGQEFGwMAAAAACgkQEkL24T2OvkqbBwCg +wQ2rPbHxPqVU36HTIOr9pKbU5YgAmgK4sDjlS7naIy7Yg6u0q9UcNRtSuQINBD4t +UP0QCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfG +y0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2 +vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd +5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0Y +bN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWak +XUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICB/95aHF6jqhYsbsyFGm7YKeSWFUjy1Hh +LJMnrfsY043xZqfwiXyDeNT5xAInN6YibUFIU+xCu5zdtknEfUiI1/nMK3pWkYgQ +3xwyJPTpboidcLucinYQejz4Nx14p5/Lv/jpmYlAesjy/t/QINXzDn/BeoOwyOtY +8AxL++X0M95UcNOqvWaXthTBtsGYAxoCvpzmxaHagqw90FYvjGHL5PymCCOHpZZ3 +GfL10lc16nUFvetqhZTP3+hG6I5VQi8sHvcULgodLHSM2gkfu8gvcsYbyNZNRKrS +WqLC0/pPhkQGNGPLC3uUlBC2tGMS1iWiIOODiDl3brW61FmEBGP1qFl9iEwEGBEC +AAwFAj4tUP0FGwwAAAAACgkQEkL24T2OvkorgQCgkMFb92w+01OAABwrjGCIW97h +W0UAn3D/PPbXYP0uo3sDOePOqeOv0ls7 +=Q88o +-----END PGP PUBLIC KEY BLOCK----- diff --git a/spec/fixtures/keys/7AB152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub b/spec/fixtures/keys/7AB152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub new file mode 100644 index 0000000..091db2a --- /dev/null +++ b/spec/fixtures/keys/7AB152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub @@ -0,0 +1,187 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +2Ss= +=Ob/9 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/spec/wkd-srv/key_spec.rb b/spec/wkd-srv/key_spec.rb index 3451edd..ab2f69c 100644 --- a/spec/wkd-srv/key_spec.rb +++ b/spec/wkd-srv/key_spec.rb @@ -99,6 +99,29 @@ describe WkdSrv::Key do expect(result).to be_a(RuntimeError) expect(result.to_s).to eql('Error: key material contains no key matching the given address!') end + + it "works with keys with UTF-8 in uid" do + emailaddress = 'rene@immerda.ch' + key_material = File.read('fixtures/keys/7AB152DCDD567A15B86C20FE8D5A0FC6E76B7140.pub') + + result = WkdSrv::Key.create(emailaddress, key_material) + + key_file = WkdSrv::Key.send(:wkd_filepath, emailaddress) + + expect(result).to be(true) + expect(File.exist?(key_file)).to be(true) + end + it "works with keys with broken UTF-8 in uid" do + emailaddress = 'info@buendnis-gegen-rechts.ch' + key_material = File.read('fixtures/keys/3102B29989BEE703AE5ED62E1242F6E13D8EBE4A.pub') + + result = WkdSrv::Key.create(emailaddress, key_material) + + key_file = WkdSrv::Key.send(:wkd_filepath, emailaddress) + + expect(result).to be(true) + expect(File.exist?(key_file)).to be(true) + end end describe :delete do -- GitLab From 5e632df765fa6eac1b398a73a72bbd3b9f851d70 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 10 Aug 2020 17:01:27 +0200 Subject: [PATCH 4/4] only push to latest when running on master --- .gitlab-ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b5750e..d7739e2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,10 @@ deploy_image: - echo "Pushing wkd-srv-$CI_COMMIT_SHORT_SHA" - skopeo copy --authfile ./cred.json "docker-archive:wkd-srv.tar" "docker://$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" - echo -e "\033[0;32mdone\033[0m"; - - echo "Pushing wkd-srv:latest" - - skopeo copy --authfile ./cred.json "docker-archive:wkd-srv.tar" "docker://$CI_REGISTRY_IMAGE:latest" - - echo -e "\033[0;32mdone\033[0m"; + - | + if [ "$CI_COMMIT_REF_NAME}" = "master" ]; then + echo "Pushing wkd-srv:latest" + skopeo copy --authfile ./cred.json "docker-archive:wkd-srv.tar" "docker://$CI_REGISTRY_IMAGE:latest" + echo -e "\033[0;32mdone\033[0m"; + fi - rm -f cred.json -- GitLab