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 -----------------------------------------------------------------------------------------------------------------