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 - [email protected]
+
+- 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 - [email protected]
+
+- process "workgroup" parameter in URL properly (bnc#784978)
+- 3.1.62
+
+-------------------------------------------------------------------
 Mon Feb  9 17:41:43 UTC 2015 - [email protected]
 
 - 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:[email protected]/install/images"
+      converted = "smb://USERNAME:[email protected]/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:[email protected]/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:[email protected]/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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to