ASCII-каптча, каптча псевдографикой. Часть III. Примеры использования.

Сразу оговорюсь, это учебные примеры. В ближайшее время я вернусь к теме и покажу, как использовать каптчу «на местности», т.е. встроить ее в работающий движок сайта или его часть. А тут пока примеры относительно скорее умозрительные, что называется, из учебника.

Каптча и механизм сессий.

Если кто-то вдруг совсем не знает, что это такое, то в конце заметки есть ссылка на источник, ну или можно в поисковик сходить.

Код тестового скрипта вполне неплохо обкомментирован, поэтому особых пояснений не требует. Если уж возникнут вопросы — задавайте, постараюсь ответить.

Код на PasteBin

Использование cookie для проверки каптчи

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

Код на PasteBin

Тут поясню лишь один момент, установку самих cookie. Делается это встроенной функцией PHP setcookie, полное описание которой вы можете найти в разделе источников в конце заметки.
Мне же понадобились только три параметра:
setcookie($name,$value,$expiredtime);
где:
$name — имя cookie
$value — передаваемое в cookie значение, сохраняемое на компьютере пользователя
$expiredtime — срок действия cookie, после его окончания cookie не будет обрабатываться сервером. Таким образом устанавливается максимальное время, данное пользователю на ввод кода каптчи.

В данном случае:

setcookie('mycaptchamd5',md5($captchacode),time()+300);

т.е. имя cookie 'mycaptchamd5', в качестве значения передается md5-хэш кода каптчи, а время действия устанавливается в 300 секунд (т.е. 5 минут).

Смотреть код или скачать готовый вариант

Код модуля ASCII каптчи на PasteBin
Пример с сессией
Пример с cookie
Цифры псевдографикой. Вариант 1
Цифры псевдографикой. Вариант 2

Скачать все с Mega.nz в одном архиве

Источники

Функция setcookie()
Разработка CAPTCHA своими руками
Копии

Предыдущие части

Часть I
Часть II

ASCII-каптча, каптча псевдографикой. Часть II. В которой генерируется каптча.

Итак, закончили мы на том, что нарисовали все цифры, создали массивы php с псевдографическими изображениями цифр и написали отладочную функцию, которая выводит конкретную цифру. Продолжаем!

Для начала условимся, то нашему злодею-хацкеру, распознающему каптчу, мы, хоть и ненамного, но усложним задачу: «пробельные» («пустые») символы в изображении каждой цифры, а также сами символы, изображающие цифру, будут выбраны случайно из заранее заданного набора. Зададим набор символов, изображающих цифру, в виде строки:

$pgstring="#$%@!?0"; //символы, из которых будут составлены цифры

Аналогично и для «пустых» символов:

$spstring="- "; //пробельные символы

Тут все зависит от вкуса, цвета и лично ваших глазок. Главное, чтобы в строке с возможными «пустыми» символами и в строке с возможными символами, изображающими цифру, не встретилось одинаковых символов, иначе при определенных условиях, пользователь вполне может получить вот такую вот гадость, вместо каптчи:

###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######

Заведем еще две переменные, которые будут хранить выбранные символы для «пробельных» и символов изображения:

$pgchar="";
$spchar="";

Пока просто оставим их пустыми, потом к ним еще вернемся.

Далее подробное описание скрипта с картинками и видео

Итого

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

Код каптчи

Смотреть на PasteBin

Начало здесь
Продолжение

ASCII-каптча, каптча псевдографикой. Часть I.

Сегодня будем рисовать каптчу. Причем не с помощью стандартных библиотек вывода графики (таких мануалов в сети более чем достаточно), а каптчу, отображаемую пользователю в виде псевдографики, т.е. изображения символов каптчи будут созданы из обычных числовых и буквенных символов. Для упрощения задачи примем следующее:

— В качестве символов, из которых будет создаваться изображение, будем использовать латинские буквы, цифры и знаки препинания. Можно, конечно, и китайскими иероглифами пользоваться, но не факт что пользователь сможет каптчу распознать и она у него не «поплывет».
— Сам код каптчи будет состоять только из цифр (ну вот лень мне было заморачиваться с буквами в ASCII-арт).

Плюсы:
+ Скрипт легко встраивается как медведевский будильник, в разные места в любое место, где нужна каптча.
+ Не требует библиотек обработки изображений, дополнительных ранее нарисованных картинок и т.д., соответственно, будет работать даже на самом плохом хостинге, где библиотек типа ImageMagick может вообще не быть
+ Отображается даже в консольном (текстовом) редакторе типа lynx.
+ Почти не тратит трафик (текст же) и ресурсы сервера.

Минусы:

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

В части первой займемся рисованием цифр. Конечно, человеку увлекающемуся ASCII-артом это нафиг не надо, можно сразу пропускать и переходить ко второй части. Кто не знает, что такое ASCII-арт вообще, тот может сходить в Википедию или Гугль, и ознакомиться с темой.

Я сам не великий ASCII-сенсей, так что использовал достаточно стандартную методу:

1. В любом простом текстовом редакторе (Блокноте, Notepad++, mcedit или редакторе FAR-а) нарисуем поле размером в X символов и Y строк каким-либо одним символом, например *, -, # или любым другим. Должно получиться что-то типа этого (я взял поле размером 6 x 5 символов):

------
------
------
------
------

2. Далее, нажимаем клавишу Insert, включаем режим замены и заменяем в этом поле символы - на какие-нибудь другие, так, чтобы получилось изображение определенной цифры, например:

-0000-
00--00
00--00
00--00
-0000-

Если кто-то ленивый, то можно поискать готовые цифры в Гугле, взять несколько черновой вариант здесь, готовый, используемый мною вариант здесь. Или можно вообще в последней части статьи скачать сразу весь архив. XD

Итак, у нас есть готовые изображения цифр, осталось лишь записать их в виде, доступном PHP.

Создаем массивы, содержащие псевдографические изображения цифр. Здесь и далее условимся, что в качестве «пустого» символа я использовал *, а в качестве символа для изображения цифры, знак $.
Код и некоторые пояснения
В следующей части создадим генератор кода каптчи и генератор ее ASCII-изображения.

Форма обратной связи для WordPress, возвращаясь к напечатанному.

Или как я избавился от слишком назойливой опеки антиспама на сервере.

Не так давно поднимал вопрос о форме обратной связи для сайта на WordPress [Копия].

Некий анон хотел меня затроллить, но, как обычно, мало того, что написал полнейшую чепуху, которая не работает, так еще и случайно помог вскрыть баг (хотя, скорее опцию) почтового сервера, которая, правда, лично мне мешала.

Ситуация такая: антиспам финского сервера (вполне оправданно, кстати) отправляет в спам письма с доменов .ru (mail.ru и yandex.ru точно), .kz, .by и некоторых не связанных с ГОРФ, типа .tk

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

Находим в скрипте mail.php строчку:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n";

И меняем ее на:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n"."E-mail to answer: $email\n\n";

Ниже меняем в строке

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

$email на $address. Должно получиться:

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$address");

Что этот код делает. Да все просто. Строка с сообщением ($mes) изменяется так, что адрес, который ввел пользователь в контактной форме, добавляется к тексту сообщения как простой текст. Параметры функции php mail изменяются так, что в заголовок письма вместо адреса пользователя, добавляется наш собственный адрес для приема сообщений из контактной формы. В результате мы получим сообщение, отправленное с нашего же адреса. Примерно как на скриншоте ниже:

Проблема с антиспамом решилась (сервер проверял только заголовки писем, а не указанные в тексте адреса), единственный минус — не ответить по нажатию соответствующей кнопки в почтовой программе, но тут уж, как говорится, шашечки или ехать.

Другой баг скрипта отправки почты, это то, что довольно легко его использовать автоматически и зафлудить почтовый ящик. Скоро расскажу, как побороть и эту беду.

Заметка в PDF

C#. Генерация строки из случайных символов.

Задача

Сгенерировать строку, состоящую из случайных символов. Немного дополним задачу, строка будет состоять из случайных символов, а сами символы будут взяты из заранее заданного определенного набора. Например, строчные и заглавные латинские буквы, цифры, знаки препинания или любые другие заданные символы в любой комбинации.
Такая штуковина вполне может пригодиться для генерации, например, пароля из заданного набора символов

Решение

Делается это довольно просто. Поручим формирование строки отдельной функции.
Во входных параметрах передадим ей строку, содержащую набор символов, из которых будет сформирована выходная случайная строка (параметр Alphabet) и длину генерируемой строки (параметр Length)

string GenRandomString(string Alphabet, int Length)
{
	...
}

Внутри функции.

//создаем объект Random, генерирующий случайные числа
Random rnd = new Random();
//объект StringBuilder с заранее заданным размером буфера под результирующую строку
StringBuilder sb = new StringBuilder(Length-1);
//переменную для хранения случайной позиции символа из строки Alphabet
int Position = 0;

Далее в цикле генерируем случайную строку:

for (int i = 0; i < Length; i++)
            {
                //получаем случайное число от 0 до последнего
                //символа в строке Alphabet
                Position = rnd.Next(0, Alphabet.Length-1);
                //добавляем выбранный символ в объект
                //StringBuilder
                sb.Append(Alphabet[Position]);                
            }

Возвращаем сгенерированную строку:

return sb.ToString();

Код функции на PasteBin

Пример использования функции

txtReturn.Text = GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10);

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

Немного об оптимизации

День метеоролога

История к недавно состоявшемуся дню метеоролога. Автор ███████, редактура моя.

Посвящается брату и маме.

На момент истории мне было лет 5-6, в школу я не ходил, а в садик я не пошел, потому что заболел. В детстве я вообще был болезненным ребенком, и любой простудифилис лип ко мне, как банный лист. Сестра, обычно остававшаяся со мной в таких случаях тоже заболела. И мама взяла меня на работу. На самом деле я был в восторге, ведь моя мама работала не скучной чиновницей в ОГА, не продавщицей в магазине, и даже не трактористкой в колхозе. Моя мама была Метеорологом. Именно так, с большой буквы М. Если вы никогда не были на метеостанции, напроситесь и посетите это место. Метеостанция — ужасно атмосферна. Непонятного назначения приборы возвышаются на рабочих столах, скрипят, пищат, тикают, выполняя свою такую нужную, но абсолютно непонятную «гражданскому» не посвященному в таинства метеорологии работу. В дальнем углу обязательно найдется ртутный столб, и тут он будет не метафорой, а всамделишней метровой колбой, заполненной ртутью. Загляните с разрешения метеоролога в ИВО, прибор, определяющий высоту облаков. Старые советские, но надежные его версии напоминают гибрид осциллографа и игрового автомата «морской бой». Резиновая туба обнимет ваше лицо, когда вы прижметесь к ней, и, вдохнув неповторимый запах нагретого, живого прибора, вы погрузитесь в небо, а невидимый луч будет вашим проводником. В другом углу мерно тикают барографы (суточные и недельные), под столом покоится радиометр, способный предупредить город о надвигающемся апокалипсисе.

Читать далее

Впервые опубликовано на Мракопедии

Более сложный способ мониторинга состояния сервера на Linux в реальном времени.

Продолжаю тему, начатую в предыдущей заметке [КОПИЯ]. В ней описывал получение данных от определенных скриптов и процессов запущенных на сервере под управлением Linux с помощью SSH, псевдотерминала и отдельного пользователя, создаваемого специально для целей мониторинга.

Будем посмотреть другой способ, с одной стороны, более сложный и требующий владения каким-нибудь языком программирования, кроме Bash-скриптов. Хотя, можно обойтись и исключительно одним Bash’ем, если клиент и сервер под Linux, или Bash прикрутили к Windows (cygwin(?), не пробовал, не знаю). А с другой стороны, наоборот, способ простой безопасный, требующий минимум вмешательства в настройки сервера.

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

Примечание: Термины «клиент» и «сервер» могут по ходу статьи быть неоднозначно истолкованными.
Серверное приложение будет наоборот, работать на «клиентском», «операторском» рабочем месте, а «сервер», в смысле компьютер с Linux, на котором я запускаю свои скрипты, и который управляет нужной мне железякой, станет вполне себе клиентом.
В общем, чтобы не вносить путаницы я условлюсь называть рабочее место оператора «локальным компьютером», а тот, который «сервер в привычном понимании» — «удаленным».

Задача

Такая же, как и в предыдущей заметке. Имеется удаленный компьютер под управлением Linux, рулящий системой контроля температуры и давления.
На самом деле, рулить он может чем угодно: от домашнего FTP с котиками или соединения с Интернетом, до управления СКД, открытием ворот, дверей, врат в Ад, личным концлагерем и т.д.
Суть в том, что нужно, чтобы удаленная система сигнализировала оператору об изменении своего состояния (изменении температуры, разрыва соединения с Интернетом, пришествии Сатаны). Оператор, как обычно, сидит под Windows (как в большинстве организаций в СНГ).

Некоторые соглашения

Для простоты условимся, что локальный и удаленный компьютер находятся в одной локальной сети (и одной подсети) 10.10.0.0/24, IP-адрес локального компьютера 10.10.0.30, прием данных производится через сетевой порт 11000 локального компьютера. Локальный и удаленный компьютеры обмениваются данными по протоколу TCP, данные представляют собой Unicode-строки.

Как это организовано на локальном и удаленном компьютере

Код

Сервера приема сообщений:
Смотреть на PasteBin
Скачать с Mega.nz

Скрипта отправки сообщений:
Смотреть на PasteBin
Скачать с Mega.nz

Источники

1. Клиент-серверное приложение на потоковом сокете TCP [Копия]
2. Как открыть TCP-/UDP-сокет средствами командной оболочки bash [Копия]

Видеоиллюстрация

Прямая ссылка

Простой способ мониторинга состояния сервера.

Введение

Понадобилось мониторить состояние сервера, точнее не всего сервера, а определенного демона, на сервере запускаемого. Понятно, что самым простым способом мониторинга чего-то работающего в фоне, является просмотр соответствующих логов. Но такой способ на самом деле дает весьма мало интерактивности, надо постоянно заходить по SSH, ковыряться в этих самых логах. Хочется, чтоб при изменении состояния, или же по определенной команде от определенного пользователя, сервер нам все рассказывал сам.
Хорошо, если демон умеет при изменении состояния запускать некие пользовательские скрипты. Так умеет, например, демон OpenVPN или, например, демон небольшой промышленной системы метеоконтроля, который я использовал в данном примере.
Вкратце, имеется плата на Arduino, обрабатывающая показания с нескольких датчиков и передающая их в удобоваримом формате через COM-порт демону, запущенному на сервере. Демон умеет исполнять пользовательские скрипты, но вот беда (та же беда и с OpenVPN), если в скрипте написать что-то типа echo "У нас изменились параметры, шеф, все пропало" это сообщение в лучшем случае уйдет неведомо куда. В худшем — вылезет пользователю, из под которого стартует демон, посреди рабочего сеанса в консоль.

Самый простой способ всего этого избежать, при этом получив нужную интерактивность — отправлять сообщения определенному пользователю, созданному специально для данной цели.

Не так давно я делал похожего пользователя для отключения/перезагрузки сервера [КОПИЯ] . Фактически, пользователю была установлена псевдооболочка (на самом деле просто скрипт), выполняющий единственную команду перезагрузки/отключения системы. И идея создания псевдооболочек меня зацепила. Таким образом можно дать пользователю выполнять только ограниченный набор команд, да еще и обрабатывать параметры в скрипте по-своему, так что никакой злоумышленник, даже получив доступ по ssh ничего сделать не сможет, т.к. команды псевдооболочки ему неизвестны.

Почему бы не использовать такой способ и для целей мониторинга?

Создание пользователя

Первым делом создаем отдельную группу:
groupadd monusers
где monusers — любое название группы на ваш вкус, ранее в системе не существующее

Создаем пользователя:
useradd -g monusers -d /home/meteomon -s /home/meteomon/monitor.sh meteomon

где:
-g monusers группа пользователя (ранее созданная monusers)
-d /home/meteomon домашний каталог пользователя
-s /home/meteomon/monitor.sh — псевдооболочка для пользователя, скрипт, обрабатывающий команды.
meteomon — имя пользователя

Задаем пользователю пароль (иначе не сможем залогиниться по ssh):
passwd meteomon

Создаем домашний каталог:
mkdir /home/meteomon

Меняем владельца каталога на пользователя meteomon:
chown meteomon:monusers /home/meteomon

Меняем права доступа на каталог:
chmod 500 /home/meteomon

Создаем в домашнем каталоге скрипт monitor.sh о содержимом скрипта ниже.

Меняем владельца и права доступа для скрипта monitor.sh
chown meteomon:monusers /home/meteomon/monitor.sh
chmod 500 /home/meteomon/monitor.sh

Скрипт-псевдооболочка

Поскольку пользователь предполагается исключительно для мониторинга, разрешим ему всего одну команду — выход из системы. Соответственно, скрипт будет такой:

#!/bin/bash

echo "Hi, monitor operator"
echo "To exit enter byebye"

while [ "$KEYINPUT" != "byebye" ]; do
    read KEYINPUT
done

Все просто — ввод с клавиатуры попадает в переменную KEYINPUT и пока она не равна byebye скрипт выполняется. Как только пользователь введет byebye, так прервется цикл, скрипт завершит работу, и пользователь автоматически выйдет из системы.

Отправка сообщений пользователю

Для отправки сообщений пользователю используем связку команд echo и write
Можно создать отдельный скрипт со следующим содержимым:

#!/bin/bash

USERNAME="meteomon"

echo -e $1|write $USERNAME 2>/dev/null

положить его в каталог с доступными пользователям скриптами (например в /usr/sbin) и установить права доступа, например в 755, чтобы пользователь для мониторинга мог получать сообщения от всех пользователей системы.

Примечание: параметр -e команды echo позволяет использовать специальные символы, такие, как перенос строки \n, а конструкция 2>/dev/null отправляет в нуль-устройство сообщение об ошибке, которое может возникнуть, если пользователь meteomon не вошел в систему.

Использование

Осталось прописать соответствующую команду в пользовательском скрипте, вызываемом демоном, или исполняемом по cron’у:

...
DATA=`meteosrv checksystem`
/usr/sbin/techo $DATA
...

Внимание! Читайте документацию по демону, можно случайно нарваться на подводный камень, например, OpenVPN в некоторых случаях болезненно относится к ошибкам, случающимся в пользовательских скриптах.

Настройка рабочего места оператора

Для Windows понадобится утилита plink, обычно она идет вместе с ssh-клиентом PuTTY. В каталоге с ней создаем bat-файл следующего содержания.

testmon.bat:
plink -ssh -P 22 -l meteomon -pw meteomonpass 192.168.0.40

где вместо meteomon надо подставить имя пользователя для мониторинга, вместо meteomonpass — заданный пароль, а вместо 192.168.0.40 настоящий адрес удаленного компьютера.

Вот что получилось

Источники

1. Bash, команда write

Форма обратной связи для WordPress, без плагина.

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

0. Создаем новую страницу, озаглавливаем ее согласно случаю, например Обратная связь, устанавливаем простое и понятное название постоянной ссылки, например contact-form, вставляем в редакторе в режиме Текст вот этот вот html-код. Не забудьте заменить beach на название директории с вашей темой. Пока ничего работать не будет, но «болванка» странички с формой обратной связи готова, осталось лишь научить сайт обрабатывать запрос, отправленный из формы.
1. Нам понадобится php-скрипт, отправляющий почту. Создаем файл mail.php, вставляем код, который откроется по ссылке, и копируем файл по FTP в директорию темы (wp-content/themes/ваша-тема).
В исходнике mail.php надо заменить admin-vnc@uaitc.fi на тот e-mail, на который вы хотите получать сообщения, отправленные из этой формы и указать в строке
header( 'Refresh: 3; url=http://tolik-punkoff.com/obratnaya-svyaz/' ); нужный адрес, куда пользователь будет перенаправлен после отправки сообщения. Число (в данном случае 3) — время перед перенаправлением. Фактически время, которое пользователю будет отображаться сообщение об успехе, либо об ошибке при отправке сообщения.
2. Сохраняем два изображения, valid.png:


и invalid.png:

в директорию images темы (wp-content/themes/ваша-тема/images).
3. Добавляем в файл style.css темы вот этот вот код css
4. Осталось проверить, все ли работает и добавить ссылку на страницу в соответствующее меню.

Вот что должно получиться

ФАНФАРЫ!

Все необходимое в одном архиве (на mega.nz)
Нашел оригинальный архив (скачать с mega.nz)

Про ментовские погадки.


В провинциях ГОРФ, оказывается, менты мелко серут в карман околополитическим активистам.
Не, это и так понятно, но тут настолько мелко, что мне даже смешно.
Пишет мне чел, анарх, хороший друг. Не так давно было. В общем, выходит он в интернеты (через VPN, естественно), а интернетов нету. И VPN’а тоже нету, он давай звонить провайдеру (есличо, мелкий местный провайдер, а не гигант типа Ростелекома), техподдержка отвечает, что мол все должно работать. И правда, пока звонил — связь восстановилась. Но VPN так и не поднялся. Парень личность уже пропаленная у всяких там центров «Э» и т.д., но найти на него ничего толком не могут, ибо шифруется хорошо. Ну, местные эшники может и знают, что вот это Вася Пупкин оставил коммент на форуме автономов, но фактически доказательств нет и в суд, даже такой хуевый суд, как в ГОРФ с этим говном не пойдешь.
Так вот, гады взяли и ему походу мелко напакостили. Я так понимаю, админ провайдера по звонку сверху просто перекрыл ему GRE, благо эта гадость делается одной командой. Договор с провайдером, естественно, зарегистрирован не на него, а на бабушку, у которой он квартиру снимает. И в данной ситуации разборки с провайдером ему нахуй не вперлись. Пришлось учить чела пользоваться OpenVPN. Заодно и сам разобрался, таки есть польза и от мелких пакостей.

Полезные плагины для WordPress

Akismet (идет в комплекте) — офигенная защита от спама. Достаточно только регнуться на их сайте (через конрсоль wp), получить ключик (бесплатный) и пользоваться. Из 400 спамерских комментариев проворонил 2. Классный результат.
BackUpWordPress — лучший плагин для бэкапа.
Better Tag Cloud — добавляет годное красивое облако тегов


Categories to Tags Converter Importer (официальный плагин WordPress) — конвертирует теги в категории и обратно.
Cyr to Lat enhanced — транслителирует ссылки образуемые WordPress’ом из названий статей.
Google Sitemap by BestWebSoft — делает XML-sitemap для Google
Jeba Limit Login Attempts — вспоминал этот плагин в маленькой заметке по безопасности. Плагин ограничивает количество попыток входа, если кто-то неправильно вводил пароли.
LJ and LJR users shortcodes (самописный) — вставляет ссылки на блоги ЖЖ и LJR с «головастиками» и т.д.
LJ-cut style cut — добавляет возможность использовать кат в стиле ЖЖ в блоге WordPress
LJR-pollDisplay — отображает опросы из LJR
Maintenance Mode — плагин для закрытия сайта на техобслуживание. В бесплатной версии доступны не все опции, но хватает.
Mobile Smart — добавляет возможность переключать тему для мобильных устройств (детектит устройства по идентификатору браузера и переключает тему), есть возможность переключать тему вручную, тему надо устанавливать отдельно.
raw-formatter — добавляет возможность отключать форматирование, автоматически добавляемое WordPress’ом в пост.
Shortcodes personal library — библиотечка с моими шорткодами. Дам только по личной просьбе. Упомянута от склероза и для бэкапа.
SI Captcha Anti-Spam — Хорошая капча на все (форма входа, восстановления пароля, регистрации, добавления комментария и пр.)
TinyBR — меняет местами комбинации Enter и Shift+Enter в визуальном редакторе. По-умолчанию в WP почему-то сделано добавление по Enter абзаца (<p></p>) вместо православного <br>
WordPress Importer (официальный) — позволяет импортировать контент из файла экспорта WordPress
WP Security Audit Log — ведет логи подозрительной активности на сайте. Бесплатная версия довольно сильно урезана.
WP User Avatar — отключает (нахрен!) дурацкий Gravatar и позволяет загружать свои аватарки.

Изменение логотипа в окне логина GDM

Спрашивают, как у нас сделан украинский флаг при входе на сервер. Да проще пареной репы, товарищи!

1. В любимом графическом редакторе готовим картинку. Должна быть PNG, разрешением 210×210 px и глубиной цвета 32 бита.
2. Идем в файл /usr/share/gdm/defaults.conf и ищем там параметр Logo= (секция [greeter]) и меняем путь на путь к своему файлу или заменяем сам файл.
Можно настроить приветствие:
Параметры
DefaultWelcome=false
DefaultRemoteWelcome=false

устанавливаем в false (иначе, ЕМНИС, будет использовано имя компьютера) и меняем параметры (вместо нашего названия подставьте свое):
Welcome=Welcome to UAITC
RemoteWelcome=Welcome to UAITC

Флаг (по клику можно скачать с mega.nz):

Права доступа и владельцы файлов в Linux.

Шпаргалка на стену студенту.




По клику доступны полноразмерные изображения

Скачать архив с копиями источников, файлами большого разрешения и svg.

По материалам:
1. http://downloads.naulinux.ru/pub/NauLinux/school_server/Docs/Docs/Nau/nau-server-sbs-ru/s1-navigating-ownership.html
2. http://www.k-max.name/linux/prava-dostupa-v-linux-eshhe-odna-malenkaya-shpargalka/

Аномальная квартира

На Мракопедии особо не оценили, пусть тут лежит, чтоб текст не пропал. Авторы те же, я и Панкарь:

Эх, страна моя родная, край загадок и чудес.
Где еще такое счастье, где еще такой прогресс!
Под одной огромной крышей, уфонафт, НЕХ, мелкий бес
А еще любитель крипи, SCP без них ██████!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Полтергейст гремит посудой — собирается братва,
Вомпер цедит кровь с бокала,уфонафт жрет шаурма,
SCP мацу заводят, черти делают шашлык,
Мракопедию читает вслух любитель крипоты!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Вечером концерт заводит наша дружная семья,
Полтергейст на барабанах, вомпер в трубы дует SKA
SCP вновь напросились, доверяем синт и бас,
Крипипастер на гитаре, а соседи на ушах!

Это аномальная, аномальная квартира,
Это аномальная, аномальная страна!

Червие

Написали с товарищем ████████ новый панковский текст, вдохновившись незабвенным Механиком и его Гнилым Господом.

Съежился последний мышиный окей,
Попрятались в норы крылатые слова,
Лебедь, Рак и Щука в едином порыве
Тянут в обрыв ледяную тележку!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Парень висит на пустых обещаньях,
Элвис клюет сакральную Корсунь,
Дикая Охота заблудилась в Москве,
Мастер пропил труп Маргариты.

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Плачет в счетчике отключенный ток,
Закуталась в шубу нейтронная бомба,
Мыши возносят молитву веганам
Следуя по рельсам в скрытый Ультхар!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!

Червие, червие, червие!
Червие, червие, червие!
Червие, червие, червие!
Слава Гнилому Господу!