Syntax and semantics of the profile file.
The profile file is in UNIX text format, with lines separated by '\n' (newline) characaters.
Comments begin with a '#' character and continue until the end of the line.
Most of the file is made up of strings. A string is a sequence of characters which are not spaces or any of the other significant characters. C-style \n \r \t and \\ character escape sequences are recognised in strings. All other uses of \ are silently ignored, e.g. \x is just x. Strings can be quoted by surrounding them with '"' (doublequote) characters; character escapes do not work inside quoted strings but quoted strings can span whitespace including end of line. Strings may be at most 256 characters long.
The ' ' (space) and '\t' (tab) characters are ignored except in a quoted string.
The file is a sequence of variable assignments, in the format variable = value
where both variable
and value
are strings. Assignments are terminated at the unquoted end of a line or by an unquoted ';' (semicolon) character.
Here is the profile file syntax in ABNF form, which is defined in RFC5234.
profile = *( *LWS item ) *LWS item = assignment / comment comment = %x23 *( %x00-09 %x0b-%xff ) LF ; from '#' character to newline assignment = variable *LWS "=" *LWS value *LWS ( LF / ";" ) ; assignments end at newline or semicolon variable = string value = bool / addrlist / int / inth / path bool = "true" / "false" ; case sensitive addrlist = addr *( ( SP / COMMA / SEMIC ) addr ) addr = host [ ":" port ] host = hostname / ipv4-addr hostname = dot-atom ; from RFC 5322. DNS host name, case insensitive ipv4-addr = 1*3DIGIT 3( "." 1*3DIGIT ) ; IPv4 address in dotted-quad form, see RFC 1166 port = int int = 1*DIGIT inth = int / ( "0x" 1*XDIGIT ) ; integer, possibly in hexadecimal path = string ; unix-style '/' separated pathname. May be used ; either for HTTP or as a local filesystem name. string = quoted-string / simple-string quoted-string = DQUOTE *NOTDQUOTE DQUOTE simple-string = 1*( STR / escaped-char ) escaped-char = ( BSLASH "r" ) / ( BSLASH "n" ) / ( BSLASH "t" ) / ( BSLASH BSLASH ) TAB = %x09 ; tab character LF = %x0a ; newline character SP = %x20 ; ' ' (space) character DQUOTE = %x22 ; '"' (double quote) character HASH = %x23 ; '#' (hash, pound) character COMMA = %x2c ; ',' (comma) character SEMIC = %x3b ; ';' (semicolon) character EQUAL = %x3d ; '=' (equals) character BSLASH = %x5c ; '\\' (backslash) character NOTDQUOTE = %x00-%x21 / %x23-%xff ; anything but a double quote LWS = SP / TAB ; linear whitespace characters DIGIT = %x30-39 ; ASCII decimal digits XDIGIT = %x30-39 / %x41-46 / %x61-66 ; ASCII hexadecimal digits STR = %x00-08 %x0b-1f %x21 %x24-3a %x3c %x3e-5b %x5d-ff ; string characters, all characters except TAB LF SP ; DQUOTE HASH SEMIC EQUAL BSLASH
This section describes the semantics of each variable which can be set in a a profile file.
false
. You should set this variable to true
if the cloud server is outside your internal network.use_https
is true
.Hostnames are looked up using the operating system's name service, which usually means that any of the following will be accepted: hostname, FQDN, or IPv4 address literal in dotted-quad notation. IPv6 addresses are not supported.
Connections made using the context will be spread amongst all the listed hosts in round-robin fashion, in an order which is randomised from the order specified in the host
variable.
The hostnames are looked up in the operating system's name service once when the profile is loaded, and then once more just before each connection is made. This may slow down connections if your operating system does not implement a name service cache. This may also result in interesting behaviour if your cloud service provider uses round-robin DNS.
There is no default host list. All backends except posix
require host
to be specified in the profile. Examples:
host = server host = server1,server2,server3 host = server1:8080,server2:4080 host = 192.168.100.20 host = my.external.server.com host = "server1;server2"
host
variable will be blacklisted. Blacklisted hosts will not be connected to. The default is 10 seconds.posix
backend). The default is "/"
.cdmi
and sproxy
backends, or Amazon's AWS authorization for the s3
backend. There is no default.cdmi
and sproxyd
backends, or Amazon's AWS authorization for the s3
backend. Note that with Basic the password is sent unencrypted, so you should make sure to set use_https
to true
to provide any level of security at all. There is no default.use_https
is true
and the server requests a certificate). The certificates in the chain must be in PEM format and must be sorted starting with the server's certificate followed by intermediate CA certificates if applicable, and ending at the root CA. There is no default.ssl_cert_file
variable. Only used when use_https
is true
. The key file must be in PEM format. There is no default.ssl_key_file
variable. Only used when use_https
is true
. There is no default.use_https
is true
. The CA certificate file may contain multiple certificates and must be in PEM format. There is no default value. Note that Droplet does not automatically use the operating system's default CA certificate stores, so if you want any security at all you should set ssl_ca_list
to the correct value for your operating system. The correct value on Ubuntu is "/etc/ssl/certs/ca-certificates.crt"
.<name>.pricing
in the droplet directory where <name>
is the name of the pricing model. See Pricing Model for a description of the pricing model and the syntax of the pricing file. Pricing information is currently not used. There is no default.<name>.csv
where <name>
is the name of the profile. See Pricing Model for a description of the log file. The default is the droplet directory, i.e. chargeable events are logged by default. To turn off logging specify an empty string, like this pricing = "" # turns off logging of chargeable events
DPL_VFILE_FLAG_ENCRYPT
flag in the flags
parameter to either dpl_openread()
or dpl_openwrite()
. File encryption uses the AES-256 cipher. There is no default.s3
. The backends are:url_encoding
is true
. The default is false
.true
, HTTP connections are reused for multiple requests (subject to an idle timeout). If set to false
, a new HTTP connection is started for each request. Note that this has nothing at all to do with TCP keepalive. The default is true
.true
.cdmi
backend to generate unique ObjectIDs. Enterprise Number assignments are published by IANA. For example, SGI's Enterprise Number is 59. The default is 37489 (assigned to Scality).