Changeset 8932

Show
Ignore:
Timestamp:
10/25/07 14:36:57 (13 months ago)
Author:
asterix
Message:

remove the ability to save GPG password, show in GUI use_gpg_agent optin. fixes #2791

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/data/glade/accounts_window.glade

    r8360 r8932  
    781781                                    </child> 
    782782                                    <child> 
    783                                       <widget class="GtkHBox" id="hbox4"> 
     783                                      <widget class="GtkCheckButton" id="use_gpg_agent_checkbutton1"> 
    784784                                        <property name="visible">True</property> 
    785                                         <property name="spacing">6</property> 
    786                                         <child> 
    787                                           <widget class="GtkCheckButton" id="gpg_save_password_checkbutton1"> 
    788                                             <property name="visible">True</property> 
    789                                             <property name="sensitive">False</property> 
    790                                             <property name="can_focus">True</property> 
    791                                             <property name="tooltip" translatable="yes">If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you</property> 
    792                                             <property name="label" translatable="yes">Save _passphrase (insecure)</property> 
    793                                             <property name="use_underline">True</property> 
    794                                             <property name="draw_indicator">True</property> 
    795                                             <signal name="toggled" handler="on_gpg_save_password_checkbutton_toggled"/> 
    796                                           </widget> 
    797                                           <packing> 
    798                                             <property name="expand">False</property> 
    799                                             <property name="fill">False</property> 
    800                                           </packing> 
    801                                         </child> 
    802                                         <child> 
    803                                           <widget class="GtkEntry" id="gpg_password_entry1"> 
    804                                             <property name="visible">True</property> 
    805                                             <property name="sensitive">False</property> 
    806                                             <property name="can_focus">True</property> 
    807                                             <property name="visibility">False</property> 
    808                                             <property name="invisible_char">*</property> 
    809                                             <signal name="changed" handler="on_gpg_password_entry_changed"/> 
    810                                           </widget> 
    811                                           <packing> 
    812                                             <property name="position">1</property> 
    813                                           </packing> 
    814                                         </child> 
     785                                        <property name="sensitive">False</property> 
     786                                        <property name="can_focus">True</property> 
     787                                        <property name="tooltip" translatable="yes">If checked, Gajim will get the password from a GPG agent like seahorse</property> 
     788                                        <property name="label" translatable="yes">Use GPG _Agent</property> 
     789                                        <property name="use_underline">True</property> 
     790                                        <property name="draw_indicator">True</property> 
     791                                        <signal name="toggled" handler="on_use_gpg_agent_checkbutton_toggled"/> 
    815792                                      </widget> 
    816793                                      <packing> 
    817794                                        <property name="expand">False</property> 
    818                                         <property name="position">1</property> 
     795                                        <property name="fill">False</property> 
    819796                                      </packing> 
    820797                                    </child> 
     
    12191196                                </child> 
    12201197                                <child> 
    1221                                   <widget class="GtkHBox" id="hbox7"> 
     1198                                  <widget class="GtkCheckButton" id="use_gpg_agent_checkbutton2"> 
    12221199                                    <property name="visible">True</property> 
    1223                                     <property name="spacing">6</property> 
    1224                                     <child> 
    1225                                       <widget class="GtkCheckButton" id="gpg_save_password_checkbutton2"> 
    1226                                         <property name="visible">True</property> 
    1227                                         <property name="can_focus">True</property> 
    1228                                         <property name="tooltip" translatable="yes">If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you</property> 
    1229                                         <property name="label" translatable="yes">Save _passphrase (insecure)</property> 
    1230                                         <property name="use_underline">True</property> 
    1231                                         <property name="draw_indicator">True</property> 
    1232                                         <signal name="toggled" handler="on_gpg_save_password_checkbutton_toggled"/> 
    1233                                       </widget> 
    1234                                       <packing> 
    1235                                         <property name="expand">False</property> 
    1236                                         <property name="fill">False</property> 
    1237                                       </packing> 
    1238                                     </child> 
    1239                                     <child> 
    1240                                       <widget class="GtkEntry" id="gpg_password_entry2"> 
    1241                                         <property name="visible">True</property> 
    1242                                         <property name="sensitive">False</property> 
    1243                                         <property name="can_focus">True</property> 
    1244                                         <property name="visibility">False</property> 
    1245                                         <property name="invisible_char">*</property> 
    1246                                         <signal name="changed" handler="on_gpg_password_entry_changed"/> 
    1247                                       </widget> 
    1248                                       <packing> 
    1249                                         <property name="position">1</property> 
    1250                                       </packing> 
    1251                                     </child> 
     1200                                    <property name="can_focus">True</property> 
     1201                                    <property name="tooltip" translatable="yes">If checked, Gajim will get the password from a GPG agent like seahorse</property> 
     1202                                    <property name="label" translatable="yes">Use GPG _Agent</property> 
     1203                                    <property name="use_underline">True</property> 
     1204                                    <property name="draw_indicator">True</property> 
     1205                                    <signal name="toggled" handler="on_use_gpg_agent_checkbutton_toggled"/> 
    12521206                                  </widget> 
    12531207                                  <packing> 
    1254                                     <property name="position">2</property> 
     1208                                    <property name="expand">False</property> 
     1209                                    <property name="fill">False</property> 
    12551210                                  </packing> 
    12561211                                </child> 
  • trunk/src/advanced.py

    r8927 r8932  
    104104                optname = model[iter][C_PREFNAME] 
    105105                opttype = model[iter][C_TYPE] 
    106                 if opttype == self.types['boolean'] or optname in ('password',  
    107                         'gpgpassword'): 
     106                if opttype == self.types['boolean'] or optname == 'password': 
    108107                        cell.set_property('editable', False) 
    109108                else: 
     
    240239                        type = self.types[type] # i18n 
    241240                value = val[OPT_VAL] 
    242                 if name in ('password', 'gpgpassword'): 
     241                if name == 'password': 
    243242                        #we talk about password 
    244243                        value = _('Hidden') # override passwords with this string 
  • trunk/src/common/config.py

    r8927 r8932  
    267267                        'custom_port': [ opt_int, 5222, '', True ], 
    268268                        'custom_host': [ opt_str, '', '', True ], 
    269                         'savegpgpass': [ opt_bool, False, '', True ], 
    270                         'gpgpassword': [ opt_str, '' ], 
    271269                        'sync_with_global_status': [ opt_bool, False, ], 
    272270                        'no_log_for': [ opt_str, '' ], 
  • trunk/src/config.py

    r8927 r8932  
    15101510                keyid = gajim.config.get_per('accounts', account, 'keyid') 
    15111511                keyname = gajim.config.get_per('accounts', account, 'keyname') 
    1512                 savegpgpass = gajim.config.get_per('accounts', account, 'savegpgpass') 
     1512                use_gpg_agent = gajim.config.get('use_gpg_agent') 
    15131513 
    15141514                if account == gajim.ZEROCONF_ACC_NAME: 
     
    15191519                gpg_key_label = self.xml.get_widget('gpg_key_label' + widget_name_add) 
    15201520                gpg_name_label = self.xml.get_widget('gpg_name_label' + widget_name_add) 
    1521                 gpg_save_password_checkbutton = \ 
    1522                         self.xml.get_widget('gpg_save_password_checkbutton' + widget_name_add) 
    1523                 gpg_password_entry = self.xml.get_widget('gpg_password_entry' + \ 
    1524                         widget_name_add) 
     1521                use_gpg_agent_checkbutton = self.xml.get_widget( 
     1522                        'use_gpg_agent_checkbutton' + widget_name_add) 
    15251523 
    15261524                if not keyid or not gajim.config.get('usegpg'): 
    1527                         gpg_save_password_checkbutton.set_sensitive(False) 
    1528                         gpg_password_entry.set_sensitive(False) 
     1525                        use_gpg_agent_checkbutton.set_sensitive(False) 
    15291526                        gpg_key_label.set_text(_('No key selected')) 
    15301527                        gpg_name_label.set_text('') 
     
    15331530                gpg_key_label.set_text(keyid) 
    15341531                gpg_name_label.set_text(keyname) 
    1535                 gpg_save_password_checkbutton.set_sensitive(True) 
    1536                 gpg_save_password_checkbutton.set_active(savegpgpass) 
    1537  
    1538                 if savegpgpass: 
    1539                         gpg_password_entry.set_sensitive(True) 
    1540                         gpgpassword = gajim.config.get_per('accounts', account, 'gpgpassword') 
    1541                         gpg_password_entry.set_text(gpgpassword) 
     1532                use_gpg_agent_checkbutton.set_sensitive(True) 
     1533                use_gpg_agent_checkbutton.set_active(use_gpg_agent) 
    15421534 
    15431535        def init_normal_account(self): 
     
    20031995                else: 
    20041996                        wiget_name_ext = '1' 
    2005                 checkbutton = self.xml.get_widget('gpg_save_password_checkbutton' + \ 
    2006                         wiget_name_ext) 
    20071997                gpg_key_label = self.xml.get_widget('gpg_key_label' + wiget_name_ext) 
    20081998                gpg_name_label = self.xml.get_widget('gpg_name_label' + wiget_name_ext) 
    2009                 gpg_password_entry = self.xml.get_widget('gpg_password_entry' + \ 
    2010                         wiget_name_ext) 
     1999                use_gpg_agent_checkbutton = self.xml.get_widget( 
     2000                        'use_gpg_agent_checkbutton' + wiget_name_ext) 
    20112001                if keyID[0] == _('None'): 
    20122002                        gpg_key_label.set_text(_('No key selected')) 
    20132003                        gpg_name_label.set_text('') 
    2014                         checkbutton.set_sensitive(False) 
    2015                         gpg_password_entry.set_sensitive(False) 
     2004                        use_gpg_agent_checkbutton.set_sensitive(False) 
    20162005                        if self.option_changed('keyid', ''): 
    20172006                                self.need_relogin = True 
     
    20212010                        gpg_key_label.set_text(keyID[0]) 
    20222011                        gpg_name_label.set_text(keyID[1]) 
    2023                         checkbutton.set_sensitive(True) 
     2012                        use_gpg_agent_checkbutton.set_sensitive(True) 
    20242013                        if self.option_changed('keyid', keyID[0]): 
    20252014                                self.need_relogin = True 
     
    20282017                        gajim.config.set_per('accounts', self.current_account, 'keyid', 
    20292018                                keyID[0]) 
    2030                 gajim.config.set_per('accounts', self.current_account, 'savegpgpass', 
    2031                         False) 
    2032                 gajim.config.set_per('accounts', self.current_account, 'gpgpassword', '') 
    2033                 checkbutton.set_active(False) 
    2034                 gpg_password_entry.set_text('') 
    2035  
    2036         def on_gpg_save_password_checkbutton_toggled(self, widget): 
     2019 
     2020        def on_use_gpg_agent_checkbutton_toggled(self, widget): 
    20372021                if self.current_account == gajim.ZEROCONF_ACC_NAME: 
    20382022                        wiget_name_ext = '2' 
    20392023                else: 
    20402024                        wiget_name_ext = '1' 
    2041                 self.xml.get_widget('gpg_password_entry' + wiget_name_ext).set_sensitive( 
    2042                         widget.get_active()) 
    2043                 self.on_checkbutton_toggled(widget, 'savegpgpass', 
    2044                         account = self.current_account) 
    2045  
    2046         def on_gpg_password_entry_changed(self, widget): 
    2047                 if self.ignore_events: 
    2048                         return 
    2049                 gajim.config.set_per('accounts', self.current_account, 'gpgpassword', 
    2050                         widget.get_text().decode('utf-8')) 
     2025                self.on_checkbutton_toggled(widget, 'use_gpg_agent') 
    20512026 
    20522027        def on_edit_details_button1_clicked(self, widget): 
     
    33183293                config['keyname'] = '' 
    33193294                config['keyid'] = '' 
    3320                 config['savegpgpass'] = False 
    3321                 config['gpgpassword'] = '' 
    33223295                return config 
    33233296 
  • trunk/src/roster_window.py

    r8930 r8932  
    34433443                        use_gpg_agent = gajim.config.get('use_gpg_agent') 
    34443444                        # we don't need to bother with the passphrase if we use the agent 
    3445                         if use_gpg_agent: 
    3446                                 save_gpg_pass = False 
    3447                         else: 
    3448                                 save_gpg_pass = gajim.config.get_per('accounts', account, 
    3449                                         'savegpgpass') 
    34503445                        keyid = gajim.config.get_per('accounts', account, 'keyid') 
    34513446                        if keyid and not gajim.config.get('usegpg'): 
     
    34573452                                        self.gpg_passphrase[keyid] = None 
    34583453                                else: 
    3459                                         if save_gpg_pass: 
    3460                                                 passphrase = gajim.config.get_per('accounts', account, 
    3461                                                         'gpgpassword') 
     3454                                        if self.gpg_passphrase.has_key(keyid): 
     3455                                                passphrase = self.gpg_passphrase[keyid] 
     3456                                                save = False 
    34623457                                        else: 
    3463                                                 if self.gpg_passphrase.has_key(keyid): 
    3464                                                         passphrase = self.gpg_passphrase[keyid] 
    3465                                                         save = False 
    3466                                                 else: 
    3467                                                         password_ok = False 
    3468                                                         count = 0 
    3469                                                         title = _('Passphrase Required') 
    3470                                                         second = _('Enter GPG key passphrase for account %s.') % \ 
    3471                                                                 account 
    3472                                                         while not password_ok and count < 3: 
    3473                                                                 count += 1 
    3474                                                                 w = dialogs.PassphraseDialog(title, second, 
    3475                                                                         _('Save passphrase')) 
    3476                                                                 passphrase, save = w.run() 
    3477                                                                 if passphrase == -1: 
    3478                                                                         passphrase = None 
    3479                                                                         password_ok = True 
    3480                                                                 else: 
    3481                                                                         password_ok = gajim.connections[account].\ 
    3482                                                                                 test_gpg_passphrase(passphrase) 
    3483                                                                         title = _('Wrong Passphrase') 
    3484                                                                         second = _('Please retype your GPG passphrase or ' 
    3485                                                                                 'press Cancel.') 
    3486                                                         if passphrase != None: 
    3487                                                                 self.gpg_passphrase[keyid] = passphrase 
    3488                                                                 gobject.timeout_add(30000, self.forget_gpg_passphrase, 
    3489                                                                         keyid) 
    3490                                                 if save: 
    3491                                                         gajim.config.set_per('accounts', account, 'savegpgpass', 
    3492                                                                 True) 
    3493                                                         gajim.config.set_per('accounts', account, 'gpgpassword', 
    3494                                                                 passphrase) 
     3458                                                password_ok = False 
     3459                                                count = 0 
     3460                                                title = _('Passphrase Required') 
     3461                                                second = _('Enter GPG key passphrase for account %s.') % \ 
     3462                                                        account 
     3463                                                while not password_ok and count < 3: 
     3464                                                        count += 1 
     3465                                                        w = dialogs.PassphraseDialog(title, second, 
     3466                                                                _('Save passphrase')) 
     3467                                                        passphrase, save = w.run() 
     3468                                                        if passphrase == -1: 
     3469                                                                passphrase = None 
     3470                                                                password_ok = True 
     3471                                                        else: 
     3472                                                                password_ok = gajim.connections[account].\ 
     3473                                                                        test_gpg_passphrase(passphrase) 
     3474                                                                title = _('Wrong Passphrase') 
     3475                                                                second = _('Please retype your GPG passphrase or ' 
     3476                                                                        'press Cancel.') 
     3477                                                if passphrase != None: 
     3478                                                        self.gpg_passphrase[keyid] = passphrase 
     3479                                                        gobject.timeout_add(30000, self.forget_gpg_passphrase, 
     3480                                                                keyid) 
    34953481                                        gajim.connections[account].gpg_passphrase(passphrase) 
    34963482