; Licensed to the Apache Software Foundation (ASF) under one
; or more contributor license agreements.  See the NOTICE file
; distributed with this work for additional information
; regarding copyright ownership.  The ASF licenses this file
; to you under the Apache License, Version 2.0 (the
; "License"); you may not use this file except in compliance
; with the License.  You may obtain a copy of the License at
;
;   http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing,
; software distributed under the License is distributed on an
; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
; KIND, either express or implied.  See the License for the
; specific language governing permissions and limitations
; under the License.
;
; Sample ~/.cqlshrc file.

[authentication]
username = fred
password = !!bang!!$

[ui]
color = on
completekey = tab

; To use another than the system default browser for cqlsh HELP to open
; the CQL doc HTML, use the 'browser' preference.
; If the field value is empty or not specified, cqlsh will use the
; default browser (specifying 'browser = default' does not work).
;
; Supported browsers are those supported by the Python webbrowser module.
; (https://docs.python.org/2/library/webbrowser.html).
;
; Hint: to use Google Chome, use
; 'browser = open -a /Applications/Google\ Chrome.app %s' on Mac OS X and
; 'browser = /usr/bin/google-chrome-stable %s' on Linux and
; 'browser = C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' on Windows.
;
; This setting can be overridden with the --browser command line option.
;
;browser =

[cql]
version = 3.1.5

[connection]
hostname = 127.0.0.1
port = 9042

[tracing]
max_trace_wait = 10.0

;[ssl]
;certfile = ~/keys/cassandra.cert
;; optional - true by default.
;validate = true
;; to be provided when require_client_auth=true
;userkey = ~/key.pem
;; to be provided when require_client_auth=true
;usercert = ~/cert.pem

;; optional section, overrides default certfile in [ssl] section, if present
;[certfiles]
;192.168.1.3 = ~/keys/cassandra01.cert
;192.168.1.4 = ~/keys/cassandra02.cert


; vim: set ft=dosini :
