{{/*
# Copyright 2018 Huawei Technologies Co., Ltd.
# Copyright 2021 Huawei Technologies Co., Ltd.
# Modifications Copyright © 2023 Nordix Foundation
#
# Licensed 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.
*/}}

server.document-root = "/var/www-data/servers/open-cli/"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = {{ .Values.containerPort }}

mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain",
  ".jpg" => "image/jpeg",
  ".png" => "image/png"
)

index-file.names = ( "index.html" )
dir-listing.activate = "disable"


server.modules = (
        "mod_access",
        "mod_proxy",
        "mod_alias",
        "mod_compress",
        "mod_redirect"
)

server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
