Я наконец понял, что кому-то очень-очень хочется чтоб в стране у нас настал совсем-совсем песец.
Зачем? Для того что-бы произошел переворот или революция или путч, что-бы поменялась власть в стране. Что они делают для этого?
Действуя внутри системы они разваливают экономику страны, сельское хозяйство, медицину и образование, подрывают доверие к судебной системе, компрометируют власть в целом и в часности, устраивают геноцид населению, т.д. и т.п…
Это точно враги народа и их как можно скорее нужно ловить,разоблачать и сажать..
Я точно знаю кто это, но сказать это в открытом виде не могу…Боюсь что обьявят террористом,посадят, уволят, прикроют блог, спалят дом или машину. И им за это ничего не будет. Боюсь Роскомнадзора, полицию, судебную систему..ну и остальных власть имеющих.
Архив за месяц: Декабрь 2014
SSH клиент из браузера на FreeBSD
Задача: получить доступ по SSH к серверу через браузер.
Ставим shellinaboxd:
1 2 |
cd /usr/ports/www/shellinabox make install clean |
в /etc/rc.conf
1 2 |
shellinaboxd_enable="YES" shellinaboxd_port="4200" |
В /usr/local/etc/rc.d/shellinaboxd отключаем возможность удаленного подключения (т.е. разрешаем только localhost):
1 |
command_args="--user=${shellinaboxd_user} --group=${shellinaboxd_group} --port=${shellinaboxd_port} --background=${pidfile}" |
изменяем:
1 |
command_args="--user=${shellinaboxd_user} --group=${shellinaboxd_group} --port=${shellinaboxd_port} --background=${pidfile} --localhost-only" |
Запускаем сервис:
1 |
/usr/local/etc/rc.d/shellinaboxd start |
Далее настраиваем apache для получения строки запуска SSH вида http://www.domen.ru/shell. Устанавливаем порты:
1 2 |
cd /usr/ports/www/apache22 make config |
Выбираем mod_proxy и mod_proxy_http
1 2 3 |
make deinstall make reinstall /usr/local/etc/rc.d/apache22 restart |
В /usr/local/etc/apache22/httpd.conf добавляем:
1 2 3 |
LoadModule proxy_module libexec/apache22/mod_proxy.so LoadModule proxy_html_module libexec/apache22/mod_proxy_html.so LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so |
В виртуальные хосты apache:
1 2 |
ProxyPass /shell/ http://localhost:4200/ ProxyPassReverse /shell/ http://localhost:4200/ |
И снова перезапускаем:
1 |
/usr/local/etc/rc.d/apache22 restart |
Обновление «Учет оргтехники и ТМЦ в браузере» до версии 3.49
Выложено на sourceforge.net
В основном эволюционные изменения. Ничего революционного нет. Исправлено ряд незначительных ошибок.
Из нового:
- добавлено поле «в пути» в журнале имущества и в перемещениях
- каждому пользователю можно добавить роли
- добавлен модуль «управление устройствами» — можно например использовать для перезагрузок устройств
- добавлен виджет — модуль «кто онлайн»
- еще ряд мелочей
Чувствую настало время купить новую куртку…
Сегодня когда гулял около храма на площади революции, попал в смешную ситуацию. Подошла женщина и сказала что положила денежку в мою банку на крыльце храма… Я был в шоке…приняла за убогого или бомжа…
Работа с транзакциями MySQL на PHP
С часа три вероятно мучался вчера, пока подобрал вариант кода, который корректно отрабатывает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$err=""; $lb=new Tsql(); $lb->connect($myrow["host"], $myrow["username"], $myrow["pass"], $myrow["basename"]); $lb->start_transaction(); $sql="INSERT INTO payments (agrm_id,amount,comment,receipt,pay_date,local_date,status,mod_person,amount_cur) VALUES ('$agrm_id','$amount','Автоматически загруженный платеж','$uniid','$dat',now(),0,'$manager_id','$amount')"; if ($err==""){ $result2 = $lb->ExecuteSQL($sql); if ($result2=='') {$err="Error!";}; }; $sql="UPDATE agreements SET balance=balance+$amount where agrm_id='$agrm_id'"; if ($err==""){ $result2 = $lb->ExecuteSQL($sql); if ($result2=='') {$err="Error!";}; }; if ($err==""){ $lb->commit(); } else { $lb->rollback(); PutLog('----ошибка занесения платежа(2): ' . $err); }; unset($lb); |
Использованный класс:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<?php // Данный код создан и распространяется по лицензии GPL v3 // Изначальный автор данного кода - Грибов Павел // http://грибовы.рф class Tsql { var $idsqlconnection; // идентификатор соединения с БД // соеденяемся с БД и выбираем таблицу, получаем $idsqlconnection function connect($host,$name,$pass,$base){ global $codemysql; $this->idsqlconnection=new mysqli($host,$name,$pass,$base); if (mysqli_connect_errno()) { $serr=mysqli_connect_error(); die("Error connect to Mysql or select base: $serr"); } $result = mysqli_query($this->idsqlconnection,"SET NAMES $codemysql"); mysqli_set_charset($this->idsqlconnection, "$codemysql"); } function ExecuteSQL($sql){ //echo "$sql<br>"; $result = mysqli_query($this->idsqlconnection,$sql); if ($result==""){echo mysqli_connect_error();}; return $result; } function start_transaction(){ return mysqli_query($this->idsqlconnection,"START TRANSACTION"); //return mysqli_begin_transaction($this->idsqlconnection); } function commit (){ return mysqli_query($this->idsqlconnection,"COMMIT"); //return mysqli_commit($this->idsqlconnection); } function rollback(){ return mysqli_query($this->idsqlconnection,"ROLLBACK"); //return mysqli_rollback($this->idsqlconnection); } function close(){ return mysqli_close($this->idsqlconnection); } } |
Как оказалось, главной фишкой — нельзя использовать внутри цикла begin transaction — commit (или rollback) обработку ошибок при помощи mysqli_error — PHP падает в FATAL ERROR.. Почему? Вопрос интересный.