3392 Commits (135bb5af3e4c0c2cca6e70a18910647ce45896e7)

Author SHA1 Message Date
Slavi Pantaleev cb11548eec Use mxisd for user directory searches
6 years ago
Slavi Pantaleev df0d465482 Fix typos in some variables (matrix_mxid -> matrix_mxisd)
6 years ago
Slavi Pantaleev f4f06ae068 Make matrix-nginx-proxy role independent of others
6 years ago
Slavi Pantaleev c10182e5a6 Make roles more independent of one another
6 years ago
Slavi Pantaleev 294a5c9083 Fix YAML serialization of empty matrix_synapse_federation_domain_whitelist
6 years ago
Sylvia van Os cec2aa61c1 Fix scalar widgets
6 years ago
Stuart Mumford f8ebd94d08
Make the mode of the base path configurable
6 years ago
Slavi Pantaleev e8c78c1572 Merge branch 'master' into split-into-multiple-roles
6 years ago
Slavi Pantaleev 857603d9d7 Make nginx-proxy files owned by matrix:matrix, not root:root
6 years ago
Slavi Pantaleev b80d44afaa Stop Postgres before finding files to move over
6 years ago
Slavi Pantaleev 51312b8250 Split playbook into multiple roles
6 years ago
Slavi Pantaleev 6d253ff571 Switch to a better riot-web image (avhost/docker-matrix-riot -> bubuntux/riot-web)
6 years ago
Slavi Pantaleev 14a237885a Fix missing SMTP configuration for mxisd
6 years ago
Slavi Pantaleev 9a9b7383e9 Completely redo how mxisd configuration gets generated
6 years ago
Slavi Pantaleev fca2f2e036 Catch misconfigured REST Auth password provider during installation
6 years ago
Slavi Pantaleev 46c5d11d56 Update components
6 years ago
Slavi Pantaleev 2ae7c5e177
Merge pull request #68 from spantaleev/manage-cronjobs-with-cron-module
6 years ago
Slavi Pantaleev 00ae435044 Use |to_json filter for serializing booleans to JSON
6 years ago
Slavi Pantaleev b222d26c86 Switch to managing cronjobs with the Ansible cron module
6 years ago
Slavi Pantaleev ef2dc3745a Check DNS SRV record for _matrix-identity._tcp when mxisd enabled
6 years ago
Slavi Pantaleev f92c4d5a27 Use Ansible dig lookup instead of calling the dig program
6 years ago
Jan Christian Grünhage 29d10804f0 Use yaml syntax instead of key=value syntax consistently
6 years ago
Slavi Pantaleev 5135c0cc0a Add Ansible guide and Ansible version checks
6 years ago
Slavi Pantaleev 99af4543ac Replace include usage with include_tasks and import_tasks
6 years ago
Slavi Pantaleev 76506f34e0 Make media-store restore work with server files, not local
6 years ago
Slavi Pantaleev e604a7bd43 Fix error message inaccuracy
6 years ago
Slavi Pantaleev 4c2e1a0588 Make SQLite database import work with server files, not local
6 years ago
Slavi Pantaleev f153c70a60 Reorganize some files
6 years ago
Slavi Pantaleev 6d89319822 Add support for importing an existing Postgres database
6 years ago
Slavi Pantaleev f472c1b9e5 Ensure psql returns a failure exit code when it fails
6 years ago
Slavi Pantaleev a7f791f8f9 Make Postgres version detection logic reusable to ease maintenance
6 years ago
Slavi Pantaleev c59a53551a Make well-known self-check not depend on Content-Type: application/json
6 years ago
Hardy Erlinger 2fc0f5f3cf Set MAILNAME env variable to FQDN hostname for matrix-mailer.
6 years ago
Slavi Pantaleev 87b5f0a4d4 Server non-scary page at matrix domain (take 2)
6 years ago
Slavi Pantaleev f7aa362961 Make "obtain certificates" tasks have unique names
6 years ago
Slavi Pantaleev 4757c13a2e Do not install openssl if not necessary
6 years ago
Slavi Pantaleev 12b65d8ccc Serve a non-scary page at the matrix domain
6 years ago
Slavi Pantaleev b9b5674b8a Lowercase host_specific_hostname_identity to prevent troubles
6 years ago
Slavi Pantaleev fe9b9773c0 Move setup sanity checks to a central place
6 years ago
Slavi Pantaleev 91567fc41d Remove debug
6 years ago
Slavi Pantaleev e033eb443b Do not set up nginx-proxy auto-restart if not using Let's Encrypt
6 years ago
Slavi Pantaleev 268e9b5b66 Escape homeserver variables to prevent rare breakage
6 years ago
Slavi Pantaleev 727dcda7d7 Organize Synapse setup files better
6 years ago
Slavi Pantaleev d28bdb3258 Add support for 2 more SSL certificate retrieval methods
6 years ago
Slavi Pantaleev bfcba5256e Upgrade mxisd (1.2.1 -> 1.2.2)
6 years ago
Slavi Pantaleev 57ee350420 Raise default timeout value for matrix-corporal
6 years ago
Slavi Pantaleev cc9d3aef59 Upgrade matrix-corporal (1.2.1 -> 1.2.2)
6 years ago
Slavi Pantaleev 6124effbe1 Register shared-secret-auth password provider first
6 years ago
Slavi Pantaleev 40626ff8df Upgrade Synapse (0.33.9/Python 2 -> 0.33.4/Python 3)
6 years ago
Slavi Pantaleev 9f163b2bf5 Do not disable SELinux on RedHat systems
6 years ago
Slavi Pantaleev b9e5ad6c66 Upgrade Docker images for various components
6 years ago
Slavi Pantaleev 97280c7cc1 Change Goofys Docker image (clodproto/goofys -> ewoutp/goofys)
6 years ago
Slavi Pantaleev bfcceb1e82 Make it safer to override matrix_synapse_media_store_path
6 years ago
Slavi Pantaleev e693b12d28 Relocate fail check to a better place
6 years ago
Slavi Pantaleev 60c7af93fe
Do not restart matrix-nginx-proxy during media store import
6 years ago
Slavi Pantaleev 59afa841cb Add unintentionally removed quote
6 years ago
Slavi Pantaleev bf8023057a Fix SQLite importing failure
6 years ago
Slavi Pantaleev b11a4c07a8 Upgrade mxisd (1.2.0 -> 1.2.1)
6 years ago
Slavi Pantaleev fcf43eeacc Fix "missing translation" warning on riot-web homepage
6 years ago
anadahz 57bfb970a9 Enable support for custom HTML in riot-web homepage
6 years ago
Slavi Pantaleev cb874da1f7
Merge pull request #52 from aaronraimist/utf8-encoding
6 years ago
haslersn 22523c0e42 Support configuring mxisd's identity stores (two of them)
6 years ago
Aaron Raimist 9028e3714e
Add utf8 encoding option to log config
6 years ago
Hugues Morisset f8987cb775 Set default mautrix-telegram image to 0.4.0
6 years ago
Slavi Pantaleev 9dad4c7c2d Fix /.well-known/matrix/client for CORS
6 years ago
Thomas vO bb849bd34f Merge branch 'master' of https://github.com/spantaleev/matrix-docker-ansible-deploy into new-cmds
6 years ago
Thomas vO caba16ea0d add script + doc to remove everything
6 years ago
Thomas vO 2bdc35de63 add script + doc to change a user to admin
6 years ago
Slavi Pantaleev 9f212adc1d Rename variable (matrix_synapse_ext_password_provider_ldap -> matrix_synapse_ext_password_provider_ldap_enabled)
6 years ago
Thomas vO bbf8928831 fix template and vars for ldap auth, add setup
6 years ago
Thomas vO 9cf9a1ec54 [auth-ldap] add template + vars for ldap auth
6 years ago
Slavi Pantaleev 18e1dda4c8 Revert "Update riot-web (0.17.6 -> 0.17.7)"
6 years ago
Slavi Pantaleev 529b5b222d Update riot-web (0.17.6 -> 0.17.7)
6 years ago
Slavi Pantaleev 5b70ec67a4 Add support for controlling Synapse's autocreate_auto_join_rooms
6 years ago
Slavi Pantaleev de91293d0d Update homeserver.yaml with new options and comments from upstream
6 years ago
Slavi Pantaleev a454feb5df Render trusted_third_party_id_servers more prettily
6 years ago
Slavi Pantaleev bc15db3316 Fix a few minor things for consistency
6 years ago
anadahz 4febb117f4 Merge remote-tracking branch 'upstream/master' into fix/add/config
6 years ago
anadahz 792bed3f5a Fix add/config based on comments by @spantaleev
6 years ago
Aaron Raimist d13aa7316e
Remove riot.im from list of trusted identity servers
6 years ago
Slavi Pantaleev 0e02dbd569 Update dependencies
6 years ago
anadahz 3cb3f17a90 Add more configured options for riot-web and homeserver.
6 years ago
Slavi Pantaleev d3c9be2cdf
Merge pull request #37 from aaronraimist/fix-well-known-self-check
6 years ago
Aaron Raimist 5a2069fa63
Fix well known self check
6 years ago
Aaron Raimist ddec99b899
Allow Synapse log levels to be configured (#23)
6 years ago
Slavi Pantaleev 12c4591a58 Update mxisd
6 years ago
Slavi Pantaleev 19257677c5 Update dependencies
6 years ago
Slavi Pantaleev f88b0ca33f
Merge branch 'master' into riot-web-config-json
6 years ago
Aaron Raimist ef2e330d22
Allow a few parts of Riot config.json to be configured (#24)
6 years ago
Aaron Raimist ebab95c9ec
Add new variable matrix_nginx_proxy_ssl_protocols
6 years ago
Aaron Raimist 3254a4d161
Disable TLS 1.0 and enable TLS 1.3
6 years ago
Slavi Pantaleev 9e8f216b9b Upgrade Synapse (v0.33.7 -> v0.33.8)
6 years ago
Slavi Pantaleev 4c0970d31e Make postgres_start_wait_time (affecting upgrades) configurable
6 years ago
Slavi Pantaleev e417ac4922 Add support for Postgres 11
6 years ago
Slavi Pantaleev a0a4ee526e Fix bug in Postgres dump/import causing upgrades to fail
6 years ago
Slavi Pantaleev 009bb1b776 Add support for configuring Postgres auto-upgrade-backup path
6 years ago
Slavi Pantaleev ac8d5a839d
Merge pull request #21 from Cadair/flags
6 years ago
Slavi Pantaleev fb5115a544 Rename playbook variables so they are consistently prefixed
6 years ago
Aaron Raimist 1955aac4bd
Update riot-web (0.17.0 -> 0.17.3)
6 years ago
Stuart Mumford 67e2bf285d
A simple idea to allow playbooks to control which bit of the role to run
6 years ago
Slavi Pantaleev 2186031be2 Remove unnecessary code causing troubles on Debian-based systems
6 years ago
Stuart Mumford 8498c4c5de
comment out all the things
6 years ago
Slavi Pantaleev cf0a5b3d2e
Merge pull request #20 from izissise/mautrix-whatsapp
6 years ago
Slavi Pantaleev 95a6519876 Fix yaml syntax breakage
6 years ago
Slavi Pantaleev 67a445a74a Add support for controlling Matrix federation
6 years ago
Hugues Morisset b3fcc641c4 Add documentation and fix templates
6 years ago
Hugues Morisset 7a94fc0e24 Add mautrix-whatsapp
6 years ago
Slavi Pantaleev 3ecb16bbef Use disable_guests=true for Riot
6 years ago
Hugues Morisset 83a17f8439 Expose mautrix-telegram public endpoint through nginx
6 years ago
Slavi Pantaleev c7188e06f9 Relocate some playbook task files to make it easier to navigate
6 years ago
Slavi Pantaleev d0c2ef10e4 Add self-check command
6 years ago
anadahz 2313907faa Add missing tag to task
6 years ago
Slavi Pantaleev a0320346e1 Upgrade Synapse (v0.33.7rc2 -> 0.33.7)
6 years ago
Slavi Pantaleev 9b3c882483 Update riot-web (0.16.4 -> 0.17.0)
6 years ago
Slavi Pantaleev 6cc528ba5a Upgrade Synapse (v0.33.5.1 -> v0.33.7rc2)
6 years ago
Slavi Pantaleev 36658addcd Work around buggy docker_network sometimes failing to work
6 years ago
Slavi Pantaleev 17ea05683b Fix yum/apt module invocation
6 years ago
Slavi Pantaleev a1c1ec9b7f Update dependencies
6 years ago
Slavi Pantaleev 2185177957 Remove `lt-cred-mech` Coturn option
6 years ago
Slavi Pantaleev cc3e34b128 Fix to_yaml silliness
6 years ago
Slavi Pantaleev b49f4531e8 Make user presence-status tracking configurable
6 years ago
Slavi Pantaleev 7350842d9b Pull in homeserver.yaml template updates
6 years ago
Slavi Pantaleev 242f388af3 Make Synapse cache factor configurable
6 years ago
Slavi Pantaleev 161854e6d7 Disable Docker container logging
6 years ago
Slavi Pantaleev 4fbaa02bef Update Synapse (v0.33.4 -> v0.33.5.1)
6 years ago
Slavi Pantaleev de5f4f7a05 Update matrix-corporal dependency
6 years ago
Slavi Pantaleev 2df4349606 Fix matrix-corporal nginx configuration trouble in certain conditions
6 years ago
Slavi Pantaleev 0d0ccde286 Add Service Discovery (/.well-known/matrix/client) support
6 years ago
Slavi Pantaleev 38e3ffa29c Rename variable (matrix_riot_web_default_identity_server_url -> matrix_identity_server_url)
6 years ago
Slavi Pantaleev 4f48508014 Rename variable (matrix_nginx_riot_web_data_path -> matrix_riot_web_data_path)
6 years ago
Slavi Pantaleev 3fed0ec594 Remove now-useless file
6 years ago
Slavi Pantaleev 2446b4845c Update matrix-corporal dependency
6 years ago
Slavi Pantaleev 8bbb6f0c60 Update dependencies
6 years ago
Slavi Pantaleev 21916c1a3c Update matrix-corporal (1.1 -> 1.1.1)
6 years ago
Slavi Pantaleev 620553e408 Update README
6 years ago
Hugues Morisset 6ef934a416 Mautrix telegram minimum config variable requirement
6 years ago
Hugues Morisset 45fb2df43f Fix some problem with permissions
6 years ago
Hugues Morisset 7b5f68c431 Add mautrix-telegram to bridge with telegram services
6 years ago
Slavi Pantaleev 7adcdf3040 Add the ability to control event_cache_size for Synapse
6 years ago
Slavi Pantaleev b52d91e180 Add the ability to controll password-peppering for Synapse
6 years ago
Slavi Pantaleev 6d6a6412fa Add the ability to control statistics-reporting for Synapse
6 years ago
Slavi Pantaleev 88b4434da9 Fix incorrect path
6 years ago
Slavi Pantaleev 7310498f71 Update certbot
6 years ago
Slavi Pantaleev 49e0d0e6db Update dependencies
6 years ago
Slavi Pantaleev 7428b941c8 Remove old s3fs stuff
6 years ago
Slavi Pantaleev 23e4a4734b Switch from acmetool to certbot for SSL certificate retrieval
6 years ago
Slavi Pantaleev d5346656e3 Use 0.16.1 for riot-web, as the image for 0.16.2 is still unavailable
6 years ago
Slavi Pantaleev 51ac3421b5 Update matrix-corporal (1.0.1 -> 1.1)
6 years ago
Slavi Pantaleev 314ff09846 Update dependencies
6 years ago
Slavi Pantaleev 92e6fdd279 Update dependencies
6 years ago
Slavi Pantaleev 861957b6f1 Add missing when statement
6 years ago
Slavi Pantaleev 5398d80f01 Add support for matrix-corporal
6 years ago
Slavi Pantaleev 02d5b54fa5 Add controls for influencing Matrix Synapse's rate-limiting
6 years ago
Slavi Pantaleev 14d7d3e670 Add support for matrix-synapse-shared-secret-auth
6 years ago
Slavi Pantaleev f72882fe1a Fix user registration regression
6 years ago
Slavi Pantaleev b0f1a1c80f Fix nginx warning: adding already-default text/html to gzip_types
6 years ago
Slavi Pantaleev 832a4d71c1 Default to INFO logging for matrix-synapse-rest-auth, not DEBUG
6 years ago
Slavi Pantaleev 21a108262f Remove some leftover debug statements
6 years ago
Slavi Pantaleev 25becc63d5 Minor fixups for the matrix-synapse-rest-auth handling
6 years ago
Slavi Pantaleev ea43d46b70 Add matrix-synapse-rest-auth support
6 years ago
Slavi Pantaleev df79901f8b Improve compression support
6 years ago
Slavi Pantaleev a302a7d748 Only run federation on 8448 and client on 80
6 years ago
Slavi Pantaleev 74093dfb15 Add mxisd Identity Server support
6 years ago
Slavi Pantaleev 617712000e Minor wording improvements
6 years ago
Slavi Pantaleev 1c71cb110e Change SSL certificate obtaining a bit
6 years ago
Slavi Pantaleev 21da2f572b Add email-sending support
6 years ago
Slavi Pantaleev cab54879d1 Update dependencies
6 years ago
Slavi Pantaleev 084a0a0e53 Minor consistency improvement
6 years ago
Slavi Pantaleev 700602eed3 Rename a bunch of playbook variables for better consistency
6 years ago
Slavi Pantaleev 336785d1ed Rename Ansible playbook tag (setup-main -> setup-all)
6 years ago
Slavi Pantaleev 3fd6fd647f Put all containers in their own isolated Docker network (matrix)
6 years ago
Slavi Pantaleev b88fe971d6 Fix matrix-nginx-proxy.service dependency on riot-web, if riot-web disabled
6 years ago
Slavi Pantaleev cdf4eefdf9 Fix typos
6 years ago
Slavi Pantaleev f6950612a5 Upgrade dependencies
6 years ago
Slavi Pantaleev 6cb14be162 Upgrade dependencies
6 years ago
Slavi Pantaleev ae7e8e61c6 Update dependencies
6 years ago
Slavi Pantaleev e4d0a68460 Update riot-web (0.15.5 -> 0.15.6)
6 years ago
Slavi Pantaleev 839b401b28 Set up Synapse configuration using a template (not line/regexp replacements)
7 years ago
Slavi Pantaleev add8169c33 Remove deprecated "ssl" directive from nginx configuration
7 years ago
Slavi Pantaleev 053328be08 Fix nginx failing to start on certain low-cache CPUs
7 years ago
Slavi Pantaleev 1725c3e698 Upgrade riot-web (0.15.4 -> 0.15.5)
7 years ago
Slavi Pantaleev 6335485ad3 Upgrade Synapse (0.31.1 -> 0.31.2)
7 years ago
Slavi Pantaleev a5877eadd4 Upgrade Synapse (0.31.0 -> 0.31.1)
7 years ago
Slavi Pantaleev 4ebf6bbf27 Upgrade Synapse (0.30.0 -> 0.31.0)
7 years ago
Slavi Pantaleev ff8f1bc65f Upgrade Docker images
7 years ago
Slavi Pantaleev 1670a20937 Clean up riot-web UI (disable custom URLs and guest usage)
7 years ago
Slavi Pantaleev 5399e2b6bb Do not require (but want) matrix-coturn.service in matrix-synapse
7 years ago
Slavi Pantaleev 62d1b13c91 Minor improvements to the Postgres-upgrade tasks
7 years ago
Slavi Pantaleev d107ab2540 Add support for upgrading Postgres
7 years ago
Slavi Pantaleev cbee084ac1 Use Postgres 10.x by default (only for new installs)
7 years ago
Slavi Pantaleev f1b4730e82 Update Docker images
7 years ago
Slavi Pantaleev b3e62126db Switch Docker image to official one
7 years ago
Slavi Pantaleev 3af3ef48fc Make .log.config modifications respect whitespace
7 years ago
Slavi Pantaleev 67a98e51d9 Make the riot-web container run without root privileges
7 years ago
Slavi Pantaleev bd580d3b9a Update dependencies
7 years ago
Slavi Pantaleev a367172b67 Update dependencies
7 years ago
Slavi Pantaleev 7de11261b1 Update Docker images
7 years ago
Slavi Pantaleev af54d60b0f Update Docker images
7 years ago
Slavi Pantaleev 5d9ddd1627 Update Docker images
7 years ago
Slavi Pantaleev efc78fb9d3 Switch from s3fs to Goofys
7 years ago
Slavi Pantaleev db686c3f8e Update dependencies
7 years ago
Slavi Pantaleev bfca91ac1f Switch Matrix Docker images (silviof -> AVENTER-UG)
7 years ago
Slavi Pantaleev 534f78f9d0 Update Docker image versions
7 years ago
Slavi Pantaleev d14ef08d5b Fix SSL certificate renewal for the custom-proxy-server case
7 years ago
Slavi Pantaleev f476e49e64 Make SSL renewal time configurable and nginx-proxy reload time adequate
7 years ago
Slavi Pantaleev 57e4f12ad3 Add support for using a pre-configured Macaroon secret key
7 years ago
Slavi Pantaleev dd5cabf658 Make /matrix owned by matrix:matrix
7 years ago
Slavi Pantaleev 19e191f0bd Do not assign Docker container name for certificate renewal
7 years ago
Slavi Pantaleev 1c2d59ae91 Stop using patched synapse_port_db script
7 years ago
Slavi Pantaleev 767b321f60 Do not mount certain Docker volumes as read-write unnecessarily
7 years ago
Slavi Pantaleev 2906ec3045 Fix SSL-renewal problem caused by incorrect permissions
7 years ago
Slavi Pantaleev 3a5f82267b Do not use Let's Encrypt certificate for Synapse's federation port
7 years ago
Slavi Pantaleev 6962bfcc42 Add support for not taking over a server (no matrix-nginx-proxy) and disabling Riot
7 years ago
Slavi Pantaleev cb323f5b4c Move SSL certificates from /etc/pki/acmetool-certs to /matrix/ssl
7 years ago
Slavi Pantaleev ded7c274f6 Add support for Debian (9+) and Ubuntu (16.04+)
7 years ago
Slavi Pantaleev 13ab9eb238 Do not touch hostname and timezone
7 years ago
Slavi Pantaleev 7c049be11a Update postgres and nginx
7 years ago
Slavi Pantaleev f422e379c2 Do not try to start postgres when it's external
7 years ago
Slavi Pantaleev ab1a9fd87e Add support for using an external PostgreSQL server
7 years ago
Slavi Pantaleev f6be25a6ae Fix idempotency problem when getting rid of S3 setup
7 years ago
Slavi Pantaleev ac59192696 Do not leave containers behind after matrix-postgres-cli usage
7 years ago
Slavi Pantaleev 49e5dad86d Do not do the S3 setup so early
7 years ago
Slavi Pantaleev 0f43abb91d Do not assume /usr/local/bin is always on the PATH
7 years ago
Slavi Pantaleev 9c68b057b0 Add support for storing Matrix Synapse's media_store to Amazon S3
7 years ago
Slavi Pantaleev 9b97ab6a90 Do not wastefully preserve owner/group when importing media store files
7 years ago
Slavi Pantaleev 0f723c9574 Ensure media store files are owned by the correct user/group after importing (recursively)
7 years ago
Slavi Pantaleev a6760f4469 Ensure media store files are owned by the correct user/group after importing
7 years ago
Slavi Pantaleev ea91ef7fb2 Move media_store & logs out of /data. Allow logging to be configured
7 years ago
Slavi Pantaleev 2bb8bb96d4 Add support for configuring max_upload_size
7 years ago
Slavi Pantaleev b046052aed Switch from playbook vars to role defaults
7 years ago
Slavi Pantaleev ce3c31eb41 Adjust x_forwarded setting for the plain (8008) port
7 years ago
Slavi Pantaleev 1cd227b699 Increase max body size for the nginx proxy
7 years ago
Slavi Pantaleev 887d14884e Do not generate a new Matrix Synapse config, if one already exists
7 years ago
Slavi Pantaleev 7d74dced28 Disable TURN for guests and enable URL previews
7 years ago
Slavi Pantaleev fc3386dff7 Fix matrix-synapse-register-user for when the non-admin case
7 years ago
Slavi Pantaleev b074030d59 Fix problem detecting matrix-nginx-proxy state when it is not installed
7 years ago
Slavi Pantaleev 02bdb7c7bc Ensure firewalld is installed and Docker launcher after firewalld
7 years ago
Slavi Pantaleev a3ecb7bfd9 Add http->http redirection for Matrix/Riot
7 years ago
Slavi Pantaleev 0d1a2071de Ensure playbook works if running at SSL-renewal time
7 years ago
Slavi Pantaleev 13eaee2463 Enable TURN support and UDP for STUN
7 years ago
Slavi Pantaleev 81077e6cdf Allow regular users to be created as well (not only admins)
7 years ago
Slavi Pantaleev 87f5883f24 Initial commit
7 years ago