diff options
author | João Victor Duarte Martins <jvictor@mandriva.com> | 2010-06-07 18:53:03 +0000 |
---|---|---|
committer | João Victor Duarte Martins <jvictor@mandriva.com> | 2010-06-07 18:53:03 +0000 |
commit | b494ced141262ddbbcb9a504b486562f0df6906d (patch) | |
tree | 3eb77d3f1c0a60c8ee097dbf6630dad95a2c2927 /mdkapplet-extended-maintenance-helper | |
parent | 8ee3728be0eb3ac7437a53745d47c539bcc50130 (diff) | |
download | mgaonline-b494ced141262ddbbcb9a504b486562f0df6906d.tar mgaonline-b494ced141262ddbbcb9a504b486562f0df6906d.tar.gz mgaonline-b494ced141262ddbbcb9a504b486562f0df6906d.tar.bz2 mgaonline-b494ced141262ddbbcb9a504b486562f0df6906d.tar.xz mgaonline-b494ced141262ddbbcb9a504b486562f0df6906d.zip |
Merged mdkapplet-extended-maintenance-helper into mdkapplet-add-media-helper.
Diffstat (limited to 'mdkapplet-extended-maintenance-helper')
-rwxr-xr-x | mdkapplet-extended-maintenance-helper | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/mdkapplet-extended-maintenance-helper b/mdkapplet-extended-maintenance-helper deleted file mode 100755 index a5543ee3..00000000 --- a/mdkapplet-extended-maintenance-helper +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/perl -################################################################################ -# Mandriva Online # -# # -# Copyright (C) 2010 Mandriva # -# # -# Thierry Vignaud <tvignaud at mandriva dot com> # -# # -# This program is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License Version 2 as # -# published by the Free Software Foundation. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # -################################################################################ - -use strict; -use lib qw(/usr/lib/libDrakX /usr/lib/libDrakX/drakfirsttime); -use standalone; # for explanations -use common; -use run_program; - -BEGIN { unshift @::textdomains, 'mdkonline' } - -use mygtk2 qw(gtknew); #- do not import gtkadd which conflicts with ugtk2 version -use ugtk2 qw(:all); -use urpm::cfg; -use mdkonline; -use mdkapplet_gui; -use interactive; - -use XML::Simple; -use URI::Escape; -use LWP::UserAgent; -use HTTP::Request::Common; -use HTTP::Request; -use interactive::gtk; - -foreach my $opt (@ARGV) { - if ($opt =~ /--(rpm-root|urpmi-root)=(.*)/) { - $::rpmdrake_options{$1}[0] = $2; - undef $opt; - } -} -my ($version) = @ARGV; -my $email; - -$version or die "usage: $0 <distrib_version>\n"; - -# make it work on 2008.X: -eval { interactive::gtk::add_padding(Gtk2::Label->new) }; -if ($@) { - *interactive::gtk::add_padding = sub { $_[0] }; -} - -read_sys_config(); -get_extmaint_authentication(); - -ugtk2::exit(0); - -sub get_extended_maintenance_data() { - require Rpmdrake::open_db; - get_product_id(); - my @distros = get_distro_list(); - return if !@distros; - my $current_apimdv_distro = find_current_distro(@distros); - @$current_apimdv_distro{qw(extended-maintenance extended-maintenance-end desktop-update-end basic-update-end)}; -} - -sub get_extmaint_authentication() { - my $w = ugtk2->new(N("Adding an additional package medium"), width => $width + 20); - my ($password_w, $email_w, $password); - - $password_w = gtknew('Entry'); - $password_w->set_visibility(0); - - my ($url, $extended_maintenance_end, $desktop_update_end, $basic_update_end) = - eval { get_extended_maintenance_data() }; - if (my $err = $@) { - interactive->vnew->ask_warn(N("Error"), N("Failure while retrieving distributions list:") - . "\n$err"); - return; - } - - $w->{ok_clicked} = sub { - $password = $password_w->get_text; - Gtk2->main_quit; - }; - - my @widgets = ( - if_(!$::isEmbedded, - get_banner(N("Extended Maintenance")), - ), - gtknew('Label_Left', - text_markup => - join("\n\n", - #-PO: Here '%s' will be a localized date (eg: "2009/11/28" in english but "28/11/2009" for brazil or "28 Nov. "2009" for french: - N("Mandriva provides 12 months of desktop updates (until %s) and 18 months of base updates (up to the %s) for distributions.", - iso8601_date_to_locale($desktop_update_end), - iso8601_date_to_locale($basic_update_end)), - N("Extended maintenance is now available to get 18 months of additional updates (until %s).", - iso8601_date_to_locale($extended_maintenance_end)), - N("You can subscribe <b>right now</b> to get extended maintenance:"), - ), - @common), - new_link_button('http://www2.mandriva.com/support/lifecycle/', N("Lifetime policy")), - new_link_button($url, N("Online subscription")), - gtknew('HSeparator'), - gtknew('Label_Left', text => N("Please fill in your account ID to add an additional package medium once you have subscribed online"), - @common), - gtknew('HButtonBox', layout => 'start', children_tight => [ - interactive::gtk::add_padding( - new_link_button('https://my.mandriva.com/info', N("More information on your user account"))) - ]), - gtknew('Table', col_spacings => 5, row_spacings => 5, children => [ - [ N("Your email"), $email_w = gtknew('Entry', text => $email) ], - [ N("Your password"), $password_w ], - ]), - gtknew('HButtonBox', layout => 'start', children_tight => [ - interactive::gtk::add_padding( - new_link_button('https://my.mandriva.com/reset/password/', N("Forgotten password"))) - ]), - create_okcancel($w, N("Next"), N("Cancel")), - ); - - fill_n_run_portable_dialog($w, \@widgets); - - $email = $email_w->get_text; - - # means OK handler got run: - if ($password) { - if ($email && $password) { - add_extmaint_medium($email, $password); - } else { - interactive->vnew->ask_warn(N("Error"), N("Password and email cannot be empty.")); - goto &get_extmaint_authentication; - } - } else { - ugtk2::exit(0); - } -} - -my $error; -sub add_extmaint_medium { - my ($email, $password) = @_; - - my $res = get_from("https://my.mandriva.com/rest/authenticate", - [ 'username', $email, 'password', $password, - 'return', 'userdata' ]); - my $ref = xml2perl($res); - - if ($ref->{code} != 0) { - my $in = interactive->vnew; - $in->ask_warn(N("Error"), N("An error occurred") . "\n" . $ref->{message}); - goto &get_extmaint_authentication; - } elsif (!ref($ref->{data}{groups}{'ext-maint-' . $version})) { - no_rights_dialog(); - } else { - $error = 0; - my $arch = urpm::cfg::get_arch(); - actually_add_extmaint_medium($ref, $password, $arch) - or adding_media_failed(); - # FIXME: is not enough if we ever support sparc64, ppc64 and the like: - if ($arch eq 'x86_64') { - actually_add_extmaint_medium($ref, $password, 'i586') - or adding_media_failed(); - } - if (!$error) { - $config{EXTENDED_SUPPORT} = bool2yesno(1); - setVarsInSh($config_file, \%config); - #interactive->vnew->ask_okcancel(N("Error"), N("An error occurred while adding medium")); - my $w = ugtk2->new(N("Successfully added media %s.", 'Extended Maintenance'), grab => 1); - $w->_ask_okcancel(N("Successfully added media %s.", 'Extended Maintenance'), N("Ok"), undef); - ugtk2::main($w); - } - } -} - -sub no_rights_dialog() { - my $w = ugtk2->new(N("Adding an additional package medium"), width => $width + 20); - - fill_n_run_portable_dialog( - $w, - [ - if_(!$::isEmbedded, get_banner(N("Extended Maintenance"))), - gtknew('Label_Left', text => N("Your Mandriva account does not have Extended Maintenance subscription enabled."), - @common), - gtknew('HButtonBox', layout => 'start', children_tight => [ - interactive::gtk::add_padding( - new_link_button('https://my.mandriva.com/', N("More Information"))) - ]), - create_okcancel($w, N("Close"), undef), - ]); -} - -sub adding_media_failed { - $error = 1; - interactive->vnew->ask_warn(N("Error"), N("An error occurred while adding medium")); - goto &get_extmaint_authentication; -} - -sub actually_add_extmaint_medium { - my ($ref, $password, $arch) = @_; - $password = uri_escape($password); - my @options = (get_urpmi_options(), '--update'); - my $email = uri_escape($ref->{data}{email}); - my $uri = "https://$email:$password\@dl.mandriva.com/extended/$version/$arch"; - run_program::raw(@options, "Extended Maintenance $arch " . int(rand(100000)), ${uri}); -} |