Hello community, here is the log from the commit of package yast2-packager for openSUSE:Factory checked in at 2015-02-16 07:36:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-packager (Old) and /work/SRC/openSUSE:Factory/.yast2-packager.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "yast2-packager" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-packager/yast2-packager.changes 2015-02-12 10:22:18.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-packager.new/yast2-packager.changes 2015-02-16 07:36:21.000000000 +0100 @@ -1,0 +2,6 @@ +Wed Feb 11 21:00:06 UTC 2015 - lslezak@suse.cz + +- process "workgroup" parameter in URL properly (bnc#784978) +- 3.1.62 + +------------------------------------------------------------------- Old: ---- yast2-packager-3.1.61.tar.bz2 New: ---- yast2-packager-3.1.62.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-packager.spec ++++++ --- /var/tmp/diff_new_pack.wi5JXM/_old 2015-02-16 07:36:22.000000000 +0100 +++ /var/tmp/diff_new_pack.wi5JXM/_new 2015-02-16 07:36:22.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 3.1.61 +Version: 3.1.62 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-packager-3.1.61.tar.bz2 -> yast2-packager-3.1.62.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-3.1.61/package/yast2-packager.changes new/yast2-packager-3.1.62/package/yast2-packager.changes --- old/yast2-packager-3.1.61/package/yast2-packager.changes 2015-02-09 19:03:11.000000000 +0100 +++ new/yast2-packager-3.1.62/package/yast2-packager.changes 2015-02-12 15:18:11.000000000 +0100 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Wed Feb 11 21:00:06 UTC 2015 - lslezak@suse.cz + +- process "workgroup" parameter in URL properly (bnc#784978) +- 3.1.62 + +------------------------------------------------------------------- Mon Feb 9 17:41:43 UTC 2015 - ancor@suse.com - Fixed the network configuration during upgrade (bnc#911132) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-3.1.61/package/yast2-packager.spec new/yast2-packager-3.1.62/package/yast2-packager.spec --- old/yast2-packager-3.1.61/package/yast2-packager.spec 2015-02-09 19:03:11.000000000 +0100 +++ new/yast2-packager-3.1.62/package/yast2-packager.spec 2015-02-12 15:18:11.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 3.1.61 +Version: 3.1.62 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-3.1.61/src/modules/SourceDialogs.rb new/yast2-packager-3.1.62/src/modules/SourceDialogs.rb --- old/yast2-packager-3.1.61/src/modules/SourceDialogs.rb 2015-02-09 19:03:11.000000000 +0100 +++ new/yast2-packager-3.1.62/src/modules/SourceDialogs.rb 2015-02-12 15:18:11.000000000 +0100 @@ -14,6 +14,8 @@ # $Id: inst_source_dialogs.ycp 31607 2006-06-22 07:02:01Z jsuchome $ require "yast" +require "uri" + module Yast class SourceDialogsClass < Module # to use N_ in the class constant @@ -321,44 +323,54 @@ # @param [String] url string URL in the original form # @return [String] postprocessed URL def PostprocessISOURL(url) - Builtins.y2milestone("Updating ISO URL %1", URL.HidePassword(url)) - last = Ops.add(Builtins.findlastof(url, "/"), 1) - onlydir = Builtins.substring(url, 0, last) - url = Ops.add( - Ops.add(Ops.add("iso:///?iso=", Builtins.substring(url, last)), "&url="), - onlydir - ) - Builtins.y2milestone("Updated URL: %1", URL.HidePassword(url)) - url + log.info "Updating ISO URL: #{URL.HidePassword(url)}" + + uri = URI(url) + query = uri.query || "" + params = URI.decode_www_form(query).to_h + params["iso"] = File.basename(uri.path || "") + + new_url = uri.dup + new_url.path = File.dirname(uri.path || "") + new_url.query = nil + params["url"] = new_url.to_s + + processed = URI("") + processed.query = URI.encode_www_form(params) + + ret = "iso:///" + processed.to_s + log.info "Updated URL: #{URL.HidePassword(ret)}" + ret end # Check if URL is an ISO URL # @param [String] url string URL to check # @return [Boolean] true if URL is an ISO URL, false otherwise def IsISOURL(url) - ret = Builtins.substring(url, 0, 5) == "iso:/" && - Builtins.issubstring(url, "&url=") - Builtins.y2milestone("URL %1 is ISO: %2", URL.HidePassword(url), ret) - ret + uri = URI(url) + params = URI.decode_www_form(uri.query || "").to_h + + uri.scheme.downcase == "iso" && params.has_key?("url") end # Preprocess the ISO URL to be used in the dialogs # @param [String] url string URL to preprocess # @return [String] preprocessed URL def PreprocessISOURL(url) - Builtins.y2milestone("Preprocessing ISO URL %1", URL.HidePassword(url)) - url_pt = Builtins.search(url, "&url=") - serverpart = Builtins.substring(url, Ops.add(url_pt, 5)) - isopart = Builtins.substring(url, 0, url_pt) - url = Ops.add( - serverpart, - Builtins.substring( - isopart, - Ops.add(Builtins.search(isopart, "iso="), 4) - ) - ) - Builtins.y2milestone("Updated URL: %1", URL.HidePassword(url)) - url + log.info "Preprocessing ISO URL: #{URL.HidePassword(url)}" + + uri = URI(url) + query = uri.query || "" + params = URI.decode_www_form(query).to_h + + processed = URI(params.delete("url") || "") + processed.path = File.join(processed.path || "", params.delete("iso") || "") + processed.query = URI.encode_www_form(params) unless params.empty? + + ret = processed.to_s + + log.info "Updated URL: #{URL.HidePassword(ret)}" + ret end # check if given path points to ISO file @@ -1764,11 +1776,12 @@ share = Ops.get_string(sharepath, 0, "") dir = Ops.get_string(sharepath, 1, "") dir = "/" if dir == nil - UI.ChangeWidget( - Id(:workgroup), - :Value, - Ops.get_string(parsed, "domain", "") - ) + + query = URI.decode_www_form(parsed["query"] || "").to_h + # libzypp uses "workgroup" or "domain" parameter, see "man zypper" + workgroup = query["workgroup"] || query["domain"] || "" + + UI.ChangeWidget(Id(:workgroup), :Value, workgroup) UI.ChangeWidget(Id(:share), :Value, share) end UI.ChangeWidget(Id(:dir), :Value, dir) @@ -2257,7 +2270,7 @@ elsif selected == :local_dir @_url = "dir://" elsif selected == :local_iso - @_url = "iso://" + @_url = "iso:///" elsif selected == :slp @_url = "slp://" elsif selected == :comm_repos diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-3.1.61/test/source_dialogs_test.rb new/yast2-packager-3.1.62/test/source_dialogs_test.rb --- old/yast2-packager-3.1.61/test/source_dialogs_test.rb 2015-02-09 19:03:11.000000000 +0100 +++ new/yast2-packager-3.1.62/test/source_dialogs_test.rb 2015-02-12 15:18:11.000000000 +0100 @@ -5,25 +5,58 @@ Yast.import "SourceDialogs" describe Yast::SourceDialogs do + subject { Yast::SourceDialogs } + describe "#valid_scheme?" do it "returns true for 'https://' URL" do - expect(Yast::SourceDialogs.valid_scheme?("https://")).to eq(true) + expect(subject.valid_scheme?("https://")).to eq(true) end it "returns false for empty URL and reports error" do expect(Yast::Report).to receive(:Error) - expect(Yast::SourceDialogs.valid_scheme?("")).to eq(false) + expect(subject.valid_scheme?("")).to eq(false) end it "returns false for 'foo://' URL and reports error" do expect(Yast::Report).to receive(:Error) - expect(Yast::SourceDialogs.valid_scheme?("foo://")).to eq(false) + expect(subject.valid_scheme?("foo://")).to eq(false) end it "returns false for 'foo' URL and reports error" do expect(Yast::Report).to receive(:Error) - expect(Yast::SourceDialogs.valid_scheme?("foo")).to eq(false) + expect(subject.valid_scheme?("foo")).to eq(false) + end + end + + describe "#PreprocessISOURL" do + it "keeps additional URL parameter (workgroup)" do + url = "iso:///?iso=openSUSE-12.2-DVD-i586.iso&workgroup=WORKGROUP&url=" \ + "smb://USERNAME:PASSWORD@192.168.1.66/install/images" + converted = "smb://USERNAME:PASSWORD@192.168.1.66/install/images/" \ + "openSUSE-12.2-DVD-i586.iso?workgroup=WORKGROUP" + + expect(subject.PreprocessISOURL(url)).to eq(converted) + end + + it "handles escaped URL parameter" do + url = "iso:///?workgroup=WORKGROUP&iso=openSUSE-12.2-DVD-i586.iso&url=" \ + "smb%3A%2F%2FUSERNAME%3APASSWORD%40192.168.1.66%2Finstall%2Fimages" + converted = "smb://USERNAME:PASSWORD@192.168.1.66/install/images/" \ + "openSUSE-12.2-DVD-i586.iso?workgroup=WORKGROUP" + + expect(subject.PreprocessISOURL(url)).to eq(converted) + end + end + + describe "#PostprocessISOURL" do + it "keeps additional URL parameter (workgroup)" do + converted = "smb://USERNAME:PASSWORD@192.168.1.66/install/images/" \ + "openSUSE-12.2-DVD-i586.iso?workgroup=WORKGROUP" + url = "iso:///?workgroup=WORKGROUP&iso=openSUSE-12.2-DVD-i586.iso&url=" \ + "smb%3A%2F%2FUSERNAME%3APASSWORD%40192.168.1.66%2Finstall%2Fimages" + + expect(subject.PostprocessISOURL(converted)).to eq(url) end end end -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org