The OpenNET Project
 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ

Работа с русскими именами файлов в ZIP и UNZIP под *nix
Одна из неожиданных проблем, возникающих при обмене файлами с пользователями
Windows - странное поведение ZIP-архивов. Казалось бы, достаточно правильно
настроить кодировки... Не тут-то было!

Для текстовых файлов достаточно найти редактор с выбором кодировки, для дисков
можно указать кодировку при монтировании, более "продвинутые" форматы архивов
(RAR, 7zip) тоже как-то решают эту проблему; и только ZIP, самый
распространённый и "самый совместимый" архиватор, почему-то неожиданно
оказывается несовместимым в принципе, стоит именам файлов выйти за пределы ASCII.

Есть мнение, что в архивы ZIP имена файлов пишутся в кодировке файловой
системы, и дескать, отсюда и проблемы - в Windows одна кодировка, а в Linux
другая. И виноват в том устаревший архивный формат и сделать с этим ничего
нельзя, а если очень хочется - переименовывать распакованные файлы скриптами и
прочими костылями. Что ж, попробуем.

Однако попытка увидеть имена файлов путём перекодировки вида

   ls -N | iconv -f cp866

заканчивается провалом. Ладно, не подошла 866, перебираем все известные русские
кодировки и все виды юникода - имена файлов остаются нечитаемыми. Что же это за
кодировка такая в зипе?!

Поиски в сети дают результат - оказывается, надо так:

   ls -N | iconv -f cp1252 -t cp850 | iconv -f cp866

Перекодировать распакованные файлы в utf-8 можно следующей командой:

   find . -type f -exec sh -c 'np=`echo {}|iconv -f cp1252 -t cp850| iconv -f cp866`; mv "{}" "$np"' \;

Битые имена файлов уходят, остаётся вопрос - неужели в зипе правда такая
странная кодировка? Что-то сомнительно.

Ищем дальше и натыкаемся на разгадку. http://www.linuxfromscratch.org/blfs/view/cvs/general/unzip.html

"The UnZip package assumes that filenames stored in the ZIP archives
created on non-Unix systems are encoded in CP850, and that they should be
converted to ISO-8859-1 when writing files onto the filesystem. Such
assumptions are not always valid. In fact, inside the ZIP archive, filenames
are encoded in the DOS codepage that is in use in the relevant country, and the
filenames on disk should be in the locale encoding. In MS Windows, the
OemToChar() C function (from User32.DLL) does the correct conversion (which is
indeed the conversion from CP850 to a superset of ISO-8859-1 if MS Windows is
set up to use the US English language), but there is no equivalent in Linux.

When using unzip to unpack a ZIP archive containing non-ASCII filenames, the
filenames are damaged because unzip uses improper conversion when any of its
encoding assumptions are incorrect. For example, in the ru_RU.KOI8-R locale,
conversion of filenames from CP866 to KOI8-R is required, but conversion from
CP850 to ISO-8859-1 is done, which produces filenames consisting of
undecipherable characters instead of words (the closest equivalent
understandable example for English-only users is rot13)."

Другими словами, имена файлов в ZIP-архиве хранятся в кодировке DOS,
соответствующей языку локали. В Windows эта кодировка может быть получена
соответствующей функцией, а для прочих систем авторы Info-ZIP решили не
возиться и схалтурили - сделали безальтернативное преобразование cp850=>cp1252.
Вот, где зарыта собака! Нет никакой "уникальной кодировки ZIP", там обычная 866
(для русской локали). Во всём прочем виноват не устаревший формат, а версия
unzip от Info-ZIP для *nix, которая неправильно работает со всеми локалями,
отличными от западноевропейских. Что делать?

Патчить. Можно, конечно, обойтись разовым переименованием, но только в разовых
случаях. Если такие архивы встречаются часто, или их надо создавать, выбора не
остаётся, нужен нормальный инструмент, а не костыли. В сети есть разные патчи
для zip и unzip от разных авторов и для различных версий, однако многие из них
устарели, а некоторые небеспроблемны. Я остановился на патчах от АльтЛинукса.

Проблему определения кодировки DOS они решили путём использования своей библиотеки 
libnatspec, которую перед этим придётся установить, брать можно тут: http://sourceforge.net/projects/natspec/
После её установки актуальные кодировки локали можно проверить командой

   natspec -i

Патч для unzip-6.0 подошел почти гладко, осталось исправить только две мелких
детали. Патчи для zip оказались для предыдущей версии, поэтому пришлось
повозиться немного больше, однако оно того стоило - теперь я могу спокойно
распаковывать созданные в Windows zip-архивы просто командой unzip, и точно так
же упаковывать командой zip, не опасаясь битой кодировки на том конце.

Итак, качаем исходник последней стабильной версии unzip
unzip60.tgz и
исправленную версию патча unzip60-natspec-mod.diff.gz, распаковываем
исходник, переходим в его директорию, патчим, собираем и устанавливаем:

   zcat ../unzip60-natspec-mod.diff.gz | patch -p1
   make -f unix/Makefile generic_gcc

и от рута

   make -f unix/Makefile install

После этого unzip должен правильно распаковывать zip-архивы с русскими именами
файлов, и правильно же выводить их в консоли.

Теперь то же самое с zip - берём последнюю версию
zip30.tgz, и к нему мой патч
natspec-asdos-mod.diff.gz.
Распаковываем исходник, и в его директории:

   zcat ../zip30-natspec-asdos-mod.diff.gz | patch -p1
   make -f unix/Makefile generic_gcc

и от рута

   make -f unix/Makefile install

Теперь мы можем упаковывать zip-архивы в виде, полностью совместимом с
проводником Windows и даже с TotalCommander. С последним оказалось, как ни
странно, даже больше проблем - он требовал архив не просто в кодировке DOS, а
непременно с именами в формате DOS, часть патча "asdos" именно для этого. Что
особенно забавно, в TotalCommander использован код всё того же проекта Info-ZIP.

Возможно, некоторые спросят - зачем столько возни с этим морально устаревшим
зипом, когда полно приличных архиваторов на любой вкус? Ответ - для
совместимости, больше ни для чего ZIP и не нужен. А раз так, то пускай он
делает своё дело как надо, а не как всегда :)
 
30.11.2010 , Автор: Natrio
Раздел:    Корень / Пользователю / Русификация

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Natrio, 23:16, 30/11/2010 [ответить] [смотреть все]
  • +/
    Чуть не забыл – ссылки оригинальные патчи от AltLinux и их обсуждения:

    http://sisyphus.ru/ru/srpm/Sisyphus/unzip/patches
    http://sisyphus.ru/ru/srpm/Sisyphus/zip/patches
    https://bugzilla.altlinux.org/show_bug.cgi?id=4871
    https://bugzilla.altlinux.org/show_bug.cgi?id=12562

     
     
  • 2.5, iZEN, 02:25, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    А в майнстрим Info-ZIP слабо закинуть ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.7, Natrio, 08:36, 01/12/2010 [^] [ответить] [смотреть все]  
  • +/
    Многие уже пробовали закинуть подобные патчи в мэйнстрим Info-ZIP, но их либо ... весь текст скрыт [показать]
     
  • 2.9, john, 11:17, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    При распаковке имена на русском zipinfo - дает абракадабру или набор ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, Natrio, 11:27, 01/12/2010 [^] [ответить] [смотреть все]  
  • +/
    Оригинальные unzip и zipinfo, будучи собранными с опциями по умолчанию, при выво... весь текст скрыт [показать]
     
     
  • 4.12, john, 13:08, 01/12/2010 [^] [ответить] [смотреть все]  
  • +/
    Да, это работает - большое спасибо ... весь текст скрыт [показать]
     
  • 2.11, Natrio, 11:39, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А это мои патчи ссфлки есть в тексте статьи http www opennet ru soft zip_ru... весь текст скрыт [показать] [показать ветку]
     
  • 2.33, sanek, 15:04, 12/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Zip русские имена, поможем решить этот баг Нужна ваша помощь Ребята, многие ... весь текст скрыт [показать] [показать ветку]
     
     ....нить скрыта, показать (7)

  • 1.2, Аноним, 23:35, 30/11/2010 [ответить] [смотреть все]  
  • +/
    Можно просто распаковать в корень уже собранные пакеты unzip от альта с того же ... весь текст скрыт [показать]
     
     
  • 2.6, Natrio, 08:28, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я очень благодарен авторам патчей из AltLinux, и я дал ссылки на оригинал Однак... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Anonym, 00:04, 01/12/2010 [ответить] [смотреть все]  
  • +/
    Проще отказаться от Zip, чем заниматься пропатчиванием
     
     
  • 2.4, iZEN, 02:24, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ношу ZIP-архивы с русскими именами файлов, сделанные под Windows, на работу Там... весь текст скрыт [показать] [показать ветку]
     
  • 2.8, Natrio, 08:49, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я могу отказаться от ZIP, но не могу заставить отказаться от него тех, кто прино... весь текст скрыт [показать] [показать ветку]
     
  • 2.22, vovans, 21:51, 02/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    конечно, можно ля-лякать, если с реальными людьми не общаешься Но задолбёшься... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Andrey Mitrofanov, 14:08, 01/12/2010 [ответить] [смотреть все]  
  • +/
    >| iconv -f cp1252 -t cp850 | iconv -f cp866

    Вариант:
    |recode lat1..850,866..
      , может быть,
    |recode -f lat1..850,866..
      , если будет на чём спотыкаться.

    unzip -l $file |recode -f 8859-1..850,866..
    -работает, теперь ждём Совета, какой recode нужен для
    7z l $file | ....

    :)

     
     
  • 2.14, Natrio, 14:45, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нет, у 7z со своими и раровскими архивами всё нормально А вот зип он распаковыв... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, x0r, 15:55, 01/12/2010 [^] [ответить] [смотреть все]  
  • +/
    отправте пожалуйста багрепорт... весь текст скрыт [показать]
     
  • 2.15, Natrio, 15:48, 01/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    По уточнённым данным, 7z p7zip под Linux начинает распаковывать zip 8211 архи... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.25, h31, 21:29, 03/12/2010 [^] [ответить] [смотреть все]  
  • +/
    Бесполезно Помогли только патчи от RusXMMS ... весь текст скрыт [показать]
     
     
  • 4.38, sergey, 13:45, 16/12/2010 [^] [ответить] [смотреть все]  
  • +1 +/
    7z l -no-utf16 fname zip 124 iconv -f cp866 толькочо проверил ... весь текст скрыт [показать]
     
  • 1.17, Аноним, 06:37, 02/12/2010 [ответить] [смотреть все]  
  • +/
    А AltLinux-у отправили свои улучшенные патчи ... весь текст скрыт [показать]
     
  • 1.18, мше, 08:53, 02/12/2010 [ответить] [смотреть все]  
  • +/
    > более "продвинутые" форматы архивов

    (RAR, 7zip) тоже как-то решают эту проблему;
    нифига они не решают. вон у меня щас лежит rar, который даже не распаковывается

     
     
  • 2.19, Natrio, 09:18, 02/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Чем именно не распаковывается Последнее время появилась новая модификация архи... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, мше, 11:45, 03/12/2010 [^] [ответить] [смотреть все]  
  • +/
    хм действительно... весь текст скрыт [показать]
     
  • 1.20, fank, 13:10, 02/12/2010 [ответить] [смотреть все]  
  • +/
    о, сколько лисапетов сразу

    rusxmms.sf.net

    удивитесь, как грамотные люди давным давно решили все эти проблемы

     
     
  • 2.21, Natrio, 16:58, 02/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    ЗдОрово А патчи для unzip-6 0 и zip-3 0 уже есть ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.24, fank, 18:48, 03/12/2010 [^] [ответить] [смотреть все]  
  • +/
    сарказм С Sheldon Cooper видимо, перцу, что это написал, надоело упрашивать д... весь текст скрыт [показать]
     
  • 1.26, StrangeAttractor, 23:51, 07/12/2010 [ответить] [смотреть все]  
  • +/
    Спасибо. А как тут статью плюсануть?
     
  • 1.27, ананим, 23:54, 08/12/2010 [ответить] [смотреть все]  
  • +/
    предпочитаю использовать fuse-zip - man fuse-zip
    fuse-zip - a FUSE filesystem for zip archives with write support
    ....
           If you want to specify character set conversion for file names in archive, use the following fusermount options:
             -omodules=iconv,from_code=$charset1,to_code=$charset2
    ....
    DESCRIPTION
           fuse-zip  is  a  fuse  filesystem,  that enables any program to work with a ZIP archive as though it is a plain directory.  Unlike KIO or Gnome VFS, it can be used in any application without modifications.
           Unlike other FUSE filesystems, only fuse-zip provides write support to ZIP archives.  Also, fuse-zip is faster that all known implementations on large archives with many files.
     
  • 1.28, autopilot, 11:47, 10/12/2010 [ответить] [смотреть все]  
  • +/
    Debian 4 Etch + unzip-5.52-9etch1
    на хостинге при распаковке кодировка битая, однако это фиксится в php, кроме одной вредной буквы 'Ш'-большая, которая, как выяснилось, просто проглатывается в процессе распаковки.
    В листинге же эта буква остается.
    Случайно выяснилось, когда залили архив с файликом городка "Шахунья.jpg".

    Рекомендую для проверки патчей и локалей обратить на это внимание.

     
     
  • 2.29, Natrio, 11:51, 10/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Проверил 8211 у моих патченых zip и unzip такой ошибки нет ... весь текст скрыт [показать] [показать ветку]
     
  • 1.30, prof_alex, 01:57, 11/12/2010 [ответить] [смотреть все]  
  • +/
    Что-то не пойму Собрал unzip из calculate emerge -vp unzip These are the packag... весь текст скрыт [показать]
     
     
  • 2.31, Natrio, 09:52, 11/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Чуть выше я уже писал, что unzip zipinfo, собранный без опции NO_SETLOCALE, при ... весь текст скрыт [показать] [показать ветку]
     
  • 1.32, Forth, 14:55, 12/12/2010 [ответить] [смотреть все]  
  • +/
    Использую ваш патч, в unzip появились опции -I и -O и все равно вопросики в консоли. :(
    Система - Fedora 14. Где копать?
     
     
  • 2.34, Natrio, 09:14, 13/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нет у меня федоры, проверить не могу Могу подсказать следующее 1 Мой патч htt... весь текст скрыт [показать] [показать ветку]
     
  • 2.35, Natrio, 09:17, 13/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    4 Вопросики только в консоли Имена распакованных файлов правильные ... весь текст скрыт [показать] [показать ветку]
     
  • 1.36, Yo, 13:56, 13/12/2010 [ответить] [смотреть все]  
  • +/
    # можно и так:
    zipinfo -1 my.zip | while read z
    do u=$(echo "$z"|iconv -f cp866)
    unzip my.zip "$z" && mv -i "$z" "$u"
    done
     
     
  • 2.37, Natrio, 08:43, 14/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Не получится 1 Непатченный unzip zipinfo выводит имена с перекодировкой cp850 ... весь текст скрыт [показать] [показать ветку]
     
  • 1.39, pva0xd, 17:38, 23/12/2010 [ответить] [смотреть все]  
  • +/
    Natrio, а не могли бы вы пояснить в каких случаях нужена опция -K? И вообще зачем изменёно умолчание для dosify?
     
     
  • 2.41, Natrio, 12:55, 24/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Опция -K обратна опции -k, то есть отключает dosify Умолчание изменено для со... весь текст скрыт [показать] [показать ветку]
     
  • 1.40, RUR, 12:51, 24/12/2010 [ответить] [смотреть все]  
  • +/
    По мотивам Yo, создаём бат файл:

    echo 'zipinfo -1 $1 | while read z; do u=$(echo "$z"|iconv -f cp1252 -t cp850|iconv -f cp866); unzip $1 "$z" && mv -i "$z" "$u"; done' > brusunzip

    chmod +x brusunzip

    brusunzip my.zip

     
     
  • 2.42, Natrio, 13:01, 24/12/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я начинал именно с таких скриптов, только получаются они очень неуклюжими Кроме... весь текст скрыт [показать] [показать ветку]
     
  • 1.43, lucentcode, 01:49, 07/04/2011 [ответить] [смотреть все]  
  • –1 +/
    C unzip 6.0.1 вы можете использовать опцию -O cp866 когда надо распаковать файл, пожатый в windows.
     
     
  • 2.44, aleks, 23:10, 03/03/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > C unzip 6.0.1 вы можете использовать опцию -O cp866 когда надо распаковать
    > файл, пожатый в windows.

    В ман не нашел такой опции

     
  • 1.45, aleks, 23:13, 03/03/2012 [ответить] [смотреть все]  
  • +/
    Ну и в догонку под bsd 7.3 отлично работает такой способ например:
    7z e -no-utf16 jtv.zip
    convmv -f cp866 -t koi8-r * --notest
     
     
  • 2.46, Natrio, 23:37, 03/03/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Возможно, но статья не об этом, а о том, как НОРМАЛЬНО работать в *nix с ОБЫЧНЫМИ, то есть DOS/Win zip-архивами.
     
     
  • 3.47, aleks, 02:10, 04/03/2012 [^] [ответить] [смотреть все]  
  • +/
    Ок, поясню.
    В приведенном мною примере jtv.zip архив тот самый виндовый архив,
    при распаковке unzipом оного можно увидеть кривую кодировку названий файлов.
    Приведенный мною пример как раз показывает как можно НОРМАЛЬНО работать с такими архивами.
     
     
  • 4.48, Natrio, 08:51, 04/03/2012 [^] [ответить] [смотреть все]  
  • +/
    В статье выше тоже приводятся примеры таких костылей, только это не называется "нормально работать". Это называется "перекодировать кривую кодировку имён файлов после распаковки", это ДАВНО ИЗВЕСТНО, и статья совсем не об этом.
    В статье предлагается пропатчить zip и unzip, чтобы имена файлов всегда правильно упаковывались и распаковывались.
       zip -r фрхив.zip файлы и каталоги
       unzip архив.zip
    Также после этого можно использовать GUI-шные оболочки, которые используют zip и unzip для упаковки и распаковки.
    Мне известны пакеты с этими патчами для ubuntu/debian
    https://launchpad.net/~frol/+archive/zip-i18n
    и для ArchLinux:
    http://aur.archlinux.org/packages.php?ID=47921
    https://aur.archlinux.org/packages.php?ID=47920
     
     
  • 5.49, aleks, 20:32, 04/03/2012 [^] [ответить] [смотреть все]  
  • +/
    Эта статья как раз из серии "а  мыши кололись, плакали, но продолжали жрать кактус" как ни посмотри.

    > В статье предлагается пропатчить zip и unzip, чтобы имена файлов всегда правильно
    > упаковывались и распаковывались.

    Да вот это и есть костыли. ППЦ сделать костыли для костылей. Зачем?

    Есть нормальный продукт 7z где уже из "коропки" все распаковывается и тут же можно перевести в нужную кодировку, замечу без всяких патчей и прочей заумной мути.
    Просто написать одну строчку и вуаля. Куда проще то?
    Нет, конечно, можно с умным видом ложить патчи какие-то чето там пересобирать и еще держать в уме а как же на других серваках не забыть потом это все проделать или помнить... Бред.
    Не работает это глюкалово unzip ну и нафиг его есть другие инструменты которые могут это сделать быстро и парой команд.

     
     
  • 6.53, Хрен с горы, 16:26, 15/09/2013 [^] [ответить] [смотреть все]  
  • +/
    Люто, бешено плюсую.
    7z спасёт отцов русской демократии.
     
  • 1.50, Ю.Т., 13:37, 15/12/2012 [ответить] [смотреть все]  
  • +/
    Да, это полезный совет Всё верно Пока существуют винды и WinZip и InfoZip,... весь текст скрыт [показать]
     
     
  • 2.51, Natrio, 14:05, 15/12/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Не так уж всё и сложно :)

    Что касается "сопровождения", то дистрибутивы, как правило, позволяют собирать не только вручную, но и собирать пакеты, или подключать сторонние репозитории.
    После установки пакетов их "сопровождение" ничем не отличается от всех прочих, а работа с ними – от работы со оригинальными zip и unzip, независимо от программ, которые их вызывают.

    Для себя в ArchLinux я собрал пакеты, заменяющие zip и unzip, и положил в AUR:
    http://aur.archlinux.org/packages/zip-natspec/
    http://aur.archlinux.org/packages/unzip-natspec/
    Для Убунты (к Дебиану тоже подходят) мои пакеты собрали без меня :)
    http://launchpad.net/~frol/+archive/zip-i18n
    Насчёт других дистров не знаю, но в случае чего можно поступить аналогично.

    А кодировку libnatspec определяет самостоятельно, на основе языка локали. Если запустить с другой локалью, будет выбрана другая кодировка.
    Юникодные архивы альтернативного формата infozip будут распаковываться как обычно, на это патчи не влияют.

     
     
  • 3.52, Ю.Т., 14:33, 15/12/2012 [^] [ответить] [смотреть все]  
  • +/
    > Не так уж всё и сложно :)
    > Что касается "сопровождения", то дистрибутивы, как правило, позволяют собирать не только
    > вручную, но и собирать пакеты, или подключать сторонние репозитории.
    > После установки пакетов их "сопровождение" ничем не отличается от всех прочих, а
    > работа с ними – от работы со оригинальными zip и unzip,
    > независимо от программ, которые их вызывают.

    ...

    Ну-с, что кому кажется сложным или простым, тема вечная. По-моему, основывать решение на доп. библиотеке, которая угадывает (!) кодировку, это уже ошибка. А не угадает, тогда как? Или вот тут предлагали: то шелл-скрипты, то в два действия архив раскрывать.

    Да вообще работа со сложно-уложенной информацией в консоли это скорее упражнение в йоге, но не работа. :)

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 09.04 Блокирование попыток эксплуатации heartbeat-уязвимости в OpenSSL средствами iptables
    - 04.04 Создание чистого openvz-контейнера на основе CentOS 6
    - 05.03 Установка сервера видеоконференций openmeetings 2.2 в Debian 7.4
    - 14.01 Организация ввода спецсимволов в системах с X.Org
    - 13.01 Создание собственного модуля Samba VFS
    - 19.12 Обновление Fedora/RFRemix 19 до Fedora/RFRemix 20
    - 16.12 Как заблокировать вход пользователей, работающих через сеть Tor
    - 09.12 Создание системы трансляции звука на базе Debian, Icecast2, Ices и XBMC
    - 22.11 Построение системы фильтрации контента по реестру Роскомнадзора на базе CISCO и FreeBSD
    - 08.11 Автоматическое получение списка запрещенных сайтов от РОСКОМНАДЗОР с помощью Perl
    RSS | Следующие 15 записей >>



      Закладки на сайте
      Проследить за страницей
    Created 1996-2014 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList