apache-vhost-file
Description
Apache vhost configuration
Variables
Name | Type | Default | Description |
---|---|---|---|
|
string | -- | The path to the file. Required |
|
string | ${APACHE_LOG_DIR}/access.log combined | This is in the format: "CustomLog log_location log_format", and the 'log_format' must refer to a LogFormat defined in the Apache conf. |
|
string | /var/www/html | The document root. |
|
string | ${APACHE_LOG_DIR}/error.log | The error log file for this vhost. |
|
list | [] | A list of 'Directory', 'DirectoryMatch', 'Files', 'FilesMatch', 'Location', 'LocationMatch' directives. |
|
string | -- | The group of the file. |
|
string | _default_ | The address to listen to, can be any of the following, optionally followed by a colon and a port number (or *): - The IP address of the virtual host; - A fully qualified domain name for the IP address of the virtual host (not recommended); - The character *, which acts as a wildcard and matches any IP address. - The string default, which is an alias for * |
|
integer | 80 | The port to listen to. |
|
integer | 443 | The port to listen for https. |
|
string | -- | The permissions of the file. |
|
string | -- | The owner of the file. |
|
string | -- | The server admin email. |
|
list | -- | A list of server aliases. |
|
string | localhost | The server name. |
|
string | -- | The ssl ca certificate file. |
|
string | -- | The ssl certificate chain file. |
|
string | -- | The ssl certificate file. |
|
boolean | -- | Whether to use https. All http traffic will be redirected to https. |
|
boolean | True | Whether to use letsencrypt certificates. If this is the case, and 'use_https' is selected, the ssl_* certificate paths don't need to be provided, and the location to renew them will be added automatically. |
Code
doc: short_help: Apache vhost configuration args: listen_ip: doc: short_help: The ip to listen to. help: | The address to listen to, can be any of the following, optionally followed by a colon and a port number (or *): - The IP address of the virtual host; - A fully qualified domain name for the IP address of the virtual host (not recommended); - The character *, which acts as a wildcard and matches any IP address. - The string _default_, which is an alias for * references: - '[Apache VirtualHost documentation](https://httpd.apache.org/docs/current/mod/core.html#virtualhost)' type: string required: false default: _default_ use_https: doc: short_help: Whether to use https. help: | Whether to use https. All http traffic will be redirected to https. type: boolean required: false # default: true use_letsencrypt: doc: short_help: Whether to use letsencrypt certificates. help: | Whether to use [letsencrypt](https://letsencrypt.org/) certificates. If this is the case, and 'use_https' is selected, the ssl_* certificate paths don't need to be provided, and the location to renew them will be added automatically. references: - '[LetsEncrypt homepage](https://letsencrypt.org/)' type: boolean required: false default: true cli: enabled: false listen_port_https: doc: short_help: The port to listen for https. type: integer default: 443 required: false listen_port: doc: short_help: The port to listen to. type: integer required: false default: 80 server_aliases: doc: short_help: A list of server aliases. type: list schema: type: string required: false cli: param_decls: - --alias metavar: ALIAS server_admin: doc: short_help: The server admin email. type: string required: false cli: metavar: EMAIL error_log: doc: short_help: The error log file for this vhost. references: - '[Apache logs documentation](https://httpd.apache.org/docs/2.4/logs.html)' type: string required: false default: ${APACHE_LOG_DIR}/error.log cli: metavar: PATH custom_log: doc: short_help: The custom log. help: | This is in the format: "CustomLog log_location log_format", and the 'log_format' must refer to a LogFormat defined in the Apache conf. references: - '[Apache logs documentation](https://httpd.apache.org/docs/2.4/logs.html)' type: string default: ${APACHE_LOG_DIR}/access.log combined cli: metavar: LOG_SPEC server_name: doc: short_help: The server name. type: string required: false default: localhost document_root: doc: short_help: The document root. references: - '[Apache vhost examples](https://httpd.apache.org/docs/2.4/vhosts/examples.html)' - '[Apache document root documentation](https://httpd.apache.org/docs/2.4/mod/core.html#documentroot)' type: string required: false default: /var/www/html cli: metavar: PATH ssl_certificate_file: doc: short_help: The ssl certificate file. type: string required: false cli: metavar: PATH ssl_ca_certificate_file: doc: short_help: The ssl ca certificate file. type: string required: false cli: metavar: PATH ssl_certificate_chain_file: doc: short_help: The ssl certificate chain file. type: string required: false cli: metavar: PATH folder_directives: doc: short_help: A list of 'Directory', 'DirectoryMatch', 'Files', 'FilesMatch', 'Location', 'LocationMatch' directives. references: - "[Apache 'Directory' directive doc](https://httpd.apache.org/docs/2.4/mod/core.html)" type: list default: [] cli: enabled: false schema: type: dict schema: directive_type: required: true type: string allowed: - Directory - DirectoryMatch - Files - FilesMatch - Location - LocationMatch path: required: true type: string empty: false Options: required: false empty: false type: string AllowOverride: required: false empty: false type: string DirectoryIndex: required: false empty: false type: string Allow: required: false type: string Require: required: false type: string empty: false AuthType: required: false type: string empty: false AuthName: required: false type: string empty: false AuthUserFile: required: false type: string empty: false SetHandler: required: false type: string empty: false _import: - file-with-content frecklets: - file-with-content: path: '{{:: path ::}}' group: '{{:: group ::}}' owner: '{{:: owner ::}}' mode: '{{:: mode ::}}' content: |- {%:: if use_https ::%} <VirtualHost {{:: listen_ip ::}}:{{:: listen_port ::}}> ServerName {{:: server_name ::}} {%:: if server_aliases ::%} {%:: for alias in server_aliases ::%} ServerAlias {{:: alias ::}} {%:: endfor ::%}{%:: endif ::%} Redirect / https://{{:: server_name ::}}{%:: if listen_port_https != 443 ::%}:{{:: listen_port_https ::}}{%:: endif ::%} </VirtualHost> {%:: endif ::%} <VirtualHost {{:: listen_ip ::}}:{%:: if not use_https ::%}{{:: listen_port ::}}{%:: else ::%}{{:: listen_port_https ::}}{%:: endif ::%}> ServerName {{:: server_name ::}} {%:: if server_aliases ::%} {%:: for alias in server_aliases ::%} ServerAlias {{:: alias ::}} {%:: endfor ::%}{%:: endif ::%} DocumentRoot "{{:: document_root ::}}" {%:: if server_admin ::%}ServerAdmin {{:: server_admin ::}}{%:: endif ::%} {%:: if error_log ::%}ErrorLog {{:: error_log ::}}{%:: endif ::%} {%:: if custom_log ::%}CustomLog {{:: custom_log ::}}{%:: endif ::%} {%:: if use_https ::%} SSLEngine on SSLVerifyClient none SSLProtocol TLSv1.2 {%:: if use_letsencrypt ::%} SSLCertificateFile /etc/letsencrypt/live/{{:: server_name ::}}/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/{{:: server_name ::}}/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/{{:: server_name ::}}/fullchain.pem {%:: else ::%} {%:: if ssl_certificate_file ::%}SSLCertificateFile {{:: ssl_certificate_file ::}}{%:: endif ::%} {%:: if ssl_ca_certificate_file ::%}SSLCertificateFile {{:: ssl_ca_certificate_file ::}}{%:: endif ::%} {%:: if ssl_certificate_chain_file ::%}SSLCertificateChainFile {{:: ssl_certificate_chain_file ::}}{%:: endif ::%} {%:: endif ::%} {%:: endif ::%} {%:: for d in folder_directives ::%} <{{:: d.directive_type ::}} "{{:: d.path ::}}"> {%:: for var_name in ['AllowOverride', 'Options', 'Require', 'Allow', 'AuthType', 'AuthName', 'AuthUserFile', 'SetHandler', 'DirectoryIndex'] ::%} {%:: if d[var_name] ::%}{{:: var_name ::}} {{:: d[var_name] ::}}{%:: endif ::%}{%:: endfor ::%} </{{:: d.directive_type ::}}> {%:: endfor ::%} </VirtualHost>
frecklecute apache-vhost-file --help Usage: frecklecute apache-vhost-file [OPTIONS] PATH Apache vhost configuration Options: --custom-log LOG_SPEC The custom log. --document-root PATH The document root. --error-log PATH The error log file for this vhost. --group GROUP The group of the file. --listen-ip LISTEN_IP The ip to listen to. --listen-port LISTEN_PORT The port to listen to. --listen-port-https LISTEN_PORT_HTTPS The port to listen for https. --mode MODE The permissions of the file. --owner USER The owner of the file. --server-admin EMAIL The server admin email. --alias ALIAS A list of server aliases. --server-name SERVER_NAME The server name. --ssl-ca-certificate-file PATH The ssl ca certificate file. --ssl-certificate-chain-file PATH The ssl certificate chain file. --ssl-certificate-file PATH The ssl certificate file. --use-https / --no-use-https Whether to use https. --help Show this message and exit.
# -*- coding: utf-8 -*- # # module path: pycklets.apache_vhost_file.ApacheVhostFile # from dataclasses import dataclass from pyckles import AutoPycklet from typing import * # noqa @dataclass class ApacheVhostFile(AutoPycklet): """Apache vhost configuration Args: custom_log: The custom log. document_root: The document root. error_log: The error log file for this vhost. folder_directives: A list of 'Directory', 'DirectoryMatch', 'Files', 'FilesMatch', 'Location', 'LocationMatch' directives. group: The group of the file. listen_ip: The ip to listen to. listen_port: The port to listen to. listen_port_https: The port to listen for https. mode: The permissions of the file. owner: The owner of the file. path: The path to the file. server_admin: The server admin email. server_aliases: A list of server aliases. server_name: The server name. ssl_ca_certificate_file: The ssl ca certificate file. ssl_certificate_chain_file: The ssl certificate chain file. ssl_certificate_file: The ssl certificate file. use_https: Whether to use https. use_letsencrypt: Whether to use letsencrypt certificates. """ FRECKLET_ID = "apache-vhost-file" custom_log: str = None document_root: str = None error_log: str = None folder_directives: List = None group: str = None listen_ip: str = None listen_port: int = None listen_port_https: int = None mode: str = None owner: str = None path: str = None server_admin: str = None server_aliases: List = None server_name: str = None ssl_ca_certificate_file: str = None ssl_certificate_chain_file: str = None ssl_certificate_file: str = None use_https: bool = None use_letsencrypt: bool = None def __post_init__(self): super(ApacheVhostFile, self).__init__(var_names=["custom_log", "document_root", "error_log", "folder_directives", "group", "listen_ip", "listen_port", "listen_port_https", "mode", "owner", "path", "server_admin", "server_aliases", "server_name", "ssl_ca_certificate_file", "ssl_certificate_chain_file", "ssl_certificate_file", "use_https", "use_letsencrypt"]) frecklet_class = ApacheVhostFile
# -*- coding: utf-8 -*- # # module path: pycklets.apache_vhost_file.ApacheVhostFile # from pyckles import AutoPycklet class ApacheVhostFile(AutoPycklet): """Apache vhost configuration Args: custom_log: The custom log. document_root: The document root. error_log: The error log file for this vhost. folder_directives: A list of 'Directory', 'DirectoryMatch', 'Files', 'FilesMatch', 'Location', 'LocationMatch' directives. group: The group of the file. listen_ip: The ip to listen to. listen_port: The port to listen to. listen_port_https: The port to listen for https. mode: The permissions of the file. owner: The owner of the file. path: The path to the file. server_admin: The server admin email. server_aliases: A list of server aliases. server_name: The server name. ssl_ca_certificate_file: The ssl ca certificate file. ssl_certificate_chain_file: The ssl certificate chain file. ssl_certificate_file: The ssl certificate file. use_https: Whether to use https. use_letsencrypt: Whether to use letsencrypt certificates. """ FRECKLET_ID = "apache-vhost-file" def __init__(self, custom_log="${APACHE_LOG_DIR}/access.log combined", document_root="/var/www/html", error_log="${APACHE_LOG_DIR}/error.log", folder_directives=None, group=None, listen_ip="_default_", listen_port=80, listen_port_https=443, mode=None, owner=None, path=None, server_admin=None, server_aliases=None, server_name="localhost", ssl_ca_certificate_file=None, ssl_certificate_chain_file=None, ssl_certificate_file=None, use_https=None, use_letsencrypt=True): super(ApacheVhostFile, self).__init__(var_names=["custom_log", "document_root", "error_log", "folder_directives", "group", "listen_ip", "listen_port", "listen_port_https", "mode", "owner", "path", "server_admin", "server_aliases", "server_name", "ssl_ca_certificate_file", "ssl_certificate_chain_file", "ssl_certificate_file", "use_https", "use_letsencrypt"]) self._custom_log = custom_log self._document_root = document_root self._error_log = error_log self._folder_directives = folder_directives self._group = group self._listen_ip = listen_ip self._listen_port = listen_port self._listen_port_https = listen_port_https self._mode = mode self._owner = owner self._path = path self._server_admin = server_admin self._server_aliases = server_aliases self._server_name = server_name self._ssl_ca_certificate_file = ssl_ca_certificate_file self._ssl_certificate_chain_file = ssl_certificate_chain_file self._ssl_certificate_file = ssl_certificate_file self._use_https = use_https self._use_letsencrypt = use_letsencrypt @property def custom_log(self): return self._custom_log @custom_log.setter def custom_log(self, custom_log): self._custom_log = custom_log @property def document_root(self): return self._document_root @document_root.setter def document_root(self, document_root): self._document_root = document_root @property def error_log(self): return self._error_log @error_log.setter def error_log(self, error_log): self._error_log = error_log @property def folder_directives(self): return self._folder_directives @folder_directives.setter def folder_directives(self, folder_directives): self._folder_directives = folder_directives @property def group(self): return self._group @group.setter def group(self, group): self._group = group @property def listen_ip(self): return self._listen_ip @listen_ip.setter def listen_ip(self, listen_ip): self._listen_ip = listen_ip @property def listen_port(self): return self._listen_port @listen_port.setter def listen_port(self, listen_port): self._listen_port = listen_port @property def listen_port_https(self): return self._listen_port_https @listen_port_https.setter def listen_port_https(self, listen_port_https): self._listen_port_https = listen_port_https @property def mode(self): return self._mode @mode.setter def mode(self, mode): self._mode = mode @property def owner(self): return self._owner @owner.setter def owner(self, owner): self._owner = owner @property def path(self): return self._path @path.setter def path(self, path): self._path = path @property def server_admin(self): return self._server_admin @server_admin.setter def server_admin(self, server_admin): self._server_admin = server_admin @property def server_aliases(self): return self._server_aliases @server_aliases.setter def server_aliases(self, server_aliases): self._server_aliases = server_aliases @property def server_name(self): return self._server_name @server_name.setter def server_name(self, server_name): self._server_name = server_name @property def ssl_ca_certificate_file(self): return self._ssl_ca_certificate_file @ssl_ca_certificate_file.setter def ssl_ca_certificate_file(self, ssl_ca_certificate_file): self._ssl_ca_certificate_file = ssl_ca_certificate_file @property def ssl_certificate_chain_file(self): return self._ssl_certificate_chain_file @ssl_certificate_chain_file.setter def ssl_certificate_chain_file(self, ssl_certificate_chain_file): self._ssl_certificate_chain_file = ssl_certificate_chain_file @property def ssl_certificate_file(self): return self._ssl_certificate_file @ssl_certificate_file.setter def ssl_certificate_file(self, ssl_certificate_file): self._ssl_certificate_file = ssl_certificate_file @property def use_https(self): return self._use_https @use_https.setter def use_https(self, use_https): self._use_https = use_https @property def use_letsencrypt(self): return self._use_letsencrypt @use_letsencrypt.setter def use_letsencrypt(self, use_letsencrypt): self._use_letsencrypt = use_letsencrypt frecklet_class = ApacheVhostFile