Определение IP и местоположения посетителя сайта 2.

Мне сегодня в почту поступило довольно закономерных вопросов от моих читателей.
Итак, отвечаю
Q: Как модифицировать скрипт, чтоб можно было проверить любой IP, который захочется задать?
A:
Очень просто. Достаточно передать скрипту нужный IP (здесь я сделаю это с помощью метода GET)Сначала модифицируем скрипт таким образом:
После
// Подключаем SxGeo.php класс
include("SxGeo.php");

Вставляем код проверки наличия соответствующей переменной GET пусть у нас она будет ip

//проверка наличия переменной
if (!isset($_GET['ip']))
{
echo 'ERROR|NOT DATA';   //не нашли - вывели сообщение об ошибке и прекратили работу
die();
}


Далее, нам потребуется проверить IP на валидность, мало ли что нам в GET сунули.
Я обычно организую вначале файла «Область функций», хотя с точки зрения PHP это необязательно, но мне так удобно.
После
//Область заголовков
header('Content-type: text/plain; charset=utf8');

Добавляю функцию проверки IP на валидность

// ---------Область функций ---------
function isip($ip_str) //проверка соответствия данных формату IP
{
$ip_pattern="#(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)#";
$ret=FALSE;
if (preg_match($ip_pattern,$ip_str))
{
$ret=TRUE;
}
return $ret;
}
// ---------Конец области функций ---------


Далее, после проверки наличия переменной, вставляем проверку на валидность IP

$ip=$_GET['ip'];
// проверка на соответствие формату
if (!isip($ip))
{
echo 'ERROR|NOT IP';   //не IP - вывели сообщение об ошибке и прекратили работу
die();
}


Далее, все как в предыдущей серии. Создаем объект SxGeo и скармливаем ему айпишник, да выводим данные в удобной форме.
Скачать можно здесь, Посмотреть как работает — здесь. Для примера в ссылку вставлен IP прокси анончика из комментария к предыдущей заметке.


тот самый анончик, точнее его прокси

реакция на попытку передать ерунду

или передать ничего

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

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/268782.html
Прокомментировать заметку можно по ссылке выше.

Фразочка

Ну и байка о ее появлении, заодно:
Идет экзамен по странному и ненужному предмету «История Информатики и ВТ», сдает студент, который ессно, нихрена не знает:
Препод: «Ладно, ответите на вопрос, поставлю вам 3. Вопрос очень простой. Как звали первую известную в истории женщину программистку»?
Студент: «Ада, Ада точно. В ее честь язык программирования назвали…»
Препод: «Ну а фамилия»?
Студент (пыхтя минут 5 и напряженно думая): «О! Легалайз! Точно! Ада Легалайз!»
Занавес.
ЗЫ. Когда-то давно рассказал Панкарь, на моем курсе не повторялось.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/267324.html
Прокомментировать заметку можно по ссылке выше.

Определение IP и местоположения посетителя сайта.

В сети по этому поводу довольно много материала, но я расскажу как это сделал я.
Понадобилось мне написать серверный back-end к одной программе (о ней я при случае расскажу позже), определающей ip клинта и его местоположение.
Задачи определить, сидит ли клиент через неанонимный прокси не было. Если кого-то интересует этот момент, рекомендую статью [Скачать PDF]
Итак, для определения IP нам понадобится собственно IP клиента, который нам обычно любезно предоставляет сервер в переменной $_SERVER['REMOTE_ADDR'] (о других случаях где можно если нужно искать IP — смотрите вышеуказанную статью).
Теперь о б определении местоположения по IP. Для сего действия необходима база геолокации (база, где сопоставлены диапазоны IP и страны, опционально города). Такие базы бывают платные/бесплатные, автономные (можно унести себе на сайт) и не автономные (сидят у кого-нибудь на сервере и выдают информацию по запросу) и т.д.
Для моей задачи нужна была автономная и бесплатная БД. Я воспользовался SxGeo: статья о ней на Хабре, Еще одна и сайт проекта.
Там все довольно просто. Скачиваем нужные базы, скрипт, который ими управляет, ставим на сайт. В комплекте есть небольшой пример.
Чтобы не тыкать по ссылкам, я собрал все в один архив, который можно скачать здесь
А теперь скрипт. Моя задача была небольшая, потому мне хватило просто изменить скрипт примера:

// Переделано из примера [8^12]
header('Content-type: text/plain; charset=utf8');
// Подключаем SxGeo.php класс
include("SxGeo.php");
// Создаем объект
// Первый параметр - имя файла с базой (используется оригинальная бинарная база SxGeo.dat)
// Второй параметр - режим работы:
// SXGEO_FILE (работа с файлом базы, режим по умолчанию);
// SXGEO_BATCH (пакетная обработка, увеличивает скорость при обработке множества IP за раз)
// SXGEO_MEMORY (кэширование БД в памяти, еще увеличивает скорость пакетной обработки, но требует больше памяти)
$SxGeo = new SxGeo('SxGeoCity.dat');
//$SxGeo = new SxGeo('SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый производительный режим, если нужно обработать много IP за раз

1. Выдаем нужный заголовок, подключаем основной скрипт SxGeo.php
2. $ip = $_SERVER['REMOTE_ADDR']; — получаем IP клиента, и записываем информацию в переменную $ip
3. $add_info = $SxGeo->getCityFull($ip); // Вся информация о городе
$main_info = $SxGeo->get($ip); // Краткая информация о городе или код страны (если используется база SxGeo Country)
— передаем IP объекту SxGeo, записываем всю полученную информацию в переменные $main_info и $add_info (соответственно, основную и дополнительную информацию)
3. Выводим данные в удобном для дальнейшей обработки виде:
echo "IP|".$ip."n";
echo "ISO_CODE|".$main_info['country']['iso']."n";
echo "CITY|".$main_info['city']['name_en'].'|'.
$main_info['city']['lat'].'|'.
$main_info['city']['lon']."n";
echo "COUNTRY_INFO|".$add_info['country']['name_en'].'|'.
$add_info['country']['lat'].'|'.
$add_info['country']['lon']."n";
echo "REGION_INFO|".$add_info['region']['iso'].'|'.
$add_info['region']['name_en']."n";

Посмотреть, как работает скрипт, можно на HexProject, скачать его здесь, а пакет из необходимых баз, скрипта API SxGeo и вышеуказанного скрипта здесь


У меня сегодня, например, голландский IP
Продолжение

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/267126.html
Прокомментировать заметку можно по ссылке выше.

FAR manager и PKZIPC

Оказывается, до сих пор у некоторых возникает вопрос — как заставить FAR распаковывать и запаковывать ZIP-архивы. Открываются они и так. Способов есть много разных и все они гуглятся, кроме (бля!) самого простого. Достаточно скачать соответствующую консольную утилиту PKZIPC и положить ее в какой-то каталог, который прописан в переменной PATH. Если у вас винда, FAR, лень добавлять каталог в PATH, и вообще лень заморачиваться — то вот вам готовое решение. Качаете этот архив и копируете единственный содержащийся в нем файл в C:Windows и все работает.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/262177.html
Прокомментировать заметку можно по ссылке выше.

Интересно

Если написать комментарий в блоге [ljr user=»anticompromat»> на него почти сразу отвечает анон (бот, скорее всего) с дебильной копипастой. Какой мы делаем из этого вывод? Простой. У какого-то россиянчика рвет жеппу от одного только наличия Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/257209.html
Прокомментировать заметку можно по ссылке выше.

Чтоб все-таки не поперло будить милых итальянцев

Билли — гуйло!
Ла-ла-ла-ла-ла-ла-ла-ла!

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/233957.html
Прокомментировать заметку можно по ссылке выше.

Виндоворчания псто

Какое же редкостное дерьмище эта ваша Windows 8
После установки с нуля (заводской образ на ноуте) занимает 20 Гб места с лихуем. Это не ОС это какой-то монстр же.
Интерфейс тошнотворный. Некоторые моменты в интерфейсе рассчитаны на каких-то пациентов дурдома. Реально, когда начинал думать «а как бы идиот в этом случае поступил», понимал, что вот наверное так. И действительно, так!

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/231276.html
Прокомментировать заметку можно по ссылке выше.

Задать номер в имени интерфейса ppp*

Это делается в конфигурационных файлах в /etc/ppp/peers для исходящих соединений, и в конфигурационном файле, путь к которому задан в /etc/pptpd.conf (параметр option /путь/к/файлу), для входящих соединений (pptp-сервера).
В вышеуказанные файлы нужно добавить параметр
unit номер
Например, если в конфигурационном файле содержится параметр unit 2 то при установке соединения, ppp-интерфейсу будет присвоено имя ppp2

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/229061.html
Прокомментировать заметку можно по ссылке выше.

Вис mc при включенном файерволе iptables и ssh

Оказалось
1. Надо открыть DNS.
2. Если не помогло, и в настройках ssh разрешен X11-forwarding, то либо открыть соответствующий порт, либо запретить forwarding
a. Открыть порт:

# Open 6000 port (x11 forwarding-display 0)
iptables -A INPUT -p tcp --dport 6000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6000 -j ACCEPT

b. Запретить: X11Forwarding no в /etc/ssh/sshd_config

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/228501.html
Прокомментировать заметку можно по ссылке выше.

Линуксовые смехуечки

Кстати, если поставить юзеру (на практике делал это на ноуте со сгоревшим HDD) какой-нибудь дистрибьютив Linux на флешку, а потом показать, что комп без этой флешки не загрузится, то юзера можно заставить считать себя хакером.
Для полного погружения нужен еще ввод логина/пароля с командной строки и запуск графической оболочки командой startx, тогда можно дополнительно 100 рублей взять — за понты.
Да, чем больше непонятных букв выводится при загрузке — тем толще ЧСВ юзера.
На самом деле, лучше купить юзеру книжку и заставить его самому установить хотя-бы винды, попутно все объясняя.
А вообще это я так перед отлетом решил подработать. Ибо и деньги Денисовые кончаются, и город у вас какой-то дорогой. Как вы тут живете, нафиг? Мне сегодня чел сказал, что за диагностику компа на дому 500 рублей ему стыдно ДАВАТЬ (стандартная моя цена за визит и «попиздеть проконсультировать», либо за визит и переустановку Windows если без проблем и дистрибьютив заказчика).
Бля, вы чего, питерцы, москвичи, совсем охуели, бесясь с жиру?

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/227119.html
Прокомментировать заметку можно по ссылке выше.

PuTTY, mc и печаль.

Не работают полезные клавиши, Ctrl+Enter, Ctrl+Ins, например. Причем если работаешь в ssh-клиенте, на местности (с железной клавиатуры) все работает. Изгуглил весь интернет, но как поправить эту беду пока не нашел. Мало ли у кого идеи будут, отпишитесь в комменты.
UPD: Вот оно как работает-то

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/226694.html
Прокомментировать заметку можно по ссылке выше.

Всем большая благодарность

Кто отвечал на вопрос об окновом менеджере.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/226463.html
Прокомментировать заметку можно по ссылке выше.

Оконный менеджер


Warning: file_get_contents(): stream does not support seeking in /home/punko102/domains/tolik-punkoff.com/public_html/wp-content/plugins/ljr-poll/simple_html_dom.php on line 75

Warning: file_get_contents(): Failed to seek to position -1 in the stream in /home/punko102/domains/tolik-punkoff.com/public_html/wp-content/plugins/ljr-poll/simple_html_dom.php on line 75

ERROR: CONNECTION ERROR [http://lj.rossia.org/poll/?id=969&mode=results]
По мне, дык чем меньше ресурсов потребляет, тем лучше (потому и не включил в опрос Гном с Кедами), ориентируйтесь на это, пжлст.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/226141.html
Прокомментировать заметку можно по ссылке выше.

Изменение разрешения экрана в консоли Slackware

Я все-таки победил эту проблему! Оно по-умолчанию задиралось куда-то в ебеня, оказывалось очень большим, а текст, соответственно, невозможно мелким.
Чего я только ни делал, ставил проприетарные драйвера (зря, к моей карточке не подошли), изгуглил все вдоль и поперек, съел слакбук, излазил весь автозапуск с мыслью, что гадит какая-то англичанка софтина, пугал кота на недосквоте ночными ебтвоюматерями, даже написал [ljr user=»ierofant»> в почту и в блог. сделал вид, что не знает (а на самом деле состряпал тролльфейс и спорил со своими итальянцами за сколько я решу проблему), а правильно.
Kernel can recognize video= parameter in following form (see KMS for more details)
т.е. заменить в конфиге Grub’а vga=normal на video=<conn>:<xres>x<yres>
где:
<conn> — куда подключается монитор, у меня это VGA-1, а для конкретной карты можно посмотреть список входов здесь: /sys/class/drm/
<xres&gt — высота
<yres&gt — ширина
Есть и другие параметры (необязательные), они все по ссылке описаны. Для ЭЛТ-монитора важен параметр @<refresh> — частота обновления.
Например: video=VGA-1:640x480@75

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/226021.html
Прокомментировать заметку можно по ссылке выше.

Слакварим и слаквираем мелочи

Тут будет типа сборник ссылок, микрорецептов, команд, небольших инструкций.
Чтоб не разбегалось по блогу, и не проебывалось, как из памяти, так и в принципе.
1. О менеджерах пакетов, сборке программ из исходников, и способах не засрать программами систему.
Пост на Хабре Его копия в PDF
Отдельно о утилите sbopkg.
читать тут Или качать PDF
Еще одна хорошая статья про установку программ, сборку из исходников и прочее, в частности утилиту checkinstall Скачать PDF
2. Где сидят настройки консольных шрифтов
/etc/rc.d/rc.font
/etc/rc.d/rc.keymap (а тут настройки клавы)
3. Конфигурация иксов (в частности раскладка клавиатуры и сочетания клавиш) тут
/etc/X11/xorg.conf, может и не только тут (зависит от дистрибьютива) но если что с иксами случится от криворуких настроек — влезать здесь или где-то около.
4. Кратко про настройку WiFi, если сетевой интерфейс (карточка) нормально работает.
читать здесь или качать PDF
Чтоб заставить мою работать нормально — был геморрой, но у мне уж очень специфический девайс попался, и в результате получилось, что либо бубен и Wi-Fi, либо если нужно проводное — опять бубен и проводное. Решил инженерно-читерским способом, заменил девайс, за что спасибо большое [info]ierofant@ljr.
5. Автозагрузка программ
Хороший мануал про систему инициализации Slackware. Про INIT тоже читать, в обязательном порядке. качать архив с обеими статьями
Для старта программ в иксах прописываем нужные скрипты/программы сюда
/$HOME/.xinitrc
где $HOME — домашний каталог пользователя
6. Изменение разрешения экрана в консоли
7. Штатная смена оконного менеджера: xdmconfig
8. Склеить два файла cat file1 file2 > file12
9. Просмотр открытых портов, утилита netstat и ей подобные.
читать здесь или качать PDF
10. Подключение к X-Server и X11-forwarding через ssh. На примере Ubunt’ы, но работает и в Slackware
читать здесь или качать PDF
11. Добавить путь в переменную PATH: глобально (для всех пользователей) — в файле /etc/profile, для одного пользователя — в файле .bash_profile в домашнем каталоге.
Подробнее читать здесь или качать PDF
12. Сменить имя хоста, если используется NetworkManager
/etc/NetworkManager/NetworkManager.conf
Секция [keyfile] параметр hostname
13. Изменить приветствие при входе в систему через консоль/ssh:
изменить файл /etc/motd

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/225611.html
Прокомментировать заметку можно по ссылке выше.

Неологизм

swamp-файл
Это такой здоровенный архив, со всяким говном, который нужно разобрать, но лень. Swamp-разделы тоже бывают, ага.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/225330.html
Прокомментировать заметку можно по ссылке выше.

Линуксовое

Здесь было ворчание. Теперь его нет. Потому что перехожу на полновесный slackware-based дистрибьютив, по совету одного хорошего человека. Характеристики меня устроили, теперь посмотрим, насколько все остальное хорошо.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/225086.html
Прокомментировать заметку можно по ссылке выше.

Официально вводить в должность кучеръ!

Да, я несколько у этого самого Клепы завис, заодно реанимировал ему комп, а то товарищ который день без интернетов. Узрел очередное возвращение krivoj rusifikacii:


Блин, и где только китайцы такие переводчики находят. 2014 год, а они все официально кучера в должность вводят.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/223883.html
Прокомментировать заметку можно по ссылке выше.