/*
 * Содержит данные о текущем трафике.
 */
create table `traffic_cur`
(
	`date` datetime not null,
	`srcIp` int unsigned not null,
	`dstIp` int unsigned not null,
	`dstPort` smallint unsigned not null,
	`pId` tinyint not null,
	`inBytes` int unsigned not null,
	`outBytes` int unsigned not null,
	primary key (`date`, `srcIp`, `dstIp`, `dstPort`, `pId`)
) engine = MyISAM default charset = utf8;

/*
 * Хранит год за который имеется информация о трафике.
 * Имя таблицы в которой хранится трафик за это год формируется
 * следующим образом: traffic_[YEAR]. Например: traffic_2010.
 *
 * Таблица traffic_[YEAR] имеет следующий формат:
 * create table `traffic`
 * (
 *   `date` date not null,
 *   `srcIp` int unsigned not null,
 *   `dstIp` int unsigned not null,
 *   `dstPort` smallint unsigned not null,
 *   `pId` tinyint not null,
 *   `inBytes` int unsigned not null,
 *   `outBytes` int unsigned not null,
 *   primary key (`date`, `srcIp`, `dstIp`, `dstPort`, `pId`)
 * ) engine = MyISAM default charset = utf8;
 */
create table `list_traffic`
(
	`year` year(4) not null primary key
) engine = MyISAM default charset = utf8;

/*
 * Содержит названия и индексы Internet протоколов.
 */
create table `proto`
(
	`id` tinyint not null auto_increment,
	`name` char(5) not null,
	primary key (`id`),
	key (`name`)
) engine = MyISAM default charset = utf8;

insert into `proto` values
( null, 'tcp' ),
( null, 'udp' ),
( null, 'icmp' ),
( null, 'igmp' ),
( null, 'egp' ),
( null, 'ospf' ),
( '-1', 'unkn' );

/*
 * Содержит информацию о пользователях. Права пользователей
 * определяются правами группы в которую они входят.
 */
create table `users`
(
	`id` int not null auto_increment,
	`groupid` int not null,
	`name` char(15) not null,
	`fname` char(25) not null,
	`email` char(35) not null,
	`passwd` char(40) not null,
	`sessid` char(32),
	primary key (`id`),
	key (`name`)
) engine = MyISAM default charset = utf8;

/*
 * Пользователь с идентификатором '1' является зарезервированным
 * пользователем и его имя с идентификатором не подлежит изменению.
 * На всей стадии работы PHP скриптов, данные параметры (id, groupid, name)
 * зарезервированного пользователя используются как константы.
 * Пользователь с идентификатором '1' (admin) входит в группу с
 * идентификатором '1' (admins).
 */
insert into `users` values
(null, 1, 'admin', 'Admin', 'mail@mail.ru', sha1('admin|g&Hu6:d['), null);

/*
 * Содержит информацию о группах. Группы определяют права
 * доступа к страницам WEB-интерфейса.
 */
create table `groups`
(
	`id` int not null auto_increment,
	`name` char(15) not null,
	`info` char(60) not null,
	`system_changepasswd` enum('n', 'y') not null default 'n',
	`system_groupmanager` enum('n', 'y') not null default 'n',
	`system_usermanager` enum('n', 'y') not null default 'n',
	`statistic_show` enum('n', 'y') not null default 'n',
	`statistic_control` enum('n','y') NOT NULL default 'n',
	`info_system` enum('n','y') NOT NULL default 'n',
	primary key (`id`),
	key (`name`)
) engine = MyISAM default charset = utf8;

/*
 * Группа с идентификатором '1' является зарегестрированной группой
 * и ее имя с идентификатором не подлежит изменению. На всей стадии
 * работы PHP скриптов данные параметры (id, name) зарезервированной
 * группы используются как константы.
 */
insert into `groups` values
(1, 'admins', 'Группа администраторов системы', 'y', 'y', 'y', 'y', 'y', 'y'),
(2, 'users', 'Группа пользователей системы', 'y', 'n', 'n', 'y', 'n', 'y');

/*
 * Содержит название столбца в таблице `groups` и их описание.
 * Данные столбцы в таблице `groups` определяют права для данной
 * группы.
 */
create table `privileges`
(
	`id` int not null auto_increment,
	`name` char(25) not null,
	`info` char(60) not null,
	primary key (`id`),
	key (`name`)
) engine = MyISAM default charset = utf8;

insert into `privileges` values
(null, 'system_changepasswd', '*Настройки: Сменить пароль'),
(null, 'system_groupmanager', 'Настройки: Управление группами'),
(null, 'system_usermanager', 'Настройки: Управление пользователями'),
(null, 'statistic_show', '*Статистика: Показать статистику по трафику'),
(null, 'statistic_control', 'Статистика: Общие настройки статистики'),
(null, 'info_system', 'Информация: Система');

/*
 * Содержит общую конфигурацию системы.
 */
create table `config`
(
	`name` varchar(255) not null,
	`value` varchar(255) not null,
	primary key(`name`)
) engine = MyISAM default charset = utf8;

insert into `config` values
('storage_current_traf', '30'),
('storage_annual_traf', '5'),
('last_unload_to_archive', '');
