Разработка WEB-системы коммерческого доступа к сети Internet на базе операционной системы FreeBSD

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ

Государственное образовательное учреждение

Высшего профессионально образования

КЫРГЫЗСКО-РОССИЙСКИЙ СЛАВЯНСКИЙ УНИВЕРСИТЕТ

Факультет заочного образования

Кафедра информационных и вычислительных технологий




ДИПЛОМНАЯ РАБОТА

Разработка WEB-системы коммерческого доступа к сети Internet на базе операционной системы FreeBSD

по специальности 230105 - Программное обеспечение ВТ и АС



Выполнил студент группы ИВТ5,5-1-08 Шаборшин А.В.

Руководитель дипломной работы,

к. т. н., доцент Манжикова С.Ц.

Рецензент, директор ОсОО "BlackBox" Стыценко И.В.







Бишкек 2014 г.

Задание


1. ТЕМА РАБОТЫ:

"Разработка WEB-системы коммерческого доступа к сети Internet на базе операционной системы FreeBSD"

Утверждена приказом по университету № 316-п от 18 октября 2012 г.

Дата сдачи законченной работы: 14.02.2014 г.

. ИСХОДНЫЕ ДАННЫЕ К РАБОТЕ:

Разработать программу для внутриорганизационного доступа к сети Internet, который позволит организовать сеть отеля и дать ограниченный доступ к сети Internet гостям.

Система должна обладать следующими функциональными возможностями:

Раздача в автоматическом режиме IP-адреса

Закрытый доступ к сети Internet не гостей отеля

Доступ только для гостей отеля

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

üсерверные технологии;

üязык программирования PHP;

üFirewall IPfw;

üWeb server Nginx;

üБаза данных MySQL.

и выполнять следующие функции:

·Регистрация пользователей

·Создание правил доступа к сети

·Удаление правил доступа к сети

·Проверка активности клиента

3. СОДЕРЖАНИЕ РАСЧЕТНО-ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ

№№ п/пПеречень вопросов, подлежащих разработке (конструкторских, технологических, исследовательских, экономических) Объем, стр. / %Срок выполнения1. Аналитический обзор19/25,6%20.10.132. Конструкторский обзор9/12%15.11.133. Разработка документации27/36,4%15.12.134. Экспериментальный раздел8/10,8%30.12.135. Заключение1/1,2%16.01.14Итого: 74/100%

4. СОДЕРЖАНИЕ ГРАФИЧЕСКОГО МАТЕРИАЛА

№№ п/пПеречень графического материалаОбъем, листов/%Срок выполнения1. Титульный лист1/11%20.10.132. Цель и требования работы1/11%20.10.133. Варианты использования системы1/11%15.11.134. Диаграмма классов1/11%18.11.135. Последовательное получение доступа и проверка авторизации1/11%20.11.136. Диаграмма размещения компонентов Web-системы1/11%30.11.137. Алгоритм подключения1/11%05.12.138. Стартовая страница1/11%15.12.139. Заключение1/11%16.01.14Итого: 9/100%

Аннотация


В данной дипломной работе было разработано программное обеспечение, которое позволяет посетителям и работникам организации при помощи портативного устройства или стационарного компьютера подключаться к сети Internet по средствам WEB интерфейса.

Формулировка пользовательских требований:

·Авторизация пользователей должна проходить через Web-интерфейс.

·По истечению времени пользователь отключается автоматически.

·IP адреса должна присваиваться по DHCP.

·Информация о пользователях должна храниться в MySQL

Объем работы:

Количество страниц - ______

Количество рисунков - 23

Оглавление


Задание

Аннотация

Объем работы:

Количество страниц - ______

Количество рисунков - 23

Введение

1. Аналитический раздел

1.1 Обзор и анализ существующих аналогов

1.1.1 UserGate

1.1.2 Traffic Inspector

1.2 Обоснование необходимости разработки

1.3 Требование к аппаратным средствам, используемым для решения поставленной задачи

1.3.1 Особенности операционной системы FreeBSD

1.3.2 Особенности языка программирования PHP

1.3.3 Особенности MySQL

2. Конструкторский раздел

2.1 Концептуальная модель программной системы

2.3 Применение Firewall Ipfw

2.4 Применение виртуального сервера Nginx

2.5 Применение инструмента Cron

2.6 Диаграмма классов

2.7 Последовательное получение доступа и проверка авторизации

2.8 Диаграмма размещения

2.9 Алгоритм подключения

3. Разработка документации

3.1 Требования к программному и аппаратному обеспечению

3.2 Установка системы

3.3 Руководство программиста

3.4 Руководство пользователя

4. Экспериментальный раздел

4.1 Разработка тестов

4.2 Тестирование системы

Заключение

Список литературы

Приложения


Введение


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

В данной дипломной работе была разработана система, которая организует сеть отеля, дает безопасный доступ к сети интернет по средству локальной сети (LAN) и беспроводной сети (WiFi), для этого нужно как-то ограничить доступ нежелательных пользователей внутри сети, следовательно, стоит задача как это сделать из тех средств которые уже есть в наличии данной организации, чтобы избежать лишних затрат. Разработка данной системы позволит организовать сеть по всему отелю, ограничить нежелательных пользователей, так как будет организован закрытый доступ к сети. Но также не стоит забывать, что Internet канал не обладает не ограниченной скоростью, нужно как то ограничивать пользователей. Не стоит, забывать о дополнительных заработках в качестве рекламы, при получении доступа к сети, можно сделать рекламную площадку и размещать на ней рекламу.

Была разработана система которая дает доступ с любого устройства где есть датчик WiFi или Lan вход,

Основные результаты дипломной работы предоставлены в пояснительной записке которая состоит из введения, 4 глав, заключения, списка литературы и приложения:

Глава 1 - Включает в себя результаты анализа проблемы и обзор программ-аналогов

Глава 2 - Включает в себя конструкторский раздел, в котором показана концептуальная модель системы

Глава 3 - Включает в себя разработку документации для установки системы и руководство программиста и пользователя

сеть internet доступ пользовательский

Глава 4 - Включает в себя экспериментальный раздел, в котором было проведено тестирование системы.

1. Аналитический раздел


1.1 Обзор и анализ существующих аналогов


Сейчас существует множество программ разрешающие или запрещающие доступ к сети Internet, с некоторыми мы сейчас ознакомимся. Для примера возьмем две популярные программы UserGate и Traffic Inspector.


1.1.1 UserGate

ØКонтроль приложений

Политика управления доступом к сети Интернет получила логическое продолжение в виде клиентского модуля Firewall. С помощью UserGate можно разрешать или запрещать не только доступ пользователей в сеть Интернет, но и работу определенных приложений. Например, можно разрешить использовать в качестве браузера только Internet Explorer, запретив прочие браузеры.

ØTraffic Manager (динамическое управление шириной канала)

В модуле Traffic Manager реализовано динамическое управление загрузкой интернет-канала. В правилах Traffic Manager можно задавать величину в Кб/сек, определяющую максимально допустимую скорость для конкретного типа входящего или исходящего трафика (HTTP, FTP, Mail и т.п.). Traffic Manager можно использовать и для резервирования определенной доли интернет-канала для некоторых пользователей локальной сети, предоставив остальным лишь остаток интернет-полосы.

ØКонтроль звонков через UserGate (IP-телефония)

В UserGate добавлена поддержка протоколов SIP и H.323, что позволяет использовать прокси-сервер в качестве VoIP-шлюза как для программных, так и для аппаратных IP-телефонов. Таким образом, UserGate контролирует все входящие и исходящие звонки через IP-телефонию

ØФильтрация веб-сайтов

Контроль доступа пользователей к веб-сайтам по названиям, категориям и фрагментам веб-адресов.

ØУчет трафика

Администратор распределяет интернет-ресурсы для сотрудников компании, создавая списки запрещенных или разрешенных доменных имён, IP-адресов и т.д. При этом он может ставить ограничения по времени, или количеству трафика. В случае перерасхода, доступ в сеть Интернет автоматически закрывается.

ØОграничение трафика

В прокси-сервере UserGate реализована развитая система ограничений трафика и скорости доступа для каждого пользователя или группы пользователей.

ØКэширование.

Кэширование посещённых страниц и рисунков освобождает канал для загрузки полезной информации и экономит входящий трафик.

ØДоступ к ресурсам компании

С помощью UserGate можно открыть доступ к внутренним ресурсам компании, например, к веб-, FTP-, VPN - или к почтовому серверу. Таким образом, внутренние серверы компаниии становятся доступными для пользователей из сети Интернет.

ØРасписание работы пользователей

Администратор устанавливает почасовое расписание работы пользователей в сети Интернет.

ØМониторинг Интернет-сессий

Прокси-сервер UserGate предоставляет возможность детального мониторинга активных интернет-сессий пользователя в реальном времени:

§по IP-адресу;

§имени пользователя;

§точному количеству переданного и полученного трафика;

§по посещенным веб-адресам.

Администратор может ознакомиться с текущим балансом пользователя, установить ограничение:

§на количество трафика;

§на продолжительность пребывания в сети;

§на количество потраченных средств, по исчерпанию которых работа пользователя будет заблокирована или переведена в ограниченный режим. [1]

Прокси-сервер UserGate

Обеспечение и контроль доступа в сеть Интернет

Индивидуальный доступ в сеть Интернет!

Для каждого сотрудника компании администратор задает параметры доступа в сеть Интернет:

·входящая и исходящая скорость соединения;

·распределение ширины интернет-полосы;

·разрешенные приложения (например, возможность использовать только Internet Explorer как браузер)

Оптимизация работы сотрудников в сети Интернет

Скажи "Нет" одноклассникам!

По статистике, более 80% сотрудников используют рабочее время в личных целях, например, общаются с одноклассниками, переписываются с друзьями в в ICQ, скачивают музыку и фильмы. Оптимизировать работу сотрудников поможет UserGate, ограничив доступ к ненужным для работы сайтам, запретив ICQ и скачивание файлов таких расширений, как *. mp3, *. avi и др.

Мощная система фильтрации веб-сайтов

Категория "Игры" под запретом!

Внедрение системы фильтрации веб-сайтов от компании Bright Cloud значительно улучшило URL-filtering в UserGate. Достаточно выбрать нежелательные категории, например, "Знакомства" и "Игры" и ограничить к ним доступ. Таким образом, не нужно постоянно обновлять списки нежелательных веб-сайтов. Доступно 70 категорий и более 450 млн. сайтов! (Рис. 1.1.)


Рис. 1.1 Схема работы программы User Gate.


Сокращение затрат компании на интернет-трафик- экономайзер!

Снижение затрат на входящий трафик на 40% в первый месяц работы UserGate!

Снижение нагрузки на сеть

Полезное кэширование!запоминает (кэширует) все посещённые страницы и рисунки, освобождая канал. Всё это в значительной степени сокращает не только трафик, но и проведенное на линии время.

Всегда доступные статистические отчеты

Веб-статистика доступна всегда!

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

Статистика UserGate построена на веб - технологии, что обеспечивает доступ к ней в любой точке мира, где есть выход в сеть Интернет.

Информация отображается не только в табличном виде, но и в графической форме, что существенно облегчает восприятие отчетов.


Рис. 1.2 Окно настройки программы UserGate


Интернет - статистика.

Подсчет и просмотр статистики работы пользователей по различным параметрам (дням, сайтам) за произвольный интервал времени. Существует возможность просмотра интернет-статистики работы пользователей в текущем месяце через HTTP. Анализируя интернет-статистику, администратор видит:

·как распределяется интернет-трафик между сотрудниками;

·в какое время максимальная пользовательская активность;

·как распределяется трафик по протоколам;

·какие сайты чаще всего посещают пользователи

Статистика для пользователей

Пользователь UserGate всегда может посмотреть свою личную статистику:

·количество принятых/переданных мегабайт;

·время в сети: за месяц/день/неделю;

·свой тариф и другую информацию.

·Встроенная биллинговая система.

Встроенная биллинговая система автоматически производит расчёт стоимости работы пользователя в сети Интернет исходя из цены, времени и/или объёма трафика. Вы можете устанавливать тарифы для каждого пользователя отдельно либо для группы пользователей. Существует возможность переключения тарифов в зависимости от времени суток, дня недели, адреса сайта.

Наличие двух модулей: антивируса Касперского и Panda Software обеспечивает максимальную проверку трафика на наличие вирусов. Администратор выбирает один из антивирусов, либо использует их одновременно. В последнем случае можно указать очередность проверки каждого типа трафика.

Встроенный firewall и поддержка VPN!

Межсетевой экран (firewall) защищает сервер от вторжений и несанкционированного доступа. Поддержка VPN обеспечивает секретность и целостность передаваемой по сети информации.


1.1.2 Traffic Inspector

Интернет-трафик остается недорогим "удовольствием" для компаний, находящихся, в основном, в европейской части России, поближе к двум столицам. Чем дальше от них, тем стоимость трафика растет, а сама скорость неуклонно снижается. Как экономить в таких условиях? Как отследить, кто и каким образом потребляет большую часть квоты? В данной статье мы расскажем о Traffic Inspector [2].

Организация учета потребления интернет-трафика - одна из ключевых задач при построении и оптимизации любой локальной вычислительной сети организации. Перед системным администратором в этом случае будут стоять задачи не только разграничения доступа к тем или иным сайтам (например, запрет выхода в соцсети) и точного подсчета израсходованного трафика на каждого сотрудника, а решение гораздо более сложных и масштабных проблем. К ним относятся и защита локальной сети от внешнего вторжения, и предотвращение распространения сетевых червей, и организация кеширования для снижения потребления трафика, и блокировка загрузки рекламы и определенных типов файлов на компьютеры сотрудников. Для компьютерных клубов, Интернет-кафе, учебных заведений также актуальна система биллинга, позволяющая организовать платную работу пользователя за ПК. На наш взгляд, все эти задачи можно решить только при установке комплексного продукта. Рассмотрим одну из таких разработок - приложение Traffic Inspector от отечественного вендора "Смарт-Cофт".

Основная функция приложения - предоставление гибкого и продвинутого интерфейса для организации подключения к Интернету сети компьютеров (с полным спектром вариантов, включая продвинутую маршрутизацию запросов, автопереключение на резервный канал, обеспечение доступности опубликованных в сети ресурсов). Подобные настройки выполняются сразу после установки приложения на сервер - для этого в консоли управления выбирается раздел "Конфигуратор", имеющий два варианта в соответствии с двумя возможными ролями шлюза (когда сервер и шлюз одно и то же, и когда шлюз является внешним аппаратным устройством). Здесь можно выставить необходимые настройки шлюзов прокси-сервера для того, чтобы пользователи локальной сети использовали внутренние IP-адреса, а внешние получали или через DHCP, или путем принудительного присваивания на сетевой карте. Работать распределение Интернет-трафика по сетевым подключениям будет через RRAS-службу (RAS-сервер), что облегчает задачу конфигурирования

Учет трафика обычно проводится по следующей схеме - в организации существует сервер в роли Интернет-шлюза (подключенный к Сети), к которому подведены клиентские компьютеры. Соответственно, для получения точных результатов подсчет надо вести именно на шлюзе, где устанавливается программа. Системный администратор может в этой схеме контролировать со своего рабочего места поведение всех машин, выходящих в Интернет, например, ограничивая скорость исходящего трафика, перекрывая загрузку тяжелых файлов или перенаправляя HTTP-пакеты на другое соединение с Интернетом (например, где выше скорость). В Traffic Inspector для учета сетевого трафика используются два типа внешних счетчиков - контролируемые и информационные. Как можно догадаться из названия, первые позволяют устанавливать определенные ограничения на потребление ресурсов провайдера, интерпретируя их как платные. При достижении определенного лимита администратор может получить уведомление по почте или будет применено правило блокировки. Другой тип счетчиков позволяет отслеживать потребление того или иного трафика с целью дальнейшего анализа на популярных протоколах (POP3, SMTP, FTP, HTTP и так далее). Подвидом информационных счетчиков являются счетчики безопасности - они считают только отфильтрованный трафик, позволяя оценить долю вредоносного трафика в сети и атак на сервер извне.

Раз речь зашла об учете вредоносного трафика, нелишним будет упомянуть о наличии в Traffic Inspector продвинутого межсетевого экрана. Он позволяет фильтровать (в соответствие с назначенными правилами) трафик извне, пропуская исходящие запросы при соответствующем уровне настроек. Для упрощения конфигурирования в программе есть несколько предустановленных шаблонов правил для открытия стандартных типов протоколов и соединений, поскольку по умолчанию входящих трафик, не относящийся к деятельности авторизованных пользователей или служб/программ, блокируется. Заметим, что в Traffic Inspector есть удачно реализованный механизм шлюзового контроля почтового сервера от спуфинга, популярного приема злоумышленников, который состоит в подмене обратных адресов. Это предотвращает потенциальное попадание легитимного почтового сервера в стоп-лист и затруднения прохождения корреспонденции.

Серьезные проблемы, связанные с чрезмерным расходом трафика, часто исходят из заражения клиентских компьютеров сетевыми червями. Помимо того, что в Traffic Inspector есть удобный интерфейс для назначения правил поведения программы при резком возрастании сетевой активности (функция Virus Flood Detect), системный администратор может задействовать шлюзовые антивирусы. Они выполнены в виде дополнений к самой программе и в полной версии продукта присутствуют два таких решений - Kaspersky Gate Antivirus и Panda Gate Antivirus. Их можно включать как одновременно, так и использовать какой-то один из них. В целом, задача их проста - отслеживать веб-трафик, идущий через прокси сервер программы, и почтовый трафик, идущий через SMTP-шлюз программы, на наличие зараженных файлов, удаляя их или оповещая об этом администратора.

Учет трафика тесно связан с расчетом его стоимости. Для этого в Traffic Inspector присутствует модуль биллинга, актуальный для организаций, продающих доступ в Интернет - от компьютерных клубов и учебных заведений до провайдеров Интернета в домовых сетях. Программа может тарифицировать разные виды трафика (отдельно входящий и исходящий, суммарный, максимальный) и работать по постоплатной и предоплатной схеме. Поскольку достаточно распространены варианты, когда определенная часть соединений на том или ином направлении не тарифицируется (например, корпоративные ресурсы центрального филиала), в Traffic Inspector есть возможность задействовать разграничения согласно правилам и фильтрам.

Важным компонентом биллинговой системы является встроенный сервер статистики с кастомизируемым веб-интерфейсом. Он написан на базе ASP.net, что позволяет эффективно расширить его функциональность. На его базе можно реализовать как отчетную систему для администраторов, так и пользовательское фронт-энд решение типа "личный кабинет". Помимо этого, например, к "личному кабинету" можно сделать специальный модуль, позволяющий управлять счетами не отдельных пользователей, а групп.

Описание всех возможностей Traffic Inspector достаточно трудно передать в рамках небольшого материала, описывающего только реализацию учетного интерфейса. В списке дополнительных возможностей есть и поддержка нескольких серверов баз данных (SQL) на выбор администратора, которые могут хранить все логи журналов, рационально используя дисковое пространство сервера. Системные администраторы оценят удобно реализованные клиенты для рабочих станций, которые могут быть достаточно быстро развернуты на нужных машинах в сети, а также возможности удаленной консоли управления. Кроме того, Traffic Inspector предоставляет уже заранее сконфигурированные скрипты для автоматизации рутинных операций - например, прописывания настроек прокси-сервера в веб-браузере Internet Explorer - стандартный браузер ОС Windows, а также встроенный инструмент планировщика исполнения служебных сценариев в отсутствие администратора. Отметим и то, что отечественный продукт "дружит" с популярными программными серверными компонентами - Squid и ISA Server, что делает ее привлекательной для использования в уже существующей ИТ-инфраструктуре организации для более сложных целей (например, построения VLAN/VPN).


1.2 Обоснование необходимости разработки


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

На основе проведенного анализа современного состояния проблемы можно определить следующие требования к разрабатываемой системе:

Разработать Web-систему для доступа к сети Internet для предприятий и организаций

Система должна обладать следующими функциональными возможностями:

·Авторизация пользователей должна проходить через Web-интерфейс.

·По истечению времени пользователь отключается автоматически.

·IP адреса должны присваиваться по DHCP.

·Информация о пользователях должна храниться в MySQL


1.3 Требование к аппаратным средствам, используемым для решения поставленной задачи


Для того чтобы разработать WEB-систему я использовал следующие компоненты

üOC FreeBSD;

üязык программирования PHP;

üFirewall IPfw;

üWeb server Nginx;

üБаза данных MySQL.


1.3.1 Особенности операционной системы FreeBSD

FreeBSD [3] - свободная Unix-подобная операционная система, потомок AT&T Unix по линии BSD, созданной в университете Беркли. FreeBSD работает на PC-совместимых системах семейства x86, включая Microsoft Xbox, а также на DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC, NEC PC-98, ARM. Готовится поддержка архитектуры MIPS.разрабатывается как целостная операционная система. Исходный код ядра, драйверов устройств и базовых пользовательских программ (т. н. userland), таких как командные оболочки и т.п., содержится в одном дереве системы управления версиями (до 31 мая 2008 - CVS, сейчас - SVN). Это отличает FreeBSD от GNU/Linux - другой свободной UNIX-подобной операционной системы - в которой ядро разрабатывается одной группой разработчиков, а набор пользовательских программ - другими (например, проект GNU), а многочисленные группы собирают это всё в единое целое и выпускают в виде различных дистрибутивов Linux.хорошо зарекомендовала себя как система для построения интранет- и интернет-серверов. Она предоставляет достаточно надёжные сетевые службы и эффективное управление памятью.

Помимо своей стабильности, FreeBSD популярна и благодаря своей лицензии, которая существенно отличается от широко известной лицензии GNU GPL - она позволяет использовать код не только в свободном ПО, но и в проприетарном. В отличие от GNU LGPL, которая тоже позволяет использовать свободный код в закрытой программе, лицензия BSD более простая и короткая.

Разработка FreeBSD началась в 1993 году с быстрорастущего набора патчей пользователей системы 386BSD. Этот набор позже вырос и отделился от 386BSD в отдельную операционную систему, включив в себя код от Free Software Foundation. Первая официальная версия FreeBSD 1.0 вышла в декабре 1993 года. Walnut Creek CDROM согласилась распространять FreeBSD на компакт-диске и также предоставила для работы проекту отдельный компьютер с интернет-соединением. Затем, в мае 1994 года, последовал успешный выпуск FreeBSD 1.1.

Однако, из соображений законности использования исходных кодов BSD Net/2 в 386BSD, команда разработчиков FreeBSD переработала большую часть системы ко времени выпуска FreeBSD 2.0 в январе 1995 года, используя 4.4BSD-Lite. Руководство к FreeBSD содержит более подробную историческую информацию о происхождении системы.

Модель разработки FreeBSD

Существует около 4000 разработчиков, которые работают над системой на добровольной основе. Все они могут читать дерево репозитория, но не могут вносить изменения. Вместо этого разработчик обращается к коммитеру, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером. Кандидатуру нового коммитера предлагает к рассмотрению ментор будущего коммитера. В зависимости от основной области деятельности, новый коммитер утверждается основной командой, portmgr@ или docmgr@. Основная команда является административным ядром проекта и состоит из 9 человек, которые выбираются на 2 года коммитерами из своего состава. Основная команда решает конфликты между коммитерами.

Участники проекта разрабатывают ветку CURRENT ("текущая" версия) и несколько STABLE ("стабильная", стабильность означает гарантию неизменности интерфейсов, как то API, ABI и так далее).

Новый код помещают в ветку CURRENT, где он получает более широкое тестирование. Новые функции, добавленные в CURRENT, могут остаться в системе или от них могут отказаться, если реализация окажется неудачной. Иногда эта версия может оказаться в непригодном для использования состоянии. С началом использования perforce как вспомогательного репозитория, и с выделением projects/ области в svn, проект стремится гарантировать постоянную работоспособность CURRENT.версия содержит только те нововведения, которые прошли проверку в CURRENT. Тем не менее, эта версия тоже предназначена, в основном, для разработчиков. Не рекомендуется обновлять ответственные рабочие серверы до STABLE, предварительно её не протестировав. На основе STABLE регулярно создаются тщательно протестированные разработчиками, группой release-инженеров и более широким кругом пользователей RELEASE-версии.

После выпуска релизов создаются дополнительные ветви разработки для поддержки релизов, но в них вносятся лишь самые необходимые изменения, исправляющие серьёзные ошибки или проблемы с безопасностью системы. До четвёртой версии FreeBSD у стабильной и текущей веток был один и тот же старший номер версии. Затем текущей ветви был присвоен номер 5, а у стабильной остался номер 4.

В настоящее время поддерживаются стабильные ветви разработки 7-STABLE, 8-STABLE и 9-STABLE и текущая 10-CURRENT. Группа разработчиков, исправляющих проблемы безопасности системы (security officers) поддерживает ветвь 7-STABLE для тех пользователей, которые ещё не обновили FreeBSD до версии 8 и 9.предоставляет множество продвинутых возможностей.

Вне зависимости от типа вашего приложения вы хотите, чтобы ресурсы системы использовались максимально эффективно. Средоточие FreeBSD на производительности, сетевом взаимодействии и хранении данных вкупе с простым системным администрированием и прекрасной документацией позволяет достичь этого.

Полноценная операционная система, основанная на 4.4BSD.

История FreeBSD берет начало из дистрибутивов BSD, выпущенных Группой Исследования Вычислительных Систем (Computer Systems Research Group) Калифорнийского Университета (Беркли). Более 10 лет работы было вложено в улучшение BSD, в добавление ведущей в индустрии SMP, многопоточности и сетевой производительности, а также в новые инструменты управления, файловые системы и функции безопасности. В итоге FreeBSD можно обнаружить по всему Интернету, в операционных системах опорных маршрутизаторов, на корневых серверах имен, в работе хостинга крупных веб-сайтов и как основу для широко используемых десктопных операционных систем. Это возможно только благодаря разнообразию участников и всемирному масштабу свободного Проекта FreeBSD.предлагает продвинутые возможности операционной системы, что делает ее идеальной для разных сфер применения: от встраиваемого окружения до мультипроцессорных серверов класса hi-end.

С выходом в феврале 2008 года версии FreeBSD 7.0 система предлагает много новых возможностей и улучшения в производительности. С фокусировкой на хранении данных и мультипроцессорной производительности FreeBSD 7.0 выпущена с поддержкой файловой системы ZFS от Sun и хорошо масштабируемой мультипроцессорной производительностью. Бенчмарки показали, что FreeBSD обеспечивает вдвое большую производительность MySQL и PostgreSQL по сравнению с текущими системами Linux на 8-ядерных серверах.: После семи лет разработки расширенной поддержки SMP FreeBSD 7.0 достигла поставленной цели получения мелкогранулированного механизма синхронизации в ядре, который обеспечивает линейную масштабируемость на более, чем 8, ядрах CPU на большинстве нагрузок. В FreeBSD 7.0 почти полностью устранена большая блокировка (Giant lock) и целиком убрана из уровня хранения CAM и клиента NFS, выполнен переход на более дифференцированную (fine-grained) синхронизацию в сетевой подсистеме. Значительная работа также была проделана для оптимизации планировщика ядра и примитивов синхронизации, опциональный планировщик ULE обеспечивает привязку потоков к CPU и очереди запуска для каждого CPU для уменьшения накладных расходов и повышения эффективности работы кеша. Библиотека потоков libthr, реализующая 1: 1 многопоточность, используется теперь по умолчанию. Бенчмарки показывают значительное преимущество в производительности над другими операционными системами UNIX® на идентичном многоядерном оборудовании и отражают долгие инвестиции в технологию SMP для ядра FreeBSD.

Файловая система ZFS: Sun ZFS - это современная файловая система, предлагающая простое администрирования, транзакционную семантику и непрерывную целостность данных. От самовосстановления до встроенной компрессии, raid, снапшотов и управления томами ZFS позволит системным администраторам FreeBSD простой способ управления большими массивами данных.

Оптимизация для 10gbps сетей: С оптимизированными драйверами устройств от всех основных производителей 10gbps сетевого оборудования FreeBSD 7.0 получила обширную оптимизацию сетевого стека для высокопроизводительных нагрузок, включая автомасштабирование сокетных буферов, TCP Segment Offload (TSO), Large Receive Offload (LRO), прямую диспетчеризацию сетевого стека и балансировку нагрузки при работе TCP/IP на множестве CPU с поддержкой карт 10gbps или при одновременном использовании нескольких сетевых интерфейсов. Полная поддержка от производителя доступна у Chelsio, Intel, Myricom и Neterion.: FreeBSD 7.0 включает эталонную реализацию нового протокола передачи с управлением потоком IETF - Stream Control Transmission Protocol (SCTP), предназначенный для поддержки VoIP, телекоммуникаций и других приложений со строгими требованиями к надежности и передачей переменного качества и с такими возможностями, как многолучевая (multi-path) доставка, отказоустойчивость (fail-over) и многопоточность (multi-streaming).: FreeBSD 7.0 поставляется со значительно улучшенной поддержкой беспроводной связи, включая мощные карты на основе Atheros, новые драйверы для карт Ralink, Intel и ZyDAS, WPA, фоновое сканирование и роуминг и 802.11n.

Новые аппаратные архитектуры: FreeBSD 7.0 включает значительно улучшенную поддержку для встраиваемой архитектуры ARM, а также первоначальную поддержку для платформы Sun Ultrasparc T1.имеет долгую историю разработки расширенных возможностей операционной системы; о некоторых из них можно прочитать ниже:

Объединённый кэш виртуальной памяти и буферов файловых систем оптимизирует распределение памяти и дискового кэша, используемого программами. В результате программы получают прекрасный менеджер памяти и высокопроизводительный доступ к дискам, а системный администратор избавляется от необходимости настройки размеров кэша.

Модули совместимости позволяют программам, предназначенным для выполнения в других операционных системах, включая Linux, SCO UNIX и System V Release 4, работать во FreeBSD.

Мягкие обновления увеличивают производительность файловой системы, не жертвуя надёжностью и стабильностью. Анализ действий над мета-данными позволяет не производить их все синхронно. Вместо этого сохраняется внутренняя информация о текущих операциях с мета-данными, которая используется для кэширования, изменения этих операций, комбинирования последовательных операций над одними и теми же файлами, и реорганизации этих операций так, чтобы они производились более эффективно. Механизмы фоновой проверки файловой системы и снапшотов файловой системы построены на целостности и основах производительности мягких обновлений.

Снапшоты файловых систем предоставляют администраторам механизм атомарных снапшотов файловой системы в целях резервного копирования с использованием свободного пространства в файловой системе, также содействуя использованию background fsck, что дает возможность сразу достигать многопользовательского режима без ожидания операций очистки файловой системы из-за отключений питания.

Поддержка IP Security (IPsec) позволяет улучшить безопасность при работе в сети и обеспечить поддержку Интернет-протокола следующего поколения IPv6. Реализация FreeBSD IPsec включает поддержку широкого спектра криптографического аппаратного обеспечения.

Встроенная поддержка IPv6 через стек KAME IPv6 позволяет провести бесшовную интеграцию FreeBSD в сетевые окружения следующего поколения. FreeBSD также поставляется с многочисленными приложениями, расширенными для поддержки IPv6!

Многопоточная SMP архитектура обеспечивает параллельное исполнение ядра на нескольких процессорах, а вытесняющая многозадачность ядра позволяет высокоприоритетным задачам ядра вытеснять остальные процессы, снижая время ожидания. Сюда же входят многопоточный сетевой стек и многопоточная подсистема виртуальном памяти. Начиная с FreeBSD 6. x поддержка полностью параллельного VFS дает возможность файловой системе UFS выполняться на множестве процессоров одновременно, распределяя нагрузку ввода/вывода, требовательного к CPU.

Многопоточая модель M: N через pthreads делает возможным масштабируемое исполнение потоков на множестве CPU, ставя множество пользовательских потоков в соответствие малому количеству Kernel Schedulable Entities. С принятием модели Scheduler Activation такой подход к многопоточности может быть адаптирован к специфическим требованиям широкого набора приложений.

Подключаемый сетевой стек Netgraph позволяет разработчикам динамически и легко расширять сетевой стек через изолированные разделенные сетевые абстракции. Узлы Netgraph позволяют реализовать широкий набор новых сетевых сервисов, включая инкапсуляцию, тунеллирование, шифрование и адаптацию производительности. В результате, быстрое прототипирование и введение в эксплуатацию расширенных сетевых сервисов может быть осуществлено намного проще и с меньшим числом ошибок.

Расширенный механизм безопасности ядра TrustedBSD MAC Framework позволяет разработчикам настраивать модель безопасности операционной системы для специфического окружения, от создания ужесточающих политик до внедрения конфиденциальности политик целостности на мандатных метках. В простые политики безопасности входят Многоуровневая безопасность (MLS) и Защита целостности Biba. В сторонние модули входит SEBSD, базирующаяся на FLASK реализация концепции Type Enforcement.Audit - это сервис записи в журнал событий безопасности, обеспечивающий дифференцированную, безопасную, надежную запись в журнал системных событий через сервис аудита. Администраторы могут конфигурировать источник и детализацию при регистрации пользователей, отслеживании доступа к файлам, исполнении команд, сетевой активности, входах в систему и ряде другого поведения системы. Каналы аудита позволяют подключать инструменты IDS к сервису аудита ядра и подписываться к требуемым для мониторинга безопасности событиям. FreeBSD поддерживает формат файлов и API промышленного стандарта BSM audit trail, позволяющий существующим инструментам BSM запускаться с небольшими изменениями или вовсе без них. Данный формат файла используется в Solaris и Mac OS X, что открывает возможности для мгновенного взаимодействия и единообразного анализа.

Подключаемый уровень дискового хранилища GEOM предоставляет быструю разработку новых сервисов хранения с чистой интеграцией в существующую подсистему хранения FreeBSD. GEOM обеспечивает целостную и когерентную модель обнаружения и наложения сервисов хранения, делая возможным простую организацию RAID и управления дисковыми томами.

Шифрование дисков на базе GEOM (GBDE) обеспечивает строгую криптографическую защиту с использованием фреймворка GEOM и может защищать файловые системы, устройства swap и накопители с прочим характером использования.

Очереди ядра позволяют программам более эффективно реагировать на различные асинхронные события, включая файловый и сетевой ввод/вывод, повышая производительность работы системы и приложений.

Входящие фильтры позволяют приложениям, интенсивно работающим с соединениями, например, веб-серверам, полностью передать часть своей работы ядру операционной системы, повышая тем самым производительность.

Во FreeBSD имеется масса возможностей по обеспечению информационной безопасности и защиты сетей и серверов.

Разработчики FreeBSD ставят заботу об информационной безопасности в один ряд с производительностью и стабильностью. В ядро FreeBSD включена поддержка межсетевого экрана на сеансовом уровне (stateful), а также других сервисов, таких как проксирующие IP-шлюзы, списки контроля доступа, мандатный контроль доступа, виртуальный хостинг на основе jail и хранилище с криптографической защитой. Эти возможности могут быть использованы для создания хорошо защищаемого хостинга взаимного недоверенных клиентов или потребителей, жесткого разделения сетевых сегментов и создания безопасных каналов очистки информации и контроля информационных потоков.

Во FreeBSD [4] имеется поддержка криптографического программного обеспечения, безопасных командных оболочек, аутентификации Kerberos, "виртуальных серверов" с использованием jail, сервисов, выполняющих chroot для ограничения доступа приложений к файловой системе, средств Secure RPC и списков доступа для сервисов, поддерживающих TCP-обработчики.


1.3.2 Особенности языка программирования PHP

PHP [5] (англ. PHP: Hypertext Preprocessor - "PHP: препроцессор гипертекста"; первоначально Personal Home Page Tools - "Инструменты для создания персональных веб-страниц") - скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.

В области программирования для сети Интернет PHP - один из популярных скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.net) благодаря своей простоте, скорости выполнения, богатой функциональности, кросс-платформенности и распространению исходных кодов на основе лицензии PHP.

Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений [7]. Основные из них:

·автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

·взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);

·автоматизированная отправка HTTP-заголовков;

·работа с HTTP-авторизацией;

·работа с cookies и сессиями;

·работа с локальными и удалёнными файлами, сокетами;

·обработка файлов, загружаемых на сервер;

·работа с XForms.

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в апреле 2011 года PHP находился на 5 месте среди языков программирования. К крупнейшим сайтам, использующим PHP, относятся Facebook, ВКонтакте, Wikipedia и др.

Входит в LAMP - распространённый набор программного обеспечения для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).


1.3.3 Особенности MySQL

MySQL [8] - свободная система управления базами данных (СУБД). MySQL является собственностью компании Oracle Corporation, получившей её вместе с поглощённой Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

февраля 2008 года Sun Microsystems приобрела MySQL AB за 1 миллиард долларов.27 января 2010 года Oracle Corporation приобрела Sun Microsystems и включила MySQL в свою линейку СУБД.

Сообществом разработчиков MySQL созданы различные ответвления кода, такие как Drizzle, OurDelta, Percona Server, и MariaDB. Все эти ответвления уже существовали на момент поглощения компаний Sun и MySQL AB корпорацией Oracle


2. Конструкторский раздел


2.1 Концептуальная модель программной системы


После проведенного анализа предметной области, а также рассмотрения систем-аналогов, учитывая сложность разрабатываемой системы, было принято решение о проектировании структуры и классов системы с использованием CASE-средств. Проектирование осуществляется по объектно-ориентированной методологии, в соответствии с которой характеристики поведения разрабатываемой системы фиксируются и документируются средствами модели, которая отображает функции (варианты использования - use cases) продукта. Проектирование осуществляется в среде Rational Rose.

Концептуальная модель разрабатываемой программной системы может быть представлена при помощи диаграмм use-cases (диаграмм вариантов использования) унифицированного языка моделирования (UML). UML является преемником методов объектно-ориентированного анализа и проектирования (OOA&D) [10].

Представленная на рисунке диаграмма use-cases документирует основные характеристики поведения разрабатываемой системы, отображает функции, представляет окружение системы и определяет связи между вариантами использования и активными субъектами.


Рис 2.1 Диаграмма Use Case (Без вложений)


.2 Спецификация элементов Use Case


Пользователь имеет возможность пройти авторизацию (S1) в системе. После ввода данных происходит "проверка логина/пароля" (S2) в результате чего программа дает доступ к сети, либо если при неправильном наборе она снова дает возможность ввести новые данные. Далее система делает следующее:

·Дает доступ к сети Internet

·Выделяет Ip адрес

·Отключает пользователя от сети после 30 минут простоя

Генерация логина и пароля происходит автоматически, причем есть несколько вариантов активации, закрепление индивидуального логина и пароля за пользователем или общего логина и пароля.

Интерфейсы

Всего в системе 3 интерфейса:

·Форма для ввода логина и пароля - появляется в самом начале подключения

·Форма с оповещением, что можно работать в сети и с клавишей отключения

·Оповещение о том, что ваш аккаунт уже используется

2.3 Применение Firewall Ipfw

[6] (IPFW) - представляет собой межсетевой экран, написанный и поддерживаемый добровольными участниками проекта FreeBSD. Он использует stateless правила, т.е. правила без учета состояния, и наследование техники кодирования правил для получения того, что называется простой логикой с сохранением состояния (stateful).

Пример простейшего набора правил IPFW (находится в /etc/rc. firewall и /etc/rc. firewall6) в стандартной установке FreeBSD достаточно прост и не рассчитан на непосредственное использование без изменений. В нём не используется фильтрация с сохранением состояния, которая даёт преимущества во многих конфигурациях, поэтому он не может быть взят за основу для этого раздела.

Синтаксис правил IPFW без сохранения состояния обеспечивает расширенные возможности фильтрации, которые намного превосходят уровень знаний обычного пользователя межсетевого экрана. IPFW рассчитан на профессиональных пользователей или технически продвинутых любителей, которые предъявляют повышенные требования к фильтрации пакетов. Чтобы использовать возможности IPFW в полную силу, необходимы углубленные знания того, как в различных протоколах формируются и используются заголовки пакетов. Углубленное изучение работы протоколов выходит за рамки этого раздела Руководства.состоит из семи компонентов, главный из которых - процессор правил фильтрации уровня ядра и интегрированный в него механизм учета пакетов, а также средства протоколирования пакетов, правило divert, посредством которых вызывается функция NAT и другие возможности специального назначения, средства для ограничения скорости (шейпинга) трафика (dummynet), средства перенаправления fwd, средства организации сетевого моста bridge и механизм ipstealth. IPFW поддерживает протоколы IPv4 и IPv6.

2.4 Применение виртуального сервера Nginx

[7] разрабатывается Игорем Сысоевым (#"justify">Архитектурно Nginx - это асинхронный сервер, который использует один главный процесс для приема соединений и несколько рабочих процессов для их обработки. Рабочие процессы выполняются от непривилегированного пользователя. Асинхронная диспетчеризация может осуществляться как старыми вызовами select () и poll (), так и с использованием современных подходов специфичных для различных операционных систем: kqueue (для FreeBSD начиная с версии 4.1), epoll (для Linux начиная с версии 2.6), rt signals (для Linux начиная с версии 2.2.19), /dev/poll (для Solaris начиная с версии 7) и event ports (для Solaris начиная с версии 10). Так же для оптимизации производительности используются исключающие лишнее копирование данных системные вызовы sendfile (), sendfile64 (), или sendfilev () и сведены к минимуму операции копирования данных внутри сервера.


2.5 Применение инструмента Cron


В операционных системах UNIX, FREEBSD и им подобных для запуска программ по параметрическому расписанию используется инструмент, называемый cron [9]. С помощи cron пользователь может запускать свои программы или скрипты по расписанию.работает с конфигурационным файлом, куда записывает расписание запуска программ. с нужными параметрами, данный конфигурационный файл просматривается постоянно cron'ом и запускаются те программы, время запуска которых подошло.

Редактируется конфигурационный файл с помощью шела SSH и программы crontab. Все программы запускаемые cron, выполняются от имени пользователя или владельца конфигурационного файла.

Инструкция по cron

Редактировать файл можно двумя способами.

Первый - редактирование через crontab.

? Наберите в командной строке шела SSH команду crontab - e. После откроется редактор VI с содержимым вашего конфигурационного файла. Если это первый запуск crontab, то файл соответственно будет пустой.

? Отредактируйте содержимое по инструкции описаной чуть ниже.

? Выйдите из редактора и crontab автоматически даст команду демону cron выполнить проверку файла и проиндексировать содержимое.

Минус данного способа в том что редактор VI, в котором открывается файл, очень сложен в использовании и требует определенного опыта работ с данным редактором VI.

Второй способ - приказ демону перечитать уже готовый файл. Данный способ более проще.

? Создайте с помощи SSH конфигурационный файл на сервере для этого используйте команду touch имя_файла.

? Отредактируйте его в файловом менеджере, например FAR или TOTAL_CMD.

? Далее Вам необходимо выполнить команду crontab имя_файла. При этом crontab даст команду демону cron выполнить и перечитать Ваш файл.

ВАЖНО ЗАПОМНИТЬ! Для того, чтобы любое изменение конфигурационного файла вступило в силу, Вам необходимо заново выполнять команду crontab имя_файла. Но при этом все предыдущие настройки crontab будут удалены и заменены на новые.

Кроме этого, не следует путать файл конфигурации crontab с тем файлом который Вы создаете сами. Так что только команда crontab имя_файла копирует содержимое Вашего файла в нужный файл crontab, и только после этого Ваш файл в больше не нужен.

Необходимость применения технических устройств и виртуального сервера обуславливает введение соответствующих абстрактных классов которые представлены на следующей диаграмме классов.


2.6 Диаграмма классов


Рис. 2.2 Диаграмма классов (Classes diagram)


На диаграмме классов показано, какими операциями и атрибутами обладают компоненты системы. Когда пользователь, обладающий данными для входа (Логин и пароль) подключается к системе, система запускает Web интерфейс с полями ввода данных и вывода информации о статусе подключения, запускает виртуальный сервер Ngynx, фаервол ipfw открывает или же перенаправляет порты, затем идет подключение к базе данных. База данных, в которой хранятся и генерируются логины и пароли, идет выдача IP адреса по dhcp. Если полученные данные являются верными, происходит запуск cron, который отвечает за создание и удаление правил работы, открывает допустимое время данному пользователю. Между классами User и Web существует отношение обобщение которое указывает на то, что класс Web наследует ключевые атрибуты и часть операций класса User. В свою очередь, класс ipfw может также наследовать свойства и оперцаии класса Web, хотя имеет свои собственные методы open port и reroting port, которые введены в этот класс для того чтобы открыть или перенаправить порты, между классом ipfw и базой данных устанавливается отношение зависимости подчеркивающее что информация о клиентах подключаемых в качестве пользователей находятся в зависимости от того был ли перенаправлен порт. Информация, существующая в базе данных, учитывается в функционировании класса cron который обладает операциями позволяющими создавать правила работы и удалять их, распределять трафик и вести его учет.


2.7 Последовательное получение доступа и проверка авторизации


Рис. 2.3 Диаграмма последовательности получения доступа и проверки данных авторизации


На этой диаграмме отображена последовательность получения доступа и авторизации. Пользователь открывает Web - страницу, фаервол открывает доступ к Web приложению, после этого перед пользователем открывается окно для ввода данных доступа к сети, пользователь вводит данные. Система после получения данных делает запрос к базе данных, база данных делает запрос к своим данным, в это же время модуль Cron проверят правило работы в системе, после обработки данных выдаётся сообщение, может ли пользователь работать или же нужно ввести новые данные.


2.8 Диаграмма размещения


Рис. 2.4 Диаграмма размещения компонентов системы


На диаграмме размещения обозначены компоненты входящие в сервер машину FreeBSD для того чтобы система могла работать:

Фаервол ipfw служит для того чтобы открыть или перенаправить порты для работы системы.- интерфейс обладающий элементами ввода данных и вывода сообщений.

База данных - в ней храняться и создаются данные для доступа пользователей системы.

Модуль Cron создает правила для работы пользователя, определяет время и закрывает рабочую сессию.


2.9 Алгоритм подключения


Рис. 2.5 Алгоритм подключения пользователя к сети.


На этой диаграмме показан алгоритм подключения, когда пользователь делает запрос к системе и получает сведения о том может ли он работать или нет.


3. Разработка документации


3.1 Требования к программному и аппаратному обеспечению


Для реализации данной системы необходимо:

·Сервер был реализован на виртуальной машине VMware Workstation 8.0

·Объем жесткого диска: 20 ггб

·Оперативная память (ОЗУ): 512 мб (Память сервера регулируется в указанных границах.)

·Использование 1 ядра процессора

·Операционная система: FreeBSD 8.0

·Системные службы: Firewall IPfw, MySQL 5, NGinx, PHP 5.3, Framework Yii 1.1.12, Perl.

·Доступ к сети Internet.

·Устройство WiFi или HUB/Switch


3.3 Руководство программиста


Для того чтобы внести какие то изменения в систему нужно с помощью встроенного текстового редактора Vim отредактировать фаил rc. conf в котором хранятся все настройки


Рис.3.9 Графическое изображение настройки системы

="NO"# Set to name of swapfile if aux swapfile desired._enable="NO"# Set to YES to enable APM BIOS functions (or NO)._enable="NO"# Run apmd to handle APM event from userland._flags=""# Flags to apmd (if enabled)._enable="NO"# Set to YES to load ddb scripts at boot._config="/etc/ddb. conf"# ddb (8) config file._enable="YES" # Run devd, to trigger programs on device tree changes._flags=""# Additional flags for devd (8)._enable="NO"# Build linker. hints files with kldxref (8)._clobber="NO"# Overwrite old linker. hints at boot._module_path=""# Override kern. module_path. A '; '-delimited list._enable="NO" # Run powerd to lower our power usage._flags=""# Flags to powerd (if enabled).="AUTO"# Set to YES to always create an mfs /tmp, NO to never="20m"# Size of mfs /tmp if created_flags="-S"# Extra mdmfs options for the mfs /tmp="AUTO"# Set to YES to always create an mfs /var, NO to never="32m"# Size of mfs /var if created_flags="-S"# Extra mount options for the mfs /var_var="AUTO"# Set to YES to always (re) populate /var, NO to never_enable="YES" # Clean the /var directory_startup="/usr/local/etc/rc. d" # startup script dirs._name_sep=" "# Change if your startup scripts' names contain spaces_conf_files="/etc/rc. conf /etc/rc. conf. local"

# ZFS support_enable="NO"# Set to YES to automatically mount ZFS file systems_enable="YES"# GPT boot success/failure reporting.

# Experimental - test before enabling_autoattach_all="NO" # YES automatically mounts gbde devices from fstab_devices="NO" # Devices to automatically attach (list, or AUTO)_attach_attempts="3" # Number of times to attempt attaching gbde devices_lockdir="/etc"# Where to look for gbde lockfiles

# GELI disk encryption configuration._devices=""# List of devices to automatically attach in addition to

# GELI devices listed in /etc/fstab._tries=""# Number of times to attempt attaching geli device.

# If empty, kern. geom. eli. tries will be used._default_flags=""# Default flags for geli (8)._autodetach="YES"# Automatically detach on last close.

# Providers are marked as such when all file systems are

# mounted.

# Example use.

#geli_devices="da1 mirror/home"

#geli_da1_flags="-p - k /etc/geli/da1. keys"

#geli_da1_autodetach="NO"

#geli_mirror_home_flags="-k /etc/geli/home. keys"_swap_flags="-e aes - l 256 - s 4096 - d"# Options for GELI-encrypted

# swap partitions._rw_mount="YES"# Set to NO to inhibit remounting root read-write._y_enable="YES"# Set to YES to do fsck - y if the initial preen fails._y_flags=""# Additional flags for fsck - y_fsck="YES"# Attempt to run fsck in the background where possible._fsck_delay="60" # Time to wait (seconds) before starting the fsck._types="nfs: NFS nfs4: NFS4 smbfs: SMB portalfs: PORTAL nwfs: NWFS" # Net filesystems._netfs_types="NO"# List of network extra filesystem types for delayed

# mount at startup (or NO).

#############################################################

### Network configuration sub-section ######################

#############################################################

### Basic network and firewall/security options: ###="hotspot"# Set this!_enable="YES"# Set host UUID._file="/etc/hostid"# File with hostuuid.="NO"# Set to NIS domain if using NIS (or NO)._program="/sbin/dhclient"# Path to dhcp client program._flags=""# Extra flags to pass to dhcp client.

#dhclient_flags_fxp0=""# Extra dhclient flags for fxp0 only_dhclient="NO"# Start dhcp client in the background.

#background_dhclient_fxp0="YES"# Start dhcp client on fxp0 in the background._dhclient="NO"# Start dhclient directly on configured

# interfaces during startup._delay="30"# Time to wait for a default route on a DHCP interface._supplicant_program="/usr/sbin/wpa_supplicant"_supplicant_flags="-s"# Extra flags to pass to wpa_supplicant_supplicant_conf_file="/etc/wpa_supplicant. conf"

#_enable="NO"# Set to YES to enable firewall functionality_script="/etc/rc. firewall" # Which script to run to set up the firewall_type="UNKNOWN"# Firewall type (see /etc/rc. firewall)_quiet="NO"# Set to YES to suppress rule display_logging="NO"# Set to YES to enable events logging_flags=""# Flags passed to ipfw when type is a file_coscripts=""# List of executables/scripts to run after

# firewall starts/stops_client_net="192.0.2.0/24" # IPv4 Network address for "client"

# firewall.

#firewall_client_net_ipv6="2001: db8: 2: 1:: /64" # IPv6 network prefix for

# "client" firewall._simple_iif="ed1"# Inside network interface for "simple"

# firewall._simple_inet="192.0.2.16/28" # Inside network address for "simple"

# firewall._simple_oif="ed0"# Outside network interface for "simple"

# firewall._simple_onet="192.0.2.0/28" # Outside network address for "simple"

# firewall.

#firewall_simple_iif_ipv6="ed1"# Inside IPv6 network interface for "simple"

# firewall.

#firewall_simple_inet_ipv6="2001: db8: 2: 800:: /56" # Inside IPv6 network prefix

# for "simple" firewall.

#firewall_simple_oif_ipv6="ed0"# Outside IPv6 network interface for "simple"

# firewall.

#firewall_simple_onet_ipv6="2001: db8: 2: 0:: /56" # Outside IPv6 network prefix

# for "simple" firewall._myservices=""# List of TCP ports on which this host

# offers services for "workstation" firewall._allowservices=""# List of IPs which have access to

# $firewall_myservices for "workstation"

# firewall._trusted=""# List of IPs which have full access to this

# host for "workstation" firewall._logdeny="NO"# Set to YES to log default denied incoming

# packets for "workstation" firewall._nologports="135-139,445 1026,1027 1433,1434" # List of TCP/UDP ports

# for which denied incoming packets are not

# logged for "workstation" firewall._nat_enable="NO"# Enable kernel NAT (if firewall_enable == YES)_nat_interface=""# Public interface or IPaddress to use_nat_flags=""# Additional configuration parameters_enable="NO"# Load the dummynet (4) module_portrange_first="NO"# Set first dynamically allocated port_portrange_last="NO"# Set last dynamically allocated port_enable="NO"# Enable IKE daemon (usually racoon or isakmpd)_program="/usr/local/sbin/isakmpd"# Path to IKE daemon_flags=""# Additional flags for IKE daemon_enable="NO"# Set to YES to run setkey on ipsec_file_file="/etc/ipsec. conf"# Name of config file for setkey_program="/sbin/natd"# path to natd, if you want a different one._enable="NO"# Enable natd (if firewall_enable == YES)._interface=""# Public interface or IPaddress to use._flags=""# Additional flags for natd._enable="NO"# Set to YES to enable ipfilter functionality_program="/sbin/ipf"# where the ipfilter program lives_rules="/etc/ipf.rules"# rules definition file for ipfilter, see

# /usr/src/contrib/ipfilter/rules for examples_flags=""# additional flags for ipfilter_enable="NO"# Set to YES to enable ipnat functionality_program="/sbin/ipnat"# where the ipnat program lives_rules="/etc/ipnat.rules"# rules definition file for ipnat_flags=""# additional flags for ipnat_enable="NO"# Set to YES for ipmon; needs ipfilter or ipnat_program="/sbin/ipmon"# where the ipfilter monitor program lives_flags="-Ds"# typically "-Ds" or "-D /var/log/ipflog"_enable="NO"# Set to YES to enable saving and restoring

# of state tables at shutdown and boot_program="/sbin/ipfs"# where the ipfs program lives_flags=""# additional flags for ipfs_enable="NO"# Set to YES to enable packet filter (pf)_rules="/etc/pf. conf"# rules definition file for pf_program="/sbin/pfctl"# where the pfctl program lives_flags=""# additional flags for pfctl_enable="NO"# Set to YES to enable packet filter logging_logfile="/var/log/pflog"# where pflogd should store the logfile_program="/sbin/pflogd"# where the pflogd program lives_flags=""# additional flags for pflogd_enable="NO"# Set to YES to enable ftp-proxy (8) for pf_flags=""# additional flags for ftp-proxy (8)_enable="NO"# Expose pf state to other hosts for syncing_syncdev=""# Interface for pfsync to work through_syncpeer=""# IP address of pfsync peer host_ifconfig=""# Additional options to ifconfig (8) for pfsync_extensions="YES"# Set to NO to turn off RFC1323 extensions._in_vain="0"# >=1 to log connects to ports w/o listeners._keepalive="YES"# Enable stale TCP connection timeout (or NO)._drop_synfin="NO"# Set to YES to drop TCP packets with SYN+FIN

# NOTE: this violates the TCP specification_drop_redirect="NO" # Set to YES to ignore ICMP REDIRECT packets_log_redirect="NO"# Set to YES to log ICMP REDIRECT packets_interfaces="auto"# List of network interfaces (or "auto")._interfaces=""# List of cloned network interfaces to create.

#cloned_interfaces="gif0 gif1 gif2 gif3" # Pre-cloning GENERIC config._lo0="inet 127.0.0.1"# default loopback device configuration._em0="DHCP"_em1="inet 192.168.100.1 netmask 255.255.255.0"

#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.

#ifconfig_ed0_ipx="ipx 0x00010010"# Sample IPX address family entry.

#ifconfig_fxp0_name="net0"# Change interface name from fxp0 to net0.

#vlans_fxp0="101 vlan0"# vlan (4) interfaces for fxp0 device

#create_args_vlan0="vlan 102"# vlan tag for vlan0 device

#wlans_ath0="wlan0"# wlan (4) interfaces for ath0 device

#wlandebug_wlan0="scan+auth+assoc"# Set debug flags with wlanddebug (8)

#ipv4_addrs_fxp0="192.168.0.1/24 192.168.1.1-5/28" # example IPv4 address entry.

#

#autobridge_interfaces="bridge0"# List of bridges to check

#autobridge_bridge0="tap* vlan0"# Interface glob to automatically add to the bridge

#

# If you have any sppp (4) interfaces above, you might also want to set

# the following parameters. Refer to spppcontrol (8) for their meaning._interfaces=""# List of sppp interfaces.

#sppp_interfaces=".0"# example: sppp over.

#spppconfig_.0="authproto=chap myauthname=foo myauthsecret='top secret' hisauthname=some-gw hisauthsecret='another secret'"_interfaces=""# List of GIF tunnels.

#gif_interfaces="gif0 gif1"# Examples typically for a router.

# Choose correct tunnel addrs.

#gifconfig_gif0="10.1.1.1 10.1.2.1"# Examples typically for a router.

#gifconfig_gif1="10.1.1.2 10.1.2.2"# Examples typically for a router._interfaces=""# List of Fast EtherChannels.

#fec_interfaces="fec0 fec1"

#fecconfig_fec0="fxp0 dc0"# Examples typically for two NICs

#fecconfig_fec1="em0 em1 bge0 bge1"# Examples typically for four NICs

# User ppp configuration._enable="NO"# Start user-ppp (or NO)._program="/usr/sbin/ppp"# Path to user-ppp program._mode="auto"# Choice of "auto", "ddial", "direct" or "dedicated".

# For details see man page for ppp (8). Default is auto._nat="YES"# Use PPP's internal network address translation or NO._profile="papchap"# Which profile to use from /etc/ppp/ppp. conf._user="root"# Which user to run ppp as

# Start multiple instances of ppp at boot time

#ppp_profile="profile1 profile2 profile3"# Which profiles to use

#ppp_profile1_mode="ddial"# Override ppp mode for profile1

#ppp_profile2_nat="NO"# Override nat mode for profile2

# profile3 uses default ppp_mode and ppp_nat

### Network daemon (miscellaneous) ###_enable="NO"# Run hostap daemon._enable="YES"# Run syslog daemon (or NO)._program="/usr/sbin/syslogd" # path to syslogd, if you want a different one._flags="-s"# Flags to syslogd (if enabled)._enable="NO"# Run the network daemon dispatcher (YES/NO)._program="/usr/sbin/inetd"# path to inetd, if you want a different one._flags="-wW - C 60"# Optional flags to inetd_enable="NO"# Run the HAST daemon (YES/NO)._program="/sbin/hastd"# path to hastd, if you want a different one._flags=""# Optional flags to hastd.

#

# named. It may be possible to run named in a sandbox, man security for

# details.

#_enable="YES"# Run named, the DNS server (or NO)._program="/usr/sbin/named" # Path to named, if you want a different one._conf="/etc/namedb/named. conf" # Path to the configuration file

#named_flags=""# Use this for flags OTHER than - u and - c_pidfile="/var/run/named/pid" # Must set this in named. conf as well_uid="bind" # User to run named as_chrootdir="/var/named"# Chroot directory (or "" not to auto-chroot it)_chroot_autoupdate="YES"# Automatically install/update chrooted

# components of named. See /etc/rc. d/named._symlink_enable="YES"# Symlink the chrooted pid file_wait="NO" # Wait for working name service before exiting_wait_host="localhost" # Hostname to check if named_wait is enabled_auto_forward="NO" # Set up forwarders from /etc/resolv. conf_auto_forward_only="NO" # Do "forward only" instead of "forward first"

#

# kerberos. Do not run the admin daemons on slave servers

#_server_enable="NO"# Run a kerberos 5 master server (or NO)._server="/usr/libexec/kdc"# path to kerberos 5 KDC_server_flags="--detach"# Additional flags to the kerberos 5 server_server_enable="NO"# Run kadmind (or NO)_server="/usr/libexec/kadmind"# path to kerberos 5 admin daemon_server_enable="NO"# Run kpasswdd (or NO)_server="/usr/libexec/kpasswdd"# path to kerberos 5 passwd daemon_enable="NO"# Run the gssd daemon (or NO)._flags=""# Flags for gssd._enable="NO"# Run the rwho daemon (or NO)._flags=""# Flags for rwhod_enable="NO"# Run rarpd (or NO)._flags="-a"# Flags to rarpd._enable="NO"# Run bootparamd (or NO)._flags=""# Flags to bootparamd_enable="NO"# Run the PPP over Ethernet daemon._provider="*"# Provider and ppp (8) config file entry._flags="-P /var/run/pppoed. pid"# Flags to pppoed (if enabled)._interface="fxp0"# The interface that pppoed runs on._enable="YES"# Enable sshd_program="/usr/sbin/sshd"# path to sshd, if you want a different one._flags=""# Additional flags for sshd._enable="NO"# Enable stand-alone ftpd._program="/usr/libexec/ftpd" # Path to ftpd, if you want a different one._flags=""# Additional flags to stand-alone ftpd.

### Network daemon (NFS): All need rpcbind_enable="YES" ###_enable="NO"# Run amd service with $amd_flags (or NO)._program="/usr/sbin/amd"# path to amd, if you want a different one._flags="-a /. amd_mnt - l syslog /host /etc/amd. map /net /etc/amd. map"_map_program="NO"# Can be set to "ypcat - k amd. master"_client_enable="NO"# This host is an NFS client (or NO)._access_cache="60"# Client cache timeout in seconds_server_enable="NO"# This host is an NFS server (or NO)._server_flags="-u - t - n 4"# Flags to nfsd (if enabled)._enable="NO"# Run mountd (or NO)._flags="-r"# Flags to mountd (if NFS server enabled)._mountd_authentication="NO"# Allow non-root mount requests to be served._reserved_port_only="NO"# Provide NFS only on secure port (or NO)._bufpackets=""# bufspace (in packets) for client_lockd_enable="NO"# Run NFS rpc. lockd needed for client/server._lockd_flags=""# Flags to rpc. lockd (if enabled)._statd_enable="NO"# Run NFS rpc. statd needed for client/server._statd_flags=""# Flags to rpc. statd (if enabled)._enable="NO"# Run the portmapper service (YES/NO)._program="/usr/sbin/rpcbind"# path to rpcbind, if you want a different one._flags=""# Flags to rpcbind (if enabled)._ypupdated_enable="NO"# Run if NIS master and SecureRPC (or NO)._enable="NO"# Run the SecureRPC keyserver (or NO)._flags=""# Flags to keyserv (if enabled)._server_enable="NO"# Enable support for NFSv4_enable="NO"# NFSv4 client side callback daemon_flags=""# Flags for nfscbd_enable="NO"# NFSv4 user/group name mapping daemon_flags=""# Flags for nfsuserd

### Network Time Services options: ###_enable="NO"# Run the time daemon (or NO)._flags=""# Flags to timed (if enabled)._enable="NO"# Run ntpdate to sync time on boot (or NO)._program="/usr/sbin/ntpdate"# path to ntpdate, if you want a different one._flags="-b"# Flags to ntpdate (if enabled)._config="/etc/ntp. conf"# ntpdate (8) configuration file_hosts=""# Whitespace-separated list of ntpdate (8) servers._enable="NO"# Run ntpd Network Time Protocol (or NO)._program="/usr/sbin/ntpd"# path to ntpd, if you want a different one._config="/etc/ntp. conf"# ntpd (8) configuration file_sync_on_start="NO"# Sync time on ntpd startup, even if offset is high_flags="-p /var/run/ntpd. pid - f /var/db/ntpd. drift"

# Flags to ntpd (if enabled).

# Network Information Services (NIS) options: All need rpcbind_enable="YES" ###_client_enable="NO"# We're an NIS client (or NO)._client_flags=""# Flags to ypbind (if enabled)._ypset_enable="NO"# Run ypset at boot time (or NO)._ypset_flags=""# Flags to ypset (if enabled)._server_enable="NO"# We're an NIS server (or NO)._server_flags=""# Flags to ypserv (if enabled)._ypxfrd_enable="NO"# Run rpc. ypxfrd at boot time (or NO)._ypxfrd_flags=""# Flags to rpc. ypxfrd (if enabled)._yppasswdd_enable="NO"# Run rpc. yppasswdd at boot time (or NO)._yppasswdd_flags=""# Flags to rpc. yppasswdd (if enabled).

### SNMP daemon ###

# Be sure to understand the security implications of running SNMP v1/v2

# in your network._enable="NO"# Run the SNMP daemon (or NO)._flags=""# Flags for bsnmpd.

### Network routing options: ###="NO"# Set to default gateway (or NO)._arp_pairs=""# Set to static ARP list (or leave empty)._routes=""# Set to static route list (or leave empty)._static_routes=""# Set to static route list for NATM (or leave empty)._enable="YES"# Set to YES if this host will be a gateway._enable="NO"# Set to YES to enable a routing daemon.="/sbin/routed"# Name of routing daemon to use if enabled._flags="-q"# Flags for routing daemon._enable="NO"# Do IPv4 multicast routing._program="/usr/local/sbin/mrouted"# Name of IPv4 multicast

# routing daemon. You need to

# install it from package or

# port._flags=""# Flags for multicast routing daemon._enable="NO"# Set to YES to enable IPX routing._enable="NO"# Set to YES to run the IPX routing daemon._flags=""# Flags for IPX routing daemon._all="NO"# replaces obsolete kernel option ARP_PROXYALL._sourceroute="NO"# do source routing (only if gateway_enable is set to "YES")_sourceroute="NO"# accept source routed packets to us

### ATM interface options: ###_enable="NO"# Configure ATM interfaces (or NO).

#atm_netif_hea0="atm 1"# Network interfaces for physical interface.

#atm_sigmgr_hea0="uni31"# Signalling manager for physical interface.

#atm_prefix_hea0="ILMI"# NSAP prefix (UNI interfaces only) (or ILMI).

#atm_macaddr_hea0="NO"# Override physical MAC address (or NO).

#atm_arpserver_atm0="0x47.0005.80.999999.9999.9999.9999.999999999999.00" # ATMARP server address (or local).

#atm_scsparp_atm0="NO"# Run SCSP/ATMARP on network interface (or NO)._pvcs=""# Set to PVC list (or leave empty)._arps=""# Set to permanent ARP list (or leave empty).

### Bluetooth ###_enable="NO"# Enable hcsecd (8) (or NO)_config="/etc/bluetooth/hcsecd. conf" # hcsecd (8) configuration file_enable="NO"# Enable sdpd (8) (or NO)_control="/var/run/sdp"# sdpd (8) control socket_groupname="nobody"# set spdp (8) user/group to run as after_username="nobody"# it initializes_enable="NO"# Enable bthidd (8) (or NO)_config="/etc/bluetooth/bthidd. conf" # bthidd (8) configuration file_hids="/var/db/bthidd. hids" # bthidd (8) known HID devices file_pppd_server_enable="NO"# Enable rfcomm_pppd (8) in server mode (or NO)_pppd_server_profile="one two"# Profile to use from /etc/ppp/ppp. conf

#

#rfcomm_pppd_server_one_bdaddr=""# Override local bdaddr for 'one'_pppd_server_one_channel="1"# Override local channel for 'one'

#rfcomm_pppd_server_one_register_sp="NO"# Override SP and DUN register

#rfcomm_pppd_server_one_register_dun="NO"# for 'one'

#

#rfcomm_pppd_server_two_bdaddr=""# Override local bdaddr for 'two'_pppd_server_two_channel="3"# Override local channel for 'two'

#rfcomm_pppd_server_two_register_sp="NO"# Override SP and DUN register

#rfcomm_pppd_server_two_register_dun="NO"# for 'two'_enable="NO"# Switch an USB BT controller present on

#ubthidhci_busnum="3"# bus 3 and addr 2 from HID mode to HCI mode.

#ubthidhci_addr="2"# Check usbconfig list to find the correct

# numbers for your system.

### Miscellaneous network options: ###_bmcastecho="NO"# respond to broadcast ping packets

### IPv6 options: ###_enable="NO"# Set to YES to set up for IPv6._network_interfaces="auto"# List of network interfaces (or "auto")._defaultrouter="NO"# Set to IPv6 default gateway (or NO).

#ipv6_defaultrouter="2002: c058: 6301:: "# Use this for 6to4 (RFC 3068)_static_routes=""# Set to static route list (or leave empty).

#ipv6_static_routes="xxx"# An example to set fec0: 0000: 0000: 0006:: /64

# route toward loopback interface.

#ipv6_route_xxx="fec0: 0000: 0000: 0006:: - prefixlen 64:: 1"_gateway_enable="NO"# Set to YES if this host will be a gateway._router_enable="NO"# Set to YES to enable an IPv6 routing daemon._router="/usr/sbin/route6d"# Name of IPv6 routing daemon._router_flags=""# Flags to IPv6 routing daemon.

#ipv6_router_flags="-l"# Example for route6d with only IPv6 site local

# addrs.

#ipv6_router_flags="-q"# If you want to run a routing daemon on an end

# node, you should stop advertisement.

#ipv6_network_interfaces="ed0 ep0"# Examples for router

# or static configuration for end node.

# Choose correct prefix value.

#ipv6_prefix_ed0="fec0: 0000: 0000: 0001 fec0: 0000: 0000: 0002" # Examples for rtr.

#ipv6_prefix_ep0="fec0: 0000: 0000: 0003 fec0: 0000: 0000: 0004" # Examples for rtr.

#ipv6_ifconfig_ed0="fec0: 0: 0: 5:: 1 prefixlen 64"# Sample manual assign entry

#ipv6_ifconfig_ed0_alias0="fec0: 0: 0: 5:: 2 prefixlen 64" # Sample alias entry._default_interface="NO"# Default output interface for scoped addrs.

# Now this works only for IPv6 link local

# multicast addrs._flags=""# Flags to IPv6 router solicitation._enable="NO"# Set to YES to enable an IPv6 router

# solicitation daemon._flags="-a"# Flags to an IPv6 router solicitation

# daemon._enable="NO"# Set to YES to enable an IPv6 router

# advertisement daemon. If set to YES,

# this router becomes a possible candidate

# IPv6 default router for local subnets._interfaces=""# Interfaces rtadvd sends RA packets.d_enable="NO"# Do IPv6 multicast routing.d_program="/usr/local/sbin/pim6dd"# Name of IPv6 multicast

# routing daemon. You need to

# install it from package or

# port.d_flags=""# Flags to IPv6 multicast routing daemon._interface_ipv4addr=""# Local IPv4 addr for 6to4 IPv6 over IPv4

# tunneling interface. Specify this entry

# to enable 6to4 interface._interface_ipv4plen="0"# Prefix length for 6to4 IPv4 addr,

# to limit peer addr range. Effective value

# is 0-31._interface_ipv6_ifid="0: 0: 0: 1"# IPv6 interface id for stf0.

# If you like, you can set "AUTO" for this._interface_ipv6_slaid="0000"# IPv6 Site Level Aggregator for stf0_faith_prefix="NO"# Set faith prefix to enable a FAITH

# IPv6-to-IPv4 TCP translator. You also need

# faithd (8) setup._ipv4mapping="NO"# Set to "YES" to enable IPv4 mapped IPv6 addr

# communication. (like:: ffff: a. b. c. d)_ipfilter_rules="/etc/ipf6.rules"# rules definition file for ipfilter,

# see /usr/src/contrib/ipfilter/rules

# for examplesaddrctl_enable="YES"# Set to YES to enable default address selectionaddrctl_verbose="NO"# Set to YES to enable verbose configuration messages

#############################################################

### System console options #################################

#############################################################=""# keyboard device to use (default /dev/kbd0).="NO"# keymap in /usr/share/syscons/keymaps/* (or NO).="NO"# keyboard rate to: slow, normal, fast (or NO).="NO" # See kbdcontrol (1) for options. Use "off" to disable.="NO"# function keys default values (or NO).="NO"# cursor type {normal|blink|destructive} (or NO).="NO"# screen map in /usr/share/syscons/scrnmaps/* (or NO).x16="NO"# font 8x16 from /usr/share/syscons/fonts/* (or NO).x14="NO"# font 8x14 from /usr/share/syscons/fonts/* (or NO).x8="NO"# font 8x8 from /usr/share/syscons/fonts/* (or NO).="300"# blank time (in seconds) or "NO" to turn it off.="NO"# screen saver: Uses /boot/kernel/${saver}_saver. ko_nondefault_enable="YES" # Treat non-default mice as enabled unless

# specifically overriden in rc. conf (5)._enable="NO"# Run the mouse daemon._type="auto"# See man page for rc. conf (5) for available settings._port="/dev/psm0"# Set to your mouse port._flags=""# Any additional flags to moused._start="NO"# if 0xd0-0xd3 default range is occupied in your

# language code table, specify alternative range

# start like mousechar_start=3, see vidcontrol (1)_flags=""# Set this vidcontrol mode for all virtual screens_kbdflags=""# Set this kbdcontrol mode for all virtual screens

#############################################################

### Mail Transfer Agent (MTA) options ######################

#############################################################_start_script="/etc/rc. sendmail"

# Script to start your chosen MTA, called by /etc/rc.

# Settings for /etc/rc. sendmail and /etc/rc. d/sendmail:_enable="NO"# Run the sendmail inbound daemon (YES/NO)._pidfile="/var/run/sendmail. pid"# sendmail pid file_procname="/usr/sbin/sendmail"# sendmail process name_flags="-L sm-mta - bd - q30m" # Flags to sendmail (as a server)_submit_enable="YES"# Start a localhost-only MTA for mail submission_submit_flags="-L sm-mta - bd - q30m - ODaemonPortOptions=Addr=localhost"

# Flags for localhost-only MTA_outbound_enable="YES"# Dequeue stuck mail (YES/NO)._outbound_flags="-L sm-queue - q30m" # Flags to sendmail (outbound only)_msp_queue_enable="YES"# Dequeue stuck clientmqueue mail (YES/NO)._msp_queue_flags="-L sm-msp-queue - Ac - q30m"

# Flags for sendmail_msp_queue daemon._rebuild_aliases="NO"# Run newaliases if necessary (YES/NO).

#############################################################

### Miscellaneous administrative options ###################

#############################################################_enable="NO"# Run the audit daemon._program="/usr/sbin/auditd"# Path to the audit daemon._flags=""# Which options to pass to the audit daemon._enable="YES"# Run the periodic job daemon._program="/usr/sbin/cron"# Which cron executable to run (if enabled)._dst="YES"# Handle DST transitions intelligently (YES/NO)_flags=""# Which options to pass to the cron daemon._enable="NO"# Run the line printer daemon._program="/usr/sbin/lpd"# path to lpd, if you want a different one._flags=""# Flags to lpd (if enabled)._enable="NO"# Run the nsswitch caching daemon._enable="NO"# Run chkprintcap (8) before running lpd._flags="-d"# Create missing directories by default.="NO"# Device to crashdump to (device name, AUTO, or NO).="/var/crash"# Directory where crash dumps are to be stored_flags=""# Used if dumpdev is enabled above, and present._enable="YES"# Automatically generate crash dump summary._program="/usr/sbin/crashinfo"# Script to generate crash dump summary._enable="NO"# turn on quotas on startup (or NO)._quotas="YES"# Check quotas on startup (or NO)._flags="-a"# Turn quotas on for all file systems (if enabled)_flags="-a"# Turn quotas off for all file systems at shutdown_flags="-a"# Check all file system quotas (if enabled)_enable="NO"# Turn on process accounting (or NO)._enable="NO"# Ibcs2 (SCO) emulation loaded at startup (or NO)._loaders="coff"# List of additional Ibcs2 loaders (or NO).

# Emulation/compatibility services provided by /etc/rc. d/abi_enable="NO"# Load System V IPC primitives at startup (or NO)._enable="NO"# Linux binary compatibility loaded at startup (or NO)._enable="NO"# SysVR4 emulation loaded at startup (or NO)._tmp_enable="NO"# Clear /tmp at startup._tmp_X="YES" # Clear and recreate X11-related directories in /tmp_insecure="NO"# Set to YES to disable ldconfig security checks_paths="/usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg"

# shared library search paths_paths="/usr/lib32" # 32-bit compatibility shared library search paths_paths_aout="/usr/lib/compat/aout /usr/local/lib/aout"

# a. out shared library search paths_local_dirs="/usr/local/libdata/ldconfig"

# Local directories with ldconfig configuration files._local32_dirs="/usr/local/libdata/ldconfig32"

# Local directories with 32-bit compatibility ldconfig

# configuration files._securelevel_enable="NO"# kernel security level (see security (7))_securelevel="-1"# range: - 1.3; `-1' is the most insecure

# Note that setting securelevel to 0 will result

# in the system booting with securelevel set to 1, as

# init (8) will raise the level when rc (8) completes._motd="YES"# update version info in /etc/motd (or NO)_file="/entropy"# Set to NO to disable caching entropy through reboots.

# /var/db/entropy-file is preferred if / is not avail._dir="/var/db/entropy" # Set to NO to disable caching entropy via cron._save_sz="2048"# Size of the entropy cache files._save_num="8"# Number of entropy cache files to save._interrupt="YES"# Entropy device harvests interrupt randomness_ethernet="YES"# Entropy device harvests ethernet randomness_p_to_p="YES"# Entropy device harvests point-to-point randomness_enable="YES"# Save dmesg (8) to /var/run/dmesg. boot_enable="NO"# Start the software watchdog daemon_flags=""# Flags to watchdogd (if enabled)_rulesets="/etc/defaults/devfs.rules /etc/devfs.rules" # Files containing

# devfs (8) rules._system_ruleset=""# The name (NOT number) of a ruleset to apply to /dev_set_rulesets=""# A list of /mount/dev=ruleset_name settings to

# apply (must be mounted already, i. e. fstab (5))_cx_lowest="HIGH"# Online CPU idle state_cpu_freq="NONE"# Online CPU frequency_cx_lowest="HIGH"# Offline CPU idle state_cpu_freq="NONE"# Offline CPU frequency_enable="YES"# Perform housekeeping for the vi (1) editor_enable="NO"# Load mac_bsdextended (4) rules on boot_script="/etc/rc. bsdextended"# Default mac_bsdextended (4)

# ruleset file._enable="YES"# Run newsyslog at startup._flags="-CN"# Newsyslog flags to create marked files_enable="YES"# Run the sound mixer.

#############################################################

### Jail Configuration #######################################

#############################################################_enable="NO"# Set to NO to disable starting of any jails_list=""# Space separated list of names of jails_set_hostname_allow="YES" # Allow root user in a jail to change its hostname_socket_unixiproute_only="YES" # Route only TCP/IP within a jail_sysvipc_allow="NO"# Allow SystemV IPC use from within a jail

#

# To use rc's built-in jail infrastructure create entries for

# each jail, specified in jail_list, with the following variables.

# NOTES:

# - replace 'example' with the jail's name.

# - except rootdir, hostname, ip and the _multi<n> addresses,

# all of the following variables may be made global jail variables

# if you don't specify a jail name (ie. jail_interface, jail_devfs_ruleset).

#

#jail_example_rootdir="/usr/jail/default"# Jail's root directory

#jail_example_hostname="default. domain.com"# Jail's hostname

#jail_example_interface=""# Jail's interface variable to create IP aliases on

#jail_example_fib="0"# Routing table for setfib (1)

#jail_example_ip="192.0.2.10, 2001: db8:: 17"# Jail's primary IPv4 and IPv6 address

#jail_example_ip_multi0="2001: db8:: 10"# and another IPv6 address

#jail_example_exec_start="/bin/sh /etc/rc"# command to execute in jail for starting

#jail_example_exec_afterstart0="/bin/sh command"# command to execute after the one for

# starting the jail. More than one can be

# specified using a trailing number

#jail_example_exec_stop="/bin/sh /etc/rc. shutdown"# command to execute in jail for stopping

#jail_example_devfs_enable="NO"# mount devfs in the jail

#jail_example_devfs_ruleset="ruleset_name"# devfs ruleset to apply to jail -

# usually you want "devfsrules_jail".

#jail_example_fdescfs_enable="NO"# mount fdescfs in the jail

#jail_example_procfs_enable="NO"# mount procfs in jail

#jail_example_mount_enable="NO"# mount/umount jail's fs

#jail_example_fstab=""# fstab (5) for mount/umount

#jail_example_flags="-l - U root"# flags for jail (8)

#############################################################

### Define source_rc_confs, the mechanism used by /etc/rc. * ##

### scripts to source rc_conf_files overrides safely. ##

#############################################################[-z "${source_rc_confs_defined}"]; then_rc_confs_defined=yes_rc_confs () {i sourced_filesi in ${rc_conf_files}; do${sourced_files} in

*: $i: *)

;;

*)_files="${sourced_files}: $i: "[-r $i]; then

. $i

;;

}_enable="YES"_fpm_enable="YES"_enable="YES"


3.4 Руководство пользователя


Для того чтобы подключиться к сети нам нужно будет любое устройство с LAN выходом или WiFi адаптером, будь это компьютер, ноутбук, планшет или телефон, после подключения для доступа к сети Internet мы должны зайти в браузер и увидеть следующее окно:


Рис. 3.10 Стартовая страница


После того как мы увидели стартовую страницу мы ввели логин и пароль, при удачном наборе логина и пароля мы увидим следующее окно


Рис. 3.11 Диалоговое окно с сообщением о корректном подключении к сети


Если же логин и пароль не совпали то вас автоматически перебросит на стартовую страницу, а если этот логин или пароль используется то вы получите следующее сообщение:


Рис. 3.12 Диалоговое окно с сообщением о том что Ваш логин и пароль уже задействован

4. Экспериментальный раздел


Тестирование программного обеспечения - процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.

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

Такой процесс формальной проверки или верификации может доказать, что дефекты отсутствуют с точки зрения используемого метода. (То есть, нет никакой возможности точно установить или гарантировать отсутствие дефектов в программном продукте с учётом человеческого фактора, присутствующего на всех этапах жизненного цикла ПО).

Существует множество подходов к решению задачи тестирования и верификации ПО, но эффективное тестирование сложных программных продуктов - это процесс в высшей степени творческий, не сводящийся к следованию строгим и чётким процедурам или созданию таковых.

С точки зрения ISO 9126 [1], Качество (программных средств) можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

·Надёжность.

·Сопровождаемость.

·Практичность.

·Эффективность.

·Мобильность.

·Функциональность.

Уровни тестирования

Модульное тестирование (юнит-тестирование) - тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция. Часто модульное тестирование осуществляется разработчиками ПО.

Интеграционное тестирование - тестируются интерфейсы между компонентами, подсистемами. При наличии резерва времени на данной стадии тестирование ведётся итерационно, с постепенным подключением последующих подсистем.

Системное тестирование - тестируется интегрированная система на её соответствие требованиям.

Альфа-тестирование - имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком. Чаще всего альфа-тестирование проводится на ранней стадии разработки продукта, но в некоторых случаях может применяться для законченного продукта в качестве внутреннего приёмочного тестирования. Иногда альфа-тестирование выполняется под отладчиком или с использованием окружения, которое помогает быстро выявлять найденные ошибки. Обнаруженные ошибки могут быть переданы тестировщикам для дополнительного исследования в окружении, подобном тому, в котором будет использоваться ПО.

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

Часто для свободного/открытого ПО стадия альфа-тестирования характеризует функциональное наполнение кода, а бета-тестирования - стадию исправления ошибок. При этом как правило на каждом этапе разработки промежуточные результаты работы доступны конечным пользователям.

Статическое и динамическое тестирование

Описанные выше техники - тестирование белого ящика и тестирование чёрного ящика - предполагают, что код исполняется, и разница состоит лишь в той информации, которой владеет тестировщик. В обоих случаях это динамическое тестирование.

При статическом тестировании программный код не выполняется - анализ программы происходит на основе исходного кода, который вычитывается вручную, либо анализируется специальными инструментами. В некоторых случаях, анализируется не исходный, а промежуточный код (такой как байт-код или код на MSIL).

Также к статическому тестированию относят тестирование требований, спецификаций, документации.

Тестирование "белого ящика" и "чёрного ящика"

В терминологии профессионалов тестирования, фразы "тестирование белого ящика" и "тестирование чёрного ящика" относятся к тому, имеет ли разработчик тестов доступ к исходному коду тестируемого ПО, или же тестирование выполняется через пользовательский интерфейс либо прикладной программный интерфейс, предоставленный тестируемым модулем.

При тестировании белого ящика (англ. white-box testing, также говорят - прозрачного ящика), разработчик теста имеет доступ к исходному коду программ и может писать код, который связан с библиотеками тестируемого ПО. Это типично для юнит-тестирования (англ. unit testing), при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции - работоспособны и устойчивы, до определённой степени. При тестировании белого ящика используются метрики покрытия кода.

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

При тестировании серого ящика разработчик теста имеет доступ к исходному коду, но при непосредственном выполнении тестов доступ к коду, как правило, не требуется.

Если "альфа-" и "бета-тестирование" относятся к стадиям до выпуска продукта (а также, неявно, к объёму тестирующего сообщества и ограничениям на методы тестирования), тестирование "белого ящика" и "чёрного ящика" имеет отношение к способам, которыми тестировщик достигает цели.

Бета-тестирование в целом ограничено техникой чёрного ящика (хотя постоянная часть тестировщиков обычно продолжает тестирование белого ящика параллельно бета-тестированию). Таким образом, термин "бета-тестирование" может указывать на состояние программы (ближе к выпуску чем "альфа"), или может указывать на некоторую группу тестировщиков и процесс, выполняемый этой группой. Итак, тестировщик может продолжать работу по тестированию белого ящика, хотя ПО уже "в бете" (стадия), но в этом случае он не является частью "бета-тестирования" (группы/процесса).

Организация тестирования программ.

Тестирование программного продукта одновременно проводится в 3-ёх направлениях:

Проверка кода (review): Тестер просматривает исходный код визуально и пытается найти нём ошибки, а так же различные несоответствия кода и требований к нему. Под требованием понимается стандарт, которого придерживается разработчики данного проекта, реакция на те или иные действия со стороны среды воздействия на ПО, поведение программного продукта в различных ситуациях.

Тестирование высокого уровня: Здесь главная цель тестирования - выяснить, удовлетворяет ли разработка всем требованиям заказчика. Для программного продукта пишутся эмуляторы, с помощью которых тестер может наблюдать за работой системы в роли оператора. Он видит, как система осуществляет диалог с пользователем, какие сообщения она выдаёт, как реагирует на различные события, сохраняет информацию и т.д. Большинство обнаруживаемых ошибок на этом этапе связанно с ошибками взаимодействия программного продукта с пользователем - вывод ошибочных сообщений, не правильная реакция на запрос от оператора и т.п.

Тестирование низкого уровня: Тестер проверяет, на сколько логически полно исходный код покрывает всё возможные варианты работы системы, для которой он разрабатывается.

Существуют стандарты тестирования, они зависят от того в какой области применяется разрабатываемое ПО. Ниже представлены некоторые из них:

Стандарт ISO 90019001 - стандарт, основанный на принципах контроля качества. В нём, по существу, задаются ключевые функциональные требования, для каждого из которых нужно сказать, что делается, как сделать то, что сказано, и иметь возможность показать, что было сделано. Реализация данного стандарта в среде ПО - ISO 9000-3.

Стандарт ISO/IEC 12207 и IEEE/EIA 12207/IEC 12207 - это международный стандарт, описывающий структуру процессов жизненного цикла ПО от концепции до изъятия из обращения. Стандарт IEEE/EIA 12207 - адаптация ISO/IEC 12207 для США.

В соответсвии с этими стандартами в той или иной отрасли производства выдвигаются требования к тестрованию ПО. Например в авиации США на основе ISO/IEC 12207 был выработан стандарт RTCA (Requirements and Technical Concepts for Aviation). В нём перечисленны следующие требования к тестированию верхнего и нуижнего уровня: Тестирование верхнего уровня:

Требования высокого уровня должны включать в себя системные требования к ПО

Требования высокого уровня должны формулироваться с учётом архитектуры ПО

Программный код должен удовлетворять архитектуре ПО и требованиям низкого уровня

Откомпилированный и готовый к использованию код должен удовлетворять требованиям к ПО

Используемые значения должны технически соответствовать поставленным целям и выполнять их для всех уровней ПО

Тестирование нижнего уровня:

Проверку (Verification) требований нижнего уровня

Проверку архитектуры программного обеспечения (ПО)

Проверку логического покрытия для всех функций написанных в ПО

Контроль процедур тестирования

Независимость ПО от тестирования. Т.е. ПО не должно перестраиваться особым образом под тесты

Тестирование должно несколько раз покрывать исходный код, для обнаружения определённого класса ошибок

Робастное тестирование

Тестирование на предмет косвенного обнаружения ошибок. Например: соответствие стандартам разработки ПО.

Для проверки правильной работы сайт было решено протестировать и проверить по следующим пунктам:

·безопасность системы (проверка системы на устойчивость к попыткам взлома);

·отработка недопустимых операций (вывод ошибки при недопустимом действии), например набор несуществующих данных пользователем или совершение неправильных действий;

·проверка корректной работы модулей. Тестирование модулей отдельно и независимо;

·тестирование модулей в составе системы в целом. Тестирование системы после запуска сайта в Интернете. Проверка взаимодействия между модулями и целостности системы.


4.1 Разработка тестов


Для проверки правильной работы системы было решено протестировать и проверить по следующим пунктам:

·Безопасность системы (проверка системы на устойчивость к попыткам взлома).

·Отработка недопустимых операций (вывод ошибки при недопустимом действии), например набор неправильных данных.

·Проверка корректной работы модулей. Тестирование модулей отдельно и независимо.

·Тестирование модулей в составе системы в целом. Проверка взаимодействия между модулями и целостности системы.

4.2 Тестирование системы


"Тестирование программ может использоваться для демонстрации наличия ошибок, но оно никогда не покажет их отсутствие" - Дейкстра, 1970 г. [1]

Тестирование работы программного обеспечения является неотъемлемой частью разработки всех программных систем.

Тестовые испытания CMS системы производились как при разработке отдельных составляющих систему классов, так и на этапе интеграции классов и различных модулей системы.

При введение недопустимых данных система выдает соответствующие ошибки, такие как сообщение о не правильном вводе логина и пароля, не правильном заполнение полей формы данных.

Во время тестирования были найдены не значительные ошибки, которые были впоследствии устранены. Проверка в нормальных условиях показала, что система работает корректно. Для проверки корректности работы системы, вводились недопустимые значения или ошибочные.


Заключение


Результаты дипломной работы можно сформулировать в виде следующих выводов:

·Проведен обзор и анализ систем-аналогов

·Изучена предметная область

·Обоснована актуальность системы

·Рассмотрены методы и решения поставленной задачи

·Проведено проектирование функциональной структуры системы с использованием CASE - средств

·Разработана система коммерческого доступа к сети

·Разработан интерфейс

В результате была разработана система для коммерческого доступа к сети Internet.

Для системы был разработан простой в понимании, легко дополняемый интерфейс.

Система разработана с использованием операционной системы FreeBSD 8.0

В настоящее время система используется в гостинице Горы Азии и Горы Азии 2

В перспективе планируется разработать рекламную площадку.

Список литературы


1.<#"center">Приложения


Приложение 1


<? phpWelcome extends Controller {Welcome ()

{:: Controller ();

$this->load->helper (array ('form','url'));

$this->load->library (array ('form_validation'));

$this->load->database ();

}_generate_pass ($length = 10)

{

}index () {

$ip = $this->input->ip_address ();

$this->db->where ('ip', $ip);

$query = $this->db->get ('rules');

$user = $query->row ();($query->num_rows ()! = 0) {('welcome/status');

}else{('welcome/login');

}

}login ()

{

$this->form_validation->set_rules ('login', 'Login', 'trim|required|xss_clean');

$this->form_validation->set_rules ('pass', 'Password','trim|required|xss_clean');($this->form_validation->run () == FALSE)

{

$data ['message'] = '';

$this->load->view ('login_form',$data);

}

{

$this->db->where ('login',$this->input->post ('login'));

$this->db->where ('pass',$this->input->post ('pass'));

$query = $this->db->get ('users');

$user = $query->row ();

$this->db->where ('id', @$user->id);

$rule_exits = $this->db->get ('rules');($query->num_rows ()! = 0) {(false) {

$data ['message'] = 'Your login das using';

$this->load->view ('login_form',$data);

}else{($user - > prepay <= $user - > traff) {

$data ['message'] = 'No traffic';

$this->load->view ('login_form',$data);

}else{

# GENERATE RULE NUMBERS

$ip = $this->input->ip_address ();

$rule_in = rand (1000, 1999);

$rule_out = rand (2000, 2999);

// $this->generate_password (4);

# INSERT RULE NUMBERS AND IP INTO DB

$data = array ('id' => $user->id,

'rule_in' => $rule_in,

'rule_out' => $rule_out,

'ip' => $ip);

$this->db->insert ('rules', $data);

# UPDATE ENTER TIME OF USER

$enter_t = date ('Y-m-d H: i');

$data = array ('enter_time' => $enter_t,

'session_status' => '1');

$this->db->update ('users', $data);

# INSERT RULES TO IPFW("/usr/local/bin/sudo ipfw add $rule_in allow ip from any to $ip");("/usr/local/bin/sudo ipfw add $rule_out allow ip from $ip to any");('welcome/status');

}

}

} else {

$data ['message'] = 'Login or password is icorrect';

$this->load->view ('login_form',$data);

}

}

}status ()

{

$ip = $this->input->ip_address ();

$this->db->where ('ip', $ip);

$query = $this->db->get ('rules');($query->num_rows ()! = 0) {

$user_id = $query->row () - >id;

$this->db->where ('id', $user_id);

$query2 = $this->db->get ('users');

$data ['user'] =$query2->row ();

$this->load->view ("status",$data);

} else {();

}

}logout () {

$ip = $this->input->ip_address ();

$this->db->where ('ip', $ip);

$query = $this->db->get ('rules');

$user = $query->row ();($query->num_rows ()! = 0) {

$this->db->delete ('rules', array ('id' => $user->id));("/usr/local/bin/sudo ipfw delete". $user->rule_in);("/usr/local/bin/sudo ipfw delete". $user->rule_out);('welcome/login');

}else{"Vipustite ne mo viti";

}

}admin () {"adminka";

}

}

/* End of file welcome. php */

/* Location:. /system/application/controllers/welcome. php */

<html>

<head>

<title>Welcome to hotel &quot; Asiamountains-2&quot; </title>

<style type="text/css">{color: #fff;: 40px;family: Lucida Grande, Verdana, Sans-serif;size: 14px;: #4F5155;

}{: #003399;color: transparent;weight: normal;

}{: #444;color: transparent;bottom: 1px solid #D0D0D0;size: 16px;weight: bold;: 24px 0 2px 0;: 5px 0 6px 0;

}{family: Monaco, Verdana, Sans-serif;size: 12px;color: #f9f9f9;: 1px solid #D0D0D0;: #002166;: block;: 14px 0 14px 0;: 12px 10px 12px 10px;

}

</style>

</head>

<body>

<h1>Welcome to hotel &quot; Asiamountains-2&quot; </h1>

<? php(! empty ($message)) {

? >

<code><? php echo validation_errors ();? >

<? =$message? >

</code>

<? php

}

? >

<? =form_open ('welcome/login')? >

<table width="250" border="0" cellspacing="0" cellpadding="2">

<tr>

<td><strong>Login</strong></td>

<td><? =form_input ('login', '')? ></td>

</tr>

<tr>

<td><strong>Password</strong></td>

<td><? =form_password ('pass', '')? ></td>

</tr>

</table>

<? =form_submit ('ok','login')? >

<? =form_close ()? >

<p>For using Internet in our hotel you need buy the internet card at the reception. </p>

<p><br />Page rendered in {elapsed_time} seconds</p>

</body>

</html>

<html>

<head>

<style type="text/css">{color: #fff;: 40px;family: Lucida Grande, Verdana, Sans-serif;size: 14px;: #4F5155;

}{: #003399;color: transparent;weight: normal;

}{: #444;color: transparent;bottom: 1px solid #D0D0D0;size: 16px;weight: bold;: 24px 0 2px 0;: 5px 0 6px 0;

}{family: Monaco, Verdana, Sans-serif;size: 12px;color: #f9f9f9;: 1px solid #D0D0D0;: #002166;: block;: 14px 0 14px 0;: 12px 10px 12px 10px;

}

</style>

</head>

<body>

<h1>Your internet account</h1>

<? =form_open ('welcome/logout')? >

<? =form_submit ('out','Close your Internet connection')? >

<? =form_close ()? >

<p>You can work in internet</p>

<p><br />Page rendered in {elapsed_time} seconds</p>

</body>

</html>

<html>

<head>

<title>Welcome to CodeIgniter</title>

<style type="text/css">{color: #fff;: 40px;family: Lucida Grande, Verdana, Sans-serif;size: 14px;: #4F5155;

}{: #003399;color: transparent;weight: normal;

}{: #444;color: transparent;bottom: 1px solid #D0D0D0;size: 16px;weight: bold;: 24px 0 2px 0;: 5px 0 6px 0;

}{family: Monaco, Verdana, Sans-serif;size: 12px;color: #f9f9f9;: 1px solid #D0D0D0;: #002166;: block;: 14px 0 14px 0;: 12px 10px 12px 10px;

}

</style>

</head>

<body>

<h1>Welcome to CodeIgniter! </h1>

<? php echo validation_errors ();? >

<? =$message? >

<? =form_open ('welcome/login')? >

<? =form_input ('login', '')? ><br />

<? =form_password ('pass', '')? ><br />

<? =form_submit ('ok','login')? >

<? =form_close ()? >

<p>The page you are looking at is being generated dynamically by CodeIgniter. </p>

<p>If you would like to edit this page you'll find it located at: </p>

<code>system/application/views/welcome_message. php</code>

<p>The corresponding controller for this page is found at: </p>

<code>system/application/controllers/welcome. php</code>

<p>If you are exploring for the very first time, you should start by reading the <a href="user_guide/">User Guide</a>. </p>

<h1></h1>

<p><br />Page rendered in {elapsed_time} seconds</p>

</body>

</html>


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ Государственное образовательное учреждение

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ