FreeBSD 7.3, Apache 2.2.16, FreeRADIUS 2.1.10, PHP 5.3.3, mysql-server-5.5.7
Скачал с
официального сайта архив радиус сервера. Из скачанного архива копируем папку
dialup_admin в ту директорию которая в файле
httpd.conf указана в качестве
ServerRoot у меня это
/usr/local. Создаем симлинк ln -s /usr/local/dialup_admin/htdocs /usr/local/www/dialup_admin для того, чтобы сервер имел доступ к php скриптам, которые там хранятся. У меня /usr/local/www указана в качестве DocumentRoot.
Настраиваем Apapche на выполнение php скриптов
LoadModule php5_module libexec/apache22/libphp5.so
AddModule mod_php5.c
AddType application/x-httpd-php .php .htm .html .phtml
Создаем запись для dialup_admin в httpd.conf
Alias /dialup_admin/ /usr/local/www/dialup_admin/
Options +FollowSymLinks +Indexes +SymLinksIfOwnerMatch
AllowOverride All
DirectoryIndex index.html
AddType application/x-httpd-php .php .htm .html .phtml
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /usr/local/www/dialup_admin/.htpasswd
require valid-user
Order allow,deny
Allow from all
Создаем файл .htpasswd следующей командой
htpasswd -c .htpasswd login password
Создаем в mysql базу, если не была до этого создана. Для этого заходим в mysql mysql -u username -p
И собственно создаем базу
mysql> CREATE DATABASE radius;
mysql> exit;
Затем создаем таблицы
mysql -u root -p radius < /usr/local/dialup_admin/sql/mysql/badusers.sql
mysql -u root -p radius < /usr/local/dialup_admin/sql/mysql/mtotacct.sql
mysql -u root -p radius < /usr/local/dialup_admin/sql/mysql/totacct.sql
mysql -u root -p radius < /usr/local/dialup_admin/sql/mysql/userinfo.sql
На этапе создания таблицы userinfo.sql возникла вот такая ошибка ERROR 1067 (42000) at line 4: Invalid default value for 'id' Решилось вот это строчке id int(10) DEFAULT '0' NOT NULL auto_increment, на такую вот id int(10) NOT NULL auto_increment,
Ну а дальше укажу только то что изменял:
general_radiusd_base_dir: /usr/local/sbin/
general_radclient_base_dir: /usr/local/dialup_admin/bin/
general_domain: my_site.su
general_radclient_bin: %{general_radclient_base_dir}
general_radius_server: 1.2.3.4
general_radius_server_port: 1812
general_radius_server_auth_proto: pap или chap на выбор
general_radius_server_secret: который использовался при настройке NAS сервера
sql_password_attribute: Cleartext-Password если необходимо, чтобы пароли в базе хранились открытым текстом, иначе будут шифроваться
general_decode_normal_attributes: no
general_use_session: yes
Все настройка закончена, набираем в браузере http;//my_site.su/dialup_admin
На главной странице в левом фрейме
php notice undefined offset 1 in /usr/local/dialup_admin/conf/config.php
исправил в php.ini
error_reporting=E_ALL & ~E_NOTICE
и убрал из disable_functions значение exec
if ($use_session == 0 && $config['general_use_session'] == 'yes'){
<------>// Start session
<------>@session_start();
<------>if (isset($nas_list))
<------><------>session_register('nas_list');
Проблема:
PHP Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
Лечение:
php.ini
session.bug_compat_42 = Off
session.bug_compat_warn = Off
Проблема:
Deprecated: Function session_register() is deprecated in /usr/local/dialup_admin/conf/config.php on line 108
Deprecated: Function session_register() is deprecated in /usr/local/dialup_admin/conf/config.php on line 71
Лечение:
session_register('nas_list'); заменить на $_SESSION['nas_list'];
session_register('mappings'); заменить на $_SESSION['mappings'];
Везде где встретится Deprecated: Function session_register() необходимо session_register('');
заменить на $_SESSION['']; потому, что session_redister начиная с версии php 5.3.x признана устаревшей
Проблема:
warning: mktime() expects parameter 1 to be long, string given
Лечение:
$timest = mktime($time[0],$time[1],$time[2],$day[1],$day[2],$day[0]);--> $timest = mktime((int)$time[0],(int)$time[1],(int)$time[2],(int)$day[1],(int)$day[2],(int)$day[0]);
были еще вот такие ошибки DEBUG(SQL,MYSQL DRIVER) избавился следующим образом, в admin.conf sql_debug = false
Такого рода ошибки:
PHP Warning: Invalid argument supplied for foreach() in /usr/local/dialup_admin/htdocs/user_new.php on line 103
PHP Warning: Invalid argument supplied for foreach() in /usr/local/dialup_admin/htdocs/nas_admin.php on line 190
Исправил так:
перед foreach() следующей строки
if (is_array($$member_groups ))
{
if (is_array($my_nas_list))
{
соответственно
Для авторизации пользователей по протоколу CHAP пароли в базе должны храниться в формате plain_text.
Для смены формата необходимо написать следуюющее password_store_method=plain_text и при необходимости изменить аттрибуты пароля в базе