Установка FTP сервера Vsftpd

Vsftpd очень хороший, быстрый и надежный FTP сервер. Устанавливаем сам сервер при помощи yum:

yum install vsftpd

Vsftpd работает из коробки, особо ничего конфигурировать не надо.
Файл конфигурации /etc/vsftpd/vsftpd.conf.
Для запуска сервера FTP выполните команду:

service vsftpd start

Для запуска FTP-сервера, при загрузки системы:

chkconfig vsftpd on

Убедитесь, что брандмауэр не блокирует доступ к порту FTP, выполните:

system-config-securitylevel

Allow (FTP) as «Trusted Services»


Количество просмотров :2210

PhP Функция для подключения всех файлов в директории

Данная функция подключает все файлы находящиеся в указанной директории:

<?php
function include_from($dir, $ext='php'){
$opened_dir = opendir($dir);

while ($element=readdir($opened_dir)){
$fext=substr($element,strlen($ext)*-1);
if(($element!='.') && ($element!='..') && ($fext==$ext)){
include($dir.$element);
}
}
closedir($opened_dir);
}
?>


Количество просмотров :4387

PhP текущий онлайн сайта

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

CREATE TABLE useronline (
timestamp int(15) DEFAULT ‘0’ NOT NULL,
ip varchar(40) NOT NULL,
file varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY file (file)
);

а теперь перейдем к php скрипту:

<?php
// Ваши настройки MySQL сервера
$server = "xxx";
$db_user = "xxx";
$db_pass = "xxx";
$database = "xxx";
//Конектимся к базе
$db = mysql_connect($server, $db_user,$db_pass);
mysql_select_db($database,$db);

$timeoutseconds = 300; //5 minutes

$timestamp = time();
$timeout = $timestamp-$timeoutseconds;

$insert = mysql_query("INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')",$db);
if(!($insert)) {
print "Useronline Insert Failed > ";
}
$delete = mysql_query("DELETE FROM useronline WHERE timestamp<$timeout",$db);
if(!($delete)) {
print "Useronline Delete Failed > ";
}
$result = mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'",$db);
if(!($result)) {
print "Useronline Select Error > ";
}
$user = mysql_num_rows($result);

mysql_close();

// Вывод результатов
if($user == 1) {
print("$user user online\n");
} else {
print("$user users online\n");
}
?>

Количество просмотров :2707

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

Нам понадобиться файл cookies.txt с сохраненными куками, далее подаем в функцию url сайта.

function get_from_forum($URL)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, ‘cookies.txt’);
curl_setopt($ch, CURLOPT_COOKIEFILE, ‘cookies.txt’);

$output = curl_exec($ch);
curl_close($ch);
return $output;
}


Количество просмотров :3245

Mysql Размер базы из консоли

Для того, что бы узнать размер базы, выполните следующую команду:

mysql -uroot -p -D <имя базы> -e «show table status\G»| egrep «(Index|Data)_length» | awk ‘BEGIN { rsum = 0 } { rsum += $2 } END { print rsum }’

Количество просмотров :5023

Обновления dovecot

Я тут недавно обновлял Dovecot с 1.0.0 до 1.2.10 и начало ругаться на

Error: Error in configuration file /usr/local/etc/dovecot.conf line 210: Unknown setting: mail_extra_groups

решается изменением mail_extra_groups = mail на mail_privileged_group = mail

потом начало ругаться на:

Error: Error in configuration file /usr/local/etc/dovecot.conf line 441: Unknown setting: umask

для этого комментируем #umask=0027


Количество просмотров :2722

MySQL лог SQL запросов

Добавьте следующие строки в MySQL конфиг(my.cnf), для того, что бы начать собирать логи запросов:

slow-query-log
log-output = TABLE
long_query_time = 1
general-log
expire_logs_days = 1

ну и примеры запросов для получения логов:

select * from mysql.general_log order by event_time desc limit 10;
select * from mysql.slow_log order by start_time desc limit 10;

Количество просмотров :6090

Bash Ждать пока не завершится процесс

Бывает, что в bash скрипте необходимо подождать пока не завершиться какой-то процесс. Если вы знаете его pid, то это можно реализовать так:

while ps -p `cat $PID_FILE` > /dev/null; do sleep 1; done

Количество просмотров :3127

Bash скрипт универсальный распаковщик

Надоело мне для каждой программы сжатия использовать свои программы и ключи, и вылился этот порыв вот в такой скрипт:

#!/bin/bash
#
#

Z="compress -d"
gz="gunzip"
bz="bunzip2"
zip="unzip -qo"
rar="unrar x -id -y"
tar="tar xf"
7z="p7zip -d"

if [ $# -eq 0 ]; then
    echo "Usage: decompress file or files">&2
    exit 1
fi

for name
do
	if [ ! -f "$name" ] ; then
		echo "$0: file $name not found." >&2
		continue
	fi

	if [ "$(echo $name | egrep '(\.Z$|\.gz$|\.bz2$|\.zip$|\.rar$|\.tar$|\.tgz$|\.7z$)')" = "" ] ; then
		echo "Skipped file ${name}: it's already decompressed." 
      		continue
	fi

	extension=${name##*.}

	case "$extension" in
		Z ) echo "Filetype is Z. Decompressing..."
		    $Z "$name"
		    ;;
		gz ) echo "Filetype is gz. Decompressing..."
		     $gz "$name"
		     ;;
		bz2 ) echo "Filetype is bz2. Decompressing..."
 		     $bz "$name"
		     ;;
		zip ) echo "Filetype is zip. Decompressing..."
		      $zip "$name"
		      ;;
		rar ) echo "Filetype is rar. Decompressing..."
		      $rar "$name"
		      ;;
		tar ) echo "Filetype is tar. Decompressing..."
              	      $tar "$name"
              	      ;;
		tgz ) echo "Filetype is tgz. Decompressing..."
              	      $tar "$name"
                     ;;
               7z ) echo "Filetype is 7z. Decompressing..."
                     $7z "$name"
	esac

done

exit 0



Количество просмотров :2973

JS Скрипт определяющий высоту iframe

Вот, столкнулся с такой проблемой, нужен был js скрипт для корректного определения высоты <iframe>. Поискав в гугле и испробовав с десяток различных вариантов,но к сожалению, я так и не смог добиться желаемого результата. В итоге, абсолютно случайно изучая проект www.eqdkp.com наткнулся на скрипт решивший все мои проблемы. И так, непосредственно перед <iframe> располагаете данный скрипт:

<script type="text/javascript">

var iframeids=["boardframe"]
var iframehide="no"
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 3 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

function resizeCaller() {
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++){
if (document.getElementById)
resizeIframe(iframeids)
//reveal iframe for lower end browsers? (see var above):
if ((document.all || document.getElementById) && iframehide=="no"){
var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}

function resizeIframe(frameid){
var currentfr=document.getElementById(frameid)
if (currentfr){
currentfr.style.display="block"
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight;
else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
currentfr.height = currentfr.Document.body.scrollHeight;
else if (currentfr.contentWindow && currentfr.contentWindow.body.document.scrollHeight) //Opera?
currentfr.style.height = currentfr.contentWindow.document.body.scrollHeight;
if (currentfr.addEventListener)
currentfr.addEventListener("load", readjustIframe, false)
else if (currentfr.attachEvent){
currentfr.detachEvent("onload", readjustIframe) // Bug fix line
currentfr.attachEvent("onload", readjustIframe)
}
}
}

function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
if (iframeroot)
resizeIframe(iframeroot.id);
}

function loadintoIframe(iframeid, url){
if (document.getElementById)
document.getElementById(iframeid).src=url
}

if (window.addEventListener)
window.addEventListener("load", resizeCaller, false)
else if (window.attachEvent)
window.attachEvent("onload", resizeCaller)
else
window.onload=resizeCaller

</script>

А затем идет сам <ifram>, обязательно с id=»boardframe», как пример:

<iframe onload="window.scrollTo(0,0)" src="http://eddnet.org id="boardframe" allowtransparency="true" 
height="" width="99%" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0"></iframe>

Количество просмотров :5577