2 require 'gettext_rails'
4 class MainController < ApplicationController
6 verify :only => :ymp, :params => [:project, :repository, :arch, :binary],
9 # these pages are completely static:
10 caches_page :release, :download_js
12 def ymp_with_arch_and_version
13 path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:arch]}/#{params[:binary]}?view=ymp"
14 DownloadHistory.create :query => params[:query], :base => params[:base],
16 res = get_from_api(path)
17 render :text => res.body, :content_type => res.content_type
20 def ymp_without_arch_and_version
21 path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:package]}?view=ymp"
22 DownloadHistory.create :query => params[:query], :base => params[:base],
24 res = get_from_api(path)
25 render :text => res.body, :content_type => res.content_type
28 def set_release(release)
31 @directory = "http://download.opensuse.org/distribution/11.1"
32 @isos["lang-32"] = "11.1-Addon-Lang-i586"
33 @isos["lang-64"] = "11.1-Addon-Lang-x86_64"
34 @isos["nonoss"] = "11.1-Addon-NonOss-BiArch-i586-x86_64"
35 @isos["kde-64"] = "11.1-KDE4-LiveCD-x86_64"
36 @isos["kde-32"] = "11.1-KDE4-LiveCD-i686"
37 @isos["gnome-64"] = "11.1-GNOME-LiveCD-x86_64"
38 @isos["gnome-32"] = "11.1-GNOME-LiveCD-i686"
39 @isos["dvd-64"] = "11.1-DVD-x86_64"
40 @isos["dvd-32"] = "11.1-DVD-i586"
41 @isos["net-32"] = "11.1-NET-i586"
42 @isos["net-64"] = "11.1-NET-x86_64"
44 @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.1/RELEASE-NOTES.en.html"
45 @releasename = "openSUSE 11.1"
46 @repourl = "http://download.opensuse.org/distribution/11.1"
48 elsif release == "112"
50 @directory = "http://download.opensuse.org/distribution/11.2"
51 @isos["lang-32"] = "11.2-Addon-Lang-i586"
52 @isos["lang-64"] = "11.2-Addon-Lang-x86_64"
53 @isos["nonoss"] = "11.2-Addon-NonOss-BiArch-i586-x86_64"
54 @isos["kde-64"] = "11.2-KDE4-LiveCD-x86_64"
55 @isos["kde-32"] = "11.2-KDE4-LiveCD-i686"
56 @isos["gnome-64"] = "11.2-GNOME-LiveCD-x86_64"
57 @isos["gnome-32"] = "11.2-GNOME-LiveCD-i686"
58 @isos["dvd-64"] = "11.2-DVD-x86_64"
59 @isos["dvd-32"] = "11.2-DVD-i586"
60 @isos["net-32"] = "11.2-NET-i586"
61 @isos["net-64"] = "11.2-NET-x86_64"
63 @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.2/RELEASE-NOTES.en.html"
64 @releasename = "openSUSE 11.2"
65 @repourl = "http://download.opensuse.org/distribution/11.2"
67 elsif release == "113"
69 @directory = "http://download.opensuse.org/distribution/11.3"
70 @isos["lang-32"] = "11.3-Addon-Lang-i586"
71 @isos["lang-64"] = "11.3-Addon-Lang-x86_64"
72 @isos["nonoss"] = "11.3-Addon-NonOss-BiArch-i586-x86_64"
73 @isos["kde-64"] = "11.3-KDE4-LiveCD-x86_64"
74 @isos["kde-32"] = "11.3-KDE4-LiveCD-i686"
75 @isos["gnome-64"] = "11.3-GNOME-LiveCD-x86_64"
76 @isos["gnome-32"] = "11.3-GNOME-LiveCD-i686"
77 @isos["dvd-64"] = "11.3-DVD-x86_64"
78 @isos["dvd-32"] = "11.3-DVD-i586"
79 @isos["net-32"] = "11.3-NET-i586"
80 @isos["net-64"] = "11.3-NET-x86_64"
82 @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.3/RELEASE-NOTES.en.html"
83 @releasename = "openSUSE 11.3"
84 @repourl = "http://download.opensuse.org/distribution/11.3"
86 elsif release == "113"
88 @directory = "http://download.opensuse.org/distribution/11.4"
89 @isos["lang-32"] = "11.4-Addon-Lang-i586"
90 @isos["lang-64"] = "11.4-Addon-Lang-x86_64"
91 @isos["nonoss"] = "11.4-Addon-NonOss-BiArch-i586-x86_64"
92 @isos["kde-64"] = "11.4-KDE4-LiveCD-x86_64"
93 @isos["kde-32"] = "11.4-KDE4-LiveCD-i686"
94 @isos["gnome-64"] = "11.4-GNOME-LiveCD-x86_64"
95 @isos["gnome-32"] = "11.4-GNOME-LiveCD-i686"
96 @isos["dvd-64"] = "11.4-DVD-x86_64"
97 @isos["dvd-32"] = "11.4-DVD-i586"
98 @isos["net-32"] = "11.4-NET-i586"
99 @isos["net-64"] = "11.4-NET-x86_64"
101 @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.4444/RELEASE-NOTES.en.html"
102 @releasename = "openSUSE 11.4"
103 @repourl = "http://download.opensuse.org/distribution/11.4"
105 elsif release == "developer"
107 @directory = "http://download.opensuse.org/distribution/11.4-RC2"
108 @isos["lang-32"] = "Addon-Lang-Build0012-i586"
109 @isos["lang-64"] = "Addon-Lang-Build0012-x86_64"
110 @isos["nonoss"] = "Addon-NonOss-BiArch-Build0012-i586-x86_64"
111 @isos["kde-64"] = "KDE-LiveCD-Build0012-x86_64"
112 @isos["kde-32"] = "KDE-LiveCD-Build0012-i686"
113 @isos["gnome-64"] = "GNOME-LiveCD-Build0012-x86_64"
114 @isos["gnome-32"] = "GNOME-LiveCD-Build0012-i686"
115 @isos["dvd-64"] = "DVD-Build0012-x86_64"
116 @isos["dvd-32"] = "DVD-Build0012-i586"
117 @isos["net-32"] = "NET-Build0012-i586"
118 @isos["net-64"] = "NET-Build0012-x86_64"
120 @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.4/RELEASE-NOTES.en.html"
121 @releasename = "openSUSE 11.4 RC 2"
122 @repourl = "http://download.opensuse.org/distribution/11.4"
128 def redirectit(release)
130 url = "%s/%s/%s" % [ActionController::Base.relative_url_root, release, @lang]
131 if request.user_agent && request.user_agent.index('Mozilla/5.0 (compatible; Konqueror/3')
132 notice = _("Konqueror of KDE 3 is unfortunately unmaintained and its javascript implementation contains bugs that make it impossible to use with this page. Please make sure you have javascript disabled before you <a href='%s'>continue</a>.") % url
135 render :template => "main/redirect_with_notice", :locals => { :notice => notice }
142 redirectit("developer")
143 #redirect_to "http://en.opensuse.org/Portal:Factory"
151 @exclude_debug = true
152 @exclude_filter = 'home:'
153 set_release(params[:release])
154 render :template => "main/release"
158 set_release(params[:release])
159 @medium = params[:medium]
160 render :template => "main/release"
164 set_release(params[:release])
165 render :template => "main/download", :content_type => 'text/javascript', :layout => false
169 render :template => "main/testrequest", :layout => false
173 set_release(params[:release])
174 medium = params[:medium]
176 if params[:arch] == "i686"
185 when params[:protocol] == "torrent"
186 if params[:medium] != "net"
187 suffix = ".iso.torrent"
189 when params[:protocol] == "mirror"
190 suffix = ".iso?mirrorlist"
191 when params[:protocol] == "metalink"
192 suffix = ".iso.meta4"
194 redirect_to @directory + "/iso/openSUSE-" + @isos[medium] + suffix
199 respond_to do |format|
200 format.xml { render(:layout => false, :content_type => 'text/xml' ) }
206 def get_from_api(path)
207 req = Net::HTTP::Get.new(path)
208 req['x-username'] = "obs_read_only"
210 host, port = API_HOST.split(/:/)
212 res = Net::HTTP.new(host, port).start do |http|