Поиск по этому блогу

пятница, 9 сентября 2011 г.

Как я устанавливал Dialup Admin

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 и при необходимости изменить аттрибуты пароля в базе

5 комментариев:

  1. В моей сусе 12.1 такая "штучка" тоже есть, но пока получилось только http://druha.sp.ru/forum/viewtopic.php?f=2&t=11

    ОтветитьУдалить
  2. Душевное спасибо, помогла статья.

    ОтветитьУдалить
  3. Сам с ним долго мучался, когда устанавливал, перечитал кучу форумов и мануал по нему.

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

    ОтветитьУдалить
  5. Ну таких проблем у меня не было, подсказать не могу. Да и поработать толком с dialup admin, к сожалению, не получилось. Дальше экспериментов дело не пошло.

    ОтветитьУдалить