362 lines
14 KiB
INI
362 lines
14 KiB
INI
[global]
|
|
# Application instance name
|
|
app_name = ezBookkeeping
|
|
|
|
# Either "production", "development"
|
|
mode = production
|
|
|
|
[server]
|
|
# Protocol (http, https, socket)
|
|
protocol = http
|
|
|
|
# The ip address to bind to, "0.0.0.0" will bind to all interfaces
|
|
http_addr = 0.0.0.0
|
|
|
|
# The http port to bind to
|
|
http_port = 8080
|
|
|
|
# The domain name used to access ezBookkeeping
|
|
domain = localhost
|
|
|
|
# The full url used to access ezBookkeeping in browser
|
|
root_url = %(protocol)s://%(domain)s:%(http_port)s/
|
|
|
|
# https certification and its key file
|
|
cert_file =
|
|
cert_key_file =
|
|
|
|
# Unix socket path, for "socket" protocol only
|
|
unix_socket =
|
|
|
|
# Static file root path (relative or absolute path)
|
|
static_root_path = public
|
|
|
|
# Enable GZip
|
|
enable_gzip = false
|
|
|
|
# Set to true to log each request and execution time
|
|
log_request = true
|
|
|
|
[database]
|
|
# Either "mysql", "postgres" or "sqlite3"
|
|
type = sqlite3
|
|
|
|
# Database connection configuration, for "mysql" and "postgres"
|
|
host = 127.0.0.1:3306
|
|
name = ezbookkeeping
|
|
user = root
|
|
passwd =
|
|
|
|
# For "postgres" database only, Either "disable", "require" or "verify-full"
|
|
ssl_mode = disable
|
|
|
|
# For "sqlite3" database only, database file path (relative or absolute path)
|
|
db_path = data/ezbookkeeping.db
|
|
|
|
# Max idle connection number (0 - 65535, 0 means no idle connections are retained), default is 2
|
|
max_idle_conn = 2
|
|
|
|
# Max opened connection number (0 - 65535), default is 0 (unlimited)
|
|
max_open_conn = 0
|
|
|
|
# Max connection lifetime (0 - 4294967295 seconds), default is 14400 (4 hours)
|
|
conn_max_lifetime = 14400
|
|
|
|
# Set to true to log each sql statement and execution time
|
|
log_query = false
|
|
|
|
# Set to true to automatically update database structure when starting web server
|
|
auto_update_database = true
|
|
|
|
[mail]
|
|
# Set to true to enable sending mail by SMTP server
|
|
enable_smtp = false
|
|
|
|
# SMTP Server connection configuration
|
|
smtp_host = 127.0.0.1:25
|
|
smtp_user =
|
|
smtp_passwd =
|
|
smtp_skip_tls_verify = false
|
|
|
|
# Mail from address. This can be just an email address, or the "Name" <user@domain.com> format.
|
|
from_address =
|
|
|
|
[log]
|
|
# Either "console", "file", default is "console"
|
|
# Use space to separate multiple modes, e.g. "console file"
|
|
mode = console file
|
|
|
|
# Either "debug", "info", "warn", "error", default is "info"
|
|
level = info
|
|
|
|
# For "file" mode only, log file path (relative or absolute path)
|
|
log_path = log/ezbookkeeping.log
|
|
|
|
# For "file" only, request log file path (relative or absolute path). Leave blank if you want to write request log in default log file
|
|
request_log_path =
|
|
|
|
# For "file" only, query log file path (relative or absolute path). Leave blank if you want to write query log in default log file
|
|
query_log_path =
|
|
|
|
# For "file" only, whether rotate the log files
|
|
log_file_rotate = false
|
|
|
|
# For "file" only, maximum size (1 - 4294967295 bytes) of the log file before it gets rotated
|
|
log_file_max_size = 104857600
|
|
|
|
# For "file" only, maximum number of days to retain old log files. Set to 0 to retain all logs
|
|
log_file_max_days = 7
|
|
|
|
[storage]
|
|
# Object storage type, supports "local_filesystem" and "minio" currently
|
|
type = local_filesystem
|
|
|
|
# For "local_filesystem" storage only, the storage root path (relative or absolute path)
|
|
local_filesystem_path = storage/
|
|
|
|
# For "minio" storage only, the minio connection configuration
|
|
minio_endpoint = 127.0.0.1:9000
|
|
minio_location =
|
|
minio_access_key_id =
|
|
minio_secret_access_key =
|
|
|
|
# For "minio" storage only, whether enable ssl for minio connection
|
|
minio_use_ssl = false
|
|
|
|
# For "minio" storage only, set to true to skip tls verification when connect minio
|
|
minio_skip_tls_verify = false
|
|
|
|
# For "minio" storage only, the minio bucket
|
|
minio_bucket = ezbookkeeping
|
|
|
|
# For "minio" storage only, the root path to store files in minio
|
|
minio_root_path = /
|
|
|
|
[uuid]
|
|
# Uuid generator type, supports "internal" currently
|
|
generator_type = internal
|
|
|
|
# For "internal" uuid generator only, each server must have unique id (0 - 255)
|
|
server_id = 0
|
|
|
|
[duplicate_checker]
|
|
# Duplicate checker type, supports "in_memory" currently
|
|
checker_type = in_memory
|
|
|
|
# For "in_memory" duplicate checker only, cleanup expired data interval seconds (1 - 4294967295), default is 60 (1 minutes)
|
|
cleanup_interval = 60
|
|
|
|
# The minimum interval seconds (0 - 4294967295) between duplicate submissions on the same page (exiting and re-entering the edit page / edit dialog is considered as a new session)
|
|
# Set to 0 to disable duplicate checker for new data submissions, default is 300 (5 minutes)
|
|
duplicate_submissions_interval = 300
|
|
|
|
[cron]
|
|
# Set to true to clean up expired tokens periodically
|
|
enable_remove_expired_tokens = true
|
|
|
|
# Set to true to create scheduled transactions based on the user's templates
|
|
enable_create_scheduled_transaction = true
|
|
|
|
[security]
|
|
# Used for signing, you must change it to keep your user data safe before you first run ezBookkeeping
|
|
secret_key =
|
|
|
|
# Set to true to enable two-factor authorization
|
|
enable_two_factor = true
|
|
|
|
# Token expired seconds (60 - 4294967295), default is 2592000 (30 days)
|
|
token_expired_time = 2592000
|
|
|
|
# Token minimum refresh interval (0 - 4294967295), the value should be less than token expired time
|
|
# Set to 0 to refresh the token every time when refreshing the front end, default is 86400 (1 day)
|
|
token_min_refresh_interval = 86400
|
|
|
|
# Temporary token expired seconds (60 - 4294967295), default is 300 (5 minutes)
|
|
temporary_token_expired_time = 300
|
|
|
|
# Email verify token expired seconds (60 - 4294967295), default is 3600 (60 minutes)
|
|
email_verify_token_expired_time = 3600
|
|
|
|
# Password reset token expired seconds (60 - 4294967295), default is 3600 (60 minutes)
|
|
password_reset_token_expired_time = 3600
|
|
|
|
# Add X-Request-Id header to response to track user request or error, default is true
|
|
request_id_header = true
|
|
|
|
[user]
|
|
# Set to true to allow users to register account by themselves
|
|
enable_register = true
|
|
|
|
# Set to true to allow users to verify email address
|
|
enable_email_verify = false
|
|
|
|
# Set to true to require email must be verified when login
|
|
enable_force_email_verify = false
|
|
|
|
# Set to true to allow users to reset password
|
|
enable_forget_password = true
|
|
|
|
# Set to true to require email must be verified when use forget password
|
|
forget_password_require_email_verify = false
|
|
|
|
# Set to true to allow users to upload transaction pictures
|
|
enable_transaction_picture = true
|
|
|
|
# Maximum allowed transaction picture file size (1 - 4294967295 bytes)
|
|
max_transaction_picture_size = 10485760
|
|
|
|
# Set to true to allow users to create scheduled transaction
|
|
enable_scheduled_transaction = true
|
|
|
|
# User avatar provider, supports the following types:
|
|
# "internal": Use the internal object storage to store user avatar (refer to "storage" settings), supports updating avatar by user self
|
|
# "gravatar": https://gravatar.com
|
|
# Leave blank if you want to disable user avatar
|
|
avatar_provider = internal
|
|
|
|
# For "internal" avatar provider only, maximum allowed user avatar file size (1 - 4294967295 bytes)
|
|
max_user_avatar_size = 1048576
|
|
|
|
# The default feature restrictions after user registration (feature types separated by commas), leave blank for no restrictions
|
|
# Supports the following feature types:
|
|
# 1: Update Password
|
|
# 2: Update Email
|
|
# 3: Update Profile Basic Info
|
|
# 4: Update Avatar
|
|
# 5: Logout Other Session
|
|
# 6: Enable Two-Factor Authentication
|
|
# 7: Disable Enable Two-Factor Authentication
|
|
# 8: Forget Password
|
|
# 9: Import Transactions
|
|
# 10: Export Transactions
|
|
# 11: Clear All Data
|
|
default_feature_restrictions =
|
|
|
|
[data]
|
|
# Set to true to allow users to export their data
|
|
enable_export = true
|
|
|
|
# Set to true to allow users to import their data
|
|
enable_import = true
|
|
|
|
# Maximum allowed import file size (1 - 4294967295 bytes)
|
|
max_import_file_size = 10485760
|
|
|
|
[tip]
|
|
# Set to true to display custom tips in login page
|
|
enable_tips_in_login_page = false
|
|
|
|
# The custom tips displayed in login page, it supports multi-language configuration
|
|
# Add an underscore and a language tag after the setting key to configure the notification content in that language, the same below
|
|
# For example, login_page_tips_content_zh_hans means the notification content in Simplified Chinese
|
|
login_page_tips_content =
|
|
|
|
[notification]
|
|
# Set to true to display custom notification in home page every time users register
|
|
enable_notification_after_register = false
|
|
|
|
# The notification content displayed each time users register, it supports multi-language configuration
|
|
# Add an underscore and a language tag after the setting key to configure the notification content in that language, the same below
|
|
# For example, after_login_notification_content_zh_hans means the notification content in Simplified Chinese
|
|
after_register_notification_content =
|
|
|
|
# Set to true to display custom notification in home page every time users login
|
|
enable_notification_after_login = false
|
|
|
|
# The notification content displayed each time users log in, it supports multi-language configuration
|
|
after_login_notification_content =
|
|
|
|
# Set to true to display custom notification in home page every time users open the app
|
|
enable_notification_after_open = false
|
|
|
|
# The notification content displayed each time users open the app, it supports multi-language configuration
|
|
after_open_notification_content =
|
|
|
|
[map]
|
|
# Map provider, supports the following types:
|
|
# "openstreetmap": https://www.openstreetmap.org
|
|
# "openstreetmap_humanitarian": http://map.hotosm.org
|
|
# "opentopomap": https://opentopomap.org
|
|
# "opnvkarte": https://publictransportmap.org
|
|
# "cyclosm": https://www.cyclosm.org
|
|
# "cartodb": https://carto.com/basemaps
|
|
# "tomtom": https://www.tomtom.com
|
|
# "tianditu": https://www.tianditu.gov.cn
|
|
# "googlemap": https://map.google.com
|
|
# "baidumap": https://map.baidu.com
|
|
# "amap": https://amap.com
|
|
# "custom": custom map tile server url
|
|
# Leave blank if you want to disable map
|
|
map_provider = openstreetmap
|
|
|
|
# Set to true to use the ezbookkeeping server to forward map data requests, for "openstreetmap", "openstreetmap_humanitarian", "opentopomap", "opnvkarte", "cyclosm", "cartodb", "tomtom", "tianditu" or "custom"
|
|
map_data_fetch_proxy = false
|
|
|
|
# Proxy for ezbookkeeping server requesting original map data when map_data_fetch_proxy is set to true, supports "system" (use system proxy), "none" (do not use proxy), or proxy URL which starts with "http://", "https://" or "socks5://", default is "system"
|
|
proxy = system
|
|
|
|
# For "tomtom" map provider only, TomTom map API key, please visit https://developer.tomtom.com/how-to-get-tomtom-api-key for more information
|
|
tomtom_map_api_key =
|
|
|
|
# For "tianditu" map provider only, TianDiTu map application key, please visit https://console.tianditu.gov.cn/api/register for more information
|
|
tianditu_map_app_key =
|
|
|
|
# For "googlemap" map provider only, Google map JavaScript API key, please visit https://developers.google.com/maps/get-started for more information
|
|
google_map_api_key =
|
|
|
|
# For "baidumap" map provider only, Baidu map JavaScript API application key, please visit https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/getkey for more information
|
|
baidu_map_ak =
|
|
|
|
# For "amap" map provider only, Amap JavaScript API application key, please visit https://lbs.amap.com/api/javascript-api/guide/abc/prepare for more information
|
|
amap_application_key =
|
|
|
|
# For "amap" map provider only, Amap JavaScript API security verification method, supports the following methods:
|
|
# "internal_proxy": use the internal proxy to request amap api with amap application secret (default)
|
|
# "external_proxy": use an external proxy to request amap api (amap application secret should be set by external proxy)
|
|
# "plain_text": append amap application secret to frontend request directly (insecurity for public network)
|
|
# Please visit https://developer.amap.com/api/jsapi-v2/guide/abc/load for more information
|
|
amap_security_verification_method = plain_text
|
|
|
|
# For "amap" map provider only, Amap JavaScript API application secret, this setting must be provided when "amap_security_verification_method" is set to "internal_proxy" or "plain_text", please visit https://lbs.amap.com/api/javascript-api/guide/abc/prepare for more information
|
|
amap_application_secret =
|
|
|
|
# For "amap" map provider only, Amap JavaScript API external proxy url, this setting must be provided when "amap_security_verification_method" is set to "external_proxy"
|
|
amap_api_external_proxy_url =
|
|
|
|
# For "custom" map provider only, the tile layer url of custom map tile server, supports {x}, {y} (coordinates) and {z} (zoom level) placeholders, like "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
|
custom_map_tile_server_url =
|
|
|
|
# For "custom" map provider only, the optional annotation layer url of custom map tile server, supports {x}, {y} (coordinates) and {z} (zoom level) placeholders
|
|
custom_map_tile_server_annotation_url =
|
|
|
|
# For "custom" map provider only, the min zoom level (0 - 255) for custom map tile server, default is 1
|
|
custom_map_tile_server_min_zoom_level = 1
|
|
|
|
# For "custom" map provider only, the max zoom level (0 - 255) for custom map tile server, default is 18
|
|
custom_map_tile_server_max_zoom_level = 18
|
|
|
|
# For "custom" map provider only, the default zoom level (0 - 255) for custom map tile server, default is 14
|
|
custom_map_tile_server_default_zoom_level = 14
|
|
|
|
[exchange_rates]
|
|
# Exchange rates data source, supports the following types:
|
|
# "euro_central_bank": https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html
|
|
# "bank_of_canada": https://www.bankofcanada.ca/rates/exchange/daily-exchange-rates/
|
|
# "reserve_bank_of_australia": https://www.rba.gov.au/statistics/frequency/exchange-rates.html
|
|
# "czech_national_bank": https://www.cnb.cz/en/financial-markets/foreign-exchange-market/central-bank-exchange-rate-fixing/central-bank-exchange-rate-fixing/
|
|
# "national_bank_of_poland": https://nbp.pl/en/statistic-and-financial-reporting/rates/
|
|
# "bank_of_israel": https://www.boi.org.il/en/economic-roles/financial-markets/exchange-rates/
|
|
# "swiss_national_bank": https://www.snb.ch/en/the-snb/mandates-goals/statistics/statistics-pub/current_interest_exchange_rates
|
|
# "international_monetary_fund": https://www.imf.org/external/np/fin/data/param_rms_mth.aspx
|
|
data_source = euro_central_bank
|
|
|
|
# Requesting exchange rates data timeout (0 - 4294967295 milliseconds)
|
|
# Set to 0 to disable timeout for requesting exchange rates data, default is 10000 (10 seconds)
|
|
request_timeout = 10000
|
|
|
|
# Proxy for ezbookkeeping server requesting exchange rates data, supports "system" (use system proxy), "none" (do not use proxy), or proxy URL which starts with "http://", "https://" or "socks5://", default is "system"
|
|
proxy = system
|
|
|
|
# Set to true to skip tls verification when request exchange rates data
|
|
skip_tls_verify = false
|