diff --git a/bin/gitea.amd64 b/bin/gitea.amd64 deleted file mode 100755 index 8648d99..0000000 Binary files a/bin/gitea.amd64 and /dev/null differ diff --git a/bin/install b/bin/install deleted file mode 100755 index 6cb862f..0000000 --- a/bin/install +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -sudo cp -f /opt/gitea/bin/gitea@.service /etc/systemd/system -cat /etc/systemd/system/gitea@.service diff --git a/bin/update b/bin/update deleted file mode 100644 index 9cac018..0000000 --- a/bin/update +++ /dev/null @@ -1,2 +0,0 @@ -# TODO needs to go out and get latest binary from gitea and place in appropirate directory -# see my hugo script diff --git a/config/3115.ini b/config/3115.ini new file mode 100644 index 0000000..fff4d35 --- /dev/null +++ b/config/3115.ini @@ -0,0 +1,1023 @@ +; This file lists the default values used by Gitea +; Copy required sections to your own app.ini (default is custom/conf/app.ini) +; and modify as needed. +; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation. +; App name that shows in every page title +APP_NAME = McCarty Git Server on Frodo +; Change it if you run locally +RUN_USER = sysadmin +; Either "dev", "prod" or "test", default is "dev" +RUN_MODE = prod + +[repository] +ROOT = /mnt/data/git-server/repos +SCRIPT_TYPE = bash +; DETECTED_CHARSETS_ORDER tie-break order for detected charsets. +; If the charsets have equal confidence, tie-breaking will be done by order in this list +; with charsets earlier in the list chosen in preference to those later. +; Adding "defaults" will place the unused charsets at that position. +DETECTED_CHARSETS_ORDER = UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr +; Default ANSI charset to override non-UTF-8 charsets to +ANSI_CHARSET = +; Force every new repository to be private +FORCE_PRIVATE = false +; Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used. +DEFAULT_PRIVATE = last +; Global limit of repositories per user, applied at creation time. -1 means no limit +MAX_CREATION_LIMIT = -1 +; Mirror sync queue length, increase if mirror syncing starts hanging +MIRROR_QUEUE_LENGTH = 1000 +; Patch test queue length, increase if pull request patch testing starts hanging +PULL_REQUEST_QUEUE_LENGTH = 1000 +; Preferred Licenses to place at the top of the List +; The name here must match the filename in conf/license or custom/conf/license +PREFERRED_LICENSES = Apache License 2.0,MIT License +; Disable the ability to interact with repositories using the HTTP protocol +DISABLE_HTTP_GIT = false +; Value for Access-Control-Allow-Origin header, default is not to present +; WARNING: This maybe harmful to you website if you do not give it a right value. +ACCESS_CONTROL_ALLOW_ORIGIN = +; Force ssh:// clone url instead of scp-style uri when default SSH port is used +USE_COMPAT_SSH_URI = false +; Close issues as long as a commit on any branch marks it as fixed +DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false +; Allow users to push local repositories to Gitea and have them automatically created for a user or an org +ENABLE_PUSH_CREATE_USER = false +ENABLE_PUSH_CREATE_ORG = false +; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki +DISABLED_REPO_UNITS = +; Comma separated list of default repo units. Allowed values: repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki. +; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. +; External wiki and issue tracker can't be enabled by default as it requires additional settings. +; Disabled repo units will not be added to new repositories regardless if it is in the default list. +DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki +; Prefix archive files by placing them in a directory named after the repository +PREFIX_ARCHIVE_FILES = true +; Disable the creation of new mirrors. Pre-existing mirrors remain valid. +DISABLE_MIRRORS = false +; The default branch name of new repositories +DEFAULT_BRANCH = master + +[repository.editor] +; List of file extensions for which lines should be wrapped in the Monaco editor +; Separate extensions with a comma. To line wrap files without an extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd, +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match +PREVIEWABLE_FILE_MODES = markdown + +[repository.local] +; Path for local repository copy. Defaults to `tmp/local-repo` +LOCAL_COPY_PATH = tmp/local-repo +; Path for local wiki copy. Defaults to `tmp/local-wiki` +LOCAL_WIKI_PATH = tmp/local-wiki + +[repository.upload] +; Whether repository file uploads are enabled. Defaults to `true` +ENABLED = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart) +TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +ALLOWED_TYPES = +; Max size of each file in megabytes. Defaults to 3MB +FILE_MAX_SIZE = 3 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[repository.pull-request] +; List of prefixes used in Pull Request title to mark them as Work In Progress +WORK_IN_PROGRESS_PREFIXES = WIP:,[WIP] +; List of keywords used in Pull Request comments to automatically close a related issue +CLOSE_KEYWORDS = close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved +; List of keywords used in Pull Request comments to automatically reopen a related issue +REOPEN_KEYWORDS = reopen,reopens,reopened +; In the default merge message for squash commits include at most this many commits +DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT = 50 +; In the default merge message for squash commits limit the size of the commit messages to this +DEFAULT_MERGE_MESSAGE_SIZE = 5120 +; In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +DEFAULT_MERGE_MESSAGE_ALL_AUTHORS = false +; In default merge messages limit the number of approvers listed as Reviewed-by: to this many +DEFAULT_MERGE_MESSAGE_MAX_APPROVERS = 10 +; In default merge messages only include approvers who are official +DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY = true + +[repository.issue] +; List of reasons why a Pull Request or Issue can be locked +LOCK_REASONS = Too heated,Off-topic,Resolved,Spam + +[repository.signing] +; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey +; run in the context of the RUN_USER +; Switch to none to stop signing completely +SIGNING_KEY = default +; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. +; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to +; the results of git config --get user.name and git config --get user.email respectively and can only be overrided +; by setting the SIGNING_KEY ID to the correct ID.) +SIGNING_NAME = +SIGNING_EMAIL = +; Determines when gitea should sign the initial commit when creating a repository +; Either: +; - never +; - pubkey: only sign if the user has a pubkey +; - twofa: only sign if the user has logged in with twofa +; - always +; options other than none and always can be combined as comma separated list +INITIAL_COMMIT = always +; Determines when to sign for CRUD actions +; - as above +; - parentsigned: requires that the parent commit is signed. +CRUD_ACTIONS = pubkey, twofa, parentsigned +; Determines when to sign Wiki commits +; - as above +WIKI = never +; Determines when to sign on merges +; - basesigned: require that the parent of commit on the base repo is signed. +; - commitssigned: require that all the commits in the head branch are signed. +; - approved: only sign when merging an approved pr to a protected branch +MERGES = pubkey, twofa, basesigned, commitssigned + +[cors] +; More information about CORS can be found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers +; enable cors headers (disabled by default) +ENABLED = false +; scheme of allowed requests +SCHEME = http +; list of requesting domains that are allowed +ALLOW_DOMAIN = * +; allow subdomains of headers listed above to request +ALLOW_SUBDOMAIN = false +; list of methods allowed to request +METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +; max time to cache response +MAX_AGE = 10m +; allow request with credentials +ALLOW_CREDENTIALS = false + +[ui] +; Number of repositories that are displayed on one explore page +EXPLORE_PAGING_NUM = 20 +; Number of issues that are displayed on one page +ISSUE_PAGING_NUM = 10 +; Number of maximum commits displayed in one activity feed +FEED_MAX_COMMIT_NUM = 5 +; Number of maximum commits displayed in commit graph. +GRAPH_MAX_COMMIT_NUM = 100 +; Number of line of codes shown for a code comment +CODE_COMMENT_LINES = 4 +; Value of `theme-color` meta tag, used by Android >= 5.0 +; An invalid color like "none" or "disable" will have the default style +; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android +THEME_COLOR_META_TAG = `#6cc644` +; Max size of files to be displayed (default is 8MiB) +MAX_DISPLAY_FILE_SIZE = 8388608 +; Whether the email of the user should be shown in the Explore Users page +SHOW_USER_EMAIL = true +; Set the default theme for the Gitea install +DEFAULT_THEME = arc-green +; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. +THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light +; All available reactions users can choose on issues/prs and comments. +; Values can be emoji alias (:smile:) or a unicode emoji. +; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png +REACTIONS = +1, -1, laugh, hooray, confused, heart, rocket, eyes +; Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +DEFAULT_SHOW_FULL_NAME = false +; Whether to search within description at repository search on explore page. +SEARCH_REPO_DESCRIPTION = true +; Whether to enable a Service Worker to cache frontend assets +USE_SERVICE_WORKER = true + +[ui.admin] +; Number of users that are displayed on one page +USER_PAGING_NUM = 50 +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 50 +; Number of notices that are displayed on one page +NOTICE_PAGING_NUM = 25 +; Number of organizations that are displayed on one page +ORG_PAGING_NUM = 50 + +[ui.user] +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 15 + +[ui.meta] +AUTHOR = kebler +DESCRIPTION = kebler.net git organizations +KEYWORDS = go,git,self-hosted,gitea + +[ui.notification] +; Control how often the notification endpoint is polled to update the notification +; The timeout will increase to MAX_TIMEOUT in TIMEOUT_STEPs if the notification count is unchanged +; Set MIN_TIMEOUT to 0 to turn off +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +; This setting determines how often the db is queried to get the latest notification counts. +; If the browser client supports EventSource and SharedWorker, a SharedWorker will be used in preference to polling notification. Set to -1 to disable the EventSource +EVENT_SOURCE_UPDATE_TIME = 10s + +[markdown] +; Render soft line breaks as hard line breaks, which means a single newline character between +; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +; necessary to force a line break. +; Render soft line breaks as hard line breaks for comments +ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +; Render soft line breaks as hard line breaks for markdown documents +ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false +; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown +; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) +; URLs starting with http and https are always displayed, whatever is put in this entry. +CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate the extensions with a comma. To render files without any extension as markdown, just put a comma +FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd + +[server] +; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. +PROTOCOL = http +DOMAIN = localhost +ROOT_URL = https://git.3115.kebler.net/ +; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +STATIC_URL_PREFIX = +; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +HTTP_ADDR = 0.0.0.0 +; The port to listen on. Leave empty when using a unix socket. +HTTP_PORT = 3000 +; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server +; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main +; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for +; PORT_TO_REDIRECT. +REDIRECT_OTHER_PORT = false +PORT_TO_REDIRECT = 80 +; Permission for unix socket +UNIX_SOCKET_PERMISSION = 666 +; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service. +; In most cases you do not need to change the default value. +; Alter it only if your SSH server node is not the same as HTTP node. +; Do not set this variable if PROTOCOL is set to 'unix'. +LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ +; Disable SSH feature when not available +DISABLE_SSH = false +; Whether to use the builtin SSH server or not. +START_SSH_SERVER = false +; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. +BUILTIN_SSH_SERVER_USER = +; Domain name to be exposed in clone URL +SSH_DOMAIN = localhost +; The network interface the builtin SSH server should listen on +SSH_LISTEN_HOST = +; Port number to be exposed in clone URL +SSH_PORT = 22 +; The port number the builtin SSH server should listen on +SSH_LISTEN_PORT = %(SSH_PORT)s +; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. +SSH_ROOT_PATH = +; Gitea will create a authorized_keys file by default when it is not using the internal ssh server +; If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +; For the built-in SSH server, choose the ciphers to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128 +; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org +; For the built-in SSH server, choose the MACs to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96 +; Directory to create temporary files in when testing public keys using ssh-keygen, +; default is the system temporary directory. +SSH_KEY_TEST_PATH = +; Path to ssh-keygen, default is 'ssh-keygen' which means the shell is responsible for finding out which one to call. +SSH_KEYGEN_PATH = ssh-keygen +; Enable SSH Authorized Key Backup when rewriting all keys, default is true +SSH_BACKUP_AUTHORIZED_KEYS = true +; Enable exposure of SSH clone URL to anonymous visitors, default is false +SSH_EXPOSE_ANONYMOUS = false +; Indicate whether to check minimum key size with corresponding type +MINIMUM_KEY_SIZE_CHECK = false +; Disable CDN even in "prod" mode +OFFLINE_MODE = false +DISABLE_ROUTER_LOG = false +; Generate steps: +; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com +; +; Or from a .pfx file exported from the Windows certificate store (do +; not forget to export the private key): +; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys +; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes +; Paths are relative to CUSTOM_PATH +CERT_FILE = https/cert.pem +KEY_FILE = https/key.pem +; Root directory containing templates and static files. +; default is the path where Gitea is executed +STATIC_ROOT_PATH = +; Default path for App data +APP_DATA_PATH = data +; Application level GZIP support +ENABLE_GZIP = false +; Application profiling (memory and cpu) +; For "web" command it listens on localhost:6060 +; For "serve" command it dumps to disk at PPROF_DATA_PATH as (cpuprofile|memprofile)__ +ENABLE_PPROF = false +; PPROF_DATA_PATH, use an absolute path when you start gitea as service +PPROF_DATA_PATH = data/tmp/pprof +; Landing page, can be "home", "explore", "organizations" or "login" +; The "login" choice is not a security measure but just a UI flow change, use REQUIRE_SIGNIN_VIEW to force users to log in. +LANDING_PAGE = organizations +; Enables git-lfs support. true or false, default is false. +LFS_START_SERVER = true +; Where your lfs files reside, default is data/lfs. +LFS_CONTENT_PATH = /mnt/data/git-server/files +; LFS authentication secret, change this yourself +LFS_JWT_SECRET = 8TJnYipfl_sw9aMzwIjhwGTJzrSB1n9deL_vqOThNdg +; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail. +LFS_HTTP_AUTH_EXPIRY = 20m +; Maximum allowed LFS file size in bytes (Set to 0 for no limit). +LFS_MAX_FILE_SIZE = 0 +; Maximum number of locks returned per page +LFS_LOCKS_PAGING_NUM = 50 +; Allow graceful restarts using SIGHUP to fork +ALLOW_GRACEFUL_RESTARTS = true +; After a restart the parent will finish ongoing requests before +; shutting down. Force shutdown if this process takes longer than this delay. +; set to a negative value to disable +GRACEFUL_HAMMER_TIME = 60s +; Allows the setting of a startup timeout and waithint for Windows as SVC service +; 0 disables this. +STARTUP_TIMEOUT = 0 +; Static resources, includes resources on custom/, public/ and all uploaded avatars web browser cache time, default is 6h +STATIC_CACHE_TIME = 6h + +; Define allowed algorithms and their minimum key length (use -1 to disable a type) +[ssh.minimum_key_sizes] +ED25519 = 256 +ECDSA = 256 +RSA = 2048 +DSA = 1024 +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +NAME = gitea +USER = gitea +PASSWD = +SSL_MODE = disable +PATH = db/git.db + +[database] +; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +; NAME = gitea +; USER = root +; Use PASSWD = `your password` for quoting if you use special characters in the password. +; PASSWD = +; For Postgres, schema to use if different from "public". The schema must exist beforehand, +; the user must have creation privileges on it, and the user search path must be set +; to the look into the schema first. e.g.:ALTER USER user SET SEARCH_PATH = schema_name,"$user",public; +; SCHEMA = +; For Postgres, either "disable" (default), "require", or "verify-full" +; For MySQL, either "false" (default), "true", or "skip-verify" +; SSL_MODE = disable +; For MySQL only, either "utf8" or "utf8mb4", default is "utf8mb4". +; NOTICE: for "utf8mb4" you must use MySQL InnoDB > 5.6. Gitea is unable to check this. +; CHARSET = utf8mb4 +; For "sqlite3" and "tidb", use an absolute path when you start gitea as service +PATH = /mnt/data/git-server/db/git.db +; For "sqlite3" only. Query timeout +SQLITE_TIMEOUT = 500 +; For iterate buffer, default is 50 +ITERATE_BUFFER_SIZE = 50 +; Show the database generated SQL +LOG_SQL = true +; Maximum number of DB Connect retries +DB_RETRIES = 10 +; Backoff time per DB retry (time.Duration) +DB_RETRY_BACKOFF = 3s +; Max idle database connections on connnection pool, default is 2 +MAX_IDLE_CONNS = 2 +; Database connection max life time, default is 0 or 3s mysql (See #6804 & #7071 for reasoning) +CONN_MAX_LIFETIME = 3s +; Database maximum number of open connections, default is 0 meaning no maximum +MAX_OPEN_CONNS = 0 +NAME = +USER = +PASSWD = +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 + +[indexer] +; Issue indexer type, currently support: bleve, db or elasticsearch, default is bleve +ISSUE_INDEXER_TYPE = bleve +; Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200 +; Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_NAME = gitea_issues +; Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve +ISSUE_INDEXER_PATH = /mnt/data/git-server/indexers/issues.bleve +; Issue indexer queue, currently support: channel, levelqueue or redis, default is levelqueue +ISSUE_INDEXER_QUEUE_TYPE = levelqueue +; When ISSUE_INDEXER_QUEUE_TYPE is levelqueue, this will be the queue will be saved path, +; default is indexers/issues.queue +ISSUE_INDEXER_QUEUE_DIR = /mnt/data/git-server/indexers/issues.queue +; When `ISSUE_INDEXER_QUEUE_TYPE` is `redis`, this will store the redis connection string. +ISSUE_INDEXER_QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 +; Batch queue number, default is 20 +ISSUE_INDEXER_QUEUE_BATCH_NUMBER = 20 +; Timeout the indexer if it takes longer than this to start. +; Set to zero to disable timeout. +STARTUP_TIMEOUT = 30s +; repo indexer by default disabled, since it uses a lot of disk space +REPO_INDEXER_ENABLED = false +REPO_INDEXER_PATH = /mnt/data/git-server/indexers/repos.bleve +UPDATE_BUFFER_LEN = 20 +MAX_FILE_SIZE = 1048576 +; A comma separated list of glob patterns (see https://github.com/gobwas/glob) to include +; in the index; default is empty +REPO_INDEXER_INCLUDE = +; A comma separated list of glob patterns to exclude from the index; ; default is empty +REPO_INDEXER_EXCLUDE = + +[queue] +; Specific queues can be individually configured with [queue.name]. [queue] provides defaults +; +; General queue queue type, currently support: persistable-channel, channel, level, redis, dummy +; default to persistable-channel +TYPE = persistable-channel +; data-dir for storing persistable queues and level queues, individual queues will be named by their type +DATADIR = /mnt/data/git-server/queues +; Default queue length before a channel queue will block +LENGTH = 20 +; Batch size to send for batched queues +BATCH_LENGTH = 20 +; Connection string for redis queues this will store the redis connection string. +CONN_STR = addrs=127.0.0.1:6379 db=0 +; Provide the suffix of the default redis queue name - specific queues can be overriden within in their [queue.name] sections. +QUEUE_NAME = _queue +; If the queue cannot be created at startup - level queues may need a timeout at startup - wrap the queue: +WRAP_IF_NECESSARY = true +; Attempt to create the wrapped queue at max +MAX_ATTEMPTS = 10 +; Timeout queue creation +TIMEOUT = 15m30s +; Create a pool with this many workers +WORKERS = 1 +; Dynamically scale the worker pool to at this many workers +MAX_WORKERS = 10 +; Add boost workers when the queue blocks for BLOCK_TIMEOUT +BLOCK_TIMEOUT = 1s +; Remove the boost workers after BOOST_TIMEOUT +BOOST_TIMEOUT = 5m +; During a boost add BOOST_WORKERS +BOOST_WORKERS = 5 + +[admin] +; Disallow regular (non-admin) users from creating organizations. +DISABLE_REGULAR_ORG_CREATION = false +; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +DEFAULT_EMAIL_NOTIFICATIONS = enabled + +[security] +; Whether the installer is disabled +INSTALL_LOCK = true +; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! +# @FDEWREWR&*( +SECRET_KEY = hcsA6WS81j91zmILHzZQMEJJM1eghsAksm8hRPPmQttqWRMcDDe887iNzPTDYTaq +; How long to remember that a user is logged in before requiring relogin (in days) +LOGIN_REMEMBER_DAYS = 7 +COOKIE_USERNAME = gitea_awesome +COOKIE_REMEMBER_NAME = gitea_incredible +; Reverse proxy authentication header name of user name +REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER +REVERSE_PROXY_AUTHENTICATION_EMAIL = X-WEBAUTH-EMAIL +; The minimum password length for new Users +MIN_PASSWORD_LENGTH = 6 +; Set to true to allow users to import local server paths +IMPORT_LOCAL_PATHS = false +; Set to true to prevent all users (including admin) from creating custom git hooks +DISABLE_GIT_HOOKS = false +; Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED +ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = true +; Comma separated list of character classes required to pass minimum complexity. +; If left empty or no valid values are specified, the default values ("lower,upper,digit,spec") will be used. +; Use "off" to disable checking. +PASSWORD_COMPLEXITY = lower,upper,digit,spec +; Password Hash algorithm, either "pbkdf2", "argon2", "scrypt" or "bcrypt" +PASSWORD_HASH_ALGO = pbkdf2 +; Set false to allow JavaScript to read CSRF cookie +CSRF_COOKIE_HTTP_ONLY = true +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTY3MzM5Mjl9.htwld4l5AgQ_7zaa1hEE3yBSfq50mWdP3VoE5xT6blc + +[openid] +; +; OpenID is an open, standard and decentralized authentication protocol. +; Your identity is the address of a webpage you provide, which describes +; how to prove you are in control of that page. +; +; For more info: https://en.wikipedia.org/wiki/OpenID +; +; Current implementation supports OpenID-2.0 +; +; Tested to work providers at the time of writing: +; - Any GNUSocial node (your.hostname.tld/username) +; - Any SimpleID provider (http://simpleid.koinic.net) +; - http://openid.org.cn/ +; - openid.stackexchange.com +; - login.launchpad.net +; - .livejournal.com +; +; Whether to allow signin in via OpenID +ENABLE_OPENID_SIGNIN = true +; Whether to allow registering via OpenID +; Do not include to rely on rhw DISABLE_REGISTRATION setting +; ENABLE_OPENID_SIGNUP = true +; Allowed URI patterns (POSIX regexp). +; Space separated. +; Only these would be allowed if non-blank. +; Example value: trusted.domain.org trusted.domain.net +WHITELISTED_URIS = +; Forbidden URI patterns (POSIX regexp). +; Space separated. +; Only used if WHITELISTED_URIS is blank. +; Example value: loadaverage.org/badguy stackexchange.com/.*spammer +BLACKLISTED_URIS = +ENABLE_OPENID_SIGNUP = true + +[service] +; Time limit to confirm account/email registration +ACTIVE_CODE_LIVE_MINUTES = 180 +; Time limit to perform the reset of a forgotten password +RESET_PASSWD_CODE_LIVE_MINUTES = 180 +; Whether a new user needs to confirm their email when registering. +REGISTER_EMAIL_CONFIRM = false +; List of domain names that are allowed to be used to register on a Gitea instance +; gitea.io,example.com +EMAIL_DOMAIN_WHITELIST = +; Disallow registration, only allow admins to create accounts. +DISABLE_REGISTRATION = false +; Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +; User must sign in to view anything. +REQUIRE_SIGNIN_VIEW = false +; Mail notification +ENABLE_NOTIFY_MAIL = false +; This setting enables gitea to be signed in with HTTP BASIC Authentication using the user's password +; If you set this to false you will not be able to access the tokens endpoints on the API with your password +; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token +ENABLE_BASIC_AUTHENTICATION = true +; More detail: https://github.com/gogits/gogs/issues/165 +ENABLE_REVERSE_PROXY_AUTHENTICATION = false +ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false +ENABLE_REVERSE_PROXY_EMAIL = false +; Enable captcha validation for registration +ENABLE_CAPTCHA = false +; Type of captcha you want to use. Options: image, recaptcha +CAPTCHA_TYPE = image +; Enable recaptcha to use Google's recaptcha service +; Go to https://www.google.com/recaptcha/admin to sign up for a key +RECAPTCHA_SECRET = +RECAPTCHA_SITEKEY = +; Change this to use recaptcha.net or other recaptcha service +RECAPTCHA_URL = https://www.google.com/recaptcha/ +; Default value for KeepEmailPrivate +; Each new user will get the value of this setting copied into their profile +DEFAULT_KEEP_EMAIL_PRIVATE = false +; Default value for AllowCreateOrganization +; Every new user will have rights set to create organizations depending on this setting +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +; Either "public", "limited" or "private", default is "public" +; Limited is for signed user only +; Private is only for member of the organization +; Public is for everyone +DEFAULT_ORG_VISIBILITY = public +; Default value for DefaultOrgMemberVisible +; True will make the membership of the users visible when added to the organisation +DEFAULT_ORG_MEMBER_VISIBLE = false +; Default value for EnableDependencies +; Repositories will use dependencies by default depending on this setting +DEFAULT_ENABLE_DEPENDENCIES = true +; Dependencies can be added from any repository where the user is granted access or only from the current repository depending on this setting. +ALLOW_CROSS_REPOSITORY_DEPENDENCIES = true +; Enable heatmap on users profiles. +ENABLE_USER_HEATMAP = true +; Enable Timetracking +ENABLE_TIMETRACKING = true +; Default value for EnableTimetracking +; Repositories will use timetracking by default depending on this setting +DEFAULT_ENABLE_TIMETRACKING = true +; Default value for AllowOnlyContributorsToTrackTime +; Only users with write permissions can track time if this is true +DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true +; Default value for the domain part of the user's email address in the git log +; if he has set KeepEmailPrivate to true. The user's email will be replaced with a +; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS. +NO_REPLY_ADDRESS = noreply.%(DOMAIN)s +; Show Registration button +SHOW_REGISTRATION_BUTTON = true +; Show milestones dashboard page - a view of all the user's milestones +SHOW_MILESTONES_DASHBOARD_PAGE = true +; Default value for AutoWatchNewRepos +; When adding a repo to a team or creating a new repo all team members will watch the +; repo automatically if enabled +AUTO_WATCH_NEW_REPOS = true +; Default value for AutoWatchOnChanges +; Make the user watch a repository When they commit for the first time +AUTO_WATCH_ON_CHANGES = false + +[webhook] +; Hook task queue length, increase if webhook shooting starts hanging +QUEUE_LENGTH = 1000 +; Deliver timeout in seconds +DELIVER_TIMEOUT = 5 +; Allow insecure certification +SKIP_TLS_VERIFY = false +; Number of history information in each page +PAGING_NUM = 10 +; Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy +PROXY_URL = +; Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts. +PROXY_HOSTS = + +[mailer] +ENABLED = false +; Buffer length of channel, keep it as it is if you don't know what it is. +SEND_BUFFER_LEN = 100 +; Prefix displayed before subject in mail +SUBJECT_PREFIX = +; Mail server +; Gmail: smtp.gmail.com:587 +; QQ: smtp.qq.com:465 +; Using STARTTLS on port 587 is recommended per RFC 6409. +; Note, if the port ends with "465", SMTPS will be used. +HOST = +; Disable HELO operation when hostnames are different. +DISABLE_HELO = +; Custom hostname for HELO operation, if no value is provided, one is retrieved from system. +HELO_HOSTNAME = +; Whether or not to skip verification of certificates; `true` to disable verification. This option is unsafe. Consider adding the certificate to the system trust store instead. +SKIP_VERIFY = false +; Use client certificate +USE_CERTIFICATE = false +CERT_FILE = custom/mailer/cert.pem +KEY_FILE = custom/mailer/key.pem +; Should SMTP connect with TLS, (if port ends with 465 TLS will always be used.) +; If this is false but STARTTLS is supported the connection will be upgraded to TLS opportunistically. +IS_TLS_ENABLED = false +; Mail from address, RFC 5322. This can be just an email address, or the `"Name" ` format +FROM = +; Mailer user name and password +; Please Note: Authentication is only supported when the SMTP server communication is encrypted with TLS (this can be via STARTTLS) or `HOST=localhost`. +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Send mails as plain text +SEND_AS_PLAIN_TEXT = false +; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) +MAILER_TYPE = smtp +; Specify an alternative sendmail binary +SENDMAIL_PATH = sendmail +; Specify any extra sendmail arguments +SENDMAIL_ARGS = +; Timeout for Sendmail +SENDMAIL_TIMEOUT = 5m + +[cache] +; if the cache enabled +ENABLED = true +; Either "memory", "redis", or "memcache", default is "memory" +ADAPTER = memory +; For "memory" only, GC interval in seconds, default is 60 +INTERVAL = 60 +; For "redis" and "memcache", connection host address +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; memcache: `127.0.0.1:11211` +HOST = +; Time to keep items in cache if not used, default is 16 hours. +; Setting it to 0 disables caching +ITEM_TTL = 16h + +; Last commit cache +[cache.last_commit] +; if the cache enabled +ENABLED = true +; Time to keep items in cache if not used, default is 8760 hours. +; Setting it to 0 disables caching +ITEM_TTL = 8760h +; Only enable the cache when repository's commits count great than +COMMITS_COUNT = 1000 + +[session] +; Either "memory", "file", or "redis", default is "memory" +PROVIDER = file +; Provider config options +; memory: doesn't have any config yet +; file: session file path, e.g. `data/sessions` +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` +PROVIDER_CONFIG = /mnt/data/git-server/sessions +; Session cookie name +COOKIE_NAME = i_like_gitea +; If you use session in https only, default is false +COOKIE_SECURE = false +; Enable set cookie, default is true +ENABLE_SET_COOKIE = true +; Session GC time interval in seconds, default is 86400 (1 day) +GC_INTERVAL_TIME = 86400 +; Session life time in seconds, default is 86400 (1 day) +SESSION_LIFE_TIME = 86400 + +[picture] +AVATAR_UPLOAD_PATH = /mnt/data/git-server/data/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = /mnt/data/git-server/data/repo-avatars +; How Gitea deals with missing repository avatars +; none = no avatar will be displayed; random = random avatar will be displayed; image = default image will be used +REPOSITORY_AVATAR_FALLBACK = none +REPOSITORY_AVATAR_FALLBACK_IMAGE = /img/repo_default.png +; Max Width and Height of uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_WIDTH = 4096 +AVATAR_MAX_HEIGHT = 3072 +; Maximum alloved file size for uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_FILE_SIZE = 1048576 +; Chinese users can choose "duoshuo" +; or a custom avatar source, like: http://cn.gravatar.com/avatar/ +GRAVATAR_SOURCE = gravatar +; This value will always be true in offline mode. +DISABLE_GRAVATAR = false +; Federated avatar lookup uses DNS to discover avatar associated +; with emails, see https://www.libravatar.org +; This value will always be false in offline mode or when Gravatar is disabled. +ENABLE_FEDERATED_AVATAR = false + +[attachment] +; Whether attachments are enabled. Defaults to `true` +ENABLED = true +; Path for attachments. Defaults to `data/attachments` +PATH = /mnt/data/git-server/data/attachments +; One or more allowed types, e.g. "image/jpeg|image/png". Use "*/*" for all types. +ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip +; Max size of each file. Defaults to 4MB +MAX_SIZE = 4 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[time] +; Specifies the format for fully outputted dates. Defaults to RFC1123 +; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano +; For more information about the format see http://golang.org/pkg/time/#pkg-constants +FORMAT = +; Location the UI time display i.e. Asia/Shanghai +; Empty means server's location setting +DEFAULT_UI_LOCATION = + +[log] +ROOT_PATH = /mnt/data/git-server/log +; Either "console", "file", "conn", "smtp" or "database", default is "console" +; Use comma to separate multiple modes, e.g. "console, file" +MODE = file +; Buffer length of the channel, keep it as it is if you don't know what it is. +BUFFER_LEN = 10000 +REDIRECT_MACARON_LOG = false +MACARON = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Info" +ROUTER_LOG_LEVEL = Info +ROUTER = console +ENABLE_ACCESS_LOG = false +ACCESS_LOG_TEMPLATE = {{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}" +ACCESS = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" +LEVEL = info +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "None" +STACKTRACE_LEVEL = None + +; Generic log modes +[log.x] +FLAGS = stdflags +EXPRESSION = +PREFIX = +COLORIZE = false + +; For "console" mode only +[log.console] +LEVEL = +STDERR = false + +; For "file" mode only +[log.file] +LEVEL = +; Set the file_name for the logger. If this is a relative path this +; will be relative to ROOT_PATH +FILE_NAME = +; This enables automated log rotate(switch of following options), default is true +LOG_ROTATE = true +; Max number of lines in a single file, default is 1000000 +MAX_LINES = 1000000 +; Max size shift of a single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 +; Segment log daily, default is true +DAILY_ROTATE = true +; delete the log file after n days, default is 7 +MAX_DAYS = 7 +; compress logs with gzip +COMPRESS = true +; compression level see godoc for compress/gzip +COMPRESSION_LEVEL = -1 + +; For "conn" mode only +[log.conn] +LEVEL = +; Reconnect host for every single message, default is false +RECONNECT_ON_MSG = false +; Try to reconnect when connection is lost, default is false +RECONNECT = false +; Either "tcp", "unix" or "udp", default is "tcp" +PROTOCOL = tcp +; Host address +ADDR = + +; For "smtp" mode only +[log.smtp] +LEVEL = +; Name displayed in mail title, default is "Diagnostic message from server" +SUBJECT = Diagnostic message from server +; Mail server +HOST = +; Mailer user name and password +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Receivers, can be one or more, e.g. 1@example.com,2@example.com +RECEIVERS = + +[cron] +; Enable running cron tasks periodically. +ENABLED = true +; Run cron tasks when Gitea starts. +RUN_AT_START = false + +; Update mirrors +[cron.update_mirrors] +SCHEDULE = @every 10m + +; Repository health check +[cron.repo_health_check] +SCHEDULE = @every 24h +TIMEOUT = 60s +; Arguments for command 'git fsck', e.g. "--unreachable --tags" +; see more on http://git-scm.com/docs/git-fsck +ARGS = + +; Check repository statistics +[cron.check_repo_stats] +RUN_AT_START = true +SCHEDULE = @every 24h + +; Clean up old repository archives +[cron.archive_cleanup] +; Whether to enable the job +ENABLED = true +; Whether to always run at least once at start up time (if ENABLED) +RUN_AT_START = true +; Time interval for job to run +SCHEDULE = @every 24h +; Archives created more than OLDER_THAN ago are subject to deletion +OLDER_THAN = 24h + +; Synchronize external user data (only LDAP user synchronization is supported) +[cron.sync_external_users] +; Synchronize external user data when starting server (default false) +RUN_AT_START = false +; Interval as a duration between each synchronization (default every 24h) +SCHEDULE = @every 24h +; Create new users, update existing user data and disable users that are not in external source anymore (default) +; or only create new users if UPDATE_EXISTING is set to false +UPDATE_EXISTING = true + +; Update migrated repositories' issues and comments' posterid, it will always attempt synchronization when the instance starts. +[cron.update_migration_poster_id] +; Interval as a duration between each synchronization. (default every 24h) +SCHEDULE = @every 24h + +[git] +; The path of git executable. If empty, Gitea searches through the PATH environment. +PATH = +; Disables highlight of added and removed changes +DISABLE_DIFF_HIGHLIGHT = false +; Max number of lines allowed in a single file in diff view +MAX_GIT_DIFF_LINES = 1000 +; Max number of allowed characters in a line in diff view +MAX_GIT_DIFF_LINE_CHARACTERS = 5000 +; Max number of files shown in diff view +MAX_GIT_DIFF_FILES = 100 +; Arguments for command 'git gc', e.g. "--aggressive --auto" +; see more on http://git-scm.com/docs/git-gc/ +GC_ARGS = +; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1 +ENABLE_AUTO_GIT_WIRE_PROTOCOL = true +; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled) +PULL_REQUEST_PUSH_MESSAGE = true + +; Operation timeout in seconds +[git.timeout] +DEFAULT = 360 +MIGRATE = 600 +MIRROR = 300 +CLONE = 300 +PULL = 300 +GC = 60 + +[mirror] +; Default interval as a duration between each check +DEFAULT_INTERVAL = 8h +; Min interval as a duration must be > 1m +MIN_INTERVAL = 10m + +[api] +; Enables Swagger. True or false; default is true. +ENABLE_SWAGGER = true +; Max number of items in a page +MAX_RESPONSE_ITEMS = 50 +; Default paging number of api +DEFAULT_PAGING_NUM = 30 +; Default and maximum number of items per page for git trees api +DEFAULT_GIT_TREES_PER_PAGE = 1000 +; Default size of a blob returned by the blobs API (default is 10MiB) +DEFAULT_MAX_BLOB_SIZE = 10485760 + +[oauth2] +; Enables OAuth2 provider +ENABLE = true +; Lifetime of an OAuth2 access token in seconds +ACCESS_TOKEN_EXPIRATION_TIME = 3600 +; Lifetime of an OAuth2 access token in hours +REFRESH_TOKEN_EXPIRATION_TIME = 730 +; Check if refresh token got already used +INVALIDATE_REFRESH_TOKENS = false +; OAuth2 authentication secret for access and refresh tokens, change this to a unique string. +JWT_SECRET = Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU +; Maximum length of oauth2 token/cookie stored on server +MAX_TOKEN_LENGTH = 32767 + +[i18n] +LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR +NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어 + +[U2F] + +; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED +; Two Factor authentication with security keys +; https://developers.yubico.com/U2F/App_ID.html +; APP_ID = http://localhost:3000/ +; Comma seperated list of trusted facets +; TRUSTED_FACETS = http://localhost:3000/ +; Extension mapping to highlight class +; e.g. .toml=ini +[highlight.mapping] + +[other] +SHOW_FOOTER_BRANDING = false +; Show version information about Gitea and Go in the footer +SHOW_FOOTER_VERSION = true +; Show template execution time in the footer +SHOW_FOOTER_TEMPLATE_LOAD_TIME = true + +[markup.sanitizer.1] + +; The following keys can appear once to define a sanitation policy rule. +; This section can appear multiple times by adding a unique alphanumeric suffix to define multiple rules. +; e.g., [markup.sanitizer.1] -> [markup.sanitizer.2] -> [markup.sanitizer.TeX] +; ELEMENT = span +; ALLOW_ATTR = class +; REGEXP = ^(info|warning|error)$ +[markup.asciidoc] +ENABLED = false +; List of file extensions that should be rendered by an external command +FILE_EXTENSIONS = .adoc,.asciidoc +; External command to render all matching extensions +RENDER_COMMAND = asciidoc --out-file=- - +; Don't pass the file on STDIN, pass the filename as argument instead. +IS_INPUT_FILE = false + +[metrics] +; Enables metrics endpoint. True or false; default is false. +ENABLED = false +; If you want to add authorization, specify a token here +TOKEN = + +[task] +; Task queue type, could be `channel` or `redis`. +QUEUE_TYPE = channel +; Task queue length, available only when `QUEUE_TYPE` is `channel`. +QUEUE_LENGTH = 1000 +; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +; If there is a password of redis, use `addrs=127.0.0.1:6379 password=123 db=0`. +QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 + +[migrations] +; Max attempts per http/https request on migrations. +MAX_ATTEMPTS = 3 +; Backoff time per http/https request retry (seconds) +RETRY_BACKOFF = 3 diff --git a/config/3115.tmpl b/config/3115.tmpl new file mode 100644 index 0000000..6c586f8 --- /dev/null +++ b/config/3115.tmpl @@ -0,0 +1,1023 @@ +; This file lists the default values used by Gitea +; Copy required sections to your own app.ini (default is custom/conf/app.ini) +; and modify as needed. +; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation. +; App name that shows in every page title +APP_NAME = McCarty Git Server on Frodo +; Change it if you run locally +RUN_USER = sysadmin +; Either "dev", "prod" or "test", default is "dev" +RUN_MODE = prod + +[repository] +ROOT = @@_server_dir/repos +SCRIPT_TYPE = bash +; DETECTED_CHARSETS_ORDER tie-break order for detected charsets. +; If the charsets have equal confidence, tie-breaking will be done by order in this list +; with charsets earlier in the list chosen in preference to those later. +; Adding "defaults" will place the unused charsets at that position. +DETECTED_CHARSETS_ORDER = UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr +; Default ANSI charset to override non-UTF-8 charsets to +ANSI_CHARSET = +; Force every new repository to be private +FORCE_PRIVATE = false +; Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used. +DEFAULT_PRIVATE = last +; Global limit of repositories per user, applied at creation time. -1 means no limit +MAX_CREATION_LIMIT = -1 +; Mirror sync queue length, increase if mirror syncing starts hanging +MIRROR_QUEUE_LENGTH = 1000 +; Patch test queue length, increase if pull request patch testing starts hanging +PULL_REQUEST_QUEUE_LENGTH = 1000 +; Preferred Licenses to place at the top of the List +; The name here must match the filename in conf/license or custom/conf/license +PREFERRED_LICENSES = Apache License 2.0,MIT License +; Disable the ability to interact with repositories using the HTTP protocol +DISABLE_HTTP_GIT = false +; Value for Access-Control-Allow-Origin header, default is not to present +; WARNING: This maybe harmful to you website if you do not give it a right value. +ACCESS_CONTROL_ALLOW_ORIGIN = +; Force ssh:// clone url instead of scp-style uri when default SSH port is used +USE_COMPAT_SSH_URI = false +; Close issues as long as a commit on any branch marks it as fixed +DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false +; Allow users to push local repositories to Gitea and have them automatically created for a user or an org +ENABLE_PUSH_CREATE_USER = false +ENABLE_PUSH_CREATE_ORG = false +; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki +DISABLED_REPO_UNITS = +; Comma separated list of default repo units. Allowed values: repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki. +; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. +; External wiki and issue tracker can't be enabled by default as it requires additional settings. +; Disabled repo units will not be added to new repositories regardless if it is in the default list. +DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki +; Prefix archive files by placing them in a directory named after the repository +PREFIX_ARCHIVE_FILES = true +; Disable the creation of new mirrors. Pre-existing mirrors remain valid. +DISABLE_MIRRORS = false +; The default branch name of new repositories +DEFAULT_BRANCH = master + +[repository.editor] +; List of file extensions for which lines should be wrapped in the Monaco editor +; Separate extensions with a comma. To line wrap files without an extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd, +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match +PREVIEWABLE_FILE_MODES = markdown + +[repository.local] +; Path for local repository copy. Defaults to `tmp/local-repo` +LOCAL_COPY_PATH = tmp/local-repo +; Path for local wiki copy. Defaults to `tmp/local-wiki` +LOCAL_WIKI_PATH = tmp/local-wiki + +[repository.upload] +; Whether repository file uploads are enabled. Defaults to `true` +ENABLED = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart) +TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +ALLOWED_TYPES = +; Max size of each file in megabytes. Defaults to 3MB +FILE_MAX_SIZE = 3 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[repository.pull-request] +; List of prefixes used in Pull Request title to mark them as Work In Progress +WORK_IN_PROGRESS_PREFIXES = WIP:,[WIP] +; List of keywords used in Pull Request comments to automatically close a related issue +CLOSE_KEYWORDS = close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved +; List of keywords used in Pull Request comments to automatically reopen a related issue +REOPEN_KEYWORDS = reopen,reopens,reopened +; In the default merge message for squash commits include at most this many commits +DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT = 50 +; In the default merge message for squash commits limit the size of the commit messages to this +DEFAULT_MERGE_MESSAGE_SIZE = 5120 +; In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +DEFAULT_MERGE_MESSAGE_ALL_AUTHORS = false +; In default merge messages limit the number of approvers listed as Reviewed-by: to this many +DEFAULT_MERGE_MESSAGE_MAX_APPROVERS = 10 +; In default merge messages only include approvers who are official +DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY = true + +[repository.issue] +; List of reasons why a Pull Request or Issue can be locked +LOCK_REASONS = Too heated,Off-topic,Resolved,Spam + +[repository.signing] +; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey +; run in the context of the RUN_USER +; Switch to none to stop signing completely +SIGNING_KEY = default +; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. +; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to +; the results of git config --get user.name and git config --get user.email respectively and can only be overrided +; by setting the SIGNING_KEY ID to the correct ID.) +SIGNING_NAME = +SIGNING_EMAIL = +; Determines when gitea should sign the initial commit when creating a repository +; Either: +; - never +; - pubkey: only sign if the user has a pubkey +; - twofa: only sign if the user has logged in with twofa +; - always +; options other than none and always can be combined as comma separated list +INITIAL_COMMIT = always +; Determines when to sign for CRUD actions +; - as above +; - parentsigned: requires that the parent commit is signed. +CRUD_ACTIONS = pubkey, twofa, parentsigned +; Determines when to sign Wiki commits +; - as above +WIKI = never +; Determines when to sign on merges +; - basesigned: require that the parent of commit on the base repo is signed. +; - commitssigned: require that all the commits in the head branch are signed. +; - approved: only sign when merging an approved pr to a protected branch +MERGES = pubkey, twofa, basesigned, commitssigned + +[cors] +; More information about CORS can be found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers +; enable cors headers (disabled by default) +ENABLED = false +; scheme of allowed requests +SCHEME = http +; list of requesting domains that are allowed +ALLOW_DOMAIN = * +; allow subdomains of headers listed above to request +ALLOW_SUBDOMAIN = false +; list of methods allowed to request +METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +; max time to cache response +MAX_AGE = 10m +; allow request with credentials +ALLOW_CREDENTIALS = false + +[ui] +; Number of repositories that are displayed on one explore page +EXPLORE_PAGING_NUM = 20 +; Number of issues that are displayed on one page +ISSUE_PAGING_NUM = 10 +; Number of maximum commits displayed in one activity feed +FEED_MAX_COMMIT_NUM = 5 +; Number of maximum commits displayed in commit graph. +GRAPH_MAX_COMMIT_NUM = 100 +; Number of line of codes shown for a code comment +CODE_COMMENT_LINES = 4 +; Value of `theme-color` meta tag, used by Android >= 5.0 +; An invalid color like "none" or "disable" will have the default style +; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android +THEME_COLOR_META_TAG = `#6cc644` +; Max size of files to be displayed (default is 8MiB) +MAX_DISPLAY_FILE_SIZE = 8388608 +; Whether the email of the user should be shown in the Explore Users page +SHOW_USER_EMAIL = true +; Set the default theme for the Gitea install +DEFAULT_THEME = arc-green +; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. +THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light +; All available reactions users can choose on issues/prs and comments. +; Values can be emoji alias (:smile:) or a unicode emoji. +; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png +REACTIONS = +1, -1, laugh, hooray, confused, heart, rocket, eyes +; Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +DEFAULT_SHOW_FULL_NAME = false +; Whether to search within description at repository search on explore page. +SEARCH_REPO_DESCRIPTION = true +; Whether to enable a Service Worker to cache frontend assets +USE_SERVICE_WORKER = true + +[ui.admin] +; Number of users that are displayed on one page +USER_PAGING_NUM = 50 +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 50 +; Number of notices that are displayed on one page +NOTICE_PAGING_NUM = 25 +; Number of organizations that are displayed on one page +ORG_PAGING_NUM = 50 + +[ui.user] +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 15 + +[ui.meta] +AUTHOR = kebler +DESCRIPTION = kebler.net git organizations +KEYWORDS = go,git,self-hosted,gitea + +[ui.notification] +; Control how often the notification endpoint is polled to update the notification +; The timeout will increase to MAX_TIMEOUT in TIMEOUT_STEPs if the notification count is unchanged +; Set MIN_TIMEOUT to 0 to turn off +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +; This setting determines how often the db is queried to get the latest notification counts. +; If the browser client supports EventSource and SharedWorker, a SharedWorker will be used in preference to polling notification. Set to -1 to disable the EventSource +EVENT_SOURCE_UPDATE_TIME = 10s + +[markdown] +; Render soft line breaks as hard line breaks, which means a single newline character between +; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +; necessary to force a line break. +; Render soft line breaks as hard line breaks for comments +ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +; Render soft line breaks as hard line breaks for markdown documents +ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false +; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown +; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) +; URLs starting with http and https are always displayed, whatever is put in this entry. +CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate the extensions with a comma. To render files without any extension as markdown, just put a comma +FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd + +[server] +; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. +PROTOCOL = http +DOMAIN = localhost +ROOT_URL = https://git.3115.kebler.net/ +; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +STATIC_URL_PREFIX = +; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +HTTP_ADDR = 0.0.0.0 +; The port to listen on. Leave empty when using a unix socket. +HTTP_PORT = 3000 +; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server +; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main +; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for +; PORT_TO_REDIRECT. +REDIRECT_OTHER_PORT = false +PORT_TO_REDIRECT = 80 +; Permission for unix socket +UNIX_SOCKET_PERMISSION = 666 +; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service. +; In most cases you do not need to change the default value. +; Alter it only if your SSH server node is not the same as HTTP node. +; Do not set this variable if PROTOCOL is set to 'unix'. +LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ +; Disable SSH feature when not available +DISABLE_SSH = false +; Whether to use the builtin SSH server or not. +START_SSH_SERVER = false +; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. +BUILTIN_SSH_SERVER_USER = +; Domain name to be exposed in clone URL +SSH_DOMAIN = localhost +; The network interface the builtin SSH server should listen on +SSH_LISTEN_HOST = +; Port number to be exposed in clone URL +SSH_PORT = 22 +; The port number the builtin SSH server should listen on +SSH_LISTEN_PORT = %(SSH_PORT)s +; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. +SSH_ROOT_PATH = +; Gitea will create a authorized_keys file by default when it is not using the internal ssh server +; If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +; For the built-in SSH server, choose the ciphers to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128 +; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org +; For the built-in SSH server, choose the MACs to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96 +; Directory to create temporary files in when testing public keys using ssh-keygen, +; default is the system temporary directory. +SSH_KEY_TEST_PATH = +; Path to ssh-keygen, default is 'ssh-keygen' which means the shell is responsible for finding out which one to call. +SSH_KEYGEN_PATH = ssh-keygen +; Enable SSH Authorized Key Backup when rewriting all keys, default is true +SSH_BACKUP_AUTHORIZED_KEYS = true +; Enable exposure of SSH clone URL to anonymous visitors, default is false +SSH_EXPOSE_ANONYMOUS = false +; Indicate whether to check minimum key size with corresponding type +MINIMUM_KEY_SIZE_CHECK = false +; Disable CDN even in "prod" mode +OFFLINE_MODE = false +DISABLE_ROUTER_LOG = false +; Generate steps: +; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com +; +; Or from a .pfx file exported from the Windows certificate store (do +; not forget to export the private key): +; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys +; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes +; Paths are relative to CUSTOM_PATH +CERT_FILE = https/cert.pem +KEY_FILE = https/key.pem +; Root directory containing templates and static files. +; default is the path where Gitea is executed +STATIC_ROOT_PATH = +; Default path for App data +APP_DATA_PATH = data +; Application level GZIP support +ENABLE_GZIP = false +; Application profiling (memory and cpu) +; For "web" command it listens on localhost:6060 +; For "serve" command it dumps to disk at PPROF_DATA_PATH as (cpuprofile|memprofile)__ +ENABLE_PPROF = false +; PPROF_DATA_PATH, use an absolute path when you start gitea as service +PPROF_DATA_PATH = data/tmp/pprof +; Landing page, can be "home", "explore", "organizations" or "login" +; The "login" choice is not a security measure but just a UI flow change, use REQUIRE_SIGNIN_VIEW to force users to log in. +LANDING_PAGE = organizations +; Enables git-lfs support. true or false, default is false. +LFS_START_SERVER = true +; Where your lfs files reside, default is data/lfs. +LFS_CONTENT_PATH = @@_server_dir/files +; LFS authentication secret, change this yourself +LFS_JWT_SECRET = 8TJnYipfl_sw9aMzwIjhwGTJzrSB1n9deL_vqOThNdg +; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail. +LFS_HTTP_AUTH_EXPIRY = 20m +; Maximum allowed LFS file size in bytes (Set to 0 for no limit). +LFS_MAX_FILE_SIZE = 0 +; Maximum number of locks returned per page +LFS_LOCKS_PAGING_NUM = 50 +; Allow graceful restarts using SIGHUP to fork +ALLOW_GRACEFUL_RESTARTS = true +; After a restart the parent will finish ongoing requests before +; shutting down. Force shutdown if this process takes longer than this delay. +; set to a negative value to disable +GRACEFUL_HAMMER_TIME = 60s +; Allows the setting of a startup timeout and waithint for Windows as SVC service +; 0 disables this. +STARTUP_TIMEOUT = 0 +; Static resources, includes resources on custom/, public/ and all uploaded avatars web browser cache time, default is 6h +STATIC_CACHE_TIME = 6h + +; Define allowed algorithms and their minimum key length (use -1 to disable a type) +[ssh.minimum_key_sizes] +ED25519 = 256 +ECDSA = 256 +RSA = 2048 +DSA = 1024 +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +NAME = gitea +USER = gitea +PASSWD = +SSL_MODE = disable +PATH = db/git.db + +[database] +; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +; NAME = gitea +; USER = root +; Use PASSWD = `your password` for quoting if you use special characters in the password. +; PASSWD = +; For Postgres, schema to use if different from "public". The schema must exist beforehand, +; the user must have creation privileges on it, and the user search path must be set +; to the look into the schema first. e.g.:ALTER USER user SET SEARCH_PATH = schema_name,"$user",public; +; SCHEMA = +; For Postgres, either "disable" (default), "require", or "verify-full" +; For MySQL, either "false" (default), "true", or "skip-verify" +; SSL_MODE = disable +; For MySQL only, either "utf8" or "utf8mb4", default is "utf8mb4". +; NOTICE: for "utf8mb4" you must use MySQL InnoDB > 5.6. Gitea is unable to check this. +; CHARSET = utf8mb4 +; For "sqlite3" and "tidb", use an absolute path when you start gitea as service +PATH = @@_server_dir/db/git.db +; For "sqlite3" only. Query timeout +SQLITE_TIMEOUT = 500 +; For iterate buffer, default is 50 +ITERATE_BUFFER_SIZE = 50 +; Show the database generated SQL +LOG_SQL = true +; Maximum number of DB Connect retries +DB_RETRIES = 10 +; Backoff time per DB retry (time.Duration) +DB_RETRY_BACKOFF = 3s +; Max idle database connections on connnection pool, default is 2 +MAX_IDLE_CONNS = 2 +; Database connection max life time, default is 0 or 3s mysql (See #6804 & #7071 for reasoning) +CONN_MAX_LIFETIME = 3s +; Database maximum number of open connections, default is 0 meaning no maximum +MAX_OPEN_CONNS = 0 +NAME = +USER = +PASSWD = +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 + +[indexer] +; Issue indexer type, currently support: bleve, db or elasticsearch, default is bleve +ISSUE_INDEXER_TYPE = bleve +; Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200 +; Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_NAME = gitea_issues +; Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve +ISSUE_INDEXER_PATH = @@_server_dir/indexers/issues.bleve +; Issue indexer queue, currently support: channel, levelqueue or redis, default is levelqueue +ISSUE_INDEXER_QUEUE_TYPE = levelqueue +; When ISSUE_INDEXER_QUEUE_TYPE is levelqueue, this will be the queue will be saved path, +; default is indexers/issues.queue +ISSUE_INDEXER_QUEUE_DIR = @@_server_dir/indexers/issues.queue +; When `ISSUE_INDEXER_QUEUE_TYPE` is `redis`, this will store the redis connection string. +ISSUE_INDEXER_QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 +; Batch queue number, default is 20 +ISSUE_INDEXER_QUEUE_BATCH_NUMBER = 20 +; Timeout the indexer if it takes longer than this to start. +; Set to zero to disable timeout. +STARTUP_TIMEOUT = 30s +; repo indexer by default disabled, since it uses a lot of disk space +REPO_INDEXER_ENABLED = false +REPO_INDEXER_PATH = @@_server_dir/indexers/repos.bleve +UPDATE_BUFFER_LEN = 20 +MAX_FILE_SIZE = 1048576 +; A comma separated list of glob patterns (see https://github.com/gobwas/glob) to include +; in the index; default is empty +REPO_INDEXER_INCLUDE = +; A comma separated list of glob patterns to exclude from the index; ; default is empty +REPO_INDEXER_EXCLUDE = + +[queue] +; Specific queues can be individually configured with [queue.name]. [queue] provides defaults +; +; General queue queue type, currently support: persistable-channel, channel, level, redis, dummy +; default to persistable-channel +TYPE = persistable-channel +; data-dir for storing persistable queues and level queues, individual queues will be named by their type +DATADIR = @@_server_dir/queues +; Default queue length before a channel queue will block +LENGTH = 20 +; Batch size to send for batched queues +BATCH_LENGTH = 20 +; Connection string for redis queues this will store the redis connection string. +CONN_STR = addrs=127.0.0.1:6379 db=0 +; Provide the suffix of the default redis queue name - specific queues can be overriden within in their [queue.name] sections. +QUEUE_NAME = _queue +; If the queue cannot be created at startup - level queues may need a timeout at startup - wrap the queue: +WRAP_IF_NECESSARY = true +; Attempt to create the wrapped queue at max +MAX_ATTEMPTS = 10 +; Timeout queue creation +TIMEOUT = 15m30s +; Create a pool with this many workers +WORKERS = 1 +; Dynamically scale the worker pool to at this many workers +MAX_WORKERS = 10 +; Add boost workers when the queue blocks for BLOCK_TIMEOUT +BLOCK_TIMEOUT = 1s +; Remove the boost workers after BOOST_TIMEOUT +BOOST_TIMEOUT = 5m +; During a boost add BOOST_WORKERS +BOOST_WORKERS = 5 + +[admin] +; Disallow regular (non-admin) users from creating organizations. +DISABLE_REGULAR_ORG_CREATION = false +; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +DEFAULT_EMAIL_NOTIFICATIONS = enabled + +[security] +; Whether the installer is disabled +INSTALL_LOCK = true +; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! +# @FDEWREWR&*( +SECRET_KEY = hcsA6WS81j91zmILHzZQMEJJM1eghsAksm8hRPPmQttqWRMcDDe887iNzPTDYTaq +; How long to remember that a user is logged in before requiring relogin (in days) +LOGIN_REMEMBER_DAYS = 7 +COOKIE_USERNAME = gitea_awesome +COOKIE_REMEMBER_NAME = gitea_incredible +; Reverse proxy authentication header name of user name +REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER +REVERSE_PROXY_AUTHENTICATION_EMAIL = X-WEBAUTH-EMAIL +; The minimum password length for new Users +MIN_PASSWORD_LENGTH = 6 +; Set to true to allow users to import local server paths +IMPORT_LOCAL_PATHS = false +; Set to true to prevent all users (including admin) from creating custom git hooks +DISABLE_GIT_HOOKS = false +; Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED +ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = true +; Comma separated list of character classes required to pass minimum complexity. +; If left empty or no valid values are specified, the default values ("lower,upper,digit,spec") will be used. +; Use "off" to disable checking. +PASSWORD_COMPLEXITY = lower,upper,digit,spec +; Password Hash algorithm, either "pbkdf2", "argon2", "scrypt" or "bcrypt" +PASSWORD_HASH_ALGO = pbkdf2 +; Set false to allow JavaScript to read CSRF cookie +CSRF_COOKIE_HTTP_ONLY = true +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTY3MzM5Mjl9.htwld4l5AgQ_7zaa1hEE3yBSfq50mWdP3VoE5xT6blc + +[openid] +; +; OpenID is an open, standard and decentralized authentication protocol. +; Your identity is the address of a webpage you provide, which describes +; how to prove you are in control of that page. +; +; For more info: https://en.wikipedia.org/wiki/OpenID +; +; Current implementation supports OpenID-2.0 +; +; Tested to work providers at the time of writing: +; - Any GNUSocial node (your.hostname.tld/username) +; - Any SimpleID provider (http://simpleid.koinic.net) +; - http://openid.org.cn/ +; - openid.stackexchange.com +; - login.launchpad.net +; - .livejournal.com +; +; Whether to allow signin in via OpenID +ENABLE_OPENID_SIGNIN = true +; Whether to allow registering via OpenID +; Do not include to rely on rhw DISABLE_REGISTRATION setting +; ENABLE_OPENID_SIGNUP = true +; Allowed URI patterns (POSIX regexp). +; Space separated. +; Only these would be allowed if non-blank. +; Example value: trusted.domain.org trusted.domain.net +WHITELISTED_URIS = +; Forbidden URI patterns (POSIX regexp). +; Space separated. +; Only used if WHITELISTED_URIS is blank. +; Example value: loadaverage.org/badguy stackexchange.com/.*spammer +BLACKLISTED_URIS = +ENABLE_OPENID_SIGNUP = true + +[service] +; Time limit to confirm account/email registration +ACTIVE_CODE_LIVE_MINUTES = 180 +; Time limit to perform the reset of a forgotten password +RESET_PASSWD_CODE_LIVE_MINUTES = 180 +; Whether a new user needs to confirm their email when registering. +REGISTER_EMAIL_CONFIRM = false +; List of domain names that are allowed to be used to register on a Gitea instance +; gitea.io,example.com +EMAIL_DOMAIN_WHITELIST = +; Disallow registration, only allow admins to create accounts. +DISABLE_REGISTRATION = false +; Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +; User must sign in to view anything. +REQUIRE_SIGNIN_VIEW = false +; Mail notification +ENABLE_NOTIFY_MAIL = false +; This setting enables gitea to be signed in with HTTP BASIC Authentication using the user's password +; If you set this to false you will not be able to access the tokens endpoints on the API with your password +; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token +ENABLE_BASIC_AUTHENTICATION = true +; More detail: https://github.com/gogits/gogs/issues/165 +ENABLE_REVERSE_PROXY_AUTHENTICATION = false +ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false +ENABLE_REVERSE_PROXY_EMAIL = false +; Enable captcha validation for registration +ENABLE_CAPTCHA = false +; Type of captcha you want to use. Options: image, recaptcha +CAPTCHA_TYPE = image +; Enable recaptcha to use Google's recaptcha service +; Go to https://www.google.com/recaptcha/admin to sign up for a key +RECAPTCHA_SECRET = +RECAPTCHA_SITEKEY = +; Change this to use recaptcha.net or other recaptcha service +RECAPTCHA_URL = https://www.google.com/recaptcha/ +; Default value for KeepEmailPrivate +; Each new user will get the value of this setting copied into their profile +DEFAULT_KEEP_EMAIL_PRIVATE = false +; Default value for AllowCreateOrganization +; Every new user will have rights set to create organizations depending on this setting +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +; Either "public", "limited" or "private", default is "public" +; Limited is for signed user only +; Private is only for member of the organization +; Public is for everyone +DEFAULT_ORG_VISIBILITY = public +; Default value for DefaultOrgMemberVisible +; True will make the membership of the users visible when added to the organisation +DEFAULT_ORG_MEMBER_VISIBLE = false +; Default value for EnableDependencies +; Repositories will use dependencies by default depending on this setting +DEFAULT_ENABLE_DEPENDENCIES = true +; Dependencies can be added from any repository where the user is granted access or only from the current repository depending on this setting. +ALLOW_CROSS_REPOSITORY_DEPENDENCIES = true +; Enable heatmap on users profiles. +ENABLE_USER_HEATMAP = true +; Enable Timetracking +ENABLE_TIMETRACKING = true +; Default value for EnableTimetracking +; Repositories will use timetracking by default depending on this setting +DEFAULT_ENABLE_TIMETRACKING = true +; Default value for AllowOnlyContributorsToTrackTime +; Only users with write permissions can track time if this is true +DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true +; Default value for the domain part of the user's email address in the git log +; if he has set KeepEmailPrivate to true. The user's email will be replaced with a +; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS. +NO_REPLY_ADDRESS = noreply.%(DOMAIN)s +; Show Registration button +SHOW_REGISTRATION_BUTTON = true +; Show milestones dashboard page - a view of all the user's milestones +SHOW_MILESTONES_DASHBOARD_PAGE = true +; Default value for AutoWatchNewRepos +; When adding a repo to a team or creating a new repo all team members will watch the +; repo automatically if enabled +AUTO_WATCH_NEW_REPOS = true +; Default value for AutoWatchOnChanges +; Make the user watch a repository When they commit for the first time +AUTO_WATCH_ON_CHANGES = false + +[webhook] +; Hook task queue length, increase if webhook shooting starts hanging +QUEUE_LENGTH = 1000 +; Deliver timeout in seconds +DELIVER_TIMEOUT = 5 +; Allow insecure certification +SKIP_TLS_VERIFY = false +; Number of history information in each page +PAGING_NUM = 10 +; Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy +PROXY_URL = +; Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts. +PROXY_HOSTS = + +[mailer] +ENABLED = false +; Buffer length of channel, keep it as it is if you don't know what it is. +SEND_BUFFER_LEN = 100 +; Prefix displayed before subject in mail +SUBJECT_PREFIX = +; Mail server +; Gmail: smtp.gmail.com:587 +; QQ: smtp.qq.com:465 +; Using STARTTLS on port 587 is recommended per RFC 6409. +; Note, if the port ends with "465", SMTPS will be used. +HOST = +; Disable HELO operation when hostnames are different. +DISABLE_HELO = +; Custom hostname for HELO operation, if no value is provided, one is retrieved from system. +HELO_HOSTNAME = +; Whether or not to skip verification of certificates; `true` to disable verification. This option is unsafe. Consider adding the certificate to the system trust store instead. +SKIP_VERIFY = false +; Use client certificate +USE_CERTIFICATE = false +CERT_FILE = custom/mailer/cert.pem +KEY_FILE = custom/mailer/key.pem +; Should SMTP connect with TLS, (if port ends with 465 TLS will always be used.) +; If this is false but STARTTLS is supported the connection will be upgraded to TLS opportunistically. +IS_TLS_ENABLED = false +; Mail from address, RFC 5322. This can be just an email address, or the `"Name" ` format +FROM = +; Mailer user name and password +; Please Note: Authentication is only supported when the SMTP server communication is encrypted with TLS (this can be via STARTTLS) or `HOST=localhost`. +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Send mails as plain text +SEND_AS_PLAIN_TEXT = false +; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) +MAILER_TYPE = smtp +; Specify an alternative sendmail binary +SENDMAIL_PATH = sendmail +; Specify any extra sendmail arguments +SENDMAIL_ARGS = +; Timeout for Sendmail +SENDMAIL_TIMEOUT = 5m + +[cache] +; if the cache enabled +ENABLED = true +; Either "memory", "redis", or "memcache", default is "memory" +ADAPTER = memory +; For "memory" only, GC interval in seconds, default is 60 +INTERVAL = 60 +; For "redis" and "memcache", connection host address +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; memcache: `127.0.0.1:11211` +HOST = +; Time to keep items in cache if not used, default is 16 hours. +; Setting it to 0 disables caching +ITEM_TTL = 16h + +; Last commit cache +[cache.last_commit] +; if the cache enabled +ENABLED = true +; Time to keep items in cache if not used, default is 8760 hours. +; Setting it to 0 disables caching +ITEM_TTL = 8760h +; Only enable the cache when repository's commits count great than +COMMITS_COUNT = 1000 + +[session] +; Either "memory", "file", or "redis", default is "memory" +PROVIDER = file +; Provider config options +; memory: doesn't have any config yet +; file: session file path, e.g. `data/sessions` +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` +PROVIDER_CONFIG = @@_server_dir/sessions +; Session cookie name +COOKIE_NAME = i_like_gitea +; If you use session in https only, default is false +COOKIE_SECURE = false +; Enable set cookie, default is true +ENABLE_SET_COOKIE = true +; Session GC time interval in seconds, default is 86400 (1 day) +GC_INTERVAL_TIME = 86400 +; Session life time in seconds, default is 86400 (1 day) +SESSION_LIFE_TIME = 86400 + +[picture] +AVATAR_UPLOAD_PATH = @@_server_dir/data/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = @@_server_dir/data/repo-avatars +; How Gitea deals with missing repository avatars +; none = no avatar will be displayed; random = random avatar will be displayed; image = default image will be used +REPOSITORY_AVATAR_FALLBACK = none +REPOSITORY_AVATAR_FALLBACK_IMAGE = /img/repo_default.png +; Max Width and Height of uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_WIDTH = 4096 +AVATAR_MAX_HEIGHT = 3072 +; Maximum alloved file size for uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_FILE_SIZE = 1048576 +; Chinese users can choose "duoshuo" +; or a custom avatar source, like: http://cn.gravatar.com/avatar/ +GRAVATAR_SOURCE = gravatar +; This value will always be true in offline mode. +DISABLE_GRAVATAR = false +; Federated avatar lookup uses DNS to discover avatar associated +; with emails, see https://www.libravatar.org +; This value will always be false in offline mode or when Gravatar is disabled. +ENABLE_FEDERATED_AVATAR = false + +[attachment] +; Whether attachments are enabled. Defaults to `true` +ENABLED = true +; Path for attachments. Defaults to `data/attachments` +PATH = @@_server_dir/data/attachments +; One or more allowed types, e.g. "image/jpeg|image/png". Use "*/*" for all types. +ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip +; Max size of each file. Defaults to 4MB +MAX_SIZE = 4 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[time] +; Specifies the format for fully outputted dates. Defaults to RFC1123 +; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano +; For more information about the format see http://golang.org/pkg/time/#pkg-constants +FORMAT = +; Location the UI time display i.e. Asia/Shanghai +; Empty means server's location setting +DEFAULT_UI_LOCATION = + +[log] +ROOT_PATH = @@_server_dir/log +; Either "console", "file", "conn", "smtp" or "database", default is "console" +; Use comma to separate multiple modes, e.g. "console, file" +MODE = file +; Buffer length of the channel, keep it as it is if you don't know what it is. +BUFFER_LEN = 10000 +REDIRECT_MACARON_LOG = false +MACARON = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Info" +ROUTER_LOG_LEVEL = Info +ROUTER = console +ENABLE_ACCESS_LOG = false +ACCESS_LOG_TEMPLATE = {{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}" +ACCESS = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" +LEVEL = info +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "None" +STACKTRACE_LEVEL = None + +; Generic log modes +[log.x] +FLAGS = stdflags +EXPRESSION = +PREFIX = +COLORIZE = false + +; For "console" mode only +[log.console] +LEVEL = +STDERR = false + +; For "file" mode only +[log.file] +LEVEL = +; Set the file_name for the logger. If this is a relative path this +; will be relative to ROOT_PATH +FILE_NAME = +; This enables automated log rotate(switch of following options), default is true +LOG_ROTATE = true +; Max number of lines in a single file, default is 1000000 +MAX_LINES = 1000000 +; Max size shift of a single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 +; Segment log daily, default is true +DAILY_ROTATE = true +; delete the log file after n days, default is 7 +MAX_DAYS = 7 +; compress logs with gzip +COMPRESS = true +; compression level see godoc for compress/gzip +COMPRESSION_LEVEL = -1 + +; For "conn" mode only +[log.conn] +LEVEL = +; Reconnect host for every single message, default is false +RECONNECT_ON_MSG = false +; Try to reconnect when connection is lost, default is false +RECONNECT = false +; Either "tcp", "unix" or "udp", default is "tcp" +PROTOCOL = tcp +; Host address +ADDR = + +; For "smtp" mode only +[log.smtp] +LEVEL = +; Name displayed in mail title, default is "Diagnostic message from server" +SUBJECT = Diagnostic message from server +; Mail server +HOST = +; Mailer user name and password +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Receivers, can be one or more, e.g. 1@example.com,2@example.com +RECEIVERS = + +[cron] +; Enable running cron tasks periodically. +ENABLED = true +; Run cron tasks when Gitea starts. +RUN_AT_START = false + +; Update mirrors +[cron.update_mirrors] +SCHEDULE = @every 10m + +; Repository health check +[cron.repo_health_check] +SCHEDULE = @every 24h +TIMEOUT = 60s +; Arguments for command 'git fsck', e.g. "--unreachable --tags" +; see more on http://git-scm.com/docs/git-fsck +ARGS = + +; Check repository statistics +[cron.check_repo_stats] +RUN_AT_START = true +SCHEDULE = @every 24h + +; Clean up old repository archives +[cron.archive_cleanup] +; Whether to enable the job +ENABLED = true +; Whether to always run at least once at start up time (if ENABLED) +RUN_AT_START = true +; Time interval for job to run +SCHEDULE = @every 24h +; Archives created more than OLDER_THAN ago are subject to deletion +OLDER_THAN = 24h + +; Synchronize external user data (only LDAP user synchronization is supported) +[cron.sync_external_users] +; Synchronize external user data when starting server (default false) +RUN_AT_START = false +; Interval as a duration between each synchronization (default every 24h) +SCHEDULE = @every 24h +; Create new users, update existing user data and disable users that are not in external source anymore (default) +; or only create new users if UPDATE_EXISTING is set to false +UPDATE_EXISTING = true + +; Update migrated repositories' issues and comments' posterid, it will always attempt synchronization when the instance starts. +[cron.update_migration_poster_id] +; Interval as a duration between each synchronization. (default every 24h) +SCHEDULE = @every 24h + +[git] +; The path of git executable. If empty, Gitea searches through the PATH environment. +PATH = +; Disables highlight of added and removed changes +DISABLE_DIFF_HIGHLIGHT = false +; Max number of lines allowed in a single file in diff view +MAX_GIT_DIFF_LINES = 1000 +; Max number of allowed characters in a line in diff view +MAX_GIT_DIFF_LINE_CHARACTERS = 5000 +; Max number of files shown in diff view +MAX_GIT_DIFF_FILES = 100 +; Arguments for command 'git gc', e.g. "--aggressive --auto" +; see more on http://git-scm.com/docs/git-gc/ +GC_ARGS = +; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1 +ENABLE_AUTO_GIT_WIRE_PROTOCOL = true +; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled) +PULL_REQUEST_PUSH_MESSAGE = true + +; Operation timeout in seconds +[git.timeout] +DEFAULT = 360 +MIGRATE = 600 +MIRROR = 300 +CLONE = 300 +PULL = 300 +GC = 60 + +[mirror] +; Default interval as a duration between each check +DEFAULT_INTERVAL = 8h +; Min interval as a duration must be > 1m +MIN_INTERVAL = 10m + +[api] +; Enables Swagger. True or false; default is true. +ENABLE_SWAGGER = true +; Max number of items in a page +MAX_RESPONSE_ITEMS = 50 +; Default paging number of api +DEFAULT_PAGING_NUM = 30 +; Default and maximum number of items per page for git trees api +DEFAULT_GIT_TREES_PER_PAGE = 1000 +; Default size of a blob returned by the blobs API (default is 10MiB) +DEFAULT_MAX_BLOB_SIZE = 10485760 + +[oauth2] +; Enables OAuth2 provider +ENABLE = true +; Lifetime of an OAuth2 access token in seconds +ACCESS_TOKEN_EXPIRATION_TIME = 3600 +; Lifetime of an OAuth2 access token in hours +REFRESH_TOKEN_EXPIRATION_TIME = 730 +; Check if refresh token got already used +INVALIDATE_REFRESH_TOKENS = false +; OAuth2 authentication secret for access and refresh tokens, change this to a unique string. +JWT_SECRET = Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU +; Maximum length of oauth2 token/cookie stored on server +MAX_TOKEN_LENGTH = 32767 + +[i18n] +LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR +NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어 + +[U2F] + +; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED +; Two Factor authentication with security keys +; https://developers.yubico.com/U2F/App_ID.html +; APP_ID = http://localhost:3000/ +; Comma seperated list of trusted facets +; TRUSTED_FACETS = http://localhost:3000/ +; Extension mapping to highlight class +; e.g. .toml=ini +[highlight.mapping] + +[other] +SHOW_FOOTER_BRANDING = false +; Show version information about Gitea and Go in the footer +SHOW_FOOTER_VERSION = true +; Show template execution time in the footer +SHOW_FOOTER_TEMPLATE_LOAD_TIME = true + +[markup.sanitizer.1] + +; The following keys can appear once to define a sanitation policy rule. +; This section can appear multiple times by adding a unique alphanumeric suffix to define multiple rules. +; e.g., [markup.sanitizer.1] -> [markup.sanitizer.2] -> [markup.sanitizer.TeX] +; ELEMENT = span +; ALLOW_ATTR = class +; REGEXP = ^(info|warning|error)$ +[markup.asciidoc] +ENABLED = false +; List of file extensions that should be rendered by an external command +FILE_EXTENSIONS = .adoc,.asciidoc +; External command to render all matching extensions +RENDER_COMMAND = asciidoc --out-file=- - +; Don't pass the file on STDIN, pass the filename as argument instead. +IS_INPUT_FILE = false + +[metrics] +; Enables metrics endpoint. True or false; default is false. +ENABLED = false +; If you want to add authorization, specify a token here +TOKEN = + +[task] +; Task queue type, could be `channel` or `redis`. +QUEUE_TYPE = channel +; Task queue length, available only when `QUEUE_TYPE` is `channel`. +QUEUE_LENGTH = 1000 +; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +; If there is a password of redis, use `addrs=127.0.0.1:6379 password=123 db=0`. +QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 + +[migrations] +; Max attempts per http/https request on migrations. +MAX_ATTEMPTS = 3 +; Backoff time per http/https request retry (seconds) +RETRY_BACKOFF = 3 diff --git a/config/nadal.ini b/config/nadal.ini new file mode 100644 index 0000000..117a34b --- /dev/null +++ b/config/nadal.ini @@ -0,0 +1,1023 @@ +; This file lists the default values used by Gitea +; Copy required sections to your own app.ini (default is custom/conf/app.ini) +; and modify as needed. +; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation. +; App name that shows in every page title +APP_NAME = Mirror Git Server on Nadal +; Change it if you run locally +RUN_USER = sysadmin +; Either "dev", "prod" or "test", default is "dev" +RUN_MODE = prod + +[repository] +ROOT = /mnt/data/git-server/repos +SCRIPT_TYPE = bash +; DETECTED_CHARSETS_ORDER tie-break order for detected charsets. +; If the charsets have equal confidence, tie-breaking will be done by order in this list +; with charsets earlier in the list chosen in preference to those later. +; Adding "defaults" will place the unused charsets at that position. +DETECTED_CHARSETS_ORDER = UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr +; Default ANSI charset to override non-UTF-8 charsets to +ANSI_CHARSET = +; Force every new repository to be private +FORCE_PRIVATE = false +; Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used. +DEFAULT_PRIVATE = last +; Global limit of repositories per user, applied at creation time. -1 means no limit +MAX_CREATION_LIMIT = -1 +; Mirror sync queue length, increase if mirror syncing starts hanging +MIRROR_QUEUE_LENGTH = 1000 +; Patch test queue length, increase if pull request patch testing starts hanging +PULL_REQUEST_QUEUE_LENGTH = 1000 +; Preferred Licenses to place at the top of the List +; The name here must match the filename in conf/license or custom/conf/license +PREFERRED_LICENSES = Apache License 2.0,MIT License +; Disable the ability to interact with repositories using the HTTP protocol +DISABLE_HTTP_GIT = false +; Value for Access-Control-Allow-Origin header, default is not to present +; WARNING: This maybe harmful to you website if you do not give it a right value. +ACCESS_CONTROL_ALLOW_ORIGIN = +; Force ssh:// clone url instead of scp-style uri when default SSH port is used +USE_COMPAT_SSH_URI = false +; Close issues as long as a commit on any branch marks it as fixed +DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false +; Allow users to push local repositories to Gitea and have them automatically created for a user or an org +ENABLE_PUSH_CREATE_USER = false +ENABLE_PUSH_CREATE_ORG = false +; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki +DISABLED_REPO_UNITS = +; Comma separated list of default repo units. Allowed values: repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki. +; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. +; External wiki and issue tracker can't be enabled by default as it requires additional settings. +; Disabled repo units will not be added to new repositories regardless if it is in the default list. +DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki +; Prefix archive files by placing them in a directory named after the repository +PREFIX_ARCHIVE_FILES = true +; Disable the creation of new mirrors. Pre-existing mirrors remain valid. +DISABLE_MIRRORS = false +; The default branch name of new repositories +DEFAULT_BRANCH = master + +[repository.editor] +; List of file extensions for which lines should be wrapped in the Monaco editor +; Separate extensions with a comma. To line wrap files without an extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd, +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match +PREVIEWABLE_FILE_MODES = markdown + +[repository.local] +; Path for local repository copy. Defaults to `tmp/local-repo` +LOCAL_COPY_PATH = tmp/local-repo +; Path for local wiki copy. Defaults to `tmp/local-wiki` +LOCAL_WIKI_PATH = tmp/local-wiki + +[repository.upload] +; Whether repository file uploads are enabled. Defaults to `true` +ENABLED = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart) +TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +ALLOWED_TYPES = +; Max size of each file in megabytes. Defaults to 3MB +FILE_MAX_SIZE = 3 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[repository.pull-request] +; List of prefixes used in Pull Request title to mark them as Work In Progress +WORK_IN_PROGRESS_PREFIXES = WIP:,[WIP] +; List of keywords used in Pull Request comments to automatically close a related issue +CLOSE_KEYWORDS = close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved +; List of keywords used in Pull Request comments to automatically reopen a related issue +REOPEN_KEYWORDS = reopen,reopens,reopened +; In the default merge message for squash commits include at most this many commits +DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT = 50 +; In the default merge message for squash commits limit the size of the commit messages to this +DEFAULT_MERGE_MESSAGE_SIZE = 5120 +; In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +DEFAULT_MERGE_MESSAGE_ALL_AUTHORS = false +; In default merge messages limit the number of approvers listed as Reviewed-by: to this many +DEFAULT_MERGE_MESSAGE_MAX_APPROVERS = 10 +; In default merge messages only include approvers who are official +DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY = true + +[repository.issue] +; List of reasons why a Pull Request or Issue can be locked +LOCK_REASONS = Too heated,Off-topic,Resolved,Spam + +[repository.signing] +; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey +; run in the context of the RUN_USER +; Switch to none to stop signing completely +SIGNING_KEY = default +; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. +; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to +; the results of git config --get user.name and git config --get user.email respectively and can only be overrided +; by setting the SIGNING_KEY ID to the correct ID.) +SIGNING_NAME = +SIGNING_EMAIL = +; Determines when gitea should sign the initial commit when creating a repository +; Either: +; - never +; - pubkey: only sign if the user has a pubkey +; - twofa: only sign if the user has logged in with twofa +; - always +; options other than none and always can be combined as comma separated list +INITIAL_COMMIT = always +; Determines when to sign for CRUD actions +; - as above +; - parentsigned: requires that the parent commit is signed. +CRUD_ACTIONS = pubkey, twofa, parentsigned +; Determines when to sign Wiki commits +; - as above +WIKI = never +; Determines when to sign on merges +; - basesigned: require that the parent of commit on the base repo is signed. +; - commitssigned: require that all the commits in the head branch are signed. +; - approved: only sign when merging an approved pr to a protected branch +MERGES = pubkey, twofa, basesigned, commitssigned + +[cors] +; More information about CORS can be found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers +; enable cors headers (disabled by default) +ENABLED = false +; scheme of allowed requests +SCHEME = http +; list of requesting domains that are allowed +ALLOW_DOMAIN = * +; allow subdomains of headers listed above to request +ALLOW_SUBDOMAIN = false +; list of methods allowed to request +METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +; max time to cache response +MAX_AGE = 10m +; allow request with credentials +ALLOW_CREDENTIALS = false + +[ui] +; Number of repositories that are displayed on one explore page +EXPLORE_PAGING_NUM = 20 +; Number of issues that are displayed on one page +ISSUE_PAGING_NUM = 10 +; Number of maximum commits displayed in one activity feed +FEED_MAX_COMMIT_NUM = 5 +; Number of maximum commits displayed in commit graph. +GRAPH_MAX_COMMIT_NUM = 100 +; Number of line of codes shown for a code comment +CODE_COMMENT_LINES = 4 +; Value of `theme-color` meta tag, used by Android >= 5.0 +; An invalid color like "none" or "disable" will have the default style +; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android +THEME_COLOR_META_TAG = `#6cc644` +; Max size of files to be displayed (default is 8MiB) +MAX_DISPLAY_FILE_SIZE = 8388608 +; Whether the email of the user should be shown in the Explore Users page +SHOW_USER_EMAIL = true +; Set the default theme for the Gitea install +DEFAULT_THEME = 42l-light +; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. +THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light +; All available reactions users can choose on issues/prs and comments. +; Values can be emoji alias (:smile:) or a unicode emoji. +; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png +REACTIONS = +1, -1, laugh, hooray, confused, heart, rocket, eyes +; Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +DEFAULT_SHOW_FULL_NAME = false +; Whether to search within description at repository search on explore page. +SEARCH_REPO_DESCRIPTION = true +; Whether to enable a Service Worker to cache frontend assets +USE_SERVICE_WORKER = true + +[ui.admin] +; Number of users that are displayed on one page +USER_PAGING_NUM = 50 +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 50 +; Number of notices that are displayed on one page +NOTICE_PAGING_NUM = 25 +; Number of organizations that are displayed on one page +ORG_PAGING_NUM = 50 + +[ui.user] +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 15 + +[ui.meta] +AUTHOR = kebler +DESCRIPTION = kebler.net git organizations +KEYWORDS = go,git,self-hosted,gitea + +[ui.notification] +; Control how often the notification endpoint is polled to update the notification +; The timeout will increase to MAX_TIMEOUT in TIMEOUT_STEPs if the notification count is unchanged +; Set MIN_TIMEOUT to 0 to turn off +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +; This setting determines how often the db is queried to get the latest notification counts. +; If the browser client supports EventSource and SharedWorker, a SharedWorker will be used in preference to polling notification. Set to -1 to disable the EventSource +EVENT_SOURCE_UPDATE_TIME = 10s + +[markdown] +; Render soft line breaks as hard line breaks, which means a single newline character between +; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +; necessary to force a line break. +; Render soft line breaks as hard line breaks for comments +ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +; Render soft line breaks as hard line breaks for markdown documents +ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false +; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown +; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) +; URLs starting with http and https are always displayed, whatever is put in this entry. +CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate the extensions with a comma. To render files without any extension as markdown, just put a comma +FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd + +[server] +; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. +PROTOCOL = http +DOMAIN = localhost +ROOT_URL = https://git-mirror.kebler.net/ +; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +STATIC_URL_PREFIX = +; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +HTTP_ADDR = 0.0.0.0 +; The port to listen on. Leave empty when using a unix socket. +HTTP_PORT = 3000 +; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server +; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main +; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for +; PORT_TO_REDIRECT. +REDIRECT_OTHER_PORT = false +PORT_TO_REDIRECT = 80 +; Permission for unix socket +UNIX_SOCKET_PERMISSION = 666 +; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service. +; In most cases you do not need to change the default value. +; Alter it only if your SSH server node is not the same as HTTP node. +; Do not set this variable if PROTOCOL is set to 'unix'. +LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ +; Disable SSH feature when not available +DISABLE_SSH = false +; Whether to use the builtin SSH server or not. +START_SSH_SERVER = false +; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. +BUILTIN_SSH_SERVER_USER = +; Domain name to be exposed in clone URL +SSH_DOMAIN = localhost +; The network interface the builtin SSH server should listen on +SSH_LISTEN_HOST = +; Port number to be exposed in clone URL +SSH_PORT = 22 +; The port number the builtin SSH server should listen on +SSH_LISTEN_PORT = %(SSH_PORT)s +; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. +SSH_ROOT_PATH = +; Gitea will create a authorized_keys file by default when it is not using the internal ssh server +; If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +; For the built-in SSH server, choose the ciphers to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128 +; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org +; For the built-in SSH server, choose the MACs to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96 +; Directory to create temporary files in when testing public keys using ssh-keygen, +; default is the system temporary directory. +SSH_KEY_TEST_PATH = +; Path to ssh-keygen, default is 'ssh-keygen' which means the shell is responsible for finding out which one to call. +SSH_KEYGEN_PATH = ssh-keygen +; Enable SSH Authorized Key Backup when rewriting all keys, default is true +SSH_BACKUP_AUTHORIZED_KEYS = true +; Enable exposure of SSH clone URL to anonymous visitors, default is false +SSH_EXPOSE_ANONYMOUS = false +; Indicate whether to check minimum key size with corresponding type +MINIMUM_KEY_SIZE_CHECK = false +; Disable CDN even in "prod" mode +OFFLINE_MODE = false +DISABLE_ROUTER_LOG = false +; Generate steps: +; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com +; +; Or from a .pfx file exported from the Windows certificate store (do +; not forget to export the private key): +; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys +; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes +; Paths are relative to CUSTOM_PATH +CERT_FILE = https/cert.pem +KEY_FILE = https/key.pem +; Root directory containing templates and static files. +; default is the path where Gitea is executed +STATIC_ROOT_PATH = +; Default path for App data +APP_DATA_PATH = data +; Application level GZIP support +ENABLE_GZIP = false +; Application profiling (memory and cpu) +; For "web" command it listens on localhost:6060 +; For "serve" command it dumps to disk at PPROF_DATA_PATH as (cpuprofile|memprofile)__ +ENABLE_PPROF = false +; PPROF_DATA_PATH, use an absolute path when you start gitea as service +PPROF_DATA_PATH = data/tmp/pprof +; Landing page, can be "home", "explore", "organizations" or "login" +; The "login" choice is not a security measure but just a UI flow change, use REQUIRE_SIGNIN_VIEW to force users to log in. +LANDING_PAGE = organizations +; Enables git-lfs support. true or false, default is false. +LFS_START_SERVER = true +; Where your lfs files reside, default is data/lfs. +LFS_CONTENT_PATH = /mnt/data/git-server/files +; LFS authentication secret, change this yourself +LFS_JWT_SECRET = 8TJnYipfl_sw9aMzwIjhwGTJzrSB1n9deL_vqOThNdg +; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail. +LFS_HTTP_AUTH_EXPIRY = 20m +; Maximum allowed LFS file size in bytes (Set to 0 for no limit). +LFS_MAX_FILE_SIZE = 0 +; Maximum number of locks returned per page +LFS_LOCKS_PAGING_NUM = 50 +; Allow graceful restarts using SIGHUP to fork +ALLOW_GRACEFUL_RESTARTS = true +; After a restart the parent will finish ongoing requests before +; shutting down. Force shutdown if this process takes longer than this delay. +; set to a negative value to disable +GRACEFUL_HAMMER_TIME = 60s +; Allows the setting of a startup timeout and waithint for Windows as SVC service +; 0 disables this. +STARTUP_TIMEOUT = 0 +; Static resources, includes resources on custom/, public/ and all uploaded avatars web browser cache time, default is 6h +STATIC_CACHE_TIME = 6h + +; Define allowed algorithms and their minimum key length (use -1 to disable a type) +[ssh.minimum_key_sizes] +ED25519 = 256 +ECDSA = 256 +RSA = 2048 +DSA = 1024 +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +NAME = gitea +USER = gitea +PASSWD = +SSL_MODE = disable +PATH = db/git.db + +[database] +; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +; NAME = gitea +; USER = root +; Use PASSWD = `your password` for quoting if you use special characters in the password. +; PASSWD = +; For Postgres, schema to use if different from "public". The schema must exist beforehand, +; the user must have creation privileges on it, and the user search path must be set +; to the look into the schema first. e.g.:ALTER USER user SET SEARCH_PATH = schema_name,"$user",public; +; SCHEMA = +; For Postgres, either "disable" (default), "require", or "verify-full" +; For MySQL, either "false" (default), "true", or "skip-verify" +; SSL_MODE = disable +; For MySQL only, either "utf8" or "utf8mb4", default is "utf8mb4". +; NOTICE: for "utf8mb4" you must use MySQL InnoDB > 5.6. Gitea is unable to check this. +; CHARSET = utf8mb4 +; For "sqlite3" and "tidb", use an absolute path when you start gitea as service +PATH = /mnt/data/git-server/db/git.db +; For "sqlite3" only. Query timeout +SQLITE_TIMEOUT = 500 +; For iterate buffer, default is 50 +ITERATE_BUFFER_SIZE = 50 +; Show the database generated SQL +LOG_SQL = true +; Maximum number of DB Connect retries +DB_RETRIES = 10 +; Backoff time per DB retry (time.Duration) +DB_RETRY_BACKOFF = 3s +; Max idle database connections on connnection pool, default is 2 +MAX_IDLE_CONNS = 2 +; Database connection max life time, default is 0 or 3s mysql (See #6804 & #7071 for reasoning) +CONN_MAX_LIFETIME = 3s +; Database maximum number of open connections, default is 0 meaning no maximum +MAX_OPEN_CONNS = 0 +NAME = +USER = +PASSWD = +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 + +[indexer] +; Issue indexer type, currently support: bleve, db or elasticsearch, default is bleve +ISSUE_INDEXER_TYPE = bleve +; Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200 +; Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_NAME = gitea_issues +; Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve +ISSUE_INDEXER_PATH = indexers/issues.bleve +; Issue indexer queue, currently support: channel, levelqueue or redis, default is levelqueue +ISSUE_INDEXER_QUEUE_TYPE = levelqueue +; When ISSUE_INDEXER_QUEUE_TYPE is levelqueue, this will be the queue will be saved path, +; default is indexers/issues.queue +ISSUE_INDEXER_QUEUE_DIR = indexers/issues.queue +; When `ISSUE_INDEXER_QUEUE_TYPE` is `redis`, this will store the redis connection string. +ISSUE_INDEXER_QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 +; Batch queue number, default is 20 +ISSUE_INDEXER_QUEUE_BATCH_NUMBER = 20 +; Timeout the indexer if it takes longer than this to start. +; Set to zero to disable timeout. +STARTUP_TIMEOUT = 30s +; repo indexer by default disabled, since it uses a lot of disk space +REPO_INDEXER_ENABLED = false +REPO_INDEXER_PATH = indexers/repos.bleve +UPDATE_BUFFER_LEN = 20 +MAX_FILE_SIZE = 1048576 +; A comma separated list of glob patterns (see https://github.com/gobwas/glob) to include +; in the index; default is empty +REPO_INDEXER_INCLUDE = +; A comma separated list of glob patterns to exclude from the index; ; default is empty +REPO_INDEXER_EXCLUDE = + +[queue] +; Specific queues can be individually configured with [queue.name]. [queue] provides defaults +; +; General queue queue type, currently support: persistable-channel, channel, level, redis, dummy +; default to persistable-channel +TYPE = persistable-channel +; data-dir for storing persistable queues and level queues, individual queues will be named by their type +DATADIR = queues/ +; Default queue length before a channel queue will block +LENGTH = 20 +; Batch size to send for batched queues +BATCH_LENGTH = 20 +; Connection string for redis queues this will store the redis connection string. +CONN_STR = addrs=127.0.0.1:6379 db=0 +; Provide the suffix of the default redis queue name - specific queues can be overriden within in their [queue.name] sections. +QUEUE_NAME = _queue +; If the queue cannot be created at startup - level queues may need a timeout at startup - wrap the queue: +WRAP_IF_NECESSARY = true +; Attempt to create the wrapped queue at max +MAX_ATTEMPTS = 10 +; Timeout queue creation +TIMEOUT = 15m30s +; Create a pool with this many workers +WORKERS = 1 +; Dynamically scale the worker pool to at this many workers +MAX_WORKERS = 10 +; Add boost workers when the queue blocks for BLOCK_TIMEOUT +BLOCK_TIMEOUT = 1s +; Remove the boost workers after BOOST_TIMEOUT +BOOST_TIMEOUT = 5m +; During a boost add BOOST_WORKERS +BOOST_WORKERS = 5 + +[admin] +; Disallow regular (non-admin) users from creating organizations. +DISABLE_REGULAR_ORG_CREATION = false +; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +DEFAULT_EMAIL_NOTIFICATIONS = enabled + +[security] +; Whether the installer is disabled +INSTALL_LOCK = true +; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! +# @FDEWREWR&*( +SECRET_KEY = hcsA6WS81j91zmILHzZQMEJJM1eghsAksm8hRPPmQttqWRMcDDe887iNzPTDYTaq +; How long to remember that a user is logged in before requiring relogin (in days) +LOGIN_REMEMBER_DAYS = 7 +COOKIE_USERNAME = gitea_awesome +COOKIE_REMEMBER_NAME = gitea_incredible +; Reverse proxy authentication header name of user name +REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER +REVERSE_PROXY_AUTHENTICATION_EMAIL = X-WEBAUTH-EMAIL +; The minimum password length for new Users +MIN_PASSWORD_LENGTH = 6 +; Set to true to allow users to import local server paths +IMPORT_LOCAL_PATHS = false +; Set to true to prevent all users (including admin) from creating custom git hooks +DISABLE_GIT_HOOKS = false +; Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED +ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = true +; Comma separated list of character classes required to pass minimum complexity. +; If left empty or no valid values are specified, the default values ("lower,upper,digit,spec") will be used. +; Use "off" to disable checking. +PASSWORD_COMPLEXITY = lower,upper,digit,spec +; Password Hash algorithm, either "pbkdf2", "argon2", "scrypt" or "bcrypt" +PASSWORD_HASH_ALGO = pbkdf2 +; Set false to allow JavaScript to read CSRF cookie +CSRF_COOKIE_HTTP_ONLY = true +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTY3MzM5Mjl9.htwld4l5AgQ_7zaa1hEE3yBSfq50mWdP3VoE5xT6blc + +[openid] +; +; OpenID is an open, standard and decentralized authentication protocol. +; Your identity is the address of a webpage you provide, which describes +; how to prove you are in control of that page. +; +; For more info: https://en.wikipedia.org/wiki/OpenID +; +; Current implementation supports OpenID-2.0 +; +; Tested to work providers at the time of writing: +; - Any GNUSocial node (your.hostname.tld/username) +; - Any SimpleID provider (http://simpleid.koinic.net) +; - http://openid.org.cn/ +; - openid.stackexchange.com +; - login.launchpad.net +; - .livejournal.com +; +; Whether to allow signin in via OpenID +ENABLE_OPENID_SIGNIN = true +; Whether to allow registering via OpenID +; Do not include to rely on rhw DISABLE_REGISTRATION setting +; ENABLE_OPENID_SIGNUP = true +; Allowed URI patterns (POSIX regexp). +; Space separated. +; Only these would be allowed if non-blank. +; Example value: trusted.domain.org trusted.domain.net +WHITELISTED_URIS = +; Forbidden URI patterns (POSIX regexp). +; Space separated. +; Only used if WHITELISTED_URIS is blank. +; Example value: loadaverage.org/badguy stackexchange.com/.*spammer +BLACKLISTED_URIS = +ENABLE_OPENID_SIGNUP = true + +[service] +; Time limit to confirm account/email registration +ACTIVE_CODE_LIVE_MINUTES = 180 +; Time limit to perform the reset of a forgotten password +RESET_PASSWD_CODE_LIVE_MINUTES = 180 +; Whether a new user needs to confirm their email when registering. +REGISTER_EMAIL_CONFIRM = false +; List of domain names that are allowed to be used to register on a Gitea instance +; gitea.io,example.com +EMAIL_DOMAIN_WHITELIST = +; Disallow registration, only allow admins to create accounts. +DISABLE_REGISTRATION = false +; Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +; User must sign in to view anything. +REQUIRE_SIGNIN_VIEW = false +; Mail notification +ENABLE_NOTIFY_MAIL = false +; This setting enables gitea to be signed in with HTTP BASIC Authentication using the user's password +; If you set this to false you will not be able to access the tokens endpoints on the API with your password +; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token +ENABLE_BASIC_AUTHENTICATION = true +; More detail: https://github.com/gogits/gogs/issues/165 +ENABLE_REVERSE_PROXY_AUTHENTICATION = false +ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false +ENABLE_REVERSE_PROXY_EMAIL = false +; Enable captcha validation for registration +ENABLE_CAPTCHA = false +; Type of captcha you want to use. Options: image, recaptcha +CAPTCHA_TYPE = image +; Enable recaptcha to use Google's recaptcha service +; Go to https://www.google.com/recaptcha/admin to sign up for a key +RECAPTCHA_SECRET = +RECAPTCHA_SITEKEY = +; Change this to use recaptcha.net or other recaptcha service +RECAPTCHA_URL = https://www.google.com/recaptcha/ +; Default value for KeepEmailPrivate +; Each new user will get the value of this setting copied into their profile +DEFAULT_KEEP_EMAIL_PRIVATE = false +; Default value for AllowCreateOrganization +; Every new user will have rights set to create organizations depending on this setting +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +; Either "public", "limited" or "private", default is "public" +; Limited is for signed user only +; Private is only for member of the organization +; Public is for everyone +DEFAULT_ORG_VISIBILITY = public +; Default value for DefaultOrgMemberVisible +; True will make the membership of the users visible when added to the organisation +DEFAULT_ORG_MEMBER_VISIBLE = false +; Default value for EnableDependencies +; Repositories will use dependencies by default depending on this setting +DEFAULT_ENABLE_DEPENDENCIES = true +; Dependencies can be added from any repository where the user is granted access or only from the current repository depending on this setting. +ALLOW_CROSS_REPOSITORY_DEPENDENCIES = true +; Enable heatmap on users profiles. +ENABLE_USER_HEATMAP = true +; Enable Timetracking +ENABLE_TIMETRACKING = true +; Default value for EnableTimetracking +; Repositories will use timetracking by default depending on this setting +DEFAULT_ENABLE_TIMETRACKING = true +; Default value for AllowOnlyContributorsToTrackTime +; Only users with write permissions can track time if this is true +DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true +; Default value for the domain part of the user's email address in the git log +; if he has set KeepEmailPrivate to true. The user's email will be replaced with a +; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS. +NO_REPLY_ADDRESS = noreply.%(DOMAIN)s +; Show Registration button +SHOW_REGISTRATION_BUTTON = true +; Show milestones dashboard page - a view of all the user's milestones +SHOW_MILESTONES_DASHBOARD_PAGE = true +; Default value for AutoWatchNewRepos +; When adding a repo to a team or creating a new repo all team members will watch the +; repo automatically if enabled +AUTO_WATCH_NEW_REPOS = true +; Default value for AutoWatchOnChanges +; Make the user watch a repository When they commit for the first time +AUTO_WATCH_ON_CHANGES = false + +[webhook] +; Hook task queue length, increase if webhook shooting starts hanging +QUEUE_LENGTH = 1000 +; Deliver timeout in seconds +DELIVER_TIMEOUT = 5 +; Allow insecure certification +SKIP_TLS_VERIFY = false +; Number of history information in each page +PAGING_NUM = 10 +; Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy +PROXY_URL = +; Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts. +PROXY_HOSTS = + +[mailer] +ENABLED = false +; Buffer length of channel, keep it as it is if you don't know what it is. +SEND_BUFFER_LEN = 100 +; Prefix displayed before subject in mail +SUBJECT_PREFIX = +; Mail server +; Gmail: smtp.gmail.com:587 +; QQ: smtp.qq.com:465 +; Using STARTTLS on port 587 is recommended per RFC 6409. +; Note, if the port ends with "465", SMTPS will be used. +HOST = +; Disable HELO operation when hostnames are different. +DISABLE_HELO = +; Custom hostname for HELO operation, if no value is provided, one is retrieved from system. +HELO_HOSTNAME = +; Whether or not to skip verification of certificates; `true` to disable verification. This option is unsafe. Consider adding the certificate to the system trust store instead. +SKIP_VERIFY = false +; Use client certificate +USE_CERTIFICATE = false +CERT_FILE = custom/mailer/cert.pem +KEY_FILE = custom/mailer/key.pem +; Should SMTP connect with TLS, (if port ends with 465 TLS will always be used.) +; If this is false but STARTTLS is supported the connection will be upgraded to TLS opportunistically. +IS_TLS_ENABLED = false +; Mail from address, RFC 5322. This can be just an email address, or the `"Name" ` format +FROM = +; Mailer user name and password +; Please Note: Authentication is only supported when the SMTP server communication is encrypted with TLS (this can be via STARTTLS) or `HOST=localhost`. +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Send mails as plain text +SEND_AS_PLAIN_TEXT = false +; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) +MAILER_TYPE = smtp +; Specify an alternative sendmail binary +SENDMAIL_PATH = sendmail +; Specify any extra sendmail arguments +SENDMAIL_ARGS = +; Timeout for Sendmail +SENDMAIL_TIMEOUT = 5m + +[cache] +; if the cache enabled +ENABLED = true +; Either "memory", "redis", or "memcache", default is "memory" +ADAPTER = memory +; For "memory" only, GC interval in seconds, default is 60 +INTERVAL = 60 +; For "redis" and "memcache", connection host address +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; memcache: `127.0.0.1:11211` +HOST = +; Time to keep items in cache if not used, default is 16 hours. +; Setting it to 0 disables caching +ITEM_TTL = 16h + +; Last commit cache +[cache.last_commit] +; if the cache enabled +ENABLED = true +; Time to keep items in cache if not used, default is 8760 hours. +; Setting it to 0 disables caching +ITEM_TTL = 8760h +; Only enable the cache when repository's commits count great than +COMMITS_COUNT = 1000 + +[session] +; Either "memory", "file", or "redis", default is "memory" +PROVIDER = file +; Provider config options +; memory: doesn't have any config yet +; file: session file path, e.g. `data/sessions` +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` +PROVIDER_CONFIG = data/sessions +; Session cookie name +COOKIE_NAME = i_like_gitea +; If you use session in https only, default is false +COOKIE_SECURE = false +; Enable set cookie, default is true +ENABLE_SET_COOKIE = true +; Session GC time interval in seconds, default is 86400 (1 day) +GC_INTERVAL_TIME = 86400 +; Session life time in seconds, default is 86400 (1 day) +SESSION_LIFE_TIME = 86400 + +[picture] +AVATAR_UPLOAD_PATH = data/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = data/repo-avatars +; How Gitea deals with missing repository avatars +; none = no avatar will be displayed; random = random avatar will be displayed; image = default image will be used +REPOSITORY_AVATAR_FALLBACK = none +REPOSITORY_AVATAR_FALLBACK_IMAGE = /img/repo_default.png +; Max Width and Height of uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_WIDTH = 4096 +AVATAR_MAX_HEIGHT = 3072 +; Maximum alloved file size for uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_FILE_SIZE = 1048576 +; Chinese users can choose "duoshuo" +; or a custom avatar source, like: http://cn.gravatar.com/avatar/ +GRAVATAR_SOURCE = gravatar +; This value will always be true in offline mode. +DISABLE_GRAVATAR = false +; Federated avatar lookup uses DNS to discover avatar associated +; with emails, see https://www.libravatar.org +; This value will always be false in offline mode or when Gravatar is disabled. +ENABLE_FEDERATED_AVATAR = false + +[attachment] +; Whether attachments are enabled. Defaults to `true` +ENABLED = true +; Path for attachments. Defaults to `data/attachments` +PATH = data/attachments +; One or more allowed types, e.g. "image/jpeg|image/png". Use "*/*" for all types. +ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip +; Max size of each file. Defaults to 4MB +MAX_SIZE = 4 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[time] +; Specifies the format for fully outputted dates. Defaults to RFC1123 +; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano +; For more information about the format see http://golang.org/pkg/time/#pkg-constants +FORMAT = +; Location the UI time display i.e. Asia/Shanghai +; Empty means server's location setting +DEFAULT_UI_LOCATION = + +[log] +ROOT_PATH = /mnt/data/git-server/log +; Either "console", "file", "conn", "smtp" or "database", default is "console" +; Use comma to separate multiple modes, e.g. "console, file" +MODE = file +; Buffer length of the channel, keep it as it is if you don't know what it is. +BUFFER_LEN = 10000 +REDIRECT_MACARON_LOG = false +MACARON = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Info" +ROUTER_LOG_LEVEL = Info +ROUTER = console +ENABLE_ACCESS_LOG = false +ACCESS_LOG_TEMPLATE = {{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}" +ACCESS = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" +LEVEL = info +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "None" +STACKTRACE_LEVEL = None + +; Generic log modes +[log.x] +FLAGS = stdflags +EXPRESSION = +PREFIX = +COLORIZE = false + +; For "console" mode only +[log.console] +LEVEL = +STDERR = false + +; For "file" mode only +[log.file] +LEVEL = +; Set the file_name for the logger. If this is a relative path this +; will be relative to ROOT_PATH +FILE_NAME = +; This enables automated log rotate(switch of following options), default is true +LOG_ROTATE = true +; Max number of lines in a single file, default is 1000000 +MAX_LINES = 1000000 +; Max size shift of a single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 +; Segment log daily, default is true +DAILY_ROTATE = true +; delete the log file after n days, default is 7 +MAX_DAYS = 7 +; compress logs with gzip +COMPRESS = true +; compression level see godoc for compress/gzip +COMPRESSION_LEVEL = -1 + +; For "conn" mode only +[log.conn] +LEVEL = +; Reconnect host for every single message, default is false +RECONNECT_ON_MSG = false +; Try to reconnect when connection is lost, default is false +RECONNECT = false +; Either "tcp", "unix" or "udp", default is "tcp" +PROTOCOL = tcp +; Host address +ADDR = + +; For "smtp" mode only +[log.smtp] +LEVEL = +; Name displayed in mail title, default is "Diagnostic message from server" +SUBJECT = Diagnostic message from server +; Mail server +HOST = +; Mailer user name and password +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Receivers, can be one or more, e.g. 1@example.com,2@example.com +RECEIVERS = + +[cron] +; Enable running cron tasks periodically. +ENABLED = true +; Run cron tasks when Gitea starts. +RUN_AT_START = false + +; Update mirrors +[cron.update_mirrors] +SCHEDULE = @every 10m + +; Repository health check +[cron.repo_health_check] +SCHEDULE = @every 24h +TIMEOUT = 60s +; Arguments for command 'git fsck', e.g. "--unreachable --tags" +; see more on http://git-scm.com/docs/git-fsck +ARGS = + +; Check repository statistics +[cron.check_repo_stats] +RUN_AT_START = true +SCHEDULE = @every 24h + +; Clean up old repository archives +[cron.archive_cleanup] +; Whether to enable the job +ENABLED = true +; Whether to always run at least once at start up time (if ENABLED) +RUN_AT_START = true +; Time interval for job to run +SCHEDULE = @every 24h +; Archives created more than OLDER_THAN ago are subject to deletion +OLDER_THAN = 24h + +; Synchronize external user data (only LDAP user synchronization is supported) +[cron.sync_external_users] +; Synchronize external user data when starting server (default false) +RUN_AT_START = false +; Interval as a duration between each synchronization (default every 24h) +SCHEDULE = @every 24h +; Create new users, update existing user data and disable users that are not in external source anymore (default) +; or only create new users if UPDATE_EXISTING is set to false +UPDATE_EXISTING = true + +; Update migrated repositories' issues and comments' posterid, it will always attempt synchronization when the instance starts. +[cron.update_migration_poster_id] +; Interval as a duration between each synchronization. (default every 24h) +SCHEDULE = @every 24h + +[git] +; The path of git executable. If empty, Gitea searches through the PATH environment. +PATH = +; Disables highlight of added and removed changes +DISABLE_DIFF_HIGHLIGHT = false +; Max number of lines allowed in a single file in diff view +MAX_GIT_DIFF_LINES = 1000 +; Max number of allowed characters in a line in diff view +MAX_GIT_DIFF_LINE_CHARACTERS = 5000 +; Max number of files shown in diff view +MAX_GIT_DIFF_FILES = 100 +; Arguments for command 'git gc', e.g. "--aggressive --auto" +; see more on http://git-scm.com/docs/git-gc/ +GC_ARGS = +; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1 +ENABLE_AUTO_GIT_WIRE_PROTOCOL = true +; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled) +PULL_REQUEST_PUSH_MESSAGE = true + +; Operation timeout in seconds +[git.timeout] +DEFAULT = 360 +MIGRATE = 600 +MIRROR = 300 +CLONE = 300 +PULL = 300 +GC = 60 + +[mirror] +; Default interval as a duration between each check +DEFAULT_INTERVAL = 8h +; Min interval as a duration must be > 1m +MIN_INTERVAL = 10m + +[api] +; Enables Swagger. True or false; default is true. +ENABLE_SWAGGER = true +; Max number of items in a page +MAX_RESPONSE_ITEMS = 50 +; Default paging number of api +DEFAULT_PAGING_NUM = 30 +; Default and maximum number of items per page for git trees api +DEFAULT_GIT_TREES_PER_PAGE = 1000 +; Default size of a blob returned by the blobs API (default is 10MiB) +DEFAULT_MAX_BLOB_SIZE = 10485760 + +[oauth2] +; Enables OAuth2 provider +ENABLE = true +; Lifetime of an OAuth2 access token in seconds +ACCESS_TOKEN_EXPIRATION_TIME = 3600 +; Lifetime of an OAuth2 access token in hours +REFRESH_TOKEN_EXPIRATION_TIME = 730 +; Check if refresh token got already used +INVALIDATE_REFRESH_TOKENS = false +; OAuth2 authentication secret for access and refresh tokens, change this to a unique string. +JWT_SECRET = Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU +; Maximum length of oauth2 token/cookie stored on server +MAX_TOKEN_LENGTH = 32767 + +[i18n] +LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR +NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어 + +[U2F] + +; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED +; Two Factor authentication with security keys +; https://developers.yubico.com/U2F/App_ID.html +; APP_ID = http://localhost:3000/ +; Comma seperated list of trusted facets +; TRUSTED_FACETS = http://localhost:3000/ +; Extension mapping to highlight class +; e.g. .toml=ini +[highlight.mapping] + +[other] +SHOW_FOOTER_BRANDING = false +; Show version information about Gitea and Go in the footer +SHOW_FOOTER_VERSION = true +; Show template execution time in the footer +SHOW_FOOTER_TEMPLATE_LOAD_TIME = true + +[markup.sanitizer.1] + +; The following keys can appear once to define a sanitation policy rule. +; This section can appear multiple times by adding a unique alphanumeric suffix to define multiple rules. +; e.g., [markup.sanitizer.1] -> [markup.sanitizer.2] -> [markup.sanitizer.TeX] +; ELEMENT = span +; ALLOW_ATTR = class +; REGEXP = ^(info|warning|error)$ +[markup.asciidoc] +ENABLED = false +; List of file extensions that should be rendered by an external command +FILE_EXTENSIONS = .adoc,.asciidoc +; External command to render all matching extensions +RENDER_COMMAND = asciidoc --out-file=- - +; Don't pass the file on STDIN, pass the filename as argument instead. +IS_INPUT_FILE = false + +[metrics] +; Enables metrics endpoint. True or false; default is false. +ENABLED = false +; If you want to add authorization, specify a token here +TOKEN = + +[task] +; Task queue type, could be `channel` or `redis`. +QUEUE_TYPE = channel +; Task queue length, available only when `QUEUE_TYPE` is `channel`. +QUEUE_LENGTH = 1000 +; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +; If there is a password of redis, use `addrs=127.0.0.1:6379 password=123 db=0`. +QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 + +[migrations] +; Max attempts per http/https request on migrations. +MAX_ATTEMPTS = 3 +; Backoff time per http/https request retry (seconds) +RETRY_BACKOFF = 3 diff --git a/env/3115.env b/env/3115.env new file mode 100644 index 0000000..a91de0c --- /dev/null +++ b/env/3115.env @@ -0,0 +1 @@ +export GITEA_DATA_DIR=/mnt/data/git-server diff --git a/frontend/3115/public/css/theme-42l-dark.css b/frontend/3115/public/css/theme-42l-dark.css new file mode 100644 index 0000000..5ec8441 --- /dev/null +++ b/frontend/3115/public/css/theme-42l-dark.css @@ -0,0 +1,116 @@ +@import "/css/theme-arc-green.css"; + +* { + scrollbar-width: auto; + scrollbar-color: #575d6c rgb(64, 69, 82); +} + +::-webkit-scrollbar { + width: 12px!important; + height: 10px!important; +} +::-webkit-scrollbar-thumb { + border-radius: 0px !important; + background: #575d6c !important; +} + +::-webkit-scrollbar-track { + background: rgb(64, 69, 82) !important; +} + +.ui.bar { + background-image: linear-gradient(-90deg,#9f2e45,#5d3067) !important; +} + +#navbar > .item, +#navbar > .right.menu > .item { + color: white; +} + +#navbar > .item.active, +#navbar > .right.menu > .item.active { + background: rgba(34, 34, 34, 0.28); +} + +#navbar-expand-toggle { + color: white !important; + background: #383c4a !important; +} + +#navbar-expand-toggle { + color: white !important; + background: #383c4a !important; +} + +#navbar-expand-toggle:hover { + background: inherit !important; +} + +.home .hero .octicon { + color: inherit !important; +} + +.ui.breadcrumb a, +a:not(.ui), +.ui.card > .extra a:not(.ui), +a { + color: white; +} + +.ui.breadcrumb a:hover, +a:not(.ui):hover, +.ui.card > .extra a:not(.ui):hover, +a:hover { + color: lightgray; +} + +/* Star and watch number */ +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + color: #9b9b9b; +} + +.ui.blue.button, +.ui.blue.buttons .button, +.ui.green.button, +.ui.green.buttons .button { + background-color: #4e5260; +} + +.ui.blue.button:hover, +.ui.blue.buttons .button:hover, +.ui.green.button:hover, +.ui.green.buttons .button:hover, +.ui.blue.button:focus, +.ui.blue.buttons .button:focus, +.ui.green.button:focus, +.ui.green.buttons .button:focus { + background-color: #60636f; +} + +#repo-desc a, +.file-view a { + color: #4bf; +} + +#repo-desc a, +.file-view a:hover { + color: #00a3e2; +} + +.captcha-img { + background-color: white; +} + +.ui.pagination.menu .active.item { + background-color: #4e5260; +} + +/* not enough contrast on wiki pages */ +.ui.list > .item > .content, .ui.segment { + color: #e3e3e3 !important; +} + +.breadcrumb .divider, .ui.header { + color: #e3e3e3 !important; +} diff --git a/frontend/3115/public/css/theme-42l-light.css b/frontend/3115/public/css/theme-42l-light.css new file mode 100644 index 0000000..2817cfd --- /dev/null +++ b/frontend/3115/public/css/theme-42l-light.css @@ -0,0 +1,17 @@ +.ui.bar { + background-image: linear-gradient(-90deg,#9f2e45,#5d3067) !important; +} + +#navbar > .item, +#navbar > .right.menu > .item { + color: white; +} + +#navbar > .item.active, +#navbar > .right.menu > .item.active { + background: rgba(34, 34, 34, 0.28); +} + +#navbar-expand-toggle { + color: white !important; +} diff --git a/frontend/3115/public/css/theme-dark-blue.css b/frontend/3115/public/css/theme-dark-blue.css new file mode 100644 index 0000000..4295b69 --- /dev/null +++ b/frontend/3115/public/css/theme-dark-blue.css @@ -0,0 +1,1095 @@ + body { + background: #131313; + color: #afafaf; + } + a { + color: #86acd1; + } + .following.bar.light { + background: #001038; + } + .ui.secondary.menu .item { + color: #cfc5c5; + padding: 8px 8px; + } + .ui.secondary.menu .active.item { + color: #fafafa; + padding: 5px 12px; + } + .following.bar .top.menu a.item:hover { + color: #fff; + } + .following.bar.light { + border-bottom: 1px solid #313131; + } + .ui.attached.header { + background: #060621; + border: 1px solid #203241; + color: #dbdbdb; + } + .ui.attached.table { + border: 1px solid #203241; + background: #001221 + } + .feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #203241; + } + .feeds .list ul li.private { + background: #151825; + } + .ui.secondary.menu .dropdown.item:hover, + .ui.secondary.menu .link.item:hover, + .ui.secondary.menu a.item:hover { + color: #fff; + } + .ui.menu .ui.dropdown .menu > .item { + background: #020410 !important; + color: #9e9e9e !important; + } + .ui.secondary.menu .dropdown.item > .menu, + .ui.text.menu .dropdown.item > .menu { + border: 1px solid #203241; + } + footer { + background: #060633; + border-top: 1px solid #313131; + } + .ui.menu .dropdown.item .menu { + background: #020410; + } + .ui.menu .ui.dropdown .menu > .item:hover, + .ui.menu .ui.dropdown .menu > .selected.item { + color: #fff!important; + } + .ui.dropdown .menu > .header { + color: #dbdbdb; + } + .ui.red.label, + .ui.red.labels .label { + background-color: #802020!important; + border-color: #DB2828!important; + } + .ui.menu { + background: #0202aa; + border: 1px solid #203241; + } + .ui.menu .item { + background: #051865; + color: #aaaaaa; + } + .ui.menu .active.item:hover, + .ui.vertical.menu .active.item:hover { + color: #dbdbdb; + } + .ui.link.menu .item:hover, + .ui.menu .dropdown.item:hover, + .ui.menu .link.item:hover, + .ui.menu a.item:hover { + color: #dbdbdb; + } + .ui.menu .active.item { + background: #051552; + color: #dbdbdb; + } + .ui.input input { + background: #000009; + border: 1px solid #203241; + color: #dbdbdb; + } + .ui.input input:focus, + .ui.input.focus input { + background: #000000; + border: 1px solid #456580; + color: #dbdbdb; + } + .ui.label { + color: #dbdbdb; + background-color: #313f4c; + } + .issue.list > .item .title { + color: #668cb1; + } + .issue.list > .item .title:hover { + color: #aaaabb; + } + .issue.list > .item { + border-bottom: 1px dashed #475767; + } + .ui.green.label, + .ui.green.labels .label { + background-color: #2d693b!important; + border-color: #2d693b!important; + } + .issue.list > .item .comment { + color: #129c92; + } + .ui.basic.button, + .ui.basic.buttons .button { + color: #a9a9a9 !important; + } + .ui.basic.blue.button, .ui.basic.blue.buttons .button { + color: #b9c1ce !important; + } + .ui.basic.red.active.button, + .ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset!important; + color: #c75252!important; + } + .ui.basic.button:focus, + .ui.basic.button:hover, + .ui.basic.buttons .button:focus, + .ui.basic.buttons .button:hover { + background: transparent!important; + color: #dbdbdb!important; + } + .ui.menu .item.disabled, + .ui.menu .item.disabled:hover { + cursor: default !important; + background-color: #151825 !important; + color: #9e9e9e; + } + .ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #212d38; + } + .repository .header-wrapper { + background-color: #151825; + } + .ui.tabular.menu .active.item { + background: #232323; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; + } + .ui.secondary.pointing.menu .item { + border-bottom-width: 0px; + align-self: center; + background: #050542; + margin: 1px 1px 1px 1px; + padding: 8px 6px; + } + .ui.tabular.menu .item { + color: #9e9e9e; + } + .ui.tabular.menu .item:hover { + color: #dbdbdb; + } + .ui.header, + .ui.breadcrumb .divider { + color: #9e9e9e; + } + .ui.blue.label, + .ui.blue.labels .label { + background-color: #081f6f !important; + border-color: #081f6f !important; + color: #b5b5b5 !important; + } + .ui.menu .item > .label { + background: #565454; + } + .ui.blue.button, + .ui.blue.buttons .button { + background-color: #26577b; + } + .ui.form input:not([type]), + .ui.form input[type=text], + .ui.form input[type=email], + .ui.form input[type=search], + .ui.form input[type=password], + .ui.form input[type=date], + .ui.form input[type=datetime-local], + .ui.form input[type=tel], + .ui.form input[type=time], + .ui.form input[type=url], + .ui.form input[type=number] { + background: #151825; + border: 1px solid rgb(48, 66, 81); + } + .ui.form input:not([type]):focus, + .ui.form input[type=text]:focus, + .ui.form input[type=email]:focus, + .ui.form input[type=search]:focus, + .ui.form input[type=password]:focus, + .ui.form input[type=date]:focus, + .ui.form input[type=datetime-local]:focus, + .ui.form input[type=tel]:focus, + .ui.form input[type=time]:focus, + .ui.form input[type=url]:focus, + .ui.form input[type=number]:focus { + background: #151825; + border: 1px solid #456580; + color: #dbdbdb; + } + .ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #456580!important; + } + .ui.green.button, + .ui.green.buttons .button { + background-color: #217a45; + color: #fff; + text-shadow: none; + background-image: none; + } + .ui.green.button:focus, + .ui.green.buttons .button:focus { + background-color: #085121 !important; + color: #fff; + text-shadow: none; + } + .ui.button { + background: #0c0c53; + border: 1px solid #313c47; + color: #dbdbdb; + } + .ui.labeled.button:not([class*="left labeled"]) > .label, + .ui[class*="left labeled"].button > .button { + background: #151825; + border: 1px solid #313c47; + color: #a0bdcb; + } + .ui.button:hover { + background-color: #151899; + color: #dbdbdb; + } + .ui.table thead th { + background: #05174b; + color: #dbdbdb !important; + } + .repository.file.list #repo-files-table tr:hover { + background-color: #232323; + } + .ui.table { + color: #797979!important; + border: 1px solid #313c47; + background: #18242f; + } + .ui.table tbody tr { + border-bottom: 1px solid red; + background: #151515; + } + .ui.attached.table.segment { + background: #020210; + color: #dbdbdb!important; + } + .markdown:not(code) h2 { + border-bottom: 1px solid #203241; + } + .hljs, + .hljs-keyword, + .hljs-selector-tag, + .hljs-subst { + color: #dbdbdb !important; + background: #181818 !important; + } + .markdown:not(code) .highlight pre, + .markdown:not(code) pre { + background-color: #081004; + border: 1px solid #246; + } + .ui.dropdown .menu { + background: #151825; + } + .ui.dropdown .menu > .message:not(.ui) { + color: rgb(99, 99, 99); + } + .ui.segment { + background: #020410; + color: #9e9e9e!important; + border: 1px solid #313c47; + } + .ui.active.button:active, + .ui.button:active, + .ui.button:focus { + background-color: #2e3e4e; + color: #dbdbdb; + } + .ui.dropdown .menu .selected.item, + .ui.dropdown.selected { + color: #dbdbdb; + } + .ui.dropdown .menu > .item:hover { + color: #dbdbdb; + } + .ui.dropdown .menu > .item { + color: #9e9e9e; + } + .ui.attached.segment { + border: 1px solid #313c47; + } + .repository.view.issue .comment-list .comment .content > .bottom.segment { + background: #151825; + } + .repository.view.issue .comment-list .comment .content .header { + color: #dbdbdb; + background-color: #121247; + border-bottom: 1px solid #313c47; + } + .ui.comments .comment .actions a { + color: #dbdbdb; + } + .repository.view.issue .comment-list .comment .content .header:after { + border-right-color: #121247; + } + .repository.view.issue .comment-list .comment .content .header:before { + border-right-color: #121247; + } + .repository.view.issue .comment-list:before { + background-color: #121247; + } + .repository .comment.form .content .form:after { + border-right-color: #121247; + } + .repository .comment.form .content .form:before { + border-right-color: #121247; + } + .ui .text.grey { + color: #d0d0d0 !important; + } + .ui .text.grey a { + color: #66dbdd !important; + } + .ui .text.grey a:hover { + color: #aadbff !important; + } + .ui.form textarea, + .ui.form textarea:focus { + background: #232323; + border: 1px solid #313c47; + color: #dbdbdb; + } + .ui.form textarea:focus { + border: 1px solid #456580; + } + .ui .info.segment.top { + background-color: #060639 !important; + } + .repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; + } + .ui.table tbody tr { + border-bottom: 1px solid #2d2d2d; + } + .repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #2c1616 !important; + border-color: #634343 !important; + } + .repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #101044 !important; + border-color: #597359 !important; + } + .repository .diff-file-box .code-diff tbody tr .added-code { + background-color: #15217B; + } + .repository .diff-file-box .code-diff .lines-num { + border-right: 1px solid #2d2d2d; + } + .repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; + } + .repository .diff-file-box .code-diff tbody tr.tag-code td, + .repository .diff-file-box .code-diff tbody tr td.tag-code { + border-color: #2d2d2d !important; + } + .repository .diff-file-box .file-body.file-code .lines-num-old { + border-right: 1px solid #2d2d2d; + } + .hljs-title, + .hljs-section, + .hljs-selector-id { + color: #986c88 !important; + } + .hljs-string, + .hljs-doctag { + color: #949494; + } + .repository .diff-file-box .code-diff tbody tr .removed-code { + background-color: #7B2115; + } + .repository .diff-file-box .code-diff tbody tr.tag-code td, + .repository .diff-file-box .code-diff tbody tr td.tag-code { + background-color: #191927 !important; + } + .ui.vertical.menu .active.item { + background: #232323; + } + .ui.vertical.menu .item { + background: #151825; + } + .ui.vertical.menu .header.item { + background: #001221; + } + .ui.vertical.menu { + background: #151825; + } + .ui.repository.list .item:not(:first-child) { + border-top: 1px solid #313c47; + } + .ui.selection.dropdown { + background: #151825; + border: 1px solid rgb(48, 66, 81); + color: #9e9e9e; + } + .ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; + } + .ui.tabular.menu { + border-bottom: 1px solid #313c47; + } + .ui.card, + .ui.cards > .card { + background: #151825; + box-shadow: 0 1px 3px 0 #203241, 0 0 0 1px #203241; + } + .ui.card > .content > .header, + .ui.cards > .card > .content > .header { + color: #dbdbdb; + } + .ui.card > .extra a:not(.ui), + .ui.cards > .card > .extra a:not(.ui) { + color: rgb(102, 140, 177); + } + .ui .text.black { + color: #9e9e9e; + } + .ui .text.black:hover { + color: #dbdbdb; + } + .ui.secondary.pointing.menu .active.item { + color: #dbdbdb; + background: #030366; + } + .ui.secondary.pointing.menu .active.item:hover { + border-top-color: #203241; + background: #021288; + color: #dbdbdb; + } + .ui.secondary.pointing.menu .dropdown.item:hover, + .ui.secondary.pointing.menu .link.item:hover, + .ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; + } + .ui.checkbox label, + .ui.checkbox + label, + .ui.form .field > label { + color: #9e9e9e; + } + .ui.form .inline.field > label, + .ui.form .inline.field > p, + .ui.form .inline.fields .field > label, + .ui.form .inline.fields .field > p, + .ui.form .inline.fields > label { + color: #9e9e9e; + } + .user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #203241; + } + .ui.form input:not([type]), + .ui.form input[type=text], + .ui.form input[type=email], + .ui.form input[type=search], + .ui.form input[type=password], + .ui.form input[type=date], + .ui.form input[type=datetime-local], + .ui.form input[type=tel], + .ui.form input[type=time], + .ui.form input[type=url], + .ui.form input[type=number] { + color: #9e9e9e; + } + .ui.attached.info.message, + .ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; + } + .ui.info.message { + background-color: #121247; + color: #9ebcc5; + } + .ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; + } + .ui.red.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; + } + .ui.red.button, + .ui.red.buttons .button { + background-color: #7b2727 !important; + } + .ui.checkbox label:hover, + .ui.checkbox + label:hover { + color: #dbdbdb !important; + } + .ui.checkbox input:checked ~ .box:after, + .ui.checkbox input:checked ~ label:after { + color: rgb(127, 152, 173); + } + .ui.checkbox input:checked ~ .box:before, + .ui.checkbox input:checked ~ label:before { + background: #001221; + } + .ui.checkbox .box:hover::before, + .ui.checkbox label:hover::before { + background: #001221; + } + .ui.checkbox .box:before, + .ui.checkbox label:before { + background: #001221; + border: 1px solid #203241; + } + .ui.checkbox .box:active::before, + .ui.checkbox label:active::before { + background: #001221; + border-color: rgba(34, 36, 38, .35); + } + .ui.checkbox input:checked ~ .box:before, + .ui.checkbox input:checked ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:focus ~ .box:before, + .ui.checkbox input:focus ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:checked:focus ~ .box:before, + .ui.checkbox input:checked:focus ~ label:before, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:before, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:checked ~ .box:after, + .ui.checkbox input:checked ~ label:after { + opacity: 1; + color: rgb(127, 152, 173); + } + .ui.checkbox input:checked:focus ~ .box:after, + .ui.checkbox input:checked:focus ~ label:after, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:after, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:after { + color: rgb(127, 152, 173); + } + .ui.checkbox input:focus ~ .box:after, + .ui.checkbox input:focus ~ label, + .ui.checkbox input:focus ~ label:after { + color: #9a9a9a; + } + .ui.selection.dropdown:hover { + border-color: rgba(34, 36, 38, .35); + border: 1px solid #456580; + } + .ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; + } + .ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; + } + .ui.negative.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; + } + .hljs-tag, + .hljs-name, + .hljs-tag, + .hljs-name, + .hljs-attribute { + color: #d22121 !important; + } + .user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #203241; + } + .hljs-number, + .hljs-literal, + .hljs-variable, + .hljs-template-variable, + .hljs-attr { + color: #48eca4 !important; + } + .hljs-string, + .hljs-doctag { + color: #8ab398; + } + .ui.form .dropzone { + border: 2px dashed #4c5d6b; + } + .ui.basic.red.button, + .ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset!important; + color: #a0a0a0!important; + } + .ui.list .list > .item .header, + .ui.list > .item .header { + color: #dedede; + } + .ui.list .list > .item .description, + .ui.list > .item .description { + color: #9e9e9e; + } + .ui.user.list .item .description a { + color: #668cb1; + } + .repository.file.list #file-content .code-view .lines-num { + background: #232323; + } + .repository.file.list #file-content .code-view .lines-num pre, + .repository.file.list #file-content .code-view .lines-code pre, + .repository.file.list #file-content .code-view .lines-num ol, + .repository.file.list #file-content .code-view .lines-code ol, + .repository.file.list #file-content .code-view .lines-num .hljs, + .repository.file.list #file-content .code-view .lines-code .hljs { + background-color: #151825; + } + a.ui.label:hover, + a.ui.labels .label:hover { + background-color: #26577b; + color: rgb(219, 219, 219); + } + .ui.secondary.segment { + background: #020415; + } + .explore .navbar { + background-color: #151825 !important; + } + .ui.menu.new-menu { + background-color: #151825 !important; + } + input { + line-height: normal; + background: #232323; + border: 1px solid #313c47; + padding: 7px 12px; + } + .ui.accordion .title:not(.ui) { + color: #dedede; + } + .ui.user.list .item:not(:first-child) { + border-top: 1px solid #313c47; + } + .ui.toggle.checkbox input:checked ~ .box, + .ui.toggle.checkbox input:checked ~ label { + color: rgb(207, 207, 207) !important; + } + .repository .ui.segment.sub-menu .list .item a { + color: #aaa; + } + .ui.link.list.list .active.item, + .ui.link.list.list .active.item a:not(.ui) { + color: rgba(222, 222, 222, .95); + } + .repository #commits-table.ui.basic.striped.table tbody tr:nth-child(2n) { + background-color: rgb(12, 12, 15) !important; + } + .ui.form input:not([type]), + .ui.form input[type="date"], + .ui.form input[type="datetime-local"], + .ui.form input[type="email"], + .ui.form input[type="file"], + .ui.form input[type="number"], + .ui.form input[type="password"], + .ui.form input[type="search"], + .ui.form input[type="tel"], + .ui.form input[type="text"], + .ui.form input[type="time"], + .ui.form input[type="url"] { + background: #050515; + color: rgba(203, 203, 203, 0.9); + } + .repository .header-wrapper { + background-color: #020210; + margin-top: -15px; + padding-top: 15px; + } + .ui.tabular.menu .active.item { + background: #171732; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; + } + .ui.message { + color: #efefef !important; + background: #661111; + } + .repository.view.issue .pull-desc code { + color: #54A5FF; + } + .ui.fluid.input { + margin-bottom: 2px; + } + .ui .text.purple { + color: #a17cd8 !important; + } + .ui.positive.message { + background-color: #151532; + color: #dedede !important; + } + .swagger-ui .border-box, + .swagger-ui a, + .swagger-ui article, + .swagger-ui body, + .swagger-ui code, + .swagger-ui dd, + .swagger-ui div, + .swagger-ui dl, + .swagger-ui dt, + .swagger-ui fieldset, + .swagger-ui footer, + .swagger-ui form, + .swagger-ui h1, + .swagger-ui h2, + .swagger-ui h3, + .swagger-ui h4, + .swagger-ui h5, + .swagger-ui h6, + .swagger-ui header, + .swagger-ui html, + .swagger-ui input[type="email"], + .swagger-ui input[type="number"], + .swagger-ui input[type="password"], + .swagger-ui input[type="tel"], + .swagger-ui input[type="text"], + .swagger-ui input[type="url"], + .swagger-ui legend, + .swagger-ui li, + .swagger-ui main, + .swagger-ui ol, + .swagger-ui p, + .swagger-ui pre, + .swagger-ui section, + .swagger-ui table, + .swagger-ui td, + .swagger-ui textarea, + .swagger-ui th, + .swagger-ui tr, + .swagger-ui { + font-family: Open Sans, sans-serif; + color: #eeeeee; + } + .swagger-ui .scheme-container { + background: #131313; + } + .swagger-ui .opblock .opblock-summary-operation-id, + .swagger-ui .opblock .opblock-summary-path, + .swagger-ui .opblock .opblock-summary-path__deprecated { + color: #bbbbbb; + } + .swagger-ui .opblock .opblock-summary-description { + color: #dddddd; + } + .swagger-ui .opblock-tag { + color: #dddddd; + } + .swagger-ui section.models h4 { + color: #e7e7e7; + } + .swagger-ui .model-title { + color: #e0e0e0; + } + .swagger-ui .prop-type { + color: #54c9f8; + } + .swagger-ui section.models .model-container { + background: #080808; + } + .swagger-ui select { + background: #4477b0; + color: #dadada; + } + .swagger-ui .scheme-container .schemes > label { + color: #dadada; + } + .swagger-ui .info .title { + color: #dadada; + } + .swagger-ui .info .base-url { + color: #dadada; + } + .swagger-ui .topbar { + background-color: #050588; + } + .swagger-ui .topbar a { + color: #dadada; + background-color: #050588; + } + .swagger-ui .topbar .download-url-wrapper input[type="text"] { + border: 2px solid #0018dd; + background-color: #050520; + } + .swagger-ui .topbar .download-url-wrapper .download-url-button { + background: #000fdd; + color: #fff; + } + .swagger-ui .opblock .opblock-section-header { + background: hsla(0, 0%, 13.3%, 0.8); + } + .swagger-ui .opblock-body pre { + background: #212121; + color: #b0b0b0; + } + .ui.modal > .header { + background: #6e0000; + color: #d3d3d3; + } + .ui.modal > .content { + background: #350a0a; + } + .ui.warning.message { + background-color: #422600; + color: #573a08; + } + .ui.horizontal.segments { + background-color: #050525; + } + .repository.file.list .non-diff-file-content .code-view .lines-code .hljs, + .repository.file.list .non-diff-file-content .code-view .lines-code ol, + .repository.file.list .non-diff-file-content .code-view .lines-code pre, + .repository.file.list .non-diff-file-content .code-view .lines-num .hljs, + .repository.file.list .non-diff-file-content .code-view .lines-num ol, + .repository.file.list .non-diff-file-content .code-view .lines-num pre { + background-color: #020212; + } + .repository.file.list .non-diff-file-content .code-view .lines-num { + color: #aaa; + background: #020211; + } + .repository .dif { + background-color: #332020 !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.del-code, + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #321212 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #222232 !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.del-code, + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1) { + background-color: #322222 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.add-code, + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6) { + background-color: #121232 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #151515; +} + + .ui.blue.button, + .ui.blue.buttons .button { + color: #ddd; + background-color: #030c69; + } + .ui.blue.button:focus, + .ui.blue.buttons .button:hover { + background-color: #052ca1; + color: #fff; + } + .CodeMirror { + border: 1px solid #555; + padding: 1px; + background: #151515; + } + .CodeMirror pre { + color: #e66a6a !important; + } + .CodeMirror-linenumber { + color: #ddd; + background: #0a0a0a; + } + .ui .sha.label { + background: #060641; + color: #b6b6b6; + } + .hljs-addition { + background: #15217B !important; + color: #bdbdbd; + } + .hljs-deletion { + background: #7B2115; + color: #bdbdbd; + } + .repository .diff-detail-box { + background: #060639; + padding: 7px; + } + .repository .diff-detail-box ol li { + background: #0a0a0a; + } + /* Checkbox element, when checked */ + input[type="checkbox"]:checked { + box-shadow: 0 0 0 2px #acacac; + } + .repository.file.editor .tab[data-tab="write"] .CodeMirror { + background: #151515; + } + .CodeMirror-gutter, + .CodeMirror-gutters, + .CodeMirror-linenumber, + .CodeMirror-scroll, + .CodeMirror-sizer { + background: #151515; + } + .cm-s-default .cm-atom { + color: #48eca4; + } + .CodeMirror .CodeMirror-code .cm-string { + color: #d4e41e; + } + .CodeMirror .CodeMirror-code .cm-tag { + color: #dedede; + } + .CodeMirror-selected { + background: #333 !important; + } + .CodeMirror-cursor { + width: 2px; + background: #0f0; + } + .cm-s-default .cm-meta, + .cm-s-default .cm-qualifier { + color: #a8cfe7; + } + .cm-s-default .cm-variable-3 { + color: #05ffb6; + } + .cm-s-default .cm-number { + color: #9beacb; + } + .cm-s-default .cm-keyword { + color: #d949ed; + } + .cm-s-default .cm-def { + color: #53c7d4; + } + .cm-s-default .cm-builtin { + color: #46fe47; + } + .repository.file.list .non-diff-file-content .code-view .lines-code .hljs li.active, + .repository.file.list .non-diff-file-content .code-view .lines-code ol li.active, + .repository.file.list .non-diff-file-content .code-view .lines-code pre li.active { + background: #00009c; + color: #eee; + } + .repository.file.list .non-diff-file-content .code-view .active { + background: #00009c; + color: #eee; + } + .ui.header .sub.header { + color: #aaa; + } + .ui.menu .ui.dropdown .menu > .item:hover, .ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; + background: #030c89 !important; + } + .ui.basic.button, .ui.basic.buttons .button { + color: #dcdcdc !important; + background: #014a25 !important; + } + .editor-preview, .editor-preview-side { + background: #131313; + color: #dfdfdf; + } + .markdown:not(code) h1 { + color: #d5d5d5; + } + .markdown:not(code) h2 { + color: #d5d5d5; + } + .markdown:not(code) h3 { + color: #d5d5d5; + } + .markdown:not(code) h4 { + color: #d5d5d5; + } + .markdown:not(code) h5 { + color: #d5d5d5; + } + .markdown:not(code) h6 { + color: #d5d5d5; + } + .heatmap-color-0 { + background-color: #0a0a0a; + } + .heatmap-color-1 { + background-color: #06264f; + } + .heatmap-color-2 { + background-color: #0f3684; + } + .heatmap-color-3 { + background-color: #1956ba; + } + .heatmap-color-4 { + background-color: #2176df; + } + .heatmap-color-5 { + background-color: #3d9bdf; + } + .editor-toolbar a { + color: #71abe7 !important; + } + .markdown:not(code) code, .markdown:not(code) tt { + font-size: 1em; + background-color: #111a20; + } + ::selection { + background: #777; /* WebKit/Blink Browsers */ + } + ::-moz-selection { + background: #777; /* Gecko Browsers */ + } + .following.bar .brand .ui.mini.image { + width: 80px; + } + .markdown:not(code) table td, .markdown:not(code) table th { + background: #11112d; + } + .markdown:not(code).file-view { + overflow: auto; + } + .repository .dif { + background-color: #243c24 !important; + } + .repository.view.issue .comment-list .comment .content > .merge-section { + border-top: 1px solid #2b51aa !important; + background-color: #1a3e21 !important; + } + .ui.bottom.attached.message .pull-right { + color: #bababa !important; + } + .ui.table > thead > tr > th { + background: #101d49; + } + .code-view :not(.fa):not(.octicon):not(.icon) { + background: #131313; + } + .mono.raw, code.raw, pre.raw { + background-color: #171717; + border: 1px solid #292929 !important; + } + .repository .ui.attached.isSigned.isVerified.message { + background-color: #0d2407; + } + diff --git a/frontend/3115/public/css/theme-github.css b/frontend/3115/public/css/theme-github.css new file mode 100644 index 0000000..45223d1 --- /dev/null +++ b/frontend/3115/public/css/theme-github.css @@ -0,0 +1,177 @@ +body { + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" !important; + font-size: 14px; + line-height: 1.5; + color: #24292e; +} + +a { + color: #0366d6; +} + +.following.bar.light { + background-color: #24292e; + color: rgba(255,255,255,0.75); + border-bottom: none; +} + +.ui.main.menu { + font-size: 14px; +} + +.ui.menu, .markdown:not(code), .ui.button, .ui.header { + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +} + +.ui.main.menu .item { + color: rgba(255,255,255,1); + font-weight: 600; +} + +.ui.secondary.main.menu .active.item { + color: rgba(255,255,255,1); + font-weight: 600; +} + +.ui.secondary.main.menu .active.item:hover { + color: rgba(255,255,255,0.75); +} + +.ui.secondary.main.menu a.item:hover { + color: rgba(255,255,255,0.75); +} + +.ui.secondary.main.menu .dropdown.item:hover { + color: rgba(255,255,255,0.75); +} + +.repository.view.issue .title h1 { + font-size: 32px; + font-weight: 400; + word-wrap: break-word; +} + +.ui.green.button { + background-color: #28a745; + background-image: linear-gradient(-180deg, #34d058 0%, #28a745 90%); +} + +.ui.green.button:hover { + background-color: #269f42; + background-image: linear-gradient(-180deg, #2fcb53 0%, #269f42 90%); +} + +.ui.button { + border: 1px solid rgba(27,31,35,0.2); + border-radius: 0.25em; + background-color: #eff3f6; + background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%); + font-size: 12px; + font-weight: 600; +} + +.ui.button:hover { + border-color: rgba(27,31,35,0.5); + background-color: #e6ebf1; + background-image: linear-gradient(-180deg, #f0f3f6 0%, #e6ebf1 90%); +} + +.ui.buttons .button:first-child { + border-left: 1px solid rgba(27,31,35,0.2); +} + +.ui.buttons .button:first-child:hover { + border-left-color: rgba(27, 31, 35, 0.5); +} + +.ui.blue.button, .ui.tiny.blue.buttons.button, .ui.tiny.blue.buttons a.ui.button { + background-color: #2185d0; + background-image: linear-gradient(-180deg, #3e98db 0%, #2185d0 90%); +} + +.ui.blue.button:hover, .ui.tiny.blue.buttons.button:hover, .ui.tiny.blue.buttons a.ui.button:hover { + background-color: #1c6fac; + background-image: linear-gradient(-180deg, #2185d0 0%, #1c6fac 90%); +} + +.ui.red.button { + background-color: #ca1010; + background-image: linear-gradient(-180deg, #e72525 0%, #ca1010 90%); +} + +.ui.red.button:hover { + background-color: #af0e0e; + background-image: linear-gradient(-180deg, #ca1010 0%, #af0e0e 90%); +} + +.ui.breadcrumb a { + color: #0366d6; +} + +.repository .header-grid .ui.huge.breadcrumb { + font-size: 18px; + font-weight: 600; +} + +.ui.compact.labeled.button, .ui.compact.button a { + color: #24292e; + font-size: 12px; + font-weight: 600; +} + +.ui.table td.message a { + color: #6a737d; +} + +.ui.table td.name a:hover, .ui.table td.message a:hover { + text-decoration: underline; + color: #0366d6; +} + +#repo-files-table.ui.fixed.single.line.table thead tr.commit-list { + background-color: #f1f8ff; + border: 1px solid #c8e1ff; +} + +#repo-files-table.ui.fixed.single.line.table thead tr.commit-list th { + background-color: #f1f8ff; + border-bottom: 1px solid #c8e1ff; + font-size: 12px; +} + +.ui.top.attached.header { + background-color: #f6f8fa; + font-size: 14px; +} + +.ui.top.attached.header strong { + font-weight: 600; +} + +.ui.tabular.stackable.menu.navbar a.item { + color: #586069; +} + +.ui.tabular.stackable.menu.navbar a.item:hover { + color: #24292e; +} + +.ui.tabular.stackable.menu.navbar a.active.item { + font-weight: 400; + color: #24292e; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #f6f8fa; +} + +.repository .header-grid .mega-octicon { + font-size: 18px; + width: 20px; +} + +.ui.label { + font-size: 12px; + font-weight: 600; +} + diff --git a/frontend/3115/public/css/theme-trantor.less b/frontend/3115/public/css/theme-trantor.less new file mode 100644 index 0000000..1e8c118 --- /dev/null +++ b/frontend/3115/public/css/theme-trantor.less @@ -0,0 +1,1980 @@ +/* Background */ + +.chroma { + background-color: #2a2e3a; +} +/* LineTableTD */ + +.chroma .lntd { + vertical-align: top; + padding: 0; + margin: 0; + border: 0; +} +/* LineTable */ + +.chroma .lntable { + border-spacing: 0; + padding: 0; + margin: 0; + border: 0; + width: auto; + overflow: auto; + display: block; +} +/* LineHighlight */ + +.chroma .hl { + display: block; + width: 100%; + background-color: #3f424d; +} +/* LineNumbersTable */ + +.chroma .lnt { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* LineNumbers */ + +.chroma .ln { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* Keyword */ + +.chroma .k { + color: #f63; +} +/* KeywordConstant */ + +.chroma .kc { + color: #fa1; +} +/* KeywordDeclaration */ + +.chroma .kd { + color: #9daccc; +} +/* KeywordNamespace */ + +.chroma .kn { + color: #fa1; +} +/* KeywordPseudo */ + +.chroma .kp { + color: #5f8700; +} +/* KeywordReserved */ + +.chroma .kr { + color: #f63; +} +/* KeywordType */ + +.chroma .kt { + color: #9daccc; +} +/* NameAttribute */ + +.chroma .na { + color: #8a8a8a; +} +/* NameBuiltin */ + +.chroma .nb { + color: #9daccc; +} +/* NameBuiltinPseudo */ + +.chroma .bp { + color: #9daccc; +} +/* NameClass */ + +.chroma .nc { + color: #fa1; +} +/* NameConstant */ + +.chroma .no { + color: #fa1; +} +/* NameDecorator */ + +.chroma .nd { + color: #9daccc; +} +/* NameEntity */ + +.chroma .ni { + color: #fa1; +} +/* NameException */ + +.chroma .ne { + color: #af8700; +} +/* NameFunction */ + +.chroma .nf { + color: #9daccc; +} +/* NameLabel */ + +.chroma .nl { + color: #fa1; +} +/* NameNamespace */ + +.chroma .nn { + color: #fa1; +} +/* NameOther */ + +.chroma .nx { + color: #9daccc; +} +/* NameTag */ + +.chroma .nt { + color: #9daccc; +} +/* NameVariable */ + +.chroma .nv { + color: #9daccc; +} +/* NameVariableClass */ + +.chroma .vc { + color: #f81; +} +/* NameVariableGlobal */ + +.chroma .vg { + color: #fa1; +} +/* NameVariableInstance */ + +.chroma .vi { + color: #fa1; +} +/* LiteralString */ + +.chroma .s { + color: #1af; +} +/* LiteralStringAffix */ + +.chroma .sa { + color: #1af; +} +/* LiteralStringBacktick */ + +.chroma .sb { + color: #a0cc75; +} +/* LiteralStringChar */ + +.chroma .sc { + color: #1af; +} +/* LiteralStringDelimiter */ + +.chroma .dl { + color: #1af; +} +/* LiteralStringDoc */ + +.chroma .sd { + color: #6a737d; +} +/* LiteralStringDouble */ + +.chroma .s2 { + color: #a0cc75; +} +/* LiteralStringEscape */ + +.chroma .se { + color: #f63; +} +/* LiteralStringHeredoc */ + +.chroma .sh { + color: #1af; +} +/* LiteralStringInterpol */ + +.chroma .si { + color: #fa1; +} +/* LiteralStringOther */ + +.chroma .sx { + color: #fa1; +} +/* LiteralStringRegex */ + +.chroma .sr { + color: #97c; +} +/* LiteralStringSingle */ + +.chroma .s1 { + color: #a0cc75; +} +/* LiteralStringSymbol */ + +.chroma .ss { + color: #fa1; +} +/* LiteralNumber */ + +.chroma .m { + color: #1af; +} +/* LiteralNumberBin */ + +.chroma .mb { + color: #1af; +} +/* LiteralNumberFloat */ + +.chroma .mf { + color: #1af; +} +/* LiteralNumberHex */ + +.chroma .mh { + color: #1af; +} +/* LiteralNumberInteger */ + +.chroma .mi { + color: #1af; +} +/* LiteralNumberIntegerLong */ + +.chroma .il { + color: #1af; +} +/* LiteralNumberOct */ + +.chroma .mo { + color: #1af; +} +/* Operator */ + +.chroma .o { + color: #f63; +} +/* OperatorWord */ + +.chroma .ow { + color: #5f8700; +} +/* Comment */ + +.chroma .c { + color: #6a737d; +} +/* CommentHashbang */ + +.chroma .ch { + color: #6a737d; +} +/* CommentMultiline */ + +.chroma .cm { + color: #6a737d; +} +/* CommentSingle */ + +.chroma .c1 { + color: #6a737d; +} +/* CommentSpecial */ + +.chroma .cs { + color: #637d; +} +/* CommentPreproc */ + +.chroma .cp { + color: #fc6; +} +/* CommentPreprocFile */ + +.chroma .cpf { + color: #fc6; +} +/* GenericDeleted */ + +.chroma .gd { + color: #fff; + background-color: #5f3737; +} +/* GenericEmph */ + +.chroma .ge { + font-style: italic; +} +/* GenericError */ + +.chroma .gr { + color: #f33; +} +/* GenericHeading */ + +.chroma .gh { + color: #fa1; +} +/* GenericInserted */ + +.chroma .gi { + color: #fff; + background-color: #3a523a; +} +/* GenericOutput */ + +.chroma .go { + color: #888888; +} +/* GenericPrompt */ + +.chroma .gp { + color: #555555; +} +/* GenericStrong */ + +.chroma .gs { + font-weight: bold; +} +/* GenericSubheading */ + +.chroma .gu { + color: #9daccc; +} +/* GenericTraceback */ + +.chroma .gt { + color: #f63; +} +/* GenericUnderline */ + +.chroma .gl { + text-decoration: underline; +} +/* TextWhitespace */ + +.chroma .w { + color: #bbbbbb; +} + +.repository .ui.segment.sub-menu .list .item { + color: #dbdbdb; + a, + span.ui { + color: #dbdbdb; + } +} + +.ui.horizontal.segments > .segment { + background-color: #383c4a; +} + +body { + background: #383c4a; + color: #9e9e9e; +} + +/* firefox scroll bars */ + +* { + scrollbar-width: thin; + scrollbar-color: #87ab63 rgba(255, 255, 255, .1); +} + +/* webkit scrollbars */ + +::-webkit-scrollbar { + -webkit-appearance: none !important; + width: 10px !important; + height: 10px !important; +} + +::-webkit-scrollbar-track { + border-radius: 0 !important; + background: rgba(255, 255, 255, .1) !important; +} + +::-webkit-scrollbar-thumb { + cursor: pointer !important; + border-radius: 5px !important; + -webkit-transition: color .2s ease !important; + transition: color .2s ease !important; + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:window-inactive { + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:hover { + background: #87ab63 !important; +} + +a { + color: #87ab63; +} + +a:hover { + color: #a0cc75; +} + +.ui.card > .extra a:not(.ui):hover, +.ui.cards > .card > .extra a:not(.ui):hover { + color: #a0cc75; +} + +.ui.breadcrumb a:hover { + color: #a0cc75; +} + +.ui.breadcrumb a { + color: #87ab63; +} + +.repository .metas .ui.list a .text { + color: #87ab63; +} + +.repository .metas .ui.list a .text:hover { + color: #a0cc75; +} + +.repository .label.list .item a { + color: #87ab63; +} + +.repository .label.list .item a:hover { + color: #a0cc75; +} + +.repository .milestone.list > .item > a { + color: #87ab63; +} + +.repository .milestone.list > .item > a:hover { + color: #a0cc75; +} + +.repository.release #release-list { + border-top: 1px solid #4c505c; +} + +.repository .milestone.list > .item .operate > a { + color: #87ab63; +} + +.repository .milestone.list > .item .operate > a:hover { + color: #a0cc75; +} + +.ui.green.progress .bar { + background-color: #668844; +} + +.ui.progress.success .bar { + background-color: #7b9e57 !important; +} + +.following.bar.light { + background: #2e323e; + border-bottom: 1px solid #313131; +} + +.ui.secondary.menu .active.item { + color: #dbdbdb; +} + +.ui.secondary.menu .item { + color: #9e9e9e; +} + +.following.bar .top.menu a.item:hover { + color: #ffffff; +} + +.ui.attached.header { + background: #404552; + border: 1px solid #404552; + color: #dbdbdb; +} + +.ui.attached.table { + border: 1px solid #304251; + background: #304251; +} + +.feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #333640; +} + +.feeds .list ul li.private { + background: #353945; + border: 1px solid #333640; +} + +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu .active.item:hover, +.ui.secondary.menu a.item:hover, +.ui.dropdown .menu .active.item { + color: #ffffff; +} + +.ui.menu .ui.dropdown .menu > .item { + background: #2c303a !important; + color: #9e9e9e !important; +} + +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border: 1px solid #434444; +} + +footer { + background: #2e323e; + border-top: 1px solid #313131; + color: #bababa; +} + +.ui.menu .dropdown.item .menu { + background: #2c303a; +} + +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #ffffff !important; +} + +.ui.dropdown .menu > .header { + color: #dbdbdb; +} + +.ui.red.label, +.ui.red.labels .label { + background-color: #7d3434 !important; + border-color: #8a2121 !important; +} + +.ui.menu { + background: #404552; + border: 1px solid #353945; +} + +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + color: #dbdbdb; + background: #4b5162; +} + +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + color: #dbdbdb; + background: #454b5a; +} + +.ui.menu .active.item { + background: #4b5162; + color: #dbdbdb; +} + +.ui.input input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.input input:focus, +.ui.input.focus input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.accordion .title:not(.ui) { + color: #dbdbdb; +} + +.ui.label, +.ui.label.basic { + color: #dbdbdb; + background-color: #404552; +} + +.issue.list > .item .title { + color: #87ab63; +} + +.issue.list > .item .title:hover { + color: #a0cc75; +} + +.issue.list > .item { + border-bottom: 1px dashed #475767; +} + +.ui.green.label, +.ui.green.labels .label, +.ui.basic.green.label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} + +.ui.basic.green.labels a.label:hover, +a.ui.basic.green.label:hover { + background-color: #16ab39 !important; + border-color: #16ab39 !important; + color: #ffffff !important; +} + +.issue.list > .item .comment { + color: #129c92; +} + +.ui.basic.button, +.ui.basic.buttons .button { + color: #797979; +} + +.ui.basic.red.active.button, +.ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset !important; + color: #c75252 !important; +} + +.ui.basic.button:focus, +.ui.basic.button:hover, +.ui.basic.buttons .button:focus, +.ui.basic.buttons .button:hover { + color: #dbdbdb; + box-shadow: 0 0 0 1px rgba(200, 200, 200, .35) inset; + background: rgba(0, 0, 0, .5); +} + +.ui.menu .item { + background: #404552; + color: #9e9e9e; +} + +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover, +.ui.ui.menu .item.disabled, +.ui.ui.menu .item.disabled:hover { + color: #626773; +} + +.ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #87ab63; +} + +.repository .header-wrapper { + background-color: #2a2e3a; +} + +.ui.header, +.ui.breadcrumb .divider { + color: #9e9e9e; +} + +.ui.blue.label, +.ui.blue.labels .label, +.repository .segment.reactions .ui.label.basic.blue { + background-color: #26577b !important; + border-color: #26577b !important; +} + +.ui.menu .item > .label { + background: #565454; +} + +.ui.blue.button, +.ui.blue.buttons .button { + background-color: #87ab63; +} + +.ui.blue.button:hover, +.ui.blue.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.form input:not([type]), +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="email"], +.ui.form input[type="file"], +.ui.form input[type="number"], +.ui.form input[type="password"], +.ui.form input[type="search"], +.ui.form input[type="tel"], +.ui.form input[type="text"], +.ui.form input[type="time"], +.ui.form input[type="url"] { + color: #9e9e9e; + background: #404552; + border: 2px solid #353945; +} + +.ui.form input:not([type]):focus, +.ui.form input[type="date"]:focus, +.ui.form input[type="datetime-local"]:focus, +.ui.form input[type="email"]:focus, +.ui.form input[type="file"]:focus, +.ui.form input[type="number"]:focus, +.ui.form input[type="password"]:focus, +.ui.form input[type="search"]:focus, +.ui.form input[type="tel"]:focus, +.ui.form input[type="text"]:focus, +.ui.form input[type="time"]:focus, +.ui.form input[type="url"]:focus { + background: #404552; + border: 2px solid #4b505f; + color: #dbdbdb; +} + +.ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #4b505f !important; +} + +.ui.green.button, +.ui.green.buttons .button { + background-color: #87ab63; +} + +.ui.green.button:hover, +.ui.green.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.button { + background: #383c4a; + border: 1px solid #4c505c; + color: #dbdbdb; +} + +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + background: #404552; + border: 1px solid #4c505c; + color: #87ab63; +} + +.ui.button:hover { + background-color: #404552; + color: #dbdbdb; +} + +.ui.table thead th, +.ui.table > thead > tr > th { + background: #404552; + color: #dbdbdb !important; +} + +.repository.file.list #repo-files-table tr { + background: #2a2e3a; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #393d4a !important; +} + +.ui.table { + color: #a5a5a5 !important; + border-color: #4c505c; + background: #353945; +} + +.ui.table tbody tr { + border-color: #333640; + background: #2a2e3a; +} + +.ui .text.grey { + color: #a5a5a8 !important; +} + +.ui.attached.table.segment { + background: #353945; + color: #dbdbdb !important; +} + +.markdown:not(code) h2 { + border-bottom: 1px solid #304251; +} + +.ui.tabular.menu { + border-bottom-color: rgba(255, 255, 255, .1); + + .item.active { + border-top-color: #404552; + border-left-color: #404552; + border-right-color: #404552; + background: #353945; + color: #dbdbdb; + } + + .item { + color: #9e9e9e; + } + + .item:hover { + color: #dbdbdb; + } + + &.navbar { + .item.active { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + background: #383c4a; + } + } +} + +.markdown:not(code) .highlight pre, +.markdown:not(code) pre { + background-color: #2a2e3a; + border: 1px solid #404552; +} + +.markdown:not(code) table tr:nth-child(2n) { + background-color: #2a2e39; +} + +.markdown:not(code) table tr:nth-child(2n-1) { + background-color: #383b44; +} + +.markdown:not(code) table thead tr:nth-child(2n-1) { + background-color: #464c5d !important; +} + +.markdown:not(code) table td, +.markdown:not(code) table th { + border-color: #4c505c !important; +} + +.repository.file.editor.edit, +.repository.wiki.new .CodeMirror { + .editor-preview, + .editor-preview-side, + & + .editor-preview-side { + background: #353945; + + .markdown:not(code).ui.segment { + border-width: 0; + } + } +} + +.ui.dropdown .menu { + background: #2c303a; +} + +.ui.dropdown .menu > .message:not(.ui) { + color: #636363; +} + +.ui.input { + color: #dbdbdb; +} + +.overflow.menu .items .item { + color: #9d9d9d; +} + +.overflow.menu .items .item:hover { + color: #dbdbdb; +} + +.ui.segment { + background: #353945; + color: #9e9e9e !important; + border: 1px solid #404552; +} + +.ui.list > .item > .content { + color: #9e9e9e !important; +} + +.ui.active.button:active, +.ui.button:active, +.ui.button:focus, +.ui.active.button { + background-color: #2e3e4e; + color: #dbdbdb; +} + +.ui.active.button:hover { + background-color: #475e75; + color: #dbdbdb; +} + +.ui.dropdown .menu .selected.item, +.ui.dropdown.selected { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item:hover { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item { + color: #9e9e9e; +} + +.ui.attached.segment { + border: 1px solid #404552; +} + +.repository.view.issue .comment-list .event > .svg.issue-symbol { + background: #3b4954; +} + +.repository.view.issue .comment-list .event > .svg:not(.issue-symbol) { + text-shadow: -2px 0 #383c4a, 0 2px #383c4a, 2px 0 #383c4a, 0 -2px #383c4a; +} + +.ui .text.grey a { + color: #dbdbdb !important; +} + +.ui .comment .actions a { + color: #9e9e9e !important; +} + +.ui .comment .actions a.active, +.ui .comment .actions a:hover { + color: #fff !important; +} + +.repository.view.issue .comment-list .comment .content { + > .bottom.segment { + background: #353945; + a { + border: solid 1px #353945; + background-color: #353945; + } + } + + .header { + color: #dbdbdb; + background-color: #404552; + border-bottom: 1px solid #353944; + } + + .merge-section { + background-color: #404552; + border-top: 1px solid #353944; + } + + .header:after, + > .merge-section.no-header:after { + border-right-color: #404552; + } + + .header:before, + > .merge-section.no-header:before { + border-right-color: #404552; + } +} + +.repository.new.issue .comment.form .content:after { + border-right-color: #353945; +} + +.repository.new.issue .comment.form .content:before { + border-right-color: #353945; +} + +.repository.view.issue .comment-list:not(.prevent-before-timeline):before, +.repository.view.issue .comment-list .timeline:before { + background-color: #3b4954; +} + +.repository.view.issue .comment-list .timeline-item .badge { + background-color: #383c4a; + border-color: #3b4954; + color: #9e9e9e; +} + +.repository.view.issue .comment-list .comment .tag { + color: #dbdbdb; + border-color: rgb(152, 152, 152); +} + +.repository.view.issue .comment-list .timeline-item .badge.badge-commit { + background: radial-gradient(#383c4a 40%, transparent 40%) no-repeat; +} + +.repository .comment.form .content .form:after { + border-right-color: #313c47; +} + +.repository .comment.form .content .form:before { + border-right-color: #313c47; +} + +.ui .text.grey a:hover { + color: #dbdbdb !important; +} + +.ui.basic.green.active.button, +.ui.basic.green.buttons .active.button { + color: #13ae38 !important; + box-shadow: 0 0 0 1px #13ae38 inset !important; +} + +.ui.form textarea, +.ui.form textarea:focus { + color: #dbdbdb; + background: #404552; + border: 2px solid #353945; +} + +.ui.form textarea:focus { + border: 1px solid #456580; +} + +.ui .info.segment.top { + background-color: #404552 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td.lines-num { + background-color: #4e2c2c !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td.lines-num { + background-color: #2c4632 !important; +} + +.removed-code { + background-color: #5f3737; +} + +.added-code { + background-color: #3a523a; +} + +.tag-code, +.tag-code td { + background: #353945 !important; + +} +.tag-code td.lines-num { + background-color: #3a3e4c !important; +} + +.tag-code td.lines-type-marker, +td.blob-hunk { + color: #dbdbdb !important; +} + +.ui.vertical.menu .active.item { + background: #4b5162; +} + +.ui.vertical.menu .item { + background: #353945; +} + +.ui.vertical.menu .header.item { + background: #404552; +} + +.ui.vertical.menu { + background: #353945; + border: 1px solid #333640; +} + +.ui.repository.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui .text.blue { + color: #87ab63 !important; +} + +.ui.selection.active.dropdown, +.ui.selection.active.dropdown .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.active.dropdown:hover, +.ui.selection.active.dropdown:hover .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.dropdown { + background: #404552; + border: 1px solid #404552; + color: #9e9e9e; +} + +.ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; +} + +.ui.card, +.ui.cards > .card { + background: #353945; + box-shadow: 0 1px 3px 0 #4c505c, 0 0 0 1px #4c505c; +} + +.ui.card > .content > .header, +.ui.cards > .card > .content > .header { + color: #dbdbdb; +} + +.ui.card > .extra a:not(.ui), +.ui.cards > .card > .extra a:not(.ui) { + color: #87ab63; +} + +.ui .text.black { + color: #9e9e9e; +} + +.ui .text.black:hover { + color: #dbdbdb; +} + +.ui.secondary.segment { + background: #353945; +} + +.ui.secondary.pointing.menu { + border-bottom-color: rgba(255, 255, 255, .15); +} + +.ui.secondary.pointing.menu .active.item { + color: #dbdbdb; +} + +.ui.user.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui.secondary.pointing.menu .active.item:hover { + color: #dbdbdb; +} + +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; +} + +.ui.pointing.dropdown > .menu:not(.hidden)::after { + background: #2c303a; +} + +.ui.checkbox label, +.ui.checkbox + label, +.ui.form .field > label { + color: #9e9e9e; +} + +.ui.form .inline.field > label, +.ui.form .inline.field > p, +.ui.form .inline.fields .field > label, +.ui.form .inline.fields .field > p, +.ui.form .inline.fields > label { + color: #9e9e9e; +} + +.user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #3f4451; +} + +.explore .navbar { + background-color: #2a2e3a !important; +} + +.ui.menu.new-menu { + background: #2a2e3a; + border-color: transparent !important; + + @media only screen and (max-width: 1200px) { + &:after { + background: linear-gradient(to right, transparent 0%, #2a2e3a 100%); + } + } +} + +input { + background: #2e323e; +} + +.settings .key.list .item:not(:first-child) { + border-top: 1px solid #404552; +} + +.ui.attached.info.message, +.ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; +} + +.ui.bottom.attached.message { + background-color: #2c662d; + color: #87ab63; +} + +.ui.bottom.attached.message .pull-right { + color: #87ab63; +} + +.ui.info.message { + background-color: #2c3b4a; + color: #9ebcc5; +} + +.ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; +} + +.ui.red.message, +.ui.error.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.ui.red.button, +.ui.red.buttons .button { + background-color: #7d3434; +} + +.ui.red.button:hover, +.ui.red.buttons .button:hover { + background-color: #984646; +} + +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: #dbdbdb !important; +} + +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #304251; + opacity: 1; + color: #7f98ad; + border-color: #304251; +} + +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #304251; +} + +.ui.checkbox .box:before, +.ui.checkbox label:before { + background: #304251; + border: 1px solid #304251; +} + +.ui.checkbox label:before { + border-color: #476075; +} + +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #304251; + border-color: rgba(34, 36, 38, .35); +} + +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label, +.ui.checkbox input:focus ~ label:after { + color: #9a9a9a; +} + +.ui.selection.dropdown:hover { + border: 1px solid #456580; +} + +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; +} + +.ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; +} + +.ui.positive.message { + background-color: #0d491b; + color: #87ab63; + box-shadow: 0 0 0 1px #2d693b inset, 0 0 0 0 transparent; +} + +.ui.negative.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #4c505c; +} + +.ui.form .dropzone { + border: 2px dashed #7f98ad; + background-color: #2e323e; + + .dz-button { + color: rgba(158, 158, 158, .8); + } +} + +.ui.form .dropzone:hover .dz-button { + color: rgba(158, 158, 158, 1); +} + +.ui.basic.red.button, +.ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset !important; + color: #a04141 !important; +} + +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} + +.ui.list .list > .item .description, +.ui.list > .item .description { + color: #9e9e9e; +} + +.ui.user.list .item .description a { + color: #668cb1; +} + +.repository.file.list #repo-files-table tbody .svg.octicon-file-directory, +.repository.file.list #repo-files-table tbody .svg.octicon-file-submodule { + color: #7c9b5e; +} + +.ui.blue.button:focus, +.ui.blue.buttons .button:focus { + background-color: #a27558; +} + +.ui.basic.blue.button:hover, +.ui.basic.blue.buttons .button:hover { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.basic.blue.button:focus, +.ui.basic.blue.buttons .button:focus { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.repository.labels .ui.basic.black.label { + background-color: #bbbbbb !important; +} + +.lines-commit { + background: #2e323e !important; +} + +.bottom-line { + border-color: #4e525e !important; +} + +.lines-num { + color: #9e9e9e !important; + border-color: #2d2d2d !important; +} + +td.blob-excerpt { + background-color: rgba(0, 0, 0, .15); +} + +a.blob-excerpt { + color: #ccc; + background: #393d4a; +} + +a.blob-excerpt:hover { + background: #87ab63; +} + +.code-view .lines-code.active { + background: #534d1b !important; +} + +a.ui.label:hover, +a.ui.labels .label:hover { + background-color: #505667 !important; + color: #dbdbdb !important; +} + +.repository #commits-table td.sha .sha.label, +.repository #repo-files-table .sha.label { + border-color: #888; +} + +.repository #commits-table td.sha .sha.label.isSigned .detail.icon, +.repository #repo-files-table .sha.label.isSigned .detail.icon { + background: none; + border-left-color: #888; +} + +.repository .ui.attached.message.isSigned.isVerified { + background-color: #394829; + color: #9e9e9e; + + &.message { + color: #87ab63; + .ui.text { + color: #9e9e9e; + } + .pull-right { + color: #87ab63; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUntrusted { + background-color: #4a3903; + color: #9e9e9e; + &.message { + color: #c2c193; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2c193; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUnmatched { + background-color: #4e3321; + color: #9e9e9e; + &.message { + color: #c2a893; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2a893; + } + } +} + +.repository .ui.attached.message.isSigned.isWarning { + background-color: rgba(80, 23, 17, .6); + &.message { + color: #d07d7d; + .ui.text { + color: #d07d7d; + } + .pull-right { + color: #9e9e9e; + } + } +} + +.repository .label.list .item { + border-bottom: 1px dashed #4c505c; +} + +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.text.yellow, +.yellow.icon.icon.icon { + color: #e4ac07 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #2a2e3a; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6), +.repository .diff-file-box .code-diff-split tbody tr td.add-code, +.repository .diff-file-box .code-diff-split tbody tr td.lines-num-new.add-code { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr td.del-code { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.organization.teams .detail .item:not(:last-child), +.organization.members .list .item { + border-bottom-color: #404552; +} + +.ui.blue.button:active, +.ui.blue.buttons .button:active { + background-color: #a27558; +} + +#git-graph-container li a { + color: #c79575; +} + +#git-graph-container li .author { + color: #c79575; +} + +.ui.header .sub.header { + color: #9e9e9e; +} + +.ui.dividing.header { + border-bottom: 1px solid #4c505c; +} + +.ui.modal > .header { + background: #404552; + color: #dbdbdb; +} + +.ui.modal > .actions { + background: #404552; + border-top: 1px solid #404552; +} + +.ui.modal > .content { + background: #383c4a; +} + +.editor-toolbar { + background-color: #404552; + border-color: #7f98ad; +} + +.edit-diff > div > .ui.table { + border-left-color: #404552 !important; + border-right-color: #404552 !important; +} + +.editor-toolbar a { + color: #87ab63 !important; +} + +.editor-toolbar a.active, +.editor-toolbar a:hover { + background: #2a2e3a; + border-color: transparent; +} + +.editor-toolbar i.separator { + border-right-color: #7f98ad; +} + +.repository .diff-detail-box { + background-color: #383c4a; + + .detail-files { + background-color: inherit; + } + + &.sticky { + border-bottom-color: rgba(255, 255, 255, .1); + } +} + +.comment-code-cloud { + border-color: #3a3a3a; + + &:before { + border-bottom: 13px solid #5a5a5a; + } + + .ui.attached.top.header { + background: none transparent; + border: 0; + } + + .ui.active.tab { + &:not(.markdown) { + textarea:focus { + border: none; + } + + background: #404552; + } + + border-color: rgba(255, 255, 255, .15); + } + + .footer { + border-top-color: #5a5a5a; + + .markdown-info { + color: inherit; + } + + } +} + +.add-comment-left.add-comment-right .ui.attached.header { + border-color: #5d5c5c; + border-right: none; +} + +.file-comment { + color: #888888; +} + +.ui.comments .comment { + .author { + color: #dbdbdb; + } + + .metadata { + color: #808084; + } + + .text { + color: #9e9e9e; + } +} + +.heatmap(@heat) { + @heatmap-cold: #2d303b; + @heatmap-hot: #a0cc75; + background-color: mix(@heatmap-hot, @heatmap-cold, @heat); +} + +.heatmap-color-0 { + .heatmap(0%); +} + +.heatmap-color-1 { + .heatmap(20%); +} + +.heatmap-color-2 { + .heatmap(40%); +} + +.heatmap-color-3 { + .heatmap(60%); +} + +.heatmap-color-4 { + .heatmap(80%); +} + +.heatmap-color-5 { + .heatmap(100%); +} + +.activity-bar-graph { + background-color: #a0cc75; + color: #9e9e9e; +} + +/* code mirror dark theme */ + +.CodeMirror { + color: #9daccc; + background-color: #2e323e; + border-color: #7f98ad; + border-top: 0; + + div.CodeMirror-cursor { + border-left: 1px solid #9e9e9e; + } + + .CodeMirror-gutters { + background-color: #2e323e; + } + + ::selection, + ::-moz-selection, + .CodeMirror-selected { + background: #42402f !important; + } + + &.cm-s-default, + &.cm-s-paper { + .cm-property { + color: #a0cc75; + } + + .cm-header { + color: #9daccc; + } + + .cm-quote { + color: #009900; + } + + .cm-keyword { + color: #cc8a61; + } + + .cm-atom { + color: #ef5e77; + } + + .cm-number { + color: #ff5656; + } + + .cm-def { + color: #e4e4e4; + } + + .cm-variable-2 { + color: #00bdbf; + } + + .cm-variable-3 { + color: #008855; + } + + .cm-comment { + color: #8e9ab3; + } + + .cm-string { + color: #a77272; + } + + .cm-string-2 { + color: #ff5500; + } + + .cm-meta, + .cm-qualifier { + color: #ffb176; + } + + .cm-builtin { + color: #b7c951; + } + + .cm-bracket { + color: #999977; + } + + .cm-tag { + color: #f1d273; + } + + .cm-attribute { + color: #bfcc70; + } + + .cm-hr { + color: #999999; + } + + .cm-url { + color: #c5cfd0; + } + + .cm-link { + color: #d8c792; + } + + .cm-error { + /* color: #ff6e00; */ + color: #dbdbeb; + } + } +} + +.ui.popup { + background-color: #383c4a; + color: #9e9e9e; + border-color: #9e9e9e; + + &.top::before { + background-color: #383c4a; + } +} + +.markdown:not(code) h1 { + border-bottom-color: #888; +} + +.markdown:not(code) blockquote { + border-left-color: #888; +} + +.markdown:not(code) code, +.markdown:not(code) tt { + background-color: #2a2e3a; +} + +footer .container .links > * { + border-left-color: #888; +} + +.repository.file.list #repo-files-table tbody .svg { + color: #9e9e9e; +} + +.repository.release #release-list > li .detail { + border-left-color: #4c505c; +} + +.repository.release #release-list > li .detail .dot { + background-color: #888; + border-color: #383c4a; +} + +.repository.release #release-list > li .detail .download .list { + border-top-color: #404552; +} + +.repository.release #release-list > li .detail .download .list li { + border-bottom-color: #404552; +} + +.tribute-container { + box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .6); +} + +.tribute-container ul { + background: #2d303b !important; +} + +.tribute-container li.highlight, +.tribute-container li:hover { + background: #728e5e !important; +} + +.repository .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { + color: #2a2e3a; +} + +#git-graph-container.monochrome #rel-container .flow-group { + stroke: dimgrey; + fill: dimgrey; +} + +#git-graph-container.monochrome #rel-container .flow-group.highlight { + stroke: darkgrey; + fill: darkgrey; +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group { + &.flow-color-16-5 { + stroke: #5543b1; + fill: #5543b1; + } +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight { + &.flow-color-16-5 { + stroke: #7058e6; + fill: #7058e6; + } +} + +#git-graph-container #rev-list li.highlight, +#git-graph-container #rev-list li.hover { + background-color: rgba(255, 255, 255, .05); +} + +#git-graph-container #rev-list li.highlight.hover { + background-color: rgba(255, 255, 255, .1); +} + +#git-graph-container .ui.buttons button#flow-color-monochrome.ui.button { + border-left-color: rgb(76, 80, 92); + border-left-style: solid; + border-left-width: 1px; +} + +.mermaid-chart { + filter: invert(84%) hue-rotate(180deg); +} + +.is-loading:after { + border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; +} + +.markdown-block-error { + border: 1px solid rgba(121, 71, 66, .5) !important; + border-bottom: none !important; +} diff --git a/frontend/3115/public/css/theme-werefox.css b/frontend/3115/public/css/theme-werefox.css new file mode 100644 index 0000000..46270eb --- /dev/null +++ b/frontend/3115/public/css/theme-werefox.css @@ -0,0 +1,1113 @@ +body { + background: #121212; + color: #afafaf; +} +a { + color: #69b2f1; +} +a:hover { + color: #82c0ef; +} +.following.bar.light { + background: #14589b; +} +.ui.secondary.menu .item { + color: #cfc5c5; + padding: 8px 8px; +} +.ui.secondary.menu .active.item { + color: #fafafa; + padding: 5px 12px; +} +.following.bar .top.menu a.item:hover { + color: #fff; +} +.following.bar.light { + border-bottom: 1px solid #313131; +} +.ui.attached.header { + background: #242424; + border: 1px solid #203241; + color: #dbdbdb; +} +.ui.attached.table { + border: 1px solid #203241; + background: #001221; +} +.feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #203241; +} +.feeds .list ul li.private { + background: #151825; +} +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu a.item:hover { + color: #fff; +} +.ui.menu .ui.dropdown .menu > .item { + background: #0f56b0 !important; + color: #dbdbdb !important; +} +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border: 1px solid #203241; +} +footer { + background: #14589b; + border-top: 1px solid #313131; +} +.ui.menu .dropdown.item .menu { + background: #0f56b0; +} +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; +} +.ui.dropdown .menu > .header { + color: #dbdbdb; +} +.ui.red.label, +.ui.red.labels .label { + background-color: #802020 !important; + border-color: #db2828 !important; +} +.ui.menu { + background: #0202aa; + border: 1px solid #203241; +} +.ui.menu .item { + background: #051865; + color: #aaaaaa; +} +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + color: #dbdbdb; +} +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + color: #dbdbdb; +} +.ui.menu .active.item { + background: #051552; + color: #dbdbdb; +} +.ui.input input { + background: #000009; + border: 1px solid #203241; + color: #dbdbdb; +} +.ui.input input:focus, +.ui.input.focus input { + background: #000000; + border: 1px solid #456580; + color: #dbdbdb; +} +.ui.label { + color: #dbdbdb; + background-color: #313f4c; +} +.issue.list > .item .title { + color: #668cb1; +} +.issue.list > .item .title:hover { + color: #aaaabb; +} +.issue.list > .item { + border-bottom: 1px dashed #475767; +} +.ui.green.label, +.ui.green.labels .label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} +.issue.list > .item .comment { + color: #129c92; +} +.ui.basic.button, +.ui.basic.buttons .button { + color: #a9a9a9 !important; +} +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + color: #b9c1ce !important; +} +.ui.basic.red.active.button, +.ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset !important; + color: #c75252 !important; +} +.ui.basic.button:focus, +.ui.basic.button:hover, +.ui.basic.buttons .button:focus, +.ui.basic.buttons .button:hover { + background: transparent !important; + color: #dbdbdb !important; +} +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover { + cursor: default !important; + background-color: #151825 !important; + color: #9e9e9e; +} +.ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #212d38; +} +.repository .header-wrapper { + background-color: #151825; +} +.ui.tabular.menu .active.item { + background: #232323; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; +} +.ui.secondary.pointing.menu .item { + border-bottom-width: 0px; + align-self: center; + background: #121212; + margin: 1px 1px 1px 1px; + padding: 8px 6px; +} +.ui.tabular.menu .item { + color: #9e9e9e; +} +.ui.tabular.menu .item:hover { + color: #dbdbdb; +} +.ui.header, +.ui.breadcrumb .divider { + color: #82c0ef; +} +.ui.blue.label, +.ui.blue.labels .label { + background-color: #081f6f !important; + border-color: #081f6f !important; + color: #b5b5b5 !important; +} +.ui.menu .item > .label { + background: #565454; +} +.ui.blue.button, +.ui.blue.buttons .button { + background-color: #26577b; +} +.ui.form input:not([type]), +.ui.form input[type="text"], +.ui.form input[type="email"], +.ui.form input[type="search"], +.ui.form input[type="password"], +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="tel"], +.ui.form input[type="time"], +.ui.form input[type="url"], +.ui.form input[type="number"] { + background: #151825; + border: 1px solid rgb(48, 66, 81); +} +.ui.form input:not([type]):focus, +.ui.form input[type="text"]:focus, +.ui.form input[type="email"]:focus, +.ui.form input[type="search"]:focus, +.ui.form input[type="password"]:focus, +.ui.form input[type="date"]:focus, +.ui.form input[type="datetime-local"]:focus, +.ui.form input[type="tel"]:focus, +.ui.form input[type="time"]:focus, +.ui.form input[type="url"]:focus, +.ui.form input[type="number"]:focus { + background: #151825; + border: 1px solid #456580; + color: #dbdbdb; +} +.ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #456580 !important; +} +.ui.green.button, +.ui.green.buttons .button { + background-color: #217a45; + color: #fff; + text-shadow: none; + background-image: none; +} +.ui.green.button:focus, +.ui.green.buttons .button:focus { + background-color: #085121 !important; + color: #fff; + text-shadow: none; +} +.ui.button { + background: #0c0c53; + border: 1px solid #313c47; + color: #dbdbdb; +} +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + background: #151825; + border: 1px solid #313c47; + color: #a0bdcb; +} +.ui.button:hover { + background-color: #151899; + color: #dbdbdb; +} +.ui.table thead th { + background: #14589b; + color: #dbdbdb; +} +.repository.file.list #repo-files-table tr:hover { + background-color: #424242; +} +.ui.table { + color: #797979 !important; + border: 1px solid #313c47; + background: #121212; +} +.ui.table tbody tr { + border-bottom: 1px solid red; + background: #242424; +} +.ui.attached.table.segment { + background: #242424; + color: #dbdbdb !important; +} +.markdown:not(code) h2 { + border-bottom: 1px solid #484848; +} +.hljs, +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #2ebce2 !important; + background: #181818 !important; +} +.markdown:not(code) .highlight pre, +.markdown:not(code) pre { + background-color: #081004; + border: 1px solid #246; +} +.ui.dropdown .menu { + background: #151825; +} +.ui.dropdown .menu > .message:not(.ui) { + color: rgb(99, 99, 99); +} +.ui.segment { + background: #074c95; + color: #dbdbdb !important; + border: 1px solid #313c47; +} +.ui.active.button:active, +.ui.button:active, +.ui.button:focus { + background-color: #2e3e4e; + color: #dbdbdb; +} +.ui.dropdown .menu .selected.item, +.ui.dropdown.selected { + color: #dbdbdb; +} +.ui.dropdown .menu > .item:hover { + color: #dbdbdb; +} +.ui.dropdown .menu > .item { + color: #9e9e9e; +} +.ui.attached.segment { + border: 1px solid #313c47; +} +.repository.view.issue .comment-list .comment .content > .bottom.segment { + background: #151825; +} +.repository.view.issue .comment-list .comment .content .header { + color: #dbdbdb; + background-color: #121247; + border-bottom: 1px solid #313c47; +} +.ui.comments .comment .actions a { + color: #dbdbdb; +} +.repository.view.issue .comment-list .comment .content .header:after { + border-right-color: #121247; +} +.repository.view.issue .comment-list .comment .content .header:before { + border-right-color: #121247; +} +.repository.view.issue .comment-list:before { + background-color: #121247; +} +.repository .comment.form .content .form:after { + border-right-color: #121247; +} +.repository .comment.form .content .form:before { + border-right-color: #121247; +} +.ui .text.grey { + color: #d0d0d0 !important; +} +.ui .text.grey a { + color: #66dbdd !important; +} +.ui .text.grey a:hover { + color: #aadbff !important; +} +.ui.form textarea, +.ui.form textarea:focus { + background: #232323; + border: 1px solid #313c47; + color: #dbdbdb; +} +.ui.form textarea:focus { + border: 1px solid #456580; +} +.ui .info.segment.top { + background-color: #060639 !important; +} +.repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; +} +.ui.table tbody tr { + border-bottom: 1px solid #2d2d2d; +} +.repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #2c1616 !important; + border-color: #634343 !important; +} +.repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #101044 !important; + border-color: #597359 !important; +} +.repository .diff-file-box .code-diff tbody tr .added-code { + background-color: #15217b; +} +.repository .diff-file-box .code-diff .lines-num { + border-right: 1px solid #2d2d2d; +} +.repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; +} +.repository .diff-file-box .code-diff tbody tr.tag-code td, +.repository .diff-file-box .code-diff tbody tr td.tag-code { + border-color: #2d2d2d !important; +} +.repository .diff-file-box .file-body.file-code .lines-num-old { + border-right: 1px solid #2d2d2d; +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #986c88 !important; +} +.hljs-string, +.hljs-doctag { + color: #949494; +} +.repository .diff-file-box .code-diff tbody tr .removed-code { + background-color: #7b2115; +} +.repository .diff-file-box .code-diff tbody tr.tag-code td, +.repository .diff-file-box .code-diff tbody tr td.tag-code { + background-color: #191927 !important; +} +.ui.vertical.menu .active.item { + background: #232323; +} +.ui.vertical.menu .item { + background: #151825; +} +.ui.vertical.menu .header.item { + background: #001221; +} +.ui.vertical.menu { + background: #151825; +} +.ui.repository.list .item:not(:first-child) { + border-top: 1px solid #313c47; +} +.ui.selection.dropdown { + background: #151825; + border: 1px solid rgb(48, 66, 81); + color: #9e9e9e; +} +.ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; +} +.ui.tabular.menu { + border-bottom: 1px solid #313c47; +} +.ui.card, +.ui.cards > .card { + background: #151825; + box-shadow: 0 1px 3px 0 #203241, 0 0 0 1px #203241; +} +.ui.card > .content > .header, +.ui.cards > .card > .content > .header { + color: #dbdbdb; +} +.ui.card > .extra a:not(.ui), +.ui.cards > .card > .extra a:not(.ui) { + color: #82c0ef; +} +.ui .text.black { + color: #9e9e9e; +} +.ui .text.black:hover { + color: #dbdbdb; +} +.ui.secondary.pointing.menu .active.item { + color: #dbdbdb; + background: #074c95; +} +.ui.secondary.pointing.menu .active.item:hover { + border-top-color: #203241; + background: #021288; + color: #dbdbdb; +} +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; +} +.ui.checkbox label, +.ui.checkbox + label, +.ui.form .field > label { + color: #dbdbdb; +} +.ui.form .inline.field > label, +.ui.form .inline.field > p, +.ui.form .inline.fields .field > label, +.ui.form .inline.fields .field > p, +.ui.form .inline.fields > label { + color: #dbdbdb; +} +.user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #203241; +} +.ui.form input:not([type]), +.ui.form input[type="text"], +.ui.form input[type="email"], +.ui.form input[type="search"], +.ui.form input[type="password"], +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="tel"], +.ui.form input[type="time"], +.ui.form input[type="url"], +.ui.form input[type="number"] { + color: #9e9e9e; +} +.ui.attached.info.message, +.ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; +} +.ui.info.message { + background-color: #121247; + color: #9ebcc5; +} +.ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; +} +.ui.red.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; +} +.ui.red.button, +.ui.red.buttons .button { + background-color: #7b2727 !important; +} +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: #dbdbdb !important; +} +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + color: rgb(127, 152, 173); +} +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #001221; +} +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #001221; +} +.ui.checkbox .box:before, +.ui.checkbox label:before { + background: #001221; + border: 1px solid #203241; +} +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #001221; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + opacity: 1; + color: rgb(127, 152, 173); +} +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:after { + color: rgb(127, 152, 173); +} +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label, +.ui.checkbox input:focus ~ label:after { + color: #9a9a9a; +} +.ui.selection.dropdown:hover { + border-color: rgba(34, 36, 38, 0.35); + border: 1px solid #456580; +} +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; +} +.ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; +} +.ui.negative.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; +} +.hljs-tag, +.hljs-name, +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #d22121 !important; +} +.user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #203241; +} +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-attr { + color: #6896ba !important; +} +.hljs-string, +.hljs-doctag { + color: #8ab398; +} +.ui.form .dropzone { + border: 2px dashed #4c5d6b; +} +.ui.basic.red.button, +.ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset !important; + color: #a0a0a0 !important; +} +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} +.ui.list .list > .item .description, +.ui.list > .item .description { + color: #9e9e9e; +} +.ui.user.list .item .description a { + color: #668cb1; +} +.repository.file.list #file-content .code-view .lines-num { + background: #232323; +} +.repository.file.list #file-content .code-view .lines-num pre, +.repository.file.list #file-content .code-view .lines-code pre, +.repository.file.list #file-content .code-view .lines-num ol, +.repository.file.list #file-content .code-view .lines-code ol, +.repository.file.list #file-content .code-view .lines-num .hljs, +.repository.file.list #file-content .code-view .lines-code .hljs { + background-color: #151825; +} +a.ui.label:hover, +a.ui.labels .label:hover { + background-color: #12369a; + color: rgb(219, 219, 219); +} +.ui.secondary.segment { + background: #020415; +} +.explore .navbar { + background-color: #151825 !important; +} +.ui.menu.new-menu { + background-color: #232d37 !important; +} +input { + line-height: normal; + background: #232323; + border: 1px solid #313c47; + padding: 7px 12px; +} +.ui.accordion .title:not(.ui) { + color: #dedede; +} +.ui.user.list .item:not(:first-child) { + border-top: 1px solid #313c47; +} +.ui.toggle.checkbox input:checked ~ .box, +.ui.toggle.checkbox input:checked ~ label { + color: rgb(207, 207, 207) !important; +} +.repository .ui.segment.sub-menu .list .item a { + color: #aaa; +} +.ui.link.list.list .active.item, +.ui.link.list.list .active.item a:not(.ui) { + color: rgba(222, 222, 222, 0.95); +} +.repository #commits-table.ui.basic.striped.table tbody tr:nth-child(2n) { + background-color: rgb(12, 12, 15) !important; +} +.ui.form input:not([type]), +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="email"], +.ui.form input[type="file"], +.ui.form input[type="number"], +.ui.form input[type="password"], +.ui.form input[type="search"], +.ui.form input[type="tel"], +.ui.form input[type="text"], +.ui.form input[type="time"], +.ui.form input[type="url"] { + background: #121212; + color: rgba(203, 203, 203, 0.9); +} +.repository .header-wrapper { + background-color: #202020; + margin-top: -15px; + padding-top: 15px; +} +.ui.tabular.menu .active.item { + background: #1b3471; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; +} +.ui.message { + color: #efefef !important; + background: #661111; +} +.repository.view.issue .pull-desc code { + color: #54a5ff; +} +.ui.fluid.input { + margin-bottom: 2px; +} +.ui .text.purple { + color: #a17cd8 !important; +} +.ui.positive.message { + background-color: #151532; + color: #dedede !important; +} +.swagger-ui .border-box, +.swagger-ui a, +.swagger-ui article, +.swagger-ui body, +.swagger-ui code, +.swagger-ui dd, +.swagger-ui div, +.swagger-ui dl, +.swagger-ui dt, +.swagger-ui fieldset, +.swagger-ui footer, +.swagger-ui form, +.swagger-ui h1, +.swagger-ui h2, +.swagger-ui h3, +.swagger-ui h4, +.swagger-ui h5, +.swagger-ui h6, +.swagger-ui header, +.swagger-ui html, +.swagger-ui input[type="email"], +.swagger-ui input[type="number"], +.swagger-ui input[type="password"], +.swagger-ui input[type="tel"], +.swagger-ui input[type="text"], +.swagger-ui input[type="url"], +.swagger-ui legend, +.swagger-ui li, +.swagger-ui main, +.swagger-ui ol, +.swagger-ui p, +.swagger-ui pre, +.swagger-ui section, +.swagger-ui table, +.swagger-ui td, +.swagger-ui textarea, +.swagger-ui th, +.swagger-ui tr, +.swagger-ui { + font-family: Open Sans, sans-serif; + color: #eeeeee; +} +.swagger-ui .scheme-container { + background: #131313; +} +.swagger-ui .opblock .opblock-summary-operation-id, +.swagger-ui .opblock .opblock-summary-path, +.swagger-ui .opblock .opblock-summary-path__deprecated { + color: #bbbbbb; +} +.swagger-ui .opblock .opblock-summary-description { + color: #dddddd; +} +.swagger-ui .opblock-tag { + color: #dddddd; +} +.swagger-ui section.models h4 { + color: #e7e7e7; +} +.swagger-ui .model-title { + color: #e0e0e0; +} +.swagger-ui .prop-type { + color: #54c9f8; +} +.swagger-ui section.models .model-container { + background: #080808; +} +.swagger-ui select { + background: #4477b0; + color: #dadada; +} +.swagger-ui .scheme-container .schemes > label { + color: #dadada; +} +.swagger-ui .info .title { + color: #dadada; +} +.swagger-ui .info .base-url { + color: #dadada; +} +.swagger-ui .topbar { + background-color: #050588; +} +.swagger-ui .topbar a { + color: #dadada; + background-color: #050588; +} +.swagger-ui .topbar .download-url-wrapper input[type="text"] { + border: 2px solid #0018dd; + background-color: #050520; +} +.swagger-ui .topbar .download-url-wrapper .download-url-button { + background: #000fdd; + color: #fff; +} +.ui.modal > .header { + background: #6e0000; + color: #d3d3d3; +} +.ui.modal > .content { + background: #350a0a; +} +.ui.warning.message { + background-color: #422600; + color: #573a08; +} +.ui.horizontal.segments { + background-color: #050525; +} +.repository.file.list .non-diff-file-content .code-view .lines-code .hljs, +.repository.file.list .non-diff-file-content .code-view .lines-code ol, +.repository.file.list .non-diff-file-content .code-view .lines-code pre, +.repository.file.list .non-diff-file-content .code-view .lines-num .hljs, +.repository.file.list .non-diff-file-content .code-view .lines-num ol, +.repository.file.list .non-diff-file-content .code-view .lines-num pre { + background-color: #020212; +} +.repository.file.list .non-diff-file-content .code-view .lines-num { + color: #aaa; + background: #020211; +} +.repository .dif { + background-color: #332020 !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.del-code, +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #321212 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #222232 !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.del-code, +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1) { + background-color: #322222 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.add-code, +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6) { + background-color: #121232 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #151515; +} + +.ui.blue.button, +.ui.blue.buttons .button { + color: #ddd; + background-color: #12369a; +} +.ui.blue.button:focus, +.ui.blue.buttons .button:hover { + background-color: #121269; + color: #fff; +} +.CodeMirror { + border: 1px solid #555; + padding: 1px; + background: #151515; +} +.CodeMirror pre { + color: #e66a6a !important; +} +.CodeMirror-linenumber { + color: #ddd; + background: #0a0a0a; +} +.ui .sha.label { + background: #242424; + color: #b6b6b6; +} +.hljs-addition { + background: #15217b !important; + color: #bdbdbd; +} +.hljs-deletion { + background: #7b2115; + color: #bdbdbd; +} +.repository .diff-detail-box { + background: #060639; + padding: 7px; +} +.repository .diff-detail-box ol li { + background: #0a0a0a; +} +/* Checkbox element, when checked */ +input[type="checkbox"]:checked { + box-shadow: 0 0 0 2px #acacac; +} +.repository.file.editor .tab[data-tab="write"] .CodeMirror { + background: #151515; +} +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber, +.CodeMirror-scroll, +.CodeMirror-sizer { + background: #151515; +} +.cm-s-default .cm-atom { + color: #48eca4; +} +.CodeMirror .CodeMirror-code .cm-string { + color: #d4e41e; +} +.CodeMirror .CodeMirror-code .cm-tag { + color: #dedede; +} +.CodeMirror-selected { + background: #333 !important; +} +.CodeMirror-cursor { + width: 2px; + background: #0f0; +} +.cm-s-default .cm-meta, +.cm-s-default .cm-qualifier { + color: #a8cfe7; +} +.cm-s-default .cm-variable-3 { + color: #05ffb6; +} +.cm-s-default .cm-number { + color: #9beacb; +} +.cm-s-default .cm-keyword { + color: #d949ed; +} +.cm-s-default .cm-def { + color: #53c7d4; +} +.cm-s-default .cm-builtin { + color: #46fe47; +} +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + .hljs + li.active, +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + ol + li.active, +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + pre + li.active { + background: #00009c; + color: #eee; +} +.repository.file.list .non-diff-file-content .code-view .active { + background: #00009c; + color: #eee; +} +.ui.header .sub.header { + color: #aaa; +} +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; + background: #030c89 !important; +} +.ui.basic.button, +.ui.basic.buttons .button { + color: #dcdcdc !important; + background: #12369a !important; +} +.editor-preview, +.editor-preview-side { + background: #131313; + color: #dfdfdf; +} +.markdown:not(code) h1 { + color: #d5d5d5; +} +.markdown:not(code) h2 { + color: #d5d5d5; +} +.markdown:not(code) h3 { + color: #d5d5d5; +} +.markdown:not(code) h4 { + color: #d5d5d5; +} +.markdown:not(code) h5 { + color: #d5d5d5; +} +.markdown:not(code) h6 { + color: #d5d5d5; +} +.heatmap-color-0 { + background-color: #0a0a0a; +} +.heatmap-color-1 { + background-color: #06264f; +} +.heatmap-color-2 { + background-color: #0f3684; +} +.heatmap-color-3 { + background-color: #1956ba; +} +.heatmap-color-4 { + background-color: #2176df; +} +.heatmap-color-5 { + background-color: #3d9bdf; +} +.editor-toolbar a { + color: #71abe7 !important; +} +.markdown:not(code) code, +.markdown:not(code) tt { + font-size: 1em; + background-color: #121212; +} +::selection { + background: #777; /* WebKit/Blink Browsers */ +} +::-moz-selection { + background: #777; /* Gecko Browsers */ +} +.following.bar .brand .ui.mini.image { + width: 80px; +} +.markdown:not(code) table td, +.markdown:not(code) table th { + background: #11112d; +} +.markdown:not(code).file-view { + overflow: auto; +} +.repository .dif { + background-color: #243c24 !important; +} +.repository.view.issue .comment-list .comment .content > .merge-section { + border-top: 1px solid #2b51aa !important; + background-color: #1a3e21 !important; +} +.ui.bottom.attached.message .pull-right { + color: #bababa !important; +} +.ui.table > thead > tr > th { + background: #14589b; +} +.code-view :not(.fa):not(.octicon):not(.icon) { + background: #131313; +} +.mono.raw, +code.raw, +pre.raw { + background-color: #171717; + border: 1px solid #292929 !important; +} +footer { + color: #dbdbdb; +} diff --git a/frontend/3115/public/img/icon/favicon-16x16.png b/frontend/3115/public/img/icon/favicon-16x16.png new file mode 100644 index 0000000..8d00d34 Binary files /dev/null and b/frontend/3115/public/img/icon/favicon-16x16.png differ diff --git a/frontend/3115/public/img/icon/favicon-32x32.png b/frontend/3115/public/img/icon/favicon-32x32.png new file mode 100644 index 0000000..8a862bc Binary files /dev/null and b/frontend/3115/public/img/icon/favicon-32x32.png differ diff --git a/frontend/3115/templates/base/head.tmpl.off b/frontend/3115/templates/base/head.tmpl.off new file mode 100644 index 0000000..0760354 --- /dev/null +++ b/frontend/3115/templates/base/head.tmpl.off @@ -0,0 +1,134 @@ + + + + + + + {{if .Title}}{{.Title | RenderEmojiPlain}} - {{end}} {{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{AppName}} + + + + + + + + {{if .IsSigned}} + + {{end}} + {{if .ContextUser}} + + {{end}} + {{if .SearchLimit}} + + {{end}} +{{if .GoGetImport}} + + +{{end}} + + + + + +{{if .RequireSimpleMDE}} + +{{end}} + + + +{{if .PageIsUserProfile}} + + + + + {{if .Owner.Description}} + + {{end}} +{{else if .Repository}} + {{if .Issue}} + + + {{if .Issue.Content}} + + {{end}} + {{else}} + + + {{if .Repository.Description}} + + {{end}} + {{end}} + + +{{else}} + + + + + +{{end}} + +{{if .IsSigned }} + {{ if ne .SignedUser.Theme "gitea" }} + + {{end}} +{{else if ne DefaultTheme "gitea"}} + +{{end}} +{{template "custom/header" .}} + + + {{template "custom/body_outer_pre" .}} + +
+ + + {{template "custom/body_inner_pre" .}} + + {{if not .PageIsInstall}} + + {{end}} +{{/* +
+ + +*/}} diff --git a/frontend/3115/templates/base/head_navbar.tmpl.off b/frontend/3115/templates/base/head_navbar.tmpl.off new file mode 100644 index 0000000..9e7cbb6 --- /dev/null +++ b/frontend/3115/templates/base/head_navbar.tmpl.off @@ -0,0 +1,163 @@ + diff --git a/frontend/3115/templates/custom/body_inner_post.tmpl b/frontend/3115/templates/custom/body_inner_post.tmpl new file mode 100644 index 0000000..7c89b54 --- /dev/null +++ b/frontend/3115/templates/custom/body_inner_post.tmpl @@ -0,0 +1 @@ +
diff --git a/frontend/3115/templates/custom/body_inner_pre.tmpl b/frontend/3115/templates/custom/body_inner_pre.tmpl new file mode 100644 index 0000000..ffb9642 --- /dev/null +++ b/frontend/3115/templates/custom/body_inner_pre.tmpl @@ -0,0 +1 @@ +

McCarty Git Server

diff --git a/frontend/3115/templates/custom/header.tmpl b/frontend/3115/templates/custom/header.tmpl new file mode 100644 index 0000000..cf337e0 --- /dev/null +++ b/frontend/3115/templates/custom/header.tmpl @@ -0,0 +1,2 @@ + + diff --git a/frontend/3115/templates/home.tmpl b/frontend/3115/templates/home.tmpl new file mode 100644 index 0000000..eb748d8 --- /dev/null +++ b/frontend/3115/templates/home.tmpl @@ -0,0 +1,16 @@ +{{template "base/head" .}} +
+
+
+
+ +
+
+

+ {{AppName}} +

+
+
+
+
+{{template "base/footer" .}} diff --git a/frontend/nadal/public/css/.gitkeep b/frontend/nadal/public/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/nadal/public/img/icon/.gitkeep b/frontend/nadal/public/img/icon/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/nadal/templates/base/.gitkeep b/frontend/nadal/templates/base/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/nadal/templates/custom/.gitkeep b/frontend/nadal/templates/custom/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/nadal/templates/custom/body_inner_pre.tmpl b/frontend/nadal/templates/custom/body_inner_pre.tmpl new file mode 100644 index 0000000..ef3976d --- /dev/null +++ b/frontend/nadal/templates/custom/body_inner_pre.tmpl @@ -0,0 +1,3 @@ +
+

MIRROR KEBLER.NET GIT SERVER

+
diff --git a/readme.md b/readme.md index d69621f..16d21a5 100644 --- a/readme.md +++ b/readme.md @@ -32,10 +32,10 @@ restart gitea `sds gitea@` Use run script run in foreground -`./run ` +`./run ` for running in background -`./start ` +`./start ` `./stop` for working with custom files diff --git a/run b/run deleted file mode 100755 index eb33f7e..0000000 --- a/run +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -DEPLOY=${1:-default} -declare -A ARCHES -ARCHES=(["x86_64"]="amd64" ["arm32"]="arm32" ["armhf"]="arm32" ["arm64"]="arm64" ["aarch64"]="arm64" ) -ARCH=$(arch) -if [ -z "${ARCHES[$ARCH]}" ]; then - echo Your machine kernel architecture $ARCH is not supported by this script, aborting - exit 1 -fi -DIR=$(dirname "$(readlink -f "$0")") || exit -ARCH=$(arch) -# echo $ARCH ${ARCHES[$ARCH]} -BIN="$DIR/bin/gitea.${ARCHES[$ARCH]}" -# echo $ARCH ${ARCHES[$ARCH]} $BIN -if [ ! -f $BIN ]; then - echo $ARCH/${ARCHES[$ARCH]} gitea binary is not available in $BIN, run ./bin/update script - exit 1 -fi -INI="$DIR/config/$DEPLOY.ini" -mkdir -p $DIR/frontend/current -rsync -a --delete $DIR/frontend/default/ $DIR/frontend/current -rsync -a $DIR/frontend/$DEPLOY/ $DIR/frontend/current -export GITEA_WORK_DIR=/mnt/data/git-server -export GITEA_CUSTOM=$DIR/frontend/current -export USER=sysadmin -export HOME=/home/sysadmin -# where data and repo are located -# export -p | grep GITEA -echo Running: $BIN web -c $INI -$BIN web -c $INI diff --git a/scripts/caddy b/scripts/caddy new file mode 100644 index 0000000..9671ed5 --- /dev/null +++ b/scripts/caddy @@ -0,0 +1,16 @@ +#!/bin/bash +SDIR=$(dirname "$(readlink -f "$0")") || exit +DIR=$(dirname "$SDIR") || exit +echo Caddy Reposity Root: $DIR +source $SDIR/library +CONF=$DIR/conf/${1:-caddy}.conf +CMD=${2:-run} +get-caddy-bin # this sets $CADDY_BIN +BIN=$DIR/bin/$CADDY_BIN +[ ! -f "$BIN" ] && echo binary file $BIN does not exist && exit 1 +[ ! -x "$BIN" ] && echo binary file $BIN is not executable && exit 1 +[ ! -f "$CONF" ] && echo no configuration file $CONF && exit 1 +# source any need environment files in $DIR/env +for f in $DIR/env/*.env; do source $f; done +echo Running caddy binary $BIN with configuration $CONF and command $CMD as user $USER +$BIN $CMD --config $CONF --adapter caddyfile diff --git a/bin/gitea@.service b/scripts/gitea@.service similarity index 90% rename from bin/gitea@.service rename to scripts/gitea@.service index e13c6b4..a6ea457 100644 --- a/bin/gitea@.service +++ b/scripts/gitea@.service @@ -30,8 +30,9 @@ RestartSec=2s Type=simple User=sysadmin Group=sysadmin -Environment=GITEA_DIR=/opt/gitea -ExecStart=/bin/bash -c '${GITEA_DIR}/run %i' +Environment=GITEA_DIR=@d +Environment=GITEA_REPOS=@r +ExecStart=/bin/bash -c '${GITEA_DIR}/scripts/run -r ${GITEA_REPOS} %i ' Restart=always # If you want to bind Gitea to a port below 1024 uncomment # the two values below diff --git a/scripts/library b/scripts/library new file mode 100644 index 0000000..26f4c5c --- /dev/null +++ b/scripts/library @@ -0,0 +1,38 @@ +#!/bin/bash +[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(dirname "$BASH_SOURCE")"; pwd -P)")" + +function version () { + # https://askubuntu.com/a/952479/478337 + [[ ! -f $GITEA_DIR/gitea.bin ]] && echo "" && return 2 + CUR_VER=$($GITEA_DIR/gitea.bin -version | sed -nr 's:.*version ([^ ]+).*:\1:p') + [ ! $CUR_VER ] && return 1 + echo $CUR_VER +} + +# sets global $OS +function get_OS () { + case "$OSTYPE" in + # uncomment valid OS + darwin*) OS=darwin ;; + linux*) OS=linux ;; + # msys*) OS=windows ;; + *) ;; + esac + [ ! $OS ] && return 1 + echo $OS +} + +# sets global $ARCH +function get_arch () { +declare -A ARCHES +#ARCHES=( ["arm64"]="arm64" ["aarch64"]="arm64" ["x86_64"]="amd64" ["armv61"]="armv6" ["armv71"]="armv7" ["arm32"]="armv7" ["armhf"]="armv7" ) +# set valid architectures +ARCHES=( ["arm64"]="arm64" ["aarch64"]="arm64" ["x86_64"]="amd64" ) +ARCH=${ARCHES[$(uname -m)]} +[ ! $ARCH ] && return 1 +echo $ARCH +} + +function set-env () { +for f in $1/*.env; do source $f; done +} diff --git a/restart b/scripts/restart similarity index 100% rename from restart rename to scripts/restart diff --git a/scripts/run b/scripts/run new file mode 100755 index 0000000..1df70d5 --- /dev/null +++ b/scripts/run @@ -0,0 +1,50 @@ +#!/bin/bash +[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")" +source $GITEA_DIR/scripts/library + +declare OPTARG +declare OPTION +while getopts 'r:' OPTION; do + case "$OPTION" in + r) + GITEA_DATA_DIR=$OPTARG + ;; + *) ;; + esac +done +shift $(( OPTIND - 1 )) + +export GITEA_INSTANCE=${1:-default} +export GITEA_BIN="$GITEA_DIR/gitea.bin" +[[ ! -f $GITEA_BIN ]] && $GITEA_DIR/scripts/upgrade +[[ ! $(version) ]] && echo $GITEA_DIR/gitea.bin missing or corrupt +if [[ ! $GITEA_DATA_DIR ]]; then + GITEA_DATA_DIR=$GITEA_DIR/data +else +[[ ! $GITEA_DATA_DIR == /* ]] && { echo "repo directory $GITEA_DATA_DIR was not absolute, aborting" ; exit; } +fi +export GITEA_DATA_DIR +INI=$GITEA_DIR/config/$GITEA_INSTANCE +if ([[ -f "$INI.tmpl" ]] && [[ ! -f $GITEA_DATA_DIR/db/git.db ]]); then +# if database does not exist unlock the install page so default user can be set # && LOCK=true +# https://stackoverflow.com/a/22819516/4695378 +# search and replace data subdirectory entries in template file +cat $INI.tmpl | sed 's:@@_server_dir:'$GITEA_DATA_DIR':'g | sed 's:\(INSTALL_LOCK *= \)\(.*\):\1'${LOCK:-false}':' > $INI.ini + # TODO could replace other values as well +fi +[[ ! -f "$INI.ini" ]] && { echo "no ini file $INI.ini, aborting" ; exit; } +# echo $GITEA_DATA_DIR +# echo $GITEA_DIR +# echo $ARCH ${ARCHES[$ARCH]} $GITEA_BIN +mkdir -p $GITEA_DATA_DIR 2>/dev/null || { echo "unable to make repos directory at $GITEA_DATA_DIR, exiting"; exit; } +# setup the custom directory in /current +mkdir -p $GITEA_DIR/frontend/current +rsync -a --delete $GITEA_DIR/frontend/default/ $GITEA_DIR/frontend/current +[[ -d $GITEA_DIR/frontend/$GITEA_INSTANCE ]] && rsync -a $GITEA_DIR/frontend/$GITEA_INSTANCE/ $GITEA_DIR/frontend/current +export GITEA_WORK_DIR=$GITEA_DATA_DIR +export GITEA_CUSTOM=$GITEA_DIR/frontend/current +export USER=sysadmin +export HOME=/home/sysadmin +echo Running: $GITEA_BIN web -c $INI.ini +echo Server repos/logs/data/db will be $GITEA_DATA_DIR +$GITEA_BIN web -c $INI.ini diff --git a/start b/scripts/start similarity index 80% rename from start rename to scripts/start index 1ef247e..ad0501a 100755 --- a/start +++ b/scripts/start @@ -1,7 +1,6 @@ #!/bin/bash -DIR=$(dirname "$(readlink -f "$0")") || exit -COMMAND="$DIR/run $1" - +DIR="$(dirname "$(cd "$(dirname "$(readlink -f "$0")")";pwd -P)")"|| exit +COMMAND=$DIR/scripts/run "$@" echo $DIR $COMMAND PIDFILE="$DIR/gitea.pid" diff --git a/stop b/scripts/stop similarity index 100% rename from stop rename to scripts/stop diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100755 index 0000000..8698981 --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,65 @@ +#!/bin/bash +# dependencies, jq +# if you have run into github api anonymous access limits which happens during debugging/dev then add user and token here or sourced from a separate file +# . ~/githubapitoken +#GITHUB_USER="" +#GITHUB_TOKEN="" + +[[ $(command -v jq &> /dev/null) ]] && echo jq is required, install via \'sudo apt install jq\' && exit + +[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(dirname "$BASH_SOURCE")"; pwd -P)")" +source $GITEA_DIR/scripts/library + +REPO=go-gitea/gitea + +if [ "$GITHUB_TOKEN" != "" ]; then +echo using access token with script +echo $GITHUB_USER $GITHUB_TOKEN +fi + +# ARCHIVE=tar.gz +# [ "$OS" == "windows" ] && ARCHIVE=zip +OS=$(get_OS) +ARCH=$(get_arch) +[[ ! $OS ]] && echo non supported OS $OS && exit +[[ ! $ARCH ]] && echo non supported architecture $ARCH && exit +echo Gitea Upgrade/Install for +echo Operating System $OS +echo Architecture $ARCH +RECORD=$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/$REPO/releases/latest) +NEW_VER=$(echo $RECORD | jq -r '.tag_name') +[ "$NEW_VER" ] && echo $NEW_VER is latest version available from https://github.com/c$REPO/releases +echo checking current gitea installed version +VER=$(version) +if [[ "$NEW_VER" == "v$VER" ]]; then + echo gitea is up to date, nothing to upgrade, v$VER + exit + else + [[ $VER ]] && echo updating v$VER to $NEW_VER || echo no current installed gitea binary, installing $NEW_VER + fi + +URL=$(echo $RECORD | \ + jq -r \ + --arg os $OS \ + --arg arch $ARCH \ + --arg archnot "$ARCH." \ + '.assets[] | select( .name | contains($os)) | + select (.name | contains($arch)) | + select (.name | contains($archnot) | not ) + .browser_download_url' \ + ) + +echo $URL + +if [ $URL ]; then +echo "Downloading Gitea Binary at $URL" +wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q -O $GITEA_DIR/gitea.bin $URL +if ( [[ $? -eq 0 ]] && [[ "$NEW_VER" == *"$(version)"* ]] ); then + chmod +x $GITEA_DIR/gitea.bin + echo upgrade succeeded, $GITEA_DIR/gitea.bin version is $(version) +else + echo upgrade from $URL failed +fi +else + echo unabled to determine download url +fi diff --git a/watch b/scripts/watch similarity index 57% rename from watch rename to scripts/watch index 6a5d396..875bd7d 100755 --- a/watch +++ b/scripts/watch @@ -1,12 +1,12 @@ #!/bin/bash DEBOUNCE=1.0 -DIR=$(dirname "$(readlink -f "$0")") || exit -export WATCH_DIR="$DIR/frontend/" -export WATCH_VERBOSE=1 -COMMAND="$DIR/restart $1 $2" +DIR="$(dirname "$(cd "$(dirname "$(readlink -f "$0")")";pwd -P)")" || exit +# export WATCH_DIR="$DIR/frontend/" +# export WATCH_VERBOSE=1 +COMMAND=$DIR/scripts/restart "$@" # LOGFILE="$DIR/watch.log" -echo "watching $WATCH_DIR with $COMMAND" -inotifywait -mqr -e MODIFY $WATCH_DIR | +echo "watching $DIR/frontend/ $DIR/config/$1.ini with $COMMAND" +inotifywait -mqr -e MODIFY $DIR/frontend/ $DIR/config/$1.ini | while read ; do # debounce extra events currentTime=$(date +'%H%M%S.%N')