##################################
#
# settings for the Redirect plugin
# (WS-Management forwarding)
#
# This module can proxy/forward/redirect requests to another WS-Management server
# A typical scenario is Dell's "Integrated Dell Remote Access Controller" (iDRAC)
# which acts as a baseboard management controller (out of band management) but has
# it's own network configuration.
#
# The redirect plugin allows the host to forward WS-Management request to this
# controller. For the client, in-band (talking to host) and out of band (talking
# to iDrac) only differs in the resource URI.
##################################

# server to redirect to
server='hostname-or-ip'
# port for server
port=443

# resource URI prefix, must be different from known prefixes
resource='http://schemas.dell.com/wbem/wscim/1/cim-schema/2'

# credentials for the remote server
username='user'
password='pass'
authentication_method='basic'

# path for SOAP requests
url_path='/wsman'

cim_namespace='root/cimv2'

# empty: http, non-empty: https
#
# Pass a string naming a file holding one or more certificates to verify the peer with.
# This makes sense only when used in combination with the noverifypeer=0 option
# If noverifypeer=1, cacert need not even indicate an accessible file.
cacert='dummy.pem'

# if certificates need to be verified
noverifypeer=1
noverifyhost=1

# File of the private key, in .pem format
sslkey=

# File of your certificate, in .pem format
# With NSS or Secure Transport, this can also be the nickname of the certificate you wish
# to authenticate with as it is named in the security database.
# If you want to use a file from the current directory, please precede it with "./" prefix,
# in order to avoid confusion with a nickname.
cl_cert=
