Я наконец понял, что кому-то очень-очень хочется чтоб в стране у нас настал совсем-совсем песец.

Я наконец понял, что кому-то очень-очень хочется чтоб в стране у нас настал совсем-совсем песец.
Зачем?  Для того что-бы произошел переворот или революция или путч, что-бы поменялась власть в стране. Что они делают для этого?
Действуя внутри системы они разваливают экономику страны, сельское хозяйство, медицину и образование, подрывают доверие к судебной системе, компрометируют власть в целом и в часности, устраивают геноцид населению,  т.д. и т.п…
Это точно враги народа и их как можно скорее нужно ловить,разоблачать и сажать..
Я точно знаю кто это, но сказать это в открытом виде не могу…Боюсь что обьявят террористом,посадят, уволят, прикроют блог, спалят дом или машину. И им за это ничего не будет. Боюсь Роскомнадзора, полицию, судебную систему..ну и остальных власть имеющих.

SSH клиент из браузера на FreeBSD

Задача: получить доступ по SSH к серверу через браузер.

Ставим shellinaboxd:

cd /usr/ports/www/shellinabox
 make install clean

в /etc/rc.conf

shellinaboxd_enable="YES"
 shellinaboxd_port="4200"

В /usr/local/etc/rc.d/shellinaboxd отключаем возможность удаленного подключения (т.е. разрешаем только localhost):

command_args="--user=${shellinaboxd_user} --group=${shellinaboxd_group} --port=${shellinaboxd_port} --background=${pidfile}"

изменяем:

command_args="--user=${shellinaboxd_user} --group=${shellinaboxd_group} --port=${shellinaboxd_port} --background=${pidfile} --localhost-only"

Запускаем сервис:

/usr/local/etc/rc.d/shellinaboxd start

Далее настраиваем apache для получения строки запуска SSH вида http://www.domen.ru/shell. Устанавливаем порты:

cd /usr/ports/www/apache22
 make config

Выбираем mod_proxy и mod_proxy_http

make deinstall
 make reinstall
 /usr/local/etc/rc.d/apache22 restart

В /usr/local/etc/apache22/httpd.conf добавляем:

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:

ProxyPass /shell/ http://localhost:4200/
ProxyPassReverse /shell/ http://localhost:4200/

И снова перезапускаем:

/usr/local/etc/rc.d/apache22 restart

Обновление «Учет оргтехники и ТМЦ в браузере» до версии 3.49

Выложено на sourceforge.net

В основном эволюционные изменения. Ничего революционного нет. Исправлено ряд незначительных ошибок.

Из нового:

  • добавлено поле «в пути» в журнале имущества и в перемещениях
  • каждому пользователю можно добавить роли
  • добавлен модуль «управление устройствами» — можно например использовать для перезагрузок устройств
  • добавлен виджет — модуль «кто онлайн»
  • еще ряд мелочей

Чувствую настало время купить новую куртку…

Сегодня когда гулял около храма на площади революции, попал в смешную ситуацию. Подошла женщина и сказала что положила денежку в мою банку на крыльце храма… Я был в шоке…приняла за убогого или бомжа…

Работа с транзакциями MySQL на PHP

С часа три вероятно мучался вчера, пока подобрал вариант кода, который корректно отрабатывает.

$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);

Использованный класс:

<?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.. Почему? Вопрос интересный.