Дети любят такой компьютер!
Языки сайта [ar] [cs] [de] [en] [es] [fa] [fr] [it] [ms] [nl] [pt] [pt_br] [ro] [ru] [sr] [sr@latin] [th] [uk] [vi] [zh]
Все версии этой статьи: [English] [русский]
DansGuardian – это фильтр контента DoudouLinux, который не дает детям попасть на «двусмысленный» веб-сайт. DansGuardian состоит из двух компонентов: черного списка адресов URL и анализа контента в реальном времени. Второй компонент нуждается в переводе, поскольку он использует список выражений, которые известны как двусмысленные или, наоборот, безопасные. Каждому слову и выражению приписывается вес ,который увеличивает или уменьшает общий вес страницы. Страница считается двусмысленной как только ее вес достигает 50 согласно конфигурации DansGuardian. Этот уровень защиты рекомендуется для малышей.
NB: страницу сообщений DansGuardian тоже надо переводить, но ее содержимое было перемещено в PO файлы, в том числе встроенные сообщения, которые были помещены в текстовые файлы. PO файлы можно найти на TransiFex.
Файлы со словами и выражениями находятся в каталоге lang/trunk/apps/system/dansguardian/lists/phraselists/
дерева lang в SVN. Во время компиляции они копируются в /etc/dansguardian/lists/phraselists/
. Файлы находятся в подкаталогах, которые соответствуют списку категорий:
$ ls /etc/dansguardian/lists/phraselists/ badwords forums gore malware personals secretsocieties violence chat gambling idtheft music pornography sport warezhacking conspiracy games illegaldrugs news proxies translation weapons domainsforsale goodphrases intolerance nudism rta travel webmail drugadvocacy googlesearches legaldrugs peer2peer safelabel upstreamfilter
Файлы в подкаталогах называются banned_lang
или weighted_lang
, где lang - это наименование вашего языка (кроме английского, файлы которого называются проще - banned
и weighted
:
$ ls /etc/dansguardian/lists/phraselists/pornography/ banned weighted_danish weighted_italian weighted_portuguese banned_portuguese weighted_dutch weighted_japanese weighted_russian weighted weighted_french weighted_malay weighted_spanish weighted_chinese weighted_german weighted_norwegian
«Запрещенные» файлы содержат фразы, которые автоматически приводят к отклонению страницы без оценки остального контента. «Взвешенные» файлы содержат фразы, которые соотносятся с мерой «двусмысленности». Они организованы довольно просто:
#listcategory: "Pornography (Russian)"Каждая строка содержит слово или выражение и его вес. Комментарии предваряются знаком решетки “#”. Пробелы перед и после слова позволяют указать, что слово является частью более длинного слова или его окончанием. Это очень важно, поскольку слова типа anal также являются началом слов analysis, analogue и т.д. Правила такие:<проститутки><50> #prostitutes < фото><5> #photo <бюст><40> #bust < анал ><40> #anal <анальный><40> #anal
пробелы | пример | результат |
пробел справа | <abcd> | равно любому слову, которое начинается abcd |
пробел слева | < abcd> | равно любому слову, которое кончается abcd |
два пробела | <abcd > | полное соответствие abcd |
нет пробелов | < abcd > | равно любому слову, содержащему abcd |
Обратите внимание, что файл английских взвешенных слов (у которого в названии нет наименования языка) гораздо больше файлов на других языках. Их размеры таковы:
$ ls -Ssh1 —hide ’banned*’ /etc/dansguardian/lists/phraselists/pornography/ total 152K 80K weighted 16K weighted_portuguese 12K weighted_italian 8,0K weighted_japanese 4,0K weighted_french 4,0K weighted_spanish 4,0K weighted_danish 4,0K weighted_russian 4,0K weighted_german 4,0K weighted_malay 4,0K weighted_dutch 4,0K weighted_chinese 4,0K weighted_norwegian
Только файл с португальскими взвешенными словами действительно наполнен. Это значит, что работа по переводу DansGuardian предстоит немалая... Впрочем, весь английский файл можно заменить более коротким, но исчерпывающим списком слов и выражений на другом языке.
Файлы DansGuardian, поставляемые с DoudouLinux, имеют разные кодировки в зависимости от языка. Например, для французского языка используется латинская кодировка, а для русского — кириллическая. Для нас это большая проблема, потому что надо редактировать файлы, сохраняя правильную кодировку для каждого языка. По этой причине дерево “lang/” в DoudouLinux состоит из файлов, предварительно конвертированных в кодировку UTF-8. Это значит, что все файлы должны сохраняться именно в этой кодировке независимо от языка.
Еще одна проблема в том, что DansGuardian не предполагает, что веб-страницы, которые вы запрашиваете, имеют кодировку. Вместо этого он воспринимает контент как бинарный поток и побайтово сравнивает его со списком слов. Это значит, что надо иметь файл взвешенных слов для каждой возможной кодировки каждого языка... Опять-таки дерево “lang/” должно содержать только файлы в кодировке UTF-8. Файлы в дополнительных кодировках автоматически генерируются при компиляции образа CD, чтобы уменьшить труд переводчика.
Значит если вы хотите добавить кодировку для своего языка, надо изменить файл
lang/trunk/apps/system/dansguardian/lists/weightedphraselist
. Он содержит список файлов, загружаемых DansGuardian. Тонкость в том, что если скрипт, компилирующий образ CD, не находит файл в этом списке, он пытается сгенерировать его из другого файла, который предполагает родительским и кодировку которого сохраняет. Дополнительные файлы должны именоваться так: weighted_LANGUAGE-ENCODING
. Например, несуществующий файл weighted_russian-cp1251
будет конвертирован скриптом, компилирующим образ CD из файла weighted_russian
, при этом кодировка поменяется с UTF-8 на cp1251. Результат и будет назван weighted_russian-cp1251
!
Ниже небольшой пример файла weightedphraselist
:
.Include</etc/dansguardian/lists/phraselists/pornography/weighted_spanish> #ALPHA# .Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian> #BETA# .Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian-cp1251> .Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian-koi8> .Include</etc/dansguardian/lists/phraselists/nudism/weighted>
На этом примере видно, как список русских слов в UTF-8 может быть сконвертирован в файлы с кодировкой p1251 и koi8 во время компиляции образа.
Если посмотреть на список русских фраз, то вы увидите такие комментарии:
< секс чат ><50> #sex chat < cекс чат ><120> #sex chat (first ’c’ is latin) < секс форум ><50> #sex forum < cекс форум ><120> #sex forum (first ’c’ is latin)
Видно, что одна и та же фраза повторяется дважды. Выглядят они одинаково, но на само деле разные, потому что буква С в кириллице имеет цифровой код, отличный от буквы С в латинице. В результате можно написать нехорошее слово, используя разные алфавиты в одном слове и таким образом обойти фильтр контента... Вот почему такой трюк имеет очень высокий вес вредоносности!
Так что если в вашем языке используется алфавит, буквы которого выглядят как буквы другого алфавита, вы должны переписать двусмысленные слова, перемешав алфавиты и присвоить такому слову очень высокий вес вредоносности.
Copyright © DoudouLinux.org team - Весь текст с данного сайта публикуется по условиям лицензии Creative Commons BY-SA