~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-03-06 06:48:25 UTC
  • mfrom: (4070.8.6 debug-config)
  • Revision ID: pqm@pqm.ubuntu.com-20090306064825-kbpwggw21dygeix6
(mbp) debug_flags configuration option

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
#
15
15
# You should have received a copy of the GNU General Public License
16
16
# along with this program; if not, write to the Free Software
17
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
 
19
19
"""Configuration that affects the behaviour of Bazaar.
20
20
 
709
709
                        trace.warning('Value "%s" is masked by "%s" from'
710
710
                                      ' branch.conf', value, mask_value)
711
711
 
 
712
 
712
713
    def _gpg_signing_command(self):
713
714
        """See Config.gpg_signing_command."""
714
715
        return self._get_safe_value('_gpg_signing_command')
916
917
    # XXX: Really needs a better name, as this is not part of the tree! -- mbp 20080507
917
918
 
918
919
    def __init__(self, branch):
919
 
        self._config = branch._get_config()
 
920
        # XXX: Really this should be asking the branch for its configuration
 
921
        # data, rather than relying on a Transport, so that it can work
 
922
        # more cleanly with a RemoteBranch that has no transport.
 
923
        self._config = TransportConfig(branch._transport, 'branch.conf')
920
924
        self.branch = branch
921
925
 
922
926
    def _get_parser(self, file=None):
989
993
        section[option_name] = value
990
994
        self._save()
991
995
 
992
 
    def get_credentials(self, scheme, host, port=None, user=None, path=None, 
993
 
                        realm=None):
 
996
    def get_credentials(self, scheme, host, port=None, user=None, path=None):
994
997
        """Returns the matching credentials from authentication.conf file.
995
998
 
996
999
        :param scheme: protocol
1002
1005
        :param user: login (optional)
1003
1006
 
1004
1007
        :param path: the absolute path on the server (optional)
1005
 
        
1006
 
        :param realm: the http authentication realm (optional)
1007
1008
 
1008
1009
        :return: A dict containing the matching credentials or None.
1009
1010
           This includes:
1010
1011
           - name: the section name of the credentials in the
1011
1012
             authentication.conf file,
1012
 
           - user: can't be different from the provided user if any,
1013
 
           - scheme: the server protocol,
1014
 
           - host: the server address,
1015
 
           - port: the server port (can be None),
1016
 
           - path: the absolute server path (can be None),
1017
 
           - realm: the http specific authentication realm (can be None),
 
1013
           - user: can't de different from the provided user if any,
1018
1014
           - password: the decoded password, could be None if the credential
1019
1015
             defines only the user
1020
1016
           - verify_certificates: https specific, True if the server
1061
1057
            if a_user is None:
1062
1058
                # Can't find a user
1063
1059
                continue
1064
 
            # Prepare a credentials dictionary with additional keys
1065
 
            # for the credential providers
1066
1060
            credentials = dict(name=auth_def_name,
1067
1061
                               user=a_user,
1068
 
                               scheme=a_scheme,
1069
 
                               host=host,
1070
 
                               port=port,
1071
 
                               path=path,
1072
 
                               realm=realm,
1073
1062
                               password=auth_def.get('password', None),
1074
1063
                               verify_certificates=a_verify_certificates)
1075
 
            # Decode the password in the credentials (or get one)
1076
1064
            self.decode_password(credentials,
1077
1065
                                 auth_def.get('password_encoding', None))
1078
1066
            if 'auth' in debug.debug_flags:
1082
1070
        return credentials
1083
1071
 
1084
1072
    def set_credentials(self, name, host, user, scheme=None, password=None,
1085
 
                        port=None, path=None, verify_certificates=None,
1086
 
                        realm=None):
 
1073
                        port=None, path=None, verify_certificates=None):
1087
1074
        """Set authentication credentials for a host.
1088
1075
 
1089
1076
        Any existing credentials with matching scheme, host, port and path
1100
1087
            apply to.
1101
1088
        :param verify_certificates: On https, verify server certificates if
1102
1089
            True.
1103
 
        :param realm: The http authentication realm (optional).
1104
1090
        """
1105
1091
        values = {'host': host, 'user': user}
1106
1092
        if password is not None:
1113
1099
            values['path'] = path
1114
1100
        if verify_certificates is not None:
1115
1101
            values['verify_certificates'] = str(verify_certificates)
1116
 
        if realm is not None:
1117
 
            values['realm'] = realm
1118
1102
        config = self._get_config()
1119
1103
        for_deletion = []
1120
1104
        for section, existing_values in config.items():
1121
 
            for key in ('scheme', 'host', 'port', 'path', 'realm'):
 
1105
            for key in ('scheme', 'host', 'port', 'path'):
1122
1106
                if existing_values.get(key) != values.get(key):
1123
1107
                    break
1124
1108
            else:
1143
1127
        :return: The found user.
1144
1128
        """
1145
1129
        credentials = self.get_credentials(scheme, host, port, user=None,
1146
 
                                           path=path, realm=realm)
 
1130
                                           path=path)
1147
1131
        if credentials is not None:
1148
1132
            user = credentials['user']
1149
1133
        else:
1168
1152
 
1169
1153
        :return: The found password or the one entered by the user.
1170
1154
        """
1171
 
        credentials = self.get_credentials(scheme, host, port, user, path,
1172
 
                                           realm)
 
1155
        credentials = self.get_credentials(scheme, host, port, user, path)
1173
1156
        if credentials is not None:
1174
1157
            password = credentials['password']
1175
1158
            if password is not None and scheme is 'ssh':