1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-pfsense

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
BOOTSTRAP.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 14:19 4df0eb2

pfSense на Bootstrap

Мы переносим pfSense на Bootstrap. Вы можете помочь! Пожалуйста, соблюдайте следующие рекомендации по написанию кода:

  • используйте табуляцию (tabstop=4) для отступов (кроме заголовка лицензии, который содержит 3 строки с отступами \t<SP><SP><SP>);
  • не оставляйте пробелы в конце строк;
  • ограничьте вывод HTML из PHP, пожалуйста, используйте правильный синтаксис шаблонов (например, foreach/endforeach);
  • ограничьте атрибуты элементов, поэтому нет атрибутов style/align/width;
  • нет встроенного JavaScript, нет &nbsp;, нет таблиц для макета (замените их панелями, где это необходимо);
  • атрибуты HTML должны использовать значения атрибутов в двойных кавычках. Это означает, что ваш PHP-код должен, вероятно, использовать строки в одинарных кавычках;
  • мы используем значки для индикации статуса и кнопки для действий;
  • не рефакторите какой-либо «внутренний» код, который находится в верхней части каждого файла. Допустимы только изменения, необходимые после обновления; любые другие изменения будут отклонены (включая изменения, которые были сделаны в восходящем направлении);
  • мы принимаем как K&R, так и ZF стиль кода, при этом вышеуказанные рекомендации имеют более высокий приоритет.

Если вы чувствуете себя авантюристом, иногда вы можете переписать код PHP и JavaScript; но старайтесь свести это к минимуму.

Настройка разработки

Мы предлагаем вам настроить среду разработки для тестирования ваших изменений. Это можно сделать с помощью Virtualbox или Qemu.

Qemu

Используйте libvirt для настройки машины FreeBSD-10 с двумя сетевыми адаптерами. Загрузите последний файл pfSense.iso и установите его. Я подключил оба сетевых адаптера к virbr0, который libvirt предлагает по умолчанию. Один интерфейс можно использовать в качестве WAN (где pfSense будет использовать dhcp и должен получить NATted IP-адрес в вашей локальной сети), другой — в качестве LAN-интерфейса с фиксированным IP-адресом.

Virtualbox

Создайте новую виртуальную машину (FreeBSD 64 bit) и следуйте указаниям мастера, чтобы настроить объём оперативной памяти (512 МБ) и создать виртуальный жёсткий диск (8 ГБ подойдёт). Когда закончите, не запускайте машину, а откройте диалоговое окно настроек и настройте два сетевых адаптера. Оба должны быть настроены как «Bridged Adapter», подключённые к вашему активному сетевому соединению.

После сохранения вы можете запустить машину. Virtualbox попросит вас настроить загрузочный носитель. Используйте последнюю доступную версию .iso, следуйте стандартным шагам установки и настройте конфигурацию, как описано в инструкциях Qemu.

Когда закончите, не забудьте удалить установочный диск с вашего компьютера. В противном случае он будет продолжать загружать установщик вместо вашей установки.

Задачи после установки

Отключите DHCP-сервер (на интерфейсе LAN) вашей установки pfSense и всё готово. Запустите ssh-демон, войдите в систему и настройте аутентификацию с открытым ключом (для пользователя root). Выполните команду pkg install rsync и создайте скрипт для загрузки ваших изменений из среды разработки в установку pfSense:

#!/bin/sh

HOST=192.168.122.100

rsync -xav --delete `dirname $0`/usr/local/www/ root@$HOST:/usr/local/www/
rsync -xav --delete `dirname $0`/etc/inc/ root@$HOST:/etc/inc/

Очистка

Прежде чем погрузиться в файл, очистите его с помощью прилагаемого очистителя (clean.sh). Этот скрипт пытается удалить большинство ненужных атрибутов элементов и выполняет множество других замен, которые необходимо выполнить в каждом файле.

Соглашения о миграции

Все перенесённые файлы (в usr/local/www) форматируются с использованием компонентов Bootstrap по умолчанию. Пользовательский CSS помещается в usr/www/bootstrap/css/pfSense.css, но постарайтесь свести это к минимуму.

Система сеток Bootstrap используется для определения столбцов. Мы выбрали «малую» точку останова в качестве точки останова по умолчанию для сворачивания из горизонтального в вертикальное расположение. Вы должны определить ширину своих столбцов с помощью .col-sm-*, если нет веской (и задокументированной ;) причины отклоняться от этого значения по умолчанию.

Формы

Мы следуем нескольким соглашениям для чистого и последовательного оформления форм:

  • каждая форма должна иметь... По крайней мере, одна «панель» должна содержать поля формы. Если некоторые поля можно сгруппировать вместе, вы можете добавить несколько панелей в форму.

  • Поле состоит из внешней оболочки .form-group, которая содержит label и input.

  • Кнопка отправки должна быть размещена вне панелей, чтобы избежать путаницы (например, кнопка сохранения сохраняет всю форму, а не только последнюю панель).

  • Флажки размещаются внутри метки (см. пример ниже). Обертывающий div нуждается в дополнительном классе .checkbox.

  • Дополнительные описания полей можно разместить в диапазоне .help-block.

После определения правильного макета для форм мы решили создать оболочки на PHP для создания всех форм. Это устраняет дублирование всего текущего HTML, делая эту миграцию немного сложнее, но любые будущие обновления бесконечно проще (поскольку все формы можно обновлять централизованно). Вот как должен выглядеть код формы:

require('classes/Form.class.php');
$form = new Form;

$section = new Form_Section('System');

$section->addInput(new Form_Input(
    'hostname',
    'Hostname',
    'text',
    $pconfig['hostname'],
    ['placeholder' => 'pfSense']
))->setHelp('Name of the firewall host, without domain part');

$section->addInput(new Form_Input(
    'domain',
    'Domain',
    'text',
    $pconfig['domain'],
    ['placeholder' => 'mycorp.com, home, office, private, etc.']
))->setHelp('Do not use \'local\' as a domain name. It will cause local '.
    'hosts running mDNS (avahi, bonjour, etc.) to be unable to resolve '.
    'local hosts not running mDNS.');

$form->add($section);

print $form;

Пожалуйста, убедитесь, что указанные выше поля $_POST в коде PHP также обновлены, поскольку они генерируются автоматически.

Код PHP будет выводить HTML примерно так (всё, кроме соответствующих классов Bootstrap, опущено для этого примера):

<form class="form-horizontal">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h2 class="panel-title">Форма или заголовок панели</h2>
        </div>
        <div class="panel-body">
            <div class="form-group">
                <label for="input" class="col-sm-2 control-label">Ввод</label>
                <div class="col-sm-10">
                    <input class="form-control" id="input" />
                </div>
            </div>
            <div class="form-group">
                <label for="second-input" class="col-sm-2 control-label">Вторая метка</label>
                <div class="col-sm-10">
                    <input class="form-control" id="second-input" />
                    <span class="help-block">Что это такое?</span>
                </div>
            </div>
            <div class="form-group">
                <label for="second-input" class="col-sm-2 control-label">Флажок</label>
                <div class="col-sm-10 checkbox">
                    <label>
                        <input type="checkbox" id="checkbox" /> Описание флажка
                    </label>
                </div>
            </div>

            <!-- И ещё группы форм -->

        </div>
    </div>

    <!-- И ещё панели -->

    <div class="col-sm-10 col-sm-offset-2">
        <input type="submit" class="btn btn-primary" value="Сохранить" />
    </div>
</form>

Таблицы

  • Оберните таблицы в <div class="table-responsive">, чтобы они прокручивались горизонтально на небольших устройствах.
  • Таблицам присваивается стандартный набор классов: table table-striped table-hover.
  • Пожалуйста, добавьте thead (с соответствующими th) и tbody.

Кнопки

Многие таблицы имеют кнопки «действия» в каждой строке, такие как «редактировать», «переместить» и «удалить». В старом шаблоне используются значки для этих действий, но в большинстве случаев существует недостаточно различных значков, и / или значки не очень понятны. Мы решили заменить эти значки (маленькими) кнопками:

<a class="btn btn-xs btn-primary">edit</a> <a class="btn btn-xs btn-danger">delete</a>

Цвета кнопок не установлены окончательно, но используемые варианты:

  • редактировать — тёмно-синий, btn-primary;
  • включить / отключить — жёлтый. ## Icons

Icons в основном используются для обозначения статуса. Если значок не является на 100% понятным, попробуйте предоставить легенду. Хороший пример использования значков и легенды см. в файле usr/local/www/firewall_rules.php.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-pfsense.git
git@api.gitlife.ru:oschina-mirror/mirrors-pfsense.git
oschina-mirror
mirrors-pfsense
mirrors-pfsense
master