Cobian Backup: просто и бесплатно. Резервное копирование пользовательских файлов
Максим Сафонов
WindowsInstaller-KB893803-v2-x86.exe /quiet /norestart
dotNetFx35setup.exe /q /norestart
start /wait cbSetup.exe
@echo Off
cls
"\\FileServer\Update\WinXP\WindowsInstaller-KB893803-v2-x86.exe" /quiet /norestart
start /wait \\FileServer\prm\dotnetfx35\wcu\dotNetFramework\dotNetFX35\dotNetFx35setup.exe /q /norestart
start /wait \\FileServer\install\Cobian_Backup\cbSetup.exe
rem shutdown -r -t 0
echo.
echo Cobian Backup 10 installed successfully, please restart the computer...
pause
-----------------------------------------------------------------------------------------------------------------
Заменяем MS Exchange. Почтовые функции Horde Groupware
Рашид Ачилов
$servers['imap'] = array(
'name' => 'IMAP Server',
'server' => '192.168.1.7', /* Адрес почтового сервера */
'hordeauth' => true,
'protocol' => 'imap/notls', /* Почтовый протокол: IMAP или POP3 */
'port' => 143, /* Порт сервера */
'maildomain' => 'shelton.net', /* Почтовый домен */
'smtphost' => '192.168.1.1', /* Адрес отправляющего сервера SMTP */
'smtpport' => 25, /* Порт отправляющего сервера SMTP */
'realm' => '', /* Если сервер единственный – это */
'preferred' => '',/* можно оставить пустым */
);
$mime_drivers['horde']['html'] = array(
'inline' => true,
'handles' => array(
'text/html'
),
'icons' => array(
'default' => 'html.png'
),
'phishing_check' => true
);
$cfgSources['localldap'] = array(
'title' => _("Active Directory"),
'type' => 'ldap',
'params' => array(
'server' => '192.168.111.4', /* Адрес сервера */
'port' => 389, /* Порт сервера */
'tls' => false,
'root' => 'dc=shelton,dc=net', /* Base DN */
'bind_dn' => 'ldapread@shelton.net', /* Bind DN */
'bind_password' => 'qwerty1234',
'sizelimit' => 0, /* Не ограничивать возврат размером */
'dn' => array('cn'),
'objectclass' => array('organizationalPerson', 'user', 'group', 'contact'),
'scope' => 'sub',
'charset' => 'utf-8',
'checkrequired' => false,
'checkrequired_string' => ' ',
'checksyntax' => false,
'version' => 3, /* Протокол версии 3. ВАЖНО! */
'deref' => LDAP_DEREF_ALWAYS,
'filter' => '&(SAMAccountName=*)(mail=*)',
'referrals' => 0, /* ВАЖНО! */
),
'map' => array( /* Соответствие между полями */
'__key' => 'dn', /* AD и Адресной книги */
'name' => 'displayname',
'email' => 'mail',
'workPhone' => 'telephonenumber',
'name' => 'displayname',
'title' => 'title',
'cellPhone' => 'mobile',
'department' => 'department',
'company' => 'company',
'instantMessenger' => 'wwwhomepage',
),
'search' => array( 'name', 'email' ),
'strict' => array( 'dn' ),
'approximate' => array( 'displayname', 'samaccountname' ),
'export' => true,
'browse' => true,
);
--- alphaPager.inc 2007-12-20 20:35:18.000000000 +0600
+++ alphaPager.inc.new 2011-04-10 02:33:43.000000000 +0700
@@ -9,8 +9,9 @@
echo Horde::link(Horde::applicationUrl(Util::addParameter($viewurl, array('page' => '*', 'show' => $show)))) . _("All") . ' ';
}
-for ($i = 65; $i < 91; $i++) {
- $a = chr($i);
+for ($i = 192; $i <= 223; $i++) {
+ $a = String::convertCharset(chr($i), "cp1251", "utf-8");
+
if ($currentPage == $a) {
echo '(' . $a . ') ';
} else {
--- ListView.php 2009-10-26 23:34:16.000000000 +0600
+++ ListView.php.new 2011-04-10 04:24:59.000000000 +0700
@@ -236,10 +236,8 @@
$page = '*';
}
if ($this->count() >
$prefs->getValue('perpage')) {
- $page = Util::getFormData('page', 'A');
- if (!preg_match('/^[A-Za-z*]$/', $page)) {
- $page = 'A';
- }
+ $page = Util::getFormData('page',
+ String::convertCharset('А', "koi8-r", "utf-8"));
}
$listHtml = $this->getAlpha($numDisplayed, $page);
@@ -472,7 +470,7 @@
{
$name = Turba::formatName($ob, $this->_format);
if ($this->_alpha != '*' &&
- String::lower(substr($name, 0, 1)) != $this->_alpha) {
+ String::lower(substr($name, 0, 2)) != $this->_alpha) {
return true;
}
return false;
-----------------------------------------------------------------------------------------------------------------
Сервер сборки пакетов Tinderbox для сотен FreeBSD-серверов
Евгений Атрошкин
# ./tc createJail -j 8.2-SERVER -d 'FreeBSD 8.2 Branch For Servers' -t RELENG_8_2 -u CSUP
# ./tc createPortsTree -p FreeBSD -d 'FreeBSD Portstree' -u CSUP
# ./tc createBuild -b 8.2-SERVER-FreeBSD -j 8.2-SERVER -p FreeBSD -d '8.2-SERVER with FreeBSD ports tree'
# ./tc addPort -b 8.2-SERVER-FreeBSD -d shells/bash
# ./tc tinderbuild -nullfs -b 8.2-SERVER-FreeBSD shell/bash
# ./tc listPortFailReasons
# ./tc listPortFailPatterns
# ./tc makeJail -j 8.2-SERVER
# ./tc updatePortsTree FreeBSD
# ./tc createPortsTree -p FreeBSD -m /directory
# ./tc createPortsTree -p FreeBSD -m server:/directory
# ./tc setPortsMount -p FreeBSD
# ./tc setSrcMount -j 8.2-SERVER
# ./tc configDistfile -c ${PB}/distfiles
# ./tc configDistfile -c server:${PB}/distfiles
# ./tc tbcleanup -d
# ./tc addBuildPortsQueueEntry -b 8.2-SERVER-FreeBSD -d shells/bash -p 5
# ./tc addUser -u {USER} -e {EMAIL} -p {PASSWORD} -w
# ./tc setWwwAdmin -u {USER}
# !/bin/sh
#
# Copy make.conf to build eninronment
if [ -f ${PB}/jails/${JAIL}/make.conf ]
then
/usr/bin/install -c -o root -g wheel -m 0644 \
${PB}/jails/${JAIL}/make.conf ${DESTDIR}/etc/make.conf
fi
# ./tc updateHookCmd -h postBuildExtract -c /usr/local/tinderbox/scripts/hooks/copy-make.sh
PORTNAME= sample-meta-port
PORTVERSION= 1.0
CATEGORIES= ports-mgmt
NO_BUILD= yes
NO_WRKSUBDIR= yes
# Category: databases
RUN_DEPENDS+= memcached>=0:${PORTSDIR}/databases/memcached
# Category: devel
RUN_DEPENDS+= mercurial>=0:${PORTSDIR}/devel/mercurial
# Category: mail
RUN_DEPENDS+= exim>=0:${PORTSDIR}/mail/exim
RUN_DEPENDS+= mailman>=0:${PORTSDIR}/mail/mailman
do-install:
.include
# ./tc configOptions -e -o /options
# ./tc addPort -b 8.2-SERVER-FreeBSD -d shells/bash -o
.if ${.CURDIR:M*/ports-mgmt/tinderbox}
WITH_PGSQL=true
WITHOUT_MYSQL=true
.endif
-----------------------------------------------------------------------------------------------------------------
Сбербанк-клиент под Linux
Александр Гернгросс, Максим Лобов (Павел Закляков)
$ uname -a
$ md5sum ip-client_1.0-14_Ubuntu_i386_amd64.deb
$ sudo dpkg -i ip-client_1.0-14_Ubuntu_i386_amd64.deb
$ whereis ip-client
$ ls -l /usr/lib/Amicon_ip-client/
$ ls -l /usr/lib/Amicon_ip-client/Drivers
$ ip-client
$ lsmod|grep Ami
-----------------------------------------------------------------------------------------------------------------
Проект FreeIPA. Централизованное управление сетью
Сергей Яремчук
# yum info ipa-server | grep –I version
# yum search freeipa
# yum info freeipa-server | grep –I version
# yum install git autoconf automake libtool openldap-devel libcurl-devel xmlrpc-c-devel nspr-devel nss-devel 389-ds-base-devel svrcore-devel mozldap-devel gettext rpm-build python-paste openssl-devel e2fsprogs-devel libcap-devel libuuid-devel python-devel popt-devel python-setuptools python-krbV
# yum install krb5-devel cyrus-sasl-devel python-ldap python-pyasn1 TurboGears openldap-devel
# git clone git://git.fedorahosted.org/git/freeipa.git
# cd freeipa
# git checkout -b ipa-2-0 origin/HEAD
# make rpms
# yum install --enablerepo=updates-testing 389-ds
# yum install freeipa-server
# yum install freeipa-*
# yum install freeipa-* bind bind-dyndb-ldap
# ipa-server-install
$ kinit admin
$ ipactl status
$ ipa console
>>> help()
$ ipa env
$ ipa user-add
$ ipa passwd vpupkin
$ echo "p@ssw0rd" | ipa user-add vpupkin --first=Vasja --last=Pupkin --password
$ ipa help user-add
$ ipa user-show --all
$ ipa user-find admin
$ ipa migrate-ds ldap://ldap.example.com
$ ipa group-add www --desc "Web group"
$ ipa group-add-members www --user=vpupkin
$ ipa cert-show|cert-status|cert-revoke|cert-request|cert-remove-hold
$ ipa cert-request –-add –-principal=HTTP/ipa.example.org ipa.example.csr
$ ipa sudocmd-add --desc 'reading files' '/usr/bin/less'
# yum install ipa-client ipa-admintools
$ id
$ getent passwd 1989200003
$ getent group ipausers
-----------------------------------------------------------------------------------------------------------------
Отложи на завтра то, что не обязательно делать сегодня
Александр Майоров
tar -xvzf gearmand-version.tar.gz
cd gearmand
./configure
make; make install
sudo /usr/local/sbin/gearmand -vvv -u gearmanuser
while true;\
do echo "Test job $RANDOM" | gearman -bf test;\
sleep 1;\
echo -n .;\
done
gearman -wf test
#!/bin/bash
echo "Start gearman worker..."
i=0
while true
do
job=`/usr/local/bin/gearman -wf createpreview -c1`
if [ "$job" == 'stop' ]
then
echo "Stop worker."
exit $?
fi
if [ -z "$job" ]
then
echo "Empty JOB"
else
echo "Create preview for file '$job'"
if [ -f $job ]
then
# Это наш скрипт для обработки файла,
# принимающий имя файла для обработки
createpreview $job
fi
echo "Jobed job number #$i"
((i += 1))
fi
done
#EOF#
gearman -nbf createpreview /tmp/path/2/loaded/file1.avi
pecl search gearman
tar xzf gearman-X.Y.tgz
cd gearman-X.Y
phpize
./configure
make
make install
extension=gearman.so
\n";
$Client = new GearmanClient();
$Client->addServer();
echo "Регистрируем задачу №$id для фонового выполнения
\n";
switch (rand(0,2))
case 1: $priory = 'Low'; break;
case 2: $priory = 'High'; break;
default:$priory = 'Normal';
}
$workfunc = 'test_worker_' . rand(0, 1);
echo "Приоритет задачи $priory
\n";
echo "Задачу будет выполнять '$workfunc()'
\n";
$job = array(
'date' => date('Y-m-d H:i:s'),
'data' => uniqid(rand(1000,9999),1),
'sleep' => rand(0, 5),
'id' => $id,
'priority' => $priory,
'worker' => $workfunc,
);
$sjob = serialize($job);
switch ($priory)
{
case 'Hight':
$result = $Client->doHighBackground($workfunc, $sjob);
break;
case 'Low':
$result = $Client->doLowBackground($workfunc, $sjob);
break;
default:
$result = $Client->doBackground($workfunc, $sjob);
}
?>
$Client = new GearmanClient();
$Client->addServer();
$Client->addServer('127.0.0.1', 4730);
$Client->doHighBackground($workfunc,$sjob);
$Client->doLowBackground($workfunc,$sjob);
$Client->doBackground($workfunc,$sjob);
/usr/local/sbin/gearmand -d
addServer();
$Worker->addFunction('test_worker_0', 'test_callback_worker_0');
$Worker->addFunction('test_worker_1', 'test_callback_worker_1');
while (true)
{
echo "Ждем работы...\n";
$ret = $Worker->work();
echo $ret ? "Успешно закончили работу.\n" : "Ошибка в работе!\n";
if ( $Worker->returnCode() != GEARMAN_SUCCESS )
{
echo "Воркер был завершен! Код ошибки {$Worker->returnCode()}\n";
break;
}
}
function test_callback_worker_0($Job)
{
echo "Запущен обработчик " . __FUNCTION__ . "\n";
$workload = $Job->workload();
$jobconf = unserialize($workload);
echo "Начинаем выполнение работы №{$jobconf['id']} с приоритетом
{$jobconf['priority']}...\n";
echo "Работа займет {$jobconf['sleep']} секунд...\n";
// эмулируем выполнение ресурсоемкой работы
sleep($jobconf['sleep']);
echo
<<<'NOWDOC'
+----------------------+
| WORK 1 |
+----------------------+
NOWDOC;
// Выводим дамп наших данных для контроля
var_dump($jobconf);
echo "Функция завершилась.\n";
}
function test_callback_worker_1($Job)
{
echo "Запущен обработчик " . __FUNCTION__ . "\n";
$workload = $Job->workload();
$jobconf = unserialize($workload);
echo "Начинаем выполнение работы №{$jobconf['id']} с приоритетом
{$jobconf['priority']}...\n";
echo "Работа займет {$jobconf['sleep']} секунд...\n";
// эмулируем выполнение ресурсоемкой работы
echo "\n";
for ($i=0;$i<$jobconf['sleep'];$i++)
{
echo $i;
sleep(1);
}
echo "\n\n";
echo
<<<'NOWDOC'
+----------------------+
| WORK 2 |
+----------------------+
NOWDOC;
// Выводим дамп наших данных для контроля
var_dump($jobconf);
echo "Функция завершилась.\n";
}
?>
php worker.php
$Worker= new GearmanWorker();
$Worker->addServer();
$Worker->addFunction('test_worker_0', 'test_callback_worker_0');
$Worker->addFunction('test_worker_1', 'test_callback_worker_1');
$Job->workload();
-----------------------------------------------------------------------------------------------------------------
Мандатное разграничение прав доступа. Часть 1. Основы SELinux
Павел Закляков
# semanage port -a -t http_port_t -p tcp 81
user: role: type
user: role: type: mls
id -Z
# ls -Z /
# ps -Z
$ secon -f /etc/passwd
allow domain { exec_type -sbin_t } : file execute;
allow domain { -sbin_t exec_type } : file execute;
allow user_t bin_t : file {read execute getattr};
$ seinfo --class
$ seinfo --class=file -x
$ ls -Z /|grep bin_t
$ls -l /usr/bin/passwd
$ ls -l /etc/shadow
$ ls -Z /etc/shadow
$ sestatus -v|grep /etc/shadow
$ getfattr -n security.selinux /etc/shadow
# file: etc/shadow
$ ps -aZ|grep passwd
$ ls -Z /usr/bin/passwd
-----------------------------------------------------------------------------------------------------------------