MAMP в MAC Yosemite SSL, WSGI

867
Colours123

Я установил MAMP после тестирования с помощью XAMPP, мне требуется установить Openssl или сгенерировать SSL-сертификаты, а контроллер в wsgi, запущенный в XAMPP, не может этого сделать, но мне интересно, может ли кто-нибудь помочь мне настроить httpd.conf

Я уже установил SSL, но когда я пытаюсь зарядить свою главную страницу, выведите ошибку в консоли журналов

Не удалось загрузить ресурс: сервер ответил с состоянием 404 (не найдено) Uncaught TypeError: Невозможно прочитать свойство "function" undefined

https: //localhost/cgi-bin/controller.wsgi

WSGI-petition.js

Прикрепленный код в httpd.conf, httpd-ssl.conf и httpd-vhosts.conf

ServerRoot "/Applications/MAMP/Library"  <IfModule !mpm_netware.c> PidFile logs/httpd.pid </IfModule>  Listen 80  LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbd_module modules/mod_authn_dbd.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule file_cache_module modules/mod_file_cache.so LoadModule cache_module modules/mod_cache.so LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule dbd_module modules/mod_dbd.so LoadModule bucketeer_module modules/mod_bucketeer.so LoadModule dumpio_module modules/mod_dumpio.so LoadModule echo_module modules/mod_echo.so LoadModule case_filter_module modules/mod_case_filter.so LoadModule case_filter_in_module modules/mod_case_filter_in.so LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule include_module modules/mod_include.so LoadModule filter_module modules/mod_filter.so LoadModule substitute_module modules/mod_substitute.so LoadModule charset_lite_module modules/mod_charset_lite.so LoadModule deflate_module modules/mod_deflate.so LoadModule log_config_module modules/mod_log_config.so LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so LoadModule ident_module modules/mod_ident.so LoadModule usertrack_module modules/mod_usertrack.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule ssl_module modules/mod_ssl.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule asis_module modules/mod_asis.so LoadModule info_module modules/mod_info.so LoadModule cgi_module modules/mod_cgi.so LoadModule fastcgi_module modules/mod_fastcgi.so LoadModule cgid_module modules/mod_cgid.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule imagemap_module modules/mod_imagemap.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule perl_module modules/mod_perl.so LoadModule wsgi_module modules/mod_wsgi.so LoadModule xsendfile_module modules/mod_xsendfile.so  LoadModule php5_module /Applications/MAMP/bin/php/php5.6.7/modules/libphp5.so  # AddType application/x-httpd-php .php .phtml  <IfModule !mpm_netware_module> <IfModule !mpm_winnt_module>  User usuario Group #-1  </IfModule> </IfModule>  <IfModule xsendfile_module> XSendFile on </IfModule>   ServerAdmin you@example.com  ServerName localhost:80  DocumentRoot "/Users/usuario/Sites/usuariocloud/client"  <Directory /> Options Indexes FollowSymLinks AllowOverride None </Directory>  <Directory "/Users/usuario/Sites/usuariocloud/client"> Options All AllowOverride All Order allow,deny Allow from all  XSendFilePath "/Applications/MAMP/htdocs" </Directory>  <IfModule dir_module> DirectoryIndex index.html index.php  <IfModule perl_module> DirectoryIndex index.pl </IfModule>  <IfModule wsgi_module> DirectoryIndex index.wsgi index.py </IfModule>  </IfModule>  AccessFileName .htaccess  <FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All </FilesMatch>  <Files ~ "^\.DS_Store"> Order allow,deny Deny from all </Files>  ErrorLog "/Applications/MAMP/logs/apache_error.log"  LogLevel error  <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common  <IfModule logio_module> # You need to enable mod_logio.c to use %I and %O LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\" %I %O" combinedio </IfModule>  </IfModule>  <IfModule alias_module> Alias /favicon.ico "/Applications/MAMP/bin/favicon.ico"  Alias /icons/ "/Applications/MAMP/Library/icons/"  <Directory "/Applications/MAMP/Library/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  Alias /phpMyAdmin "/Applications/MAMP/bin/phpMyAdmin" Alias /phpmyadmin "/Applications/MAMP/bin/phpMyAdmin"  <Directory "/Applications/MAMP/bin/phpMyAdmin"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  Alias /phpPgAdmin "/Applications/MAMP/bin/phpPgAdmin" Alias /phppgadmin "/Applications/MAMP/bin/phpPgAdmin"  <Directory "/Applications/MAMP/bin/phpPgAdmin"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  Alias /phpLiteAdmin "/Applications/MAMP/bin/phpLiteAdmin" Alias /phpliteadmin "/Applications/MAMP/bin/phpLiteAdmin"  <Directory "/Applications/MAMP/bin/phpLiteAdmin"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  Alias /SQLiteManager "/Applications/MAMP/bin/SQLiteManager" Alias /sqlitemanager "/Applications/MAMP/bin/SQLiteManager"  <Directory "/Applications/MAMP/bin/SQLiteManager"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  Alias /MAMP "/Applications/MAMP/bin/mamp"  <Directory "/Applications/MAMP/bin/mamp"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>  # # ScriptAlias: This controls which directories contain server scripts.  # ScriptAliases are essentially the same as Aliases, except that # documents in the target directory are treated as applications and # run by the server when requested rather than as documents sent to the # client. The same rules about trailing "/" apply to ScriptAlias # directives as to Alias. # ScriptAlias /cgi-bin/ "/Applications/MAMP/cgi-bin/"  Alias /perl/ "/Applications/MAMP/cgi-bin/"  <IfModule perl_module> PerlModule ModPerl::Registry <Location /perl> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Location> </IfModule> </IfModule>  <IfModule cgid_module> # # ScriptSock: On threaded servers, designate the path to the UNIX # socket used to communicate with the CGI daemon of mod_cgid. # #Scriptsock logs/cgisock </IfModule>  <Directory "/Applications/MAMP/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>  DefaultType text/plain  <IfModule mime_module> TypesConfig /Applications/MAMP/conf/apache/mime.types  AddType application/x-compress .Z AddType application/x-gzip .gz .tgz  AddHandler cgi-script .cgi .pl  </IfModule>  <IfModule mime_magic_module> MIMEMagicFile /Applications/MAMP/conf/apache/magic </IfModule>   # Server-pool management (MPM specific) #Include /Applications/MAMP/conf/apache/extra/httpd-mpm.conf  # Multi-language error messages #Include /Applications/MAMP/conf/apache/extra/httpd-multilang-errordoc.conf  # Fancy directory listings #Include /Applications/MAMP/conf/apache/extra/httpd-autoindex.conf  # Language settings #Include /Applications/MAMP/conf/apache/extra/httpd-languages.conf  # User home directories #Include /Applications/MAMP/conf/apache/extra/httpd-userdir.conf  # Real-time info on requests and configuration #Include /Applications/MAMP/conf/apache/extra/httpd-info.conf  # Virtual hosts #Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf  # Local access to the Apache HTTP Server Manual #Include /Applications/MAMP/conf/apache/extra/httpd-manual.conf  # Distributed authoring and versioning (WebDAV) #Include /Applications/MAMP/conf/apache/extra/httpd-dav.conf  # Various default settings #Include /Applications/MAMP/conf/apache/extra/httpd-default.conf  # Secure (SSL/TLS) connections Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf # # Note: The following must must be present to support # starting without SSL on platforms with no /dev/random equivalent # but a statically compiled-in mod_ssl. # <IfModule ssl_module> SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024  # # Uncomment the next line if Apache should not accept SSLv3 connections, to learn more google for "POODLE SSLv3". # SSLProtocol All -SSLv2 -SSLv3  </IfModule> 

HTTPD-ssl.conf

# # This is the Apache server configuration file providing SSL support. # It contains the configuration directives to instruct the server how to # serve pages over an https connection. For detailing information about these  # directives see <URL:http://httpd.apache.org/docs/2.2/mod/mod_ssl.html> #  # Do NOT simply read the instructions in here without understanding # what they do. They're here only as hints or reminders. If you are unsure # consult the online docs. You have been warned.  #  # # Pseudo Random Number Generator (PRNG): # Configure one or more sources to seed the PRNG of the SSL library. # The seed data should be of good random quality. # WARNING! On some platforms /dev/random blocks if not enough entropy # is available. This means you then cannot use the /dev/random device # because it would lead to very long connection times (as long as # it requires to make more entropy available). But usually those # platforms additionally provide a /dev/urandom device which doesn't # block. So, if available, use this one instead. Read the mod_ssl User # Manual for more details. # #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed startup file:/dev/urandom 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512   # # When we also provide SSL we have to listen to the  # standard HTTP port (see above) and to the HTTPS port # # Note: Configurations that use IPv6 but not IPv4-mapped addresses need two # Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443" # Listen 443  ## ## SSL Global Context ## ## All SSL configuration in this context applies both to ## the main server and all SSL-enabled virtual hosts. ##  # # Some MIME-types for downloading Certificates and CRLs # AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl  # Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. SSLPassPhraseDialog builtin  # Inter-Process Session Cache: # Configure the SSL Session Cache: First the mechanism  # to use and second the expiring timeout (in seconds). #SSLSessionCache "dbm:/Applications/MAMP/Library/logs/ssl_scache" SSLSessionCache "shmcb:/Applications/MAMP/Library/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300  # Semaphore: # Configure the path to the mutual exclusion semaphore the # SSL engine uses internally for inter-process synchronization.  SSLMutex "file:/Applications/MAMP/Library/logs/ssl_mutex"  ## ## SSL Virtual Host Context ##  <VirtualHost _default_:443>  # General setup for the virtual host DocumentRoot "/Users/usuario/Sites/usuariocloud/client" ServerName localhost:443 ServerAdmin you@example.com ErrorLog "/Applications/MAMP/Library/logs/error_log" TransferLog "/Applications/MAMP/Library/logs/access_log"  # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on  # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list.  # Uncomment the next line if Apache should not accept SSLv3 connections, to learn more google for "POODLE SSLv3". # SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:-SSLv3:+EXP:+eNULL  # Comment the next line (and uncomment the line above) if Apache should not accept SSLv3 connections, to learn more google for "POODLE SSLv3". SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL  # Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. Keep # in mind that if you have both an RSA and a DSA certificate you # can configure both in parallel (to also allow the use of DSA # ciphers, etc.) SSLCertificateFile "/Applications/MAMP/conf/apache/extra/ssl/privateserver.crt" #SSLCertificateFile "/Applications/MAMP/conf/apache/server-dsa.crt"  # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) SSLCertificateKeyFile "/Applications/MAMP/conf/apache/extra/ssl/privateserver.key" #SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server-dsa.key"  # Server Certificate Chain: # Point SSLCertificateChainFile at a file containing the # concatenation of PEM encoded CA certificates which form the # certificate chain for the server certificate. Alternatively # the referenced file can be the same as SSLCertificateFile # when the CA certificates are directly appended to the server # certificate for convinience. #SSLCertificateChainFile "/Applications/MAMP/conf/apache/server-ca.crt"  # Certificate Authority (CA): # Set the CA certificate verification path where to find CA # certificates for client authentication or alternatively one # huge file containing all of them (file must be PEM encoded) # Note: Inside SSLCACertificatePath you need hash symlinks # to point to the certificate files. Use the provided # Makefile to update the hash symlinks after changes. #SSLCACertificatePath "/Applications/MAMP/conf/apache/ssl.crt" #SSLCACertificateFile "/Applications/MAMP/conf/apache/ssl.crt/ca-bundle.crt"  # Certificate Revocation Lists (CRL): # Set the CA revocation path where to find CA CRLs for client # authentication or alternatively one huge file containing all # of them (file must be PEM encoded) # Note: Inside SSLCARevocationPath you need hash symlinks # to point to the certificate files. Use the provided # Makefile to update the hash symlinks after changes. #SSLCARevocationPath "/Applications/MAMP/conf/apache/ssl.crl" #SSLCARevocationFile "/Applications/MAMP/conf/apache/ssl.crl/ca-bundle.crl"  # Client Authentication (Type): # Client certificate verification type and depth. Types are # none, optional, require and optional_no_ca. Depth is a # number which specifies how deeply to verify the certificate # issuer chain before deciding the certificate is not valid. #SSLVerifyClient require #SSLVerifyDepth 10  # Access Control: # With SSLRequire you can do per-directory access control based # on arbitrary complex boolean expressions containing server # variable checks and other lookup directives. The syntax is a # mixture between C and Perl. See the mod_ssl documentation # for more details. #<Location /> #SSLRequire ( % !~ m/^(EXP|NULL)/ \ # and % eq "Snake Oil, Ltd." \ # and % in {"Staff", "CA", "Dev"} \ # and % >= 1 and % <= 5 \ # and % >= 8 and % <= 20 ) \ # or % =~ m/^192\.76\.162\.[0-9]+$/ #</Location>  # SSL Engine Options: # Set various options for the SSL engine. # o FakeBasicAuth: # Translate the client X.509 into a Basic Authorisation. This means that # the standard Auth/DBMAuth methods can be used for access control. The # user name is the `one line' version of the client's X.509 certificate. # Note that no password is obtained from the user. Every entry in the user # file needs this password: `xxj31ZMTZzkVA'. # o ExportCertData: # This exports two additional environment variables: SSL_CLIENT_CERT and # SSL_SERVER_CERT. These contain the PEM-encoded certificates of the # server (always existing) and the client (only existing when client # authentication is used). This can be used to import the certificates # into CGI scripts. # o StdEnvVars: # This exports the standard SSL/TLS related `SSL_*' environment variables. # Per default this exportation is switched off for performance reasons, # because the extraction step is an expensive operation and is usually # useless for serving static content. So one usually enables the # exportation for CGI and SSI requests only. # o StrictRequire: # This denies access when "SSLRequireSSL" or "SSLRequire" applied even # under a "Satisfy any" situation, i.e. when it applies access is denied # and no other module can change it. # o OptRenegotiate: # This enables optimized SSL connection renegotiation handling when SSL # directives are used in per-directory context.  #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/Applications/MAMP/Library/cgi-bin"> SSLOptions +StdEnvVars </Directory>  # SSL Protocol Adjustments: # The safe and default but still SSL/TLS standard compliant shutdown # approach is that mod_ssl sends the close notify alert but doesn't wait for # the close notify alert from client. When you need a different shutdown # approach you can use one of the following variables: # o ssl-unclean-shutdown: # This forces an unclean shutdown when the connection is closed, i.e. no # SSL close notify alert is send or allowed to received. This violates # the SSL/TLS standard but is needed for some brain-dead browsers. Use # this when you receive I/O errors because of the standard approach where # mod_ssl sends the close notify alert. # o ssl-accurate-shutdown: # This forces an accurate shutdown when the connection is closed, i.e. a # SSL close notify alert is send and mod_ssl waits for the close notify # alert of the client. This is 100% SSL/TLS standard compliant, but in # practice often causes hanging connections with brain-dead browsers. Use # this only for browsers where you know that their SSL implementation # works correctly.  # Notice: Most problems of broken clients are also related to the HTTP # keep-alive facility, so you usually additionally want to disable # keep-alive for those clients, too. Use variable "nokeepalive" for this. # Similarly, one has to force some clients to use HTTP/1.0 to workaround # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and # "force-response-1.0" for this. BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0  # Per-Server Logging: # The home of a custom SSL log file. Use this when you want a # compact non-error SSL logfile on a virtual host basis. CustomLog "/Applications/MAMP/Library/logs/ssl_request_log" \ "%t %h %x %x \"%r\" %b"  </VirtualHost>  

HTTPD-vhosts.conf

# # Virtual Hosts # # If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at  # <URL:http://httpd.apache.org/docs/2.2/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration.  # # Use name-based virtual hosting. # NameVirtualHost *:80  # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error_log" CustomLog "logs/dummy-host.example.com-access_log" common </VirtualHost>  <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com" ServerName dummy-host2.example.com ErrorLog "logs/dummy-host2.example.com-error_log" CustomLog "logs/dummy-host2.example.com-access_log" common </VirtualHost> 

и контроллер.wsgi

#! /usr/bin/python  # Library Imports import json, cgi, sys, os  path = os.path.dirname(__file__)  if path not in sys.path: sys.path.append(path)  # Own Libraries from petition_solver.solver import Solver  def application(env, resp): response = { "response": "fail",  "error" : """Expecting ?Json= { "function":"functionName", "entity":"entityName", "params": { "param1":"value1",  "param2":"value2",  "paramn":"value n" } }""".replace('\r', ' ').replace('\n', ' ').replace('\t', '')  }  # Read Params  form = cgi.FieldStorage(fp=env['wsgi.input'], environ=env)  if form:  userAgent = env["HTTP_USER_AGENT"] if "HTTP_USER_AGENT" in env else "" param_json = form['json'].value  petition = json.loads(param_json)  if('file' in form and "params" in petition): param_file = form['file']  if(isinstance(param_file, list)): petition['params']['files'] = [] for f in param_file: filename = unicode(f.filename, 'utf-8') petition['params']['files'].append({"originalName" : filename, "file" : f.file.read()}) else: petition['params']['file'] = param_file.file.read() filename = unicode(param_file.filename, 'utf-8') petition['params']['originalName'] = filename  solver = Solver() response = solver.solvePetition(petition, userAgent=userAgent)  if (response and "download" in response and response["download"]):  detail = response["file"]["storage"]  mime = detail["mime"].decode('utf-8') name = detail["originalName"].encode("ascii", 'replace') data = detail["file"]  resp('200 OK',[('Content-type', ''.format(mime)),('Content-disposition', 'attachment; filename*=UTF-8''; filename='.format(name))]) yield data else: resp('200 OK',[('Content-type', 'text/html;charset=utf-8')]) yield json.dumps(response) 

Я не понимаю свою ошибку, потому что, когда я изменяюсь

WSGIScriptAlias ​​/ cgi-bin / «Пользователи / usuario / Сайты / Сервер /»

WSGIScriptAlias ​​/ "Пользователи / usuario / Sites / Server / controller.wsgi"

в localhost покажи controller.wsgi

3
Пожалуйста, уточните ваш комментарий относительно того, что вы застряли на. Что вы пробовали и т.д. skarface 9 лет назад 0
Я добавляю свою ошибку и мою конфигурацию: D Colours123 9 лет назад 1

0 ответов на вопрос