Настройка NTP клиента и сервера в Linux

NTP (Network Time Protocol)
Использует UDP соединения и порт 123.

Пример установки в Ubuntu/Debian:

sudo apt-get install ntp

Текущую дату можно посмотреть командой:

date

Пример установки часового пояса:

cp /usr/share/zoneinfo/Europe/Kiev /etc/localtime

Настройка часов и минут:

date -s 10:18
date --set 10:18

Пример полной установки времени (без пробелов, в цифровом виде):

date месяцденьчасминутыгод.секунды

Проверка сервера времени:

ntpdate -q имя_хоста_или_ip

Просмотр статуса:

sudo ntpq -p
ntpq -c peers 

Приступим к редактированию конфигурационного файла /etc/ntp.conf.

Немного строк:
Указываем сервера с которыми сверять время:

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
...

Запрещаем всем доступ к серверу:

restrict default ignore

Или разрешаем доступ с внутренней сети:

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

Перезапускаем ntp чтобы изменения в конфигурационном файле вступили в силу:

sudo service ntp restart

Пример синхронизации времени из командной строки Windows с Linux сервером:

net time \\СЕРВЕР /set /yes

Смотрите также:
IPTables правила для NTP и SNTP

Примеры HTML тегов

Основные:

<html></html> Указывает начало и конец html страницы.
<head></head> Определяет место, где помещается информация не отображаемая в теле документа.
<body></body> Определяет видимую часть документа.

Тело документа:

<body bgcolor="000000"> Цвет фона документа.
<body text="000000"> Цвет текста документа.
<body link="000000"> Цвет гиперссылок.
<body vlink="000000"> Цвет посещенных гиперссылок.
<body alink="000000"> Цвет гиперссылки при нажатии на нее.

Фреймы:

<frameset></frameset> 	Предваряет тег <body> в документе, содержащем фреймы;
<frameset rows="значение,значение"> 	Определяет строки в таблице фреймов, высота которых определена кол-вом пикселов или в процентном соотношении к высоте таблицы фреймов.
<frameset cols="значение,значение"> 	Определяет столбцы в таблице фреймов, ширина которых определена кол-вом пикселов или в процентном соотношении к ширине таблицы фреймов.
<frame> 	Определяет единичный фрейм или область в таблице фреймов.
<noframes></noframes> 	Определяет, что будет показано в окне браузера, если он не поддерживает фреймы.
<frame src="URL"> Определяет какой из HTML документов будет показан во фрейме.
<frame name="name"> 	Указывает Имя фрейма или области, что позволяет перенаправлять информацию в этот фрейм или область из других фреймов.
<frame marginwidth="#"> 	Определяет величину отступов по левому и правому краям в нутрь фрейма; должно быть равно или больше 1.
<frame marginheight="#"> 	Определяет величину отступов по верхнему и нижнему краям в нутрь фрейма; должно быть равно или больше 1.
<frame scrolling=#>  значение value может быть "yes," "no," или "auto". Значение по умолчанию для обычных документов - auto.
<frame noresize> Запрещает изменению размеров фрейма пользователем.

Формы:

<form></form> Указывает начало и конец кода формы.
<select multiple name="имя" size="?"></select> Скролируемое меню. size устанавливает количество пунктов меню, остальные будут отображены при использовании прокрутки.
<option> Указываем элемент меню

<select name="имя"></select> Ниспадающее меню
<option> Указываем элемент меню

<textarea name="имя" cols=40 rows=8></textarea> Окно для ввода текста. columns определяет ширину окна, rows - высоту.
<input type="checkbox" name="имя">
<input type="radio" name="имя" value="x">
<input type=text name="foo" size=20> Строка ввода текста. size определяет его длину.
<input type="submit" value="имя"> Кнопка
<input type="image" border="0" name="имя" src="name.gif"> Кнопка с фоновым изображением.
<input type="reset"> Кнопка очистки.

Таблицы:

<table></table> Указывает начало и конец кода страницы.
<tr></tr> Определяет строку в таблице.
<td></td> Определяет ячейку в таблице.
<th></th> Определяет заголовок таблицы.
<caption></caption> Определяет подпись таблицы.
<table border="#"> Толщина рамки таблицы.
<table cellspacing="#"> Расстояние между ячейками таблицы.
<table cellpadding="#"> Расстояние между содержимым ячейки и ее рамкой.
<table width="#"> Ширина таблицы в пикселях или процентах от ширины документа.
<table height="#"> Высота таблицы в пикселях или процентах от высоты документа.
<tr align="?"> или <td align="?"> Выравнивание ячеек в таблице: left, center, right.
<tr valign="?"> или <td valign="?"> Вертикальное выравнивание для ячеек таблицы: top, middle, bottom.
<td colspan="#"> Количество столбцов, которое объединено в одной ячейке.
<td rowspan="#"> Количество строк, которое объединено в одной ячейке.
<td nowrap> Не позволяет делать перевод строки в ячейке таблицы.
<td width="#"> Ширина ячейки в пикселях или процентах от ширины таблицы.
<td height="#"> Высота ячейки в пикселях или процентах от высоты таблицы.

Гиперссылка:

<a href="http://wikipedia.org">Википедия</a> или <a href="http://ru.wikipedia.org">http://ru.wikipedia.org</a>
<a href="имя файла или url" target="_self">имя ссылки</a>
Возможные значения атрибута target:
 _top — открытие документа в текущем окне;
 _blank — открытие документа в новом окне;
 _self — открытие документа в текущем фрейме;
 _parent — открытие документа в родительском фрейме.

Графические элементы:

<img src="#"> Добавляет изображение.
<img src="#" align="#"> Добавляет изображение с выравниванием: left, right, center; bottom, top, middle.
<img src="#" border="#"> Добавляет изображение и устанавливает толщину рамки вокруг изображения.
<img src="#" vspase="#"> Добавляет изображение и устанавливает поля сверху и снизу.
<img src="#" hspase="#"> Добавляет изображение и устанавливает поля слева и справа.
<img src="#" alt="#"> Изображение с всплывающей подсказкой.
<hr> Горизонтальная линия.
<hr size="#"> Горизонтальная линия с установкой ее толщины.
<hr width="#"> Горизонтальная линия с установкой ее ширины.
<hr noshade> Невидимая горизонтальная линия.
<hr color="000000"> Горизонтальная линия с установкой ее цвета.

Форматирование:

<pre></pre> Обрамление предварительно отформатированного текста.
<h1></h1>,<h2></h2>,<h3></h3>,<h4></h4>,<h5></h5>,<h6></h6> Заголовки. h1 самый большой размер.
<b></b> Жирный текст.
<i></i> Наклонный текст.
<u></u> Подчёркнутый текст.
<s></s> Зачёркнутый текст.
<blockquote></blockquote> Цитата.
<pre></pre> Моноширинный текст.
<tt></tt> Стиль печатной машинки.
<kbd></kbd> Стиль печатной машинки.
<var></var> Название переменных отображается курсивом.
<cite></cite> Выделение цитат курсивом
<address></address> Курсивом в виде отдельного абзаца
<em></em> Наклонный текст
<strong></strong> Жирный текст
<font size="#"></font> Размер текста от 1 до 7.
<span style="font-size:15px;">Ваш текст</span>
<font color="000000"></font> Цвет текста.
<span style="color: #FF0000">Цветной текст</span>
<p></p> Новый параграф.
<p align="?"></p> Выравнивание параграфа: left, right, justify, center.
<nobr> Запрещает перевод строки.
<wbr> Указывает где разбивать строку для переноса при необходимости.
<br> Перевод строки.
<dl></dl> Список определений.
<dt> Определяет каждый из терминов списка
<dd> Описывает каждое определение
<div align="?"></div> Форматирования блоков HTML документа.

<ol></ol> Нумерованный список
<li>

<ul></ul> Ненумерованный список
<li>

Символы:

&lt; - < 	
&gt; - > 	
&amp; - & 	
&nbsp; - неразрывный пробел
&sect; - § 	
&#8470; - № 	
&copy; -©
&reg; - ®
&#153; - ™
&deg; - °
&laquo; - «
&raquo; - »
&hellip; - …
&mdash; - —
&#149; - •
&plusmn; - ±
&minus; −

Кейлоггер Logkeys в Linux Ubuntu

Logkeys — утилита регистрирующая нажатия клавиш в файл.

Установка:

sudo apt-get install logkeys

Пример запуска:

sudo logkeys --start --output /home/user/logkeys.log --keymap=/home/user/de.map

Остановка:

sudo logkeys -k

-s запуск
-o путь к файлу в который будет писаться информация
-k убивание процесса
—us-keymap использование английской раскладки
—no-func-keys не записывать функциональные клавиши

Ссылка на файлы с разными разметками клавиш:
http://code.google.com/p/logkeys/wiki/Keymaps#Download

Список биллинговых систем

Приведу список некоторых биллинговых систем:

ABillS (Advanced Billing Solutions)
http://abills.net.ua/
http://ru.wikipedia.org/wiki/Abills
(очень понравился большой функционал, лучше не видел, не понравилось что нет актуальной документации и работа технической поддержки, «тянут резину» и не всегда понимают что делают, иногда приходится доделывать самому, переделывать и исправлять их «косяки»)

MikBill
https://www.mikbill.ru/

Carbon Billing
https://www.carbonsoft.ru/products/carbon_billing/

Ubilling
http://ubilling.net.ua

NeTAMS (Network Traffic Accounting and Monitoring Software)
http://www.netams.com

ISPSystem
http://ispsystem.com

ExpertBilling — бесплатная до 200 абонентов
http://expertbilling.ru

АСР «Билл-Мастер»
http://www.bill-master.ru

Traffic Inspector
http://www.smart-soft.ru/ru/

«Гидра»
http://www.hydra-billing.ru

NetUP
http://www.netup.ru

Утилита для захвата и анализа пакетов tcpdump

tcpdump — утилита, позволяющая перехватывать и анализировать сетевой трафик.

Читать далее «Утилита для захвата и анализа пакетов tcpdump»

Установка phpMyAdmin

phpMyAdmin — веб-приложение, написанное на PHP, позволяющее администрировать MySQL базами данных через браузер.

Самым простой вариант установки phpMyAdmin, это скачать архива с последней версией с официального сайта www.phpmyadmin.net и распаковав в нужную www директорию, после этого можно открыть в браузере http://HOST/phpmyadmin/setup/ и следовать инструкциям. После переместить файл config.inc.php в корневую директорию phpmyadmin и закрыть доступ к /setup/ или вовсе удалить ее.
Читать далее «Установка phpMyAdmin»

Установка и настройка Nginx

nginx (engine x) — это веб-сервер и обратный прокси-сервер, а также почтовый прокси-сервер.

Установить в Ubuntu можно командой:

Читать далее «Установка и настройка Nginx»

Настройка BGP в Quagga

AS — (Autonomic System) автономная система.
BGP — (Border Gateway Protocol) протокол пограничного маршрутизатора.

Установить quagga в Ubuntu/Debian можно следующей командой:

Читать далее «Настройка BGP в Quagga»

PHP. Работа с файлами

Автор: Мухаметшин Д.Ф

Правильно работать с файлами должен уметь каждый программист. Данная статья ориентирована на начинающих PHP программистов, однако «сборник рецептов» будет полезен и продвинутым пользователям.
Работа с файлами разделяется на 3 этапа:

Открытие файла.
Манипуляции с данными.
Закрытие файла.

I. Открытие файла
Для того чтобы открыть файл в среде PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.

$fp = fopen('counter.txt', 'r');

Согласно документации PHP выделяют следующие виды режимов файлов:
r – открытие файла только для чтения.
r+ — открытие файла одновременно на чтение и запись.
w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
w+ — аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.
a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
a+ — открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Примечание: в конце любой из строк может существовать еще один необязательный параметр: b или t. Если указан b, то файл открывается в режиме бинарного чтения/записи. Если же t, то для файла устанавливается режим трансляции перевода строки, т.е. он воспринимается как текстовый.

Для демонстрации рассмотрим следующий сценарий:

<?php
//Открывает файл в разных режимах
$fp = fopen('counter.txt', 'r'); // Бинарный режим
$fp = fopen('counter.txt', 'rt'); // Текстовый режим
$fp = fopen("http://www.yandex.ru", "r");// Открывает HTTP соединение на чтение
$fp = fopen("ftp://user:password@example.ru", 'w'); //Открываем FTP соединение с указанием логина и пароля
?>

II. Манипуляции с данными файла
Записывать данные в файл при помощи PHP можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

<?php
$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи
$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
?>

Для построчного считывания файла используют функцию fgets(). Функция принимает 2 обязательных параметра:

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."<br />";
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
?>

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

<?php
echoreadfile("counter.txt");
?>

Также можно использовать функцию fpassthru() которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp) echo fpassthru($fp);
elseecho "Ошибка при открытии файла";
?>

Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file(). При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива.
Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

<?php
$file_array = file("counter.txt"); // Считывание файла в массив $file_array
//
// Работа с данными массива
//
?>

Примечание: Работа с массивами подробно описывается здесь, авторы: Мухаметшин Д.Ф., Симдянов И.В.
В конце статьи, вы найдете хороший «сборник рецептов» по массивам, который дает решение многих проблем, с которыми ежедневно встречается веб-программист.
Давайте представим ситуацию, когда файл необходимо считать по символам. Для этого мы можем воспользоваться функцией fgetc(). Функция принимает единственный параметр. Функция полезна если нам необходимо найти какой-либо символ или количество одинаковых символов.

<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
  while(!feof($fp))
  {
  $char = fgetc($fp);
  if ($char == 'с') $i = $i + 1;// Находим символ «с»
  }
echo 'Количество букв "c" в файле: '. $i;
}
else echo "Ошибка при открытии файла";
?>

III. Закрытие файла
Закрытие файла происходить с помощью функции fclose(), которая принимает 1 обязательный параметр.

<?php
$fp = fopen("counter.txt", "r");
if ($fp)
{
echo 'Файл открыт';
fclose($fp); // Закрытие файла
}
?>

Сборник рецептов
1) Нам необходимо проверить существует ли тот или иной файл. Для этого мы воспользуемся функцией file_exists().

<?php
myfile("counter.txt"); // Используем функцию myfile, передав в качестве аргумента имя файла

function myfile($name) //Создаем функцию для проверки существования файла
{
if (file_exists($name)) echo 'Файл существует';
else echo "Файл не существует";
}
?>

Примечание: Функция file_exists не производит проверку файлов на удаленном веб-сервере. Для правильной работы функции, файл со скриптом должен находиться на том сервере, где и проверяемый файл.

2) Определяем размер файла с помощью функции filesize()

<?php
myfile("counter.txt");
function myfile($name) //Создаем функцию для проверки существования файла и определения размера файла
{
if (file_exists($name)) echo "Размер файла: ".filesize($name).' байт';
else echo "Файл не существует";
}
?>

3) Создание временного файла с помощью функции tmpfile()

<?php
$myfile = tmpfile();
fwrite($myfile, "Эта строка записывается во временный файл."); // Записываем во временный файл
fseek($myfile, 0); // Устанавливаем указатель файла
echo fread($myfile, 1024); // выводим содержимое файла
?>

4) Вам необходимо определить количество строк в файле. Для этого используем функцию count()

<?php
$fp = file("counter.txt");
echo 'Количество строк в файле: '.count($fp);
?>

5) Нам необходимо использовать механизм блокировки файла

<?php
$fp = fopen("counter.txt", 'a');
flock($fp, LOCK_EX); // Блокирование файла для записи
fwrite($fp, "Строка для записи");
flock($fp, LOCK_UN); // Снятие блокировки
fclose($fp);
?>

6) Нам необходимо удалить определенную строку из файла

<?php
$num_stroka = 5; //Удалим 5 строку из файла
$file = file("counter.txt"); // Считываем весь файл в массив

for($i = 0; $i < sizeof($file); $i++)
if($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");
fputs($fp, implode("", $file));
fclose($fp);
?>

7) Определение типа файла. Используем функцию filetype(), которая принимает единственный параметр

<?php
$mytype = filetype("counter.txt");
echo "Тип файла: ".$mytype;
?>

После вызова строка может содержат одно из следующих значений:
file – обычный файл
dir – каталог
ink – символическая ссылка
fifo – fifo-канал
block – блочно — ориентированное устройство
char – символьно — ориентированное устройство
unknown – неизвестный тип файла

8) Если вы хотите просмотреть все параметры файла, то следует воспользоваться функцией stat()

<?php
$filename = stat("counter.txt");
echo "<pre>";
print_r($filename);
echo "</pre>";
?>

9) Нам необходимо очистить файл, используем функцию ftruncate()

<?php
$fp = fopen("counter.txt", 'a'); //Открываем файл в режиме записи
ftruncate($fp, 0) // очищаем файл
?>

10) Нам необходимо узнать дату последнего изменения файла, используем функцию filectime(). Функция возвращает значение времени в форме Unix timestamp.

<?php
echo filectime("counter.txt");
?>

Активация PUSH уведомлений на хактивизированных Iphone (SAM)

Не некоторых неправильно хактивированных Iphone могут не работать PUSH уведомления, одним из вариантов решения этой проблемы есть установка SAM (Subscriber Artificial Module).
Открываем Cydia, добавляем репозитоий (Manager — Sources — Edit — Add) — http://repo.bingner.com.
Ищем SAM, устанавливаем и перезагружаем устройство.
На рабочем столе и в настройках появится SAMPrefs. Запускаем его, выбираем Utilities и жмем Revert Lockdown to Stock. Ждем уведомление об успешном выполнении. Жмем De-Activate iPhone (clear push) и снова ждем уведомление.
Подключаем Iphone к компьютеру, запускаем Itunes и ждем пока активируется. После чего в SAMPref в вкладке More information должно быть написано Wildcard Activated.
Заходим в Utilities, нажимаем Backup Activation и потом Restore Activation.
Приложения которые были установлены до SAM активации, необходимо удалить и снова установить, так как push уведомления на них скорее всего не будут работать.
Все.