LINUX.ORG.RU

Сообщения Xintrea

 

Невозможно получить результат выполнения Bash-команды - почему?

Форум — General

Имеется скрипт:

#!/bin/bash
set -ex 

echo "Before"

isCdRomMount=`mount | grep '^\/dev\/sr.*'`

echo "After"


Этот скрипт не доходит до печати строки After:
+ echo Before
Before
++ mount
++ grep '^\/dev\/sr.*'
+ isCdRomMount=

Скрипт возвращает значение 1.

Вопрос: что не так то? Как исправить?

 ,

Xintrea
()

xev не видит виртуальных клавиш громкости на крутилке DasKeyboard

Форум — General

Пытался приспособить крутилку DasKeyboard для скроллинга в LXDE.

Запустил lxhotkey, добавил вызов скриптов на кнопки XF86AudioRaiseVolume и XF86AudioLowerVolume. Эти кнопки автоматически определяются при добавлении строчки во вкладке «Программы». Если крутануть крутилку вверх, в поле Привязка 1 появится название клавиши XF86AudioRaiseVolume, если вниз - XF86AudioLowerVolume.

После внесения и сохранения изменений даю команду

openbox --reconfigure

Вроде все корректно, но проблема в том, что скрипты, привязанные в lxhotkey к этим клавишам, не вызываются. Для проверки я прописал эти же скрипты другим кнопкам, например Print, и они корректно вызываются. А вот именно на кнопках XF86AudioRaiseVolume и XF86AudioLowerVolume вызова скриптов не происходит.

В интернетах ничего вменяемого нет, за исключением одного товарища, который столкнулся с подобным:

https://bbs.archlinux.org/viewtopic.php?id=111469

Но он обнаружил, что showkey показывает одни коды клавиш, а xev - другие.

В моем же случае showkey показывает коды 114/115, а xev не показывает событий нажатия клавиш. Вместо этого показывает следующее, причем без разницы крутится ли крутилка вверх или вниз:

FocusOut event, serial 49, synthetic NO, window 0x3a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 49, synthetic NO, window 0x3a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 49, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

Не знаю, в этом ли проблема, что lxhotkey не обрабатывает события крутилки, или в чем-то другом.

Вопрос: где что надо докрутить, чтобы настройки lxhotkey корректно обрабатывали вращение крутилки громкости?

 , , , ,

Xintrea
()

М ОС - форк Альт Линукс, разработанный в ДИТ Москвы

Новости — Linux в России
Группа Linux в России

По информации портала Cnews, в департаменте информационных технологий Москвы был разработан дистрибутив М ОС, созданный на основе пакетной базы Альт Линукс. Сама компания Базальт (владелец Альт Линукс) в разработке дистрибутива М ОС не участвует.

В 2022 году ДИТ решил разработать собственный дистрибутив Линукс для поставки его в учебные заведения города Москвы. Проект достиг возможности распространения в начале 2023 года. Так как ДИТ является владельцем М ОС, то имеется возможность установки данной ОС на ноутбуки учителей, рабочие станции компьютерных классов и интерактивные доски минуя процедуру закупки. Это, в свою очередь, снимает необходимость включать данное ПО в реестр Минцифры, хотя попадание в него данной ОС лишь вопрос времени.

В компании Базальт негативно отзываются о таком способе экономии бюджетных средств, заявляя что в современных реалиях создать дистрибутив может каждый, а поддержать его работу и пакетную базу --- для этого нужны компетенции, которых у ДИТ, по мнению Базальт, на данный момент нет.

Для создания дистрибутива М ОС ДИТ нанял 25 программистов среди которых школьный учитель информатики, который ранее уже занимался созданием своего дистрибутива. На разработку первой стабильной версии, пригодной для распространения, ушло около полугода. Для знакомства пользователей с М ОС был создан соответствующий раздел на сайте school.mos.ru, а так же создана программа курсов повышения квалификации Основы работы в операционной системе М ОС. В качестве среды рабочего стола в дистрибутиве используется KDE.

>>> Подробности

 , ,

Xintrea
()

Репозитарий (deb): куда засунуть версию ОС Linux?

Форум — General

Имеется два самодельных репозитария: один для Astra 1.3, второй для Astra 1.6

Начальник неожиданно возбудился из-за того, что пакеты в этих репозитариях имеют одинаковые имена файлов, одинаковые названия пакетов и одинаковые версии (просто бинарники собраны соответственно для Astra 1.3 и Astra 1.6). Типа если перепутают репозитарии, то инсталляция накроется и путанница возникнет если, например, в Astra 1.3 пропишут репозитарий от Astra 1.6 и установят пакеты.

Он хочет каким-то образом сделать так, чтобы пакеты от одного дистра невозможно было поставить в другой дистр, или хотя бы чтоб при установке пакетная система сразу каким-то образом показывала, что пакеты с данным дистром несовместимы.

Я не очень представляю тонкости пакетной системы, хоть и собираю вручную пакеты и формирую репозитарий.

Мне было бы проще всего добавить информацию в версию пакета (поле Version). Сделать, например, в ней префикс, типа:

a13:2023.02.09-5
a16:2023.02.09-5

Но сдается мне, что если в Astra 1.3 прописать репозитарий от Astra 1.6, то, например, при обновлении версий пакет a13:2023.02.09-5 будет молча заменен на a16:2023.02.09-8 и ничего пакетная система не заметит и не предупредит. Да, и еще придется перелопатить все зависимости во всех пакетах, чтобы они тоже этот префикс содержали.

Менее удобно (в моем случае) было бы добавить версию дистрибутива просто в поле Description или в Origin, чтобы хотя бы видеть что пакет собран для определенного дистрибутива. Но это тоже всего лишь информационное поле, и проблему оно не решает.

Вопрос: куда впихнуть версию дистрибутива, для которого сделан пакет? Чтобы были решены проблемы, описанные выше? Или таковая задача полностью в принципе не решается?

 , , , ,

Xintrea
()

Включить WQHD (2560x1440) на встройке Intel HD Graphics 4000 - возможно ли?

Форум — General

Прикупил монитор с разрешением 2560x1440 и 75Гц.

Мне его надо подключить к ноутбуку со встройкой Intel HD Graphics 4000. На ноуте разъем HDMI, провод соответствующий. Утилита xrandr нужного разрешения и частотки не показывает.

Судя по выводу xrandr, монитор подключен как HDMI1:

HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 600mm x 340mm

Сгенерировал нужный модлайн:
cvt 2560 1440 75

# 2560x1440 74.94 Hz (CVT 3.69M9) hsync: 112.86 kHz; pclk: 397.25 MHz
Modeline "2560x1440_75.00"  397.25  2560 2760 3040 3520  1440 1443 1448 1506 -hsync +vsync

Создал режим:
xrandr --newmode "2560x1440_75.00"  397.25  2560 2760 3040 3520  1440 1443 1448 1506 -hsync +vsync

Зарегистрировал:
xrandr --addmode HDMI1 2560x1440_75.00

В списке xrandr он появился. Переключаюсь:
xrandr --output HDMI1 --mode 2560x1440_75.00

Монитор на пару секунд гаснет, потом возвращается в прежнее разрешение и в консоль выводится ошибка:
xrandr: Configure crtc 1 failed

Дальше продвинуться не смог.

Что не так с конфигурацией? Карточка не могет такое разрешение? Разъем не тот? Провод не тот? Или все-таки можно настроить?

 , wqhd,

Xintrea
()

Как в ssh+X11 перетянуть к себе окно программы?

Форум — General

Если зайти на компьютер удаленно с поддержкой сессии X11 (опция -X):

ssh -l user -X remote.server.lo

... то можно запустить GUI-программу на сервере, но с отображением ее окна на своем десктопе:
qpdfview &

А можно запустить GUI-программу на сервере так, чтобы ее окно оставалось на удаленном сервере:
DISPLAY=:0 qpdfview &

Вопрос 1: а как «перетянуть» к себе на десктоп окно, которое открыто на удаленном сервере?

Вопрос 2: а как «перекинуть» окно, которое открыто на своем десктопе, обратно на сервер?

Note: использовать VNC не предлагать, потому что fly-dm, а в нем VNC невозможен.

 ,

Xintrea
()

Как узнать пакет при ошибке «недоступен, но упомянут в списке зависимостей»?

Форум — General

Есть, к примеру сообщение при инсталляции через apt:

apt-get install qt5-default
...
Пакет qt5-default недоступен, но упомянут в списке зависимостей другого пакета.

Вопрос: как заполучить имена пакетов, в зависимостях которых которых упомянут qt5-default?

 , ,

Xintrea
()

На что сослаться при возврате монитора?

Форум — Talks

Монитор относится к технически сложным устройствам. Возврат таких устройств возможен только при наличии технической неисправности. Наличие битых пикселей в количестве до 2-5 штук (в зависимости от класса) не является неисправностью.

Значит, при обнаружении битых пикселей возвращать монитор нужно по другой причине.

Вопрос: какие есть надежные причины для возврата монитора, чтобы без лишних вопросов, согласно действующему законодательству, вернуть товар в магазин?

 , , , пиксель

Xintrea
()

Что означает слово Policy в утилите Apt?

Форум — Talks

По неизвестной причине, ни в команде man apt, ни в команде apt help нет описания опции policy (зато есть коровья СУПЕРСИЛА, ведь она куда важнее документации утилиты, которая управляет всеми файлами программ в системе).

И вот я вижу следующую команду:

apt policy linux-headers-generic

и даже не могу понять что она делает то. Что она означает? «Политика» - на что? «Стратегия» - чего? «Курс» - куда? «Полис» - зачем?

Вроде как эта команда то ли управляет, то ли только показывает какие-то параметры пакетов. Но подробностей найти не смог. Для просмотра информации о пакетах официально существуют опции list и show.

Что подразумевается под этой политикой/стратегией и для чего она нужна?

 , , ,

Xintrea
()

Зачем нужны круглые скобки ( EXPRESSION ) в утилите test?

Форум — General

В документации на утилиту test написано:

SYNOPSIS
       test EXPRESSION
       test
       [ EXPRESSION ]
       [ ]
       [ OPTION

DESCRIPTION
       Exit with the status determined by EXPRESSION.

       --help display this help and exit

       --version
              output version information and exit

       An  omitted  EXPRESSION  defaults  to false.  Otherwise, EXPRESSION is true or false 
       and sets exit status.  It is one of:

       ( EXPRESSION )
              EXPRESSION is true

И непонятно, нужно ли выражение обязательно заключать в круглые скобки. Вроде работает и без них. Но тогда зачем нужны круглые скобки?

А если будут составные условия (-o, -a) то тогда нужно писать каждое выражение в круглых скобках или нет?

 , , ,

Xintrea
()

PulseAudio все еще не готов для десктопа

Форум — Talks

Установил себе небезызвестный SunVox, думаю, щас поковыряюсь с трекерной музыкой в современной программе. Как я измучился... Все пердит, заикается, проигрывается с неправильной скоростью. Затяжные периоды глюков самопроизвольно меняются на несколько минутные периоды стабильности, после чего опять пердеж и заикания...

Написал на официальный форум, и мне ответили:

https://warmplace.ru/forum/viewtopic.php?f=12&t=6298

Как бы я не ожидал другого услышать, но блин так обидно, что в Линупсе до сих пор нет просто работающего звукового стека.

 , ,

Xintrea
()

Как создать многопоточную нагрузку на проц стандартными средствами Linux?

Форум — General

Мне нужно создать такую нагрузку на процессор, чтобы один процесс создал кучу потоков на все ядра микропроцессора, и htop показал число ~800% для 8-ми поточного процессора.

Пока что придумал команду:

while true; do dd if=/dev/urandom count=10M bs=1 | xz -9 -T8 > /dev/null ; done
Но эта команда не создает нагрузки более ~118%.

Что еще можно придумать?

 , , ,

Xintrea
()

После разлогирования пользователя через pkill, не работает вход в систему

Форум — Admin

Система: Debian GNU/Linux 11 Stable, LXDE.

Выгоняю пользователя из графической сессии командой:

pkill -u username
Вроде все хорошо: сессия завершается, появляется окно ввода логина-пароля.

Поля ввода в этом окне рабочие. Но после ввода логина-пароля, ничего не происходит, новая сессия не открывается. Никаким пользователем зайти невозможно, можно только переключиться в консоль Alt+F1, зайти рутом и перезагрузить компьютер. После перезагрузки вход пользователей снова работает.

Почему так происходит? Как исправить?

 ,

Xintrea
()

Как в Ansible отфильтровать список в with_items ?

Форум — Admin

У меня имеется список репозитариев, который сделан примерно так:

gitRepos
- [ true,  "doxygen_documentation.git", "master", "doxygen_doc"  ]
- [ false, "idk.git",                   "qt5",    "idk"          ]
- [ true,  "binke.git",                 "master", "binke_plugin" ]
...

Чтобы делать действия с репозитариями, используется with_items по данному списку. Раньше в этом списке не было первого столбца true/false, и действия выполнялись для всех элементов списка gitRepos:
- name: Создание/обновление репозитариев
  git: repo="{{ item[nRepoNetworkPath] }}" dest="{{ gitReposPath }}/{{ item[nDirectoryName] }}"
  with_items:
  - "{{ gitRepos }}"

Теперь появился первый столбец, и в with_items надо прописать фильтр, который уберет строки, в которых первый элемент равен false. Условие when использовать нежелательно, так как в нем используются условия по другим переменным, и будет очень заморочено.

Но я читаю документацию:

https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_filters.html

И не вижу там возможности фильтровать/преобразовывать список так, чтобы в нем исключить элементы по условию. Как это можно сделать?

 ,

Xintrea
()

Как в GCC выяснить, какие языки он поддерживает?

Форум — Development

Не могу найти опцию, которая бы показала перечень имен «модулей», которые отвечают за разные языки.

Ну, то есть, надо узнать перечень языков в том виде, которые обозначаются термином program в опции -print-prog-name.

Опытным путем найдены обозначения:

  • cc1plus - язык Си++
  • cpp - язык Си (видимо, как-то связано с аббревиатурой C Pre Processor)

А как узнать у gcc, какие еще языки поддерживает текущая инсталляция gcc?

 

Xintrea
()

Как сделать вычислимую переменную в /group_vars/all.yml в зависимости от os.path.isdir() ?

Форум — Admin

В jinja - шаблонах нельзя использовать привычные методы стандартных Python-модулей, например os.path.isdir(...). Вместо этого предлагается выполнить задачу с модулем stat, в ней вычислить значение, а потом его использовать:

https://stackoverflow.com/questions/43522337/defining-os-path-in-ansible-jinj...

А как тогда установить значение переменной в файле /group_vars/all.yml в зависимости от результата работы stat? Ведь синтаксис этого файла не предполагает исполнение задачи, и в нем только устанавливаются значения переменных?



Перемещено hobbit из general

 ,

Xintrea
()

Почему grep не фильтрует сообщения dd?

Форум — General

Даю такую команду:

$ dd if=/dev/zero count=10000 bs=50000 of=/tmp/zero.bin | grep 10000
10000+0 записей получено
10000+0 записей отправлено
500000000 байт (500 MB, 477 MiB) скопирован, 5,00764 s, 99,8 MB/s
И ожидаю что третьей строки не будет видно, она же не попадает под выражение в grep.

Но третья строка все равно выводится в консоль.

Почему?

 , , , ,

Xintrea
()

Почему systemctl list-units не показывает сервис ntp, хотя он есть?

Форум — General

Обычно чтобы понять, какие сервисы есть в системе, я всегда пользовался командой:

systemctl list-units --all

Но сейчас выяснилось, что эта команда показывает не все сервисы. Например, она не покажет сервис ntp, хотя он существует:
systemctl status ntp
● ntp.service - LSB: Start NTP daemon
   Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

Почему полный список юнитов не отображает все юниты? Чем юнит ntp так отличается от других?

 , systemctp, ,

Xintrea
()

Восстановить работу gitweb. Случайно грохнул /etc/apache2/conf-enabled/gitweb.conf

Форум — Admin

Пришел сегодня ранёхонько, стал ремонтировать вот это: Apache показывает ошибку 403 на некоторых файлах

Увидел, что в файле /etc/apache2/conf-enabled/gitweb.conf кривоватенькая регулярка, которая, видимо, отвечала за доступ/обработку dot-каталогов ".git" или что-то в этом роде (сервер настраивал не я). Чтобы проверить, что проблема в Apache-модуле gitweb, решил его временно отключить. И вместо того чтоб удалить линк в /conf-enabled, спросоня удалил основной файл в /conf-available.

Отключить раздел чтоб восстановить файл не могу, на сервере куча всего крутится. Поэтому восстановил файл из пакета. И теперь его надо настроить «как было».

По-дефолту он выглядит так:

<IfModule mod_alias.c>
  <IfModule mod_mime.c>
    <IfModule mod_cgi.c>
      Define ENABLE_GITWEB
    </IfModule>
    <IfModule mod_cgid.c>
      Define ENABLE_GITWEB
    </IfModule>
  </IfModule>
</IfModule>

<IfDefine ENABLE_GITWEB>
  Alias /gitweb /usr/share/gitweb

  <Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
  </Directory>
</IfDefine>


Единственное что я помнил, что репозитарии размещены в каталоге /home/git (этот каталог так же прописан и в /etc/gitweb.conf). А обращение к главной странице в браузере должно происходить по наш_домен/git. Поэтому я подправил настройки:
<IfDefine ENABLE_GITWEB>
  Alias /git /home/git

  <Directory /home/git>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
  </Directory>
</IfDefine>

Перезапускаю Apache2 (версия 2.4, вестимо). И получаю 403 ошибку:
Forbidden
You don't have permission to access this resource.

В общем, судорошно соображал что как крутить, курил логи, не одмин я совсем, Апач лет десять назад запускал... Наконец заставил работать веб-морду. Конфиг получился такой:
<IfDefine ENABLE_GITWEB>

  # Turning on mod rewrite
  RewriteEngine on

  # Make the front page an internal rewrite to the gitweb script
  RewriteRule ^/git/$  /cgi-bin/gitweb.cgi [L,PT]

  # Make access for "dumb clients" work
  RewriteRule ^/git/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]

  Alias /git /home/git
  <Directory /home/git>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi

    Require all granted

    # DirectoryIndex gitweb.cgi
    DirectoryIndex /cgi-bin/gitweb.cgi

  </Directory>
</IfDefine>

Но теперь осталась проблема: недоступны ресурсы типа картинок, js-файлов и css-сок. Например, запросы:

http://наш_сервер/git/static/gitweb.css
http://наш_сервер/git/static/gitweb.js

Возвращают ошибку 404.

Вопрос: Как докрутить конфиг, чтобы эти ресурсы стали доступны?

 , gitweb, ,

Xintrea
()

Apache показывает ошибку 403 на некоторых файлах

Форум — Admin

Привет, народ.

Имеется репозитарий, который выложен на HTTP сервере. Проблема в том, что некоторые файлы Apache не отдает с ошибкой 403. Например:

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb

Первый файл, с более длинным именем и путем - отдается. А второй файл, с более коротким именем и путем - нет. Какая-то дичь. Я не могу понять почему. Наткнулся на это ошибку из-за того, что apt-get install не мог получить именно второй пакет:
Ошб:1 http://192.168.10.251/astra_rep/se17devupdate2 1.7_x86-64/main amd64 linux-firmware all 20220329.git681281e4-0ubuntu1+ci202207182106+astra2
  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить некоторые архивы; возможно, нужно запустить apt-get update или попытаться повторить запуск с ключом --fix-missing?
Чтение списков пакетов… Готово

Вот как происходит получение файлов через wget (первый - нормально, второй - с ошибкой):
$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb"
--2022-11-17 16:39:46--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1613088 (1,5M) [application/x-debian-package]
Сохранение в: «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci20220704
1218+astra4_all.deb»
libreoffice-wiki-publisher_1.2.0+L 100%[=============================================================>]   1,54M  --.-KB/s    in 0,1s
2022-11-17 16:39:46 (11,9 MB/s) - «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb» сохранён [1613088/1613088]

$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb"
--2022-11-17 16:39:56--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 403 Forbidden
2022-11-17 16:39:56 ОШИБКА 403: Forbidden.


Я проверил, файл linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb существует, путь правильный.

Права на файлы идентичные:
$ ls -l ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
-rw-r--r-- 1 security security 1613088 сен 29 14:06 ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

$ ls -l ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
-rw-r--r-- 1 security security 214471224 сен 29 14:04 ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb


Права на дикретории идентичные:
$ ls -l ./pool/main/libr | grep "libreoffice$"
drwxr-xr-x 2 security security 16384 окт  4 20:13 libreoffice

$ ls -l ./pool/main/l | grep "linux-firmware$"
drwxr-xr-x 2 security security 4096 окт  4 20:12 linux-firmware


Но почему-то один файл отдается, второй - нет. Что еще и где надо проверить, чтобы понять почему Apache на этом файле спотыкается?

 , , ,

Xintrea
()

RSS подписка на новые темы