суббота, 27 октября 2012 г.

Proxmox. Проброс usb-устройств в гостевую виртуальную машину. На примере ключей 1С HASP

 обновлено 16.05.13

Немного теории о usb:
"Физическое соединение устройств осуществляется по топологии многоярусной звезды. Центром каждой звезды является хаб, каждый кабельный сегмент соединяет две точки - хаб с другим хабом или с функцией. В системе имеется один (и только один) хост-контроллер, расположенный в вершине пирамиды устройств и хабов. Хост-контроллер интегрируется с корневым хабом (Root Hub), обеспечивающим одну или несколько точек подключения - портов." — источник

Наша задача выяснить, на какой шине (bus) и к какому порту (port) подключены наши usb-устройства. В качестве примера приведён проброс двух ключей HASP 1С Предприятия 8 (серверный и клиентский)

1. Вставляем usb-устройства;

2. Далее есть два способа выяснения связки шина-порт:
а) В консоли proxmox сервера выполняем "lsusb". В результате выясним имя устройств и найдём среди них свои:
...
Bus 006 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06
Bus 006 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 0557:2221 ATEN International Co., Ltd
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
...

Искомое: 2 ключа Aladdin Knowledge Systems HASP v0.06 на шине 6

Теперь выясняем, на каких портах "висят" ключи. Выполняем "lsusb -t", которая нам выдаст древовидную структуру:
...
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=vend., Driver=usbfs, 1.5M
    |__ Port 2: Dev 3, If 0, Class=vend., Driver=usbfs, 1.5M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=HID, Driver=usbhid, 12M
    |__ Port 2: Dev 2, If 1, Class=HID, Driver=usbhid, 12M

...
Как видим, устройства (Device) 2 и 3 на шине 6 находятся на портах 1 и 2. Соответственно, пробрасывать будем 6-1 и 6-2.

б) Короткий способ.
Выполняем "qm monitor НОМЕР_ВИРТУАЛЬНОЙ_МАШИНЫ",
qm>
Теперь выполняем команду "info usbhost"
...
  Bus 5, Addr 2, Port 2, Speed 12 Mb/s
    Class 00: USB device 0557:2221, Hermon USB hidmouse Device
  Bus 6, Addr 2, Port 1, Speed 1.5 Mb/s
    Vendor Specific: USB device 0529:0001, HASP 2.17
  Bus 6, Addr 3, Port 2, Speed 1.5 Mb/s
    Vendor Specific: USB device 0529:0001, HASP HL 3.25

...
 Вот они наши HASP-ключи, опять же на шине 6 и портах 1 и 2.
Выходим командной quit либо сочетанием Ctrl+C

3. Редактируем на сервере файл /etc(/pve)/qemu-server/NNN.conf (где NNN-номер виртуальной машины) и добавляем следующие строки:
Для версии proxmox < 2.0
args: -device usb-host,hostbus=6,hostport=1
args: -device usb-host,hostbus=6,hostport=2
 
Для версии proxmox > 2.0 
usb0: 6-1
usb1: 6-2

4. Перезагружаем виртуальную машину.

5. Проверить, подцепились ли устройства, можно снова зайдя в qm monitor (как в п. 2б) и выполнив команду "info usb"
...
  Device 0.1, Port 6, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.1, Port 1, Speed 1.5 Mb/s, Product HASP 2.17
  Device 0.2, Port 2, Speed 1.5 Mb/s, Product HASP HL 3.25

...

P.S. Также usb-устройство можно подключить, добавив в конец NNN.conf такое:
usb0: host=0529:0001 
 , где 0529:0001 - это device ID, взятый из п. 2а
Плюсы: при перемещении usb-устройства в другой порт не надо ничего перенастраивать;
Минусы: этот способ не годится, если у вас несколько устройств с одинаковыми device ID, как в указанном выше примере

среда, 17 октября 2012 г.

GetSimple CMS 3.1 News Manager html-теги в анонсах

plugins/news_manager/inc/functions.php
ищем функцию function nm_create_excerpt($content)
комментируем $content = strip_tags($content);
Теперь переводы строк, выделение жирным и пр. отображаются

четверг, 6 сентября 2012 г.

Добавляем поле в форму обратной связи Joomla 1.5

#Создаём дополнительное поле "Введите Ваш номер телефона" при отправке сообщения через обратную связь Joomla
#Изменяемые файлы:
#/components/contact.html.php
#/language/russian.php
#/language/english.php
#/components/contact.php

1) /components/contact.html.php
    Ищем
                    <label for="contact_name">
                        <?php echo(_NAME_PROMPT);?>
                    </label>
                    <br />
                    <input type="text" name="name" id="contact_name" size="30" class="inputbox" value="" />
                    <br />
    После добавляем
                        <label for="contact_phone">
                        <?php echo(_PHONE_PROMPT);?>
                    </label>
                    <br />
                    <input type="text" name="phone" id="contact_phone" size="30" class="inputbox" value="" />
                    <br />
#Тем самым мы добавили поле ввода номера телефона в форму.
#Теперь, чтобы вместо "_PHONE_PROMPT" отобразилось то, что ты хочешь, типа "Введите Ваш номер телефона", лезем дальше

2) /language/russian.php
    Ищем
                    DEFINE('_NAME_PROMPT','Введите Ваше имя:');
    После добавляем              
                    DEFINE('_PHONE_PROMPT','Введите Ваш номер телефона:');
                  
3) /language/english.php                  
    Ищем              
                    DEFINE('_NAME_PROMPT',' Enter your name:');
    После добавляем                  
                    DEFINE('_PHONE_PROMPT',' Enter your phone number:');
                  
4)    /components/contact.php      
    Ищем
                    $text         = strval( mosGetParam( $_POST, 'text',             '' ) );
                    $name         = strval( mosGetParam( $_POST, 'name',             '' ) );
                    $subject     = strval( mosGetParam( $_POST, 'subject',         $default ) );
    После добавляем строчку
                    $phone         = strval( mosGetParam( $_POST, 'phone',         '' ) );
                  
#За ней будет ещё строчка с email_copy. Этим мы добавили "перехват" значения переменной $phone при нажатии клавиши "Отправить" в форме сообщения.

    Ищем
                    $text     = $prefix ."\n". $name. ' <'. $email .'>' ."\n\n". stripslashes( $text );
    Заменяем на
                    $text     = $prefix ."\n". $name. ' ('. $phone .')' .' <'. $email .'>' ."\n\n". stripslashes( $text );  
#Таким образом добавили телефон в скобках справа от имени в приходящем сообщении.


Аналогично можно добавить любую другую информацию