Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Efendy от 07 Августа 2013, 10:14:09



Название: FAQ. Несколько ip на PPPoE
Отправлено: Efendy от 07 Августа 2013, 10:14:09
Как сделать чтоб клиент мог подключить несколько компов на pppoe под одним логином, при этом ровно столько подключений, сколько у него подключено ip?

Как известно, логин и пароль у учетки существует в единственном экземпляре. Но, ничего, мы придумаем добавлять постфикс к логинам: +1 (2й ip  в списке), +2 (3й) и т.д.

Например, логин у нас ivanov. Тогда при коннекте по логину ivanov или ivanov+0 подсоединимся и получим 1й ip из списка его ip. По логину ivanov+2 -  второй и т.д.

Если после плюса стоит не число или число больше чем у него ip -  выдается 1й айпи из списка (ivanov+blablabla+oh_no)

Итак, создаем следующие процедуры:

Код:
DROP FUNCTION IF EXISTS `get_ip_by_num`;
DELIMITER $$
CREATE FUNCTION `get_ip_by_num` ( user_id INTEGER UNSIGNED, num INTEGER)  
    RETURNS VARCHAR(15) NO SQL
BEGIN
    DECLARE user_ip VARCHAR(15);
    DECLARE real_ip VARCHAR(15);

    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id AND type='static' ORDER BY ip LIMIT num, 1;
    IF( user_ip IS NOT NULL ) THEN RETURN user_ip; END IF;

    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id AND type='static' ORDER BY ip LIMIT 1;
    IF( user_ip IS NOT NULL ) THEN RETURN user_ip; END IF;

    SELECT 1 INTO real_ip FROM users_services WHERE uid = user_id AND tags LIKE '%,realip,%';
    UPDATE ip_pool SET uid = user_id, `release` = UNIX_TIMESTAMP() + 300
        WHERE (uid = 0 OR uid = user_id)
            AND type = 'dynamic'
            AND realip = IF(real_ip>0,1,0)
        ORDER BY uid DESC, id ASC LIMIT 1;

    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id LIMIT 1;
    RETURN user_ip;
END$$
DELIMITER ;

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
  DECLARE real_login VARCHAR(64) DEFAULT NULL;
  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login;
  SELECT id, name, 'Password' AS Attribute, AES_DECRYPT(passwd,'hardpass') AS Value,'=='
    FROM users WHERE name=real_login;
END$$
DELIMITER ;

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE ip_index INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;

  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login;
  SELECT CAST(REPLACE(login, real_login, '') AS UNSIGNED) INTO ip_index;

  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
END$$
DELIMITER ;

Процедура radupdate - это домашнее задание, справитесь по аналогии. Не забудьте в radcheck изменить hardpass на свой ключ шифрования паролей(см. sat.cfg)

Проверяем:

Код:
call test_radreply('ivanov+1');

Если у клиента не прописано ни одного ip -  выдается динамически по старой схеме и подсоединится может только один юзер


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: boomer666 от 07 Августа 2013, 12:29:55
Спасибо .Будем пробовать.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: sov от 09 Августа 2013, 22:43:02
Протестировал.
Если вызывать radreply в консоли mysql - процедура работает, а если через радиус - получается ерунда:
Код:
[sql] 	expand: %{User-Name} -> sov213+1
[sql] sql_set_user escaped user --> 'sov213+1'
rlm_sql (sql): Reserving sql socket id: 9
[sql] expand: call radcheck('%{SQL-User-Name}') -> call radcheck('sov213=2B1')
rlm_sql_mysql: query:  call radcheck('sov213=2B1')
rlm_sql (sql): Released sql socket id: 9
[sql] User sov213+1 not found

То есть, радиус в процессе передачи логина базе данных заменяет плюс на =2B. Кто нибудь знает, как это поправить? Лично я сходу не придумал.

Однако, это легко лечится в самих процедурах. Нужно просто заменить такие строки:
Код:
SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login;
SELECT CAST(REPLACE(login, real_login, '') AS UNSIGNED) INTO ip_index;
на, допустим,  такие:
Код:
SELECT SUBSTRING_INDEX(login, '=', 1) INTO real_login;
SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;
После чего алиасы начинают работать.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 05 Августа 2014, 13:14:05
Цитировать
Процедура radupdate - это домашнее задание, справитесь по аналогии. Не забудьте в radcheck изменить hardpass на свой ключ шифрования паролей(см. sat.cfg)
Прошу помощи, в мускуле не силен. Сделайте работу над ошибками:
Цитировать
DROP PROCEDURE IF EXISTS `radupdate`;
DELIMITER $$
CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255))
BEGIN
  DECLARE usr_id INT;
  DECLARE ip_index INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;

  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login;
  SELECT CAST(REPLACE(login, real_login, '') AS UNSIGNED) INTO ip_index;

  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip;
  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
END$$
DELIMITER ;

Спасибо


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 08 Августа 2014, 18:24:10
Ну не хочет оно работать!!! Уже нашел у себя ошибки, исправил... Помогите. ЛЮДИ!!!! АУ...


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 10 Августа 2014, 05:35:07
Да, видимо здесь, в форуме, помощи не дождаться. Здесь все "ПРОГРАММИСТЫ", а кто какой вопрос не по их уровню - такЮ мелочь пузатая. Спасибо всем за помощь. Это называется  - оперативная поддержка.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: 0xbad0c0d3 от 10 Августа 2014, 09:37:41
Ну я даже не знаю... Вижу кусок кода и какая-то просьба что-то сделать, а что именно - в упор не вижу.... а потом вижу вопли, что все вокруг пи...расы! Точность ответа на Ваш вопрос прямопропорциональна точности вопроса... Тут никто, никому, ничем, не обязан. Даже (я не читал, но думаю так и есть) если ты прочитаешь лицензионное соглашение на Н+, то вряд ли ты там найдешь пункт о том, что на любой твой вопрос, даже - "почему земля круглая", будет кто-то, спотыкаясь отвечать... Хочешь ответ? - пиши внятный вопрос, в одном сообщении...


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 10 Августа 2014, 19:52:26
Ну я даже не знаю... Вижу кусок кода и какая-то просьба что-то сделать, а что именно - в упор не вижу.... а потом вижу вопли, что все вокруг пи...расы! Точность ответа на Ваш вопрос прямопропорциональна точности вопроса... Тут никто, никому, ничем, не обязан. Даже (я не читал, но думаю так и есть) если ты прочитаешь лицензионное соглашение на Н+, то вряд ли ты там найдешь пункт о том, что на любой твой вопрос, даже - "почему земля круглая", будет кто-то, спотыкаясь отвечать... Хочешь ответ? - пиши внятный вопрос, в одном сообщении...
Никого я тут не оскорблял, и такой ответ я предполагал. А на сайте Нодени+ есть такоеЖ
Цитировать
Обширное сообщество позволяет найти ответ на любой вопрос, поделится своим опытом или принять участие в разработке проекта (даже если вы не умеете программировать)

А если Вы лично так восприняли мою фразу, тогда ПРОСТИТЕ. Но это как бы не уровень.
Когда человек инвалид и прости помощи, но ему игнор.
Еще раз прошу прощения, кого оскорбил (вернее человек принял это как оскорбление) Я просто хотел обратить внимание на вопрос.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 10 Августа 2014, 20:08:56
Да и кому показалось, что я его оскорбил, стучите в лмчку - не будем засорять эфир выяснением отношений.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: 0xbad0c0d3 от 10 Августа 2014, 22:11:36
У меня нет Н+ и искать в доках что-то - желания нет. излагайте проблему:
1. Что нужно получить на выходе;
2. что не работает;
3. Что делали чтобы заработало;
4. Что не работает, после того, как что-то делали.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 11 Августа 2014, 07:31:52
Весь вопрос заключается: подключить одному клиенту два РРРоЕ, на два IP. Сделал процедуры как здесь. Добавил процедуру radupdate:
Цитировать
DROP PROCEDURE IF EXISTS `radupdate`;
DELIMITER $$
CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255))
BEGIN
  DECLARE usr_id INT;
  DECLARE ip_index INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;

  SELECT SUBSTRING_INDEX(login, '=', 1) INTO real_login;
  SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;

  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip;

  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
END$$
DELIMITER ;

Как видите, что в этой процедуре, что в процедуре radreply Я заменил две строки, как говорилось выше:
Цитировать
То есть, радиус в процессе передачи логина базе данных заменяет плюс на =2B. Кто нибудь знает, как это поправить? Лично я сходу не придумал.

Однако, это легко лечится в самих процедурах. Нужно просто заменить такие строки:
Код:
SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login;
SELECT CAST(REPLACE(login, real_login, '') AS UNSIGNED) INTO ip_index;
на, допустим,  такие:
Код:
SELECT SUBSTRING_INDEX(login, '=', 1) INTO real_login;
SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;
После чего алиасы начинают работать.

Однако не работает. Может, что то делаю неправильно? Я мало понимаю в мускуле, я это писал выше, однако учусь. Но не все так быстро.
Не смейтесь, но где выполнять проверку:
Цитировать
call test_radreply('ivanov+1');
Заранее спасибо за помощь.
Надеюсь вся инфа, если что-то не хватает - пожалуйста вопросы.


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: ser970 от 11 Августа 2014, 08:23:28

Цитировать
call test_radreply('ivanov+1');
Заранее спасибо за помощь.
Надеюсь вся инфа, если что-то не хватает - пожалуйста вопросы.


сначала
mysql -u root -pпароль мускула nodeny

и потом
call test_radreply('ivanov+1')


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Efendy от 11 Августа 2014, 09:34:08
надо проверять не
Код:
call test_radreply('ivanov+1');
а
Код:
call test_radreply('ivanov=2B1');
ты же сам процитировал сообщение, что радиус меняет + на =2B!

Клиент посылает ivanov+1,  радиус меняет на ivanov=2B1 и в radreply подставляет этот логин


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Nafanya от 12 Августа 2014, 06:47:54
надо проверять не
Код:
call test_radreply('ivanov+1');
а
Код:
call test_radreply('ivanov=2B1');
ты же сам процитировал сообщение, что радиус меняет + на =2B!

Клиент посылает ivanov+1,  радиус меняет на ivanov=2B1 и в radreply подставляет этот логин

Пытаюсь проверитьЖ

Цитировать
mysql> call test_radreply('telefon=2B1');
ERROR 1305 (42000): PROCEDURE nodeny.test_radreply does not exist
mysql> call test_radreply('telefon+1');
ERROR 1305 (42000): PROCEDURE nodeny.test_radreply does not exist
подскажите куда смотреть. Хочу все таки разобраться.

Процедуры прикрепил


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Efendy от 12 Августа 2014, 07:47:41
Ты даже не пытаешься читать, что тебе mysql пишет. Он пишет, что процедуры test_radreply не существует. Это логично, поскольку ты ее не создавал, а создавал radreply. Кто-то привел пример с test_radreply, надеясь что ты не робот и подумаешь перед слепым использованием и переименуешь под свой случай, но оказался не прав


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Redmen от 05 Февраля 2017, 17:19:24
Просмотрев данную тему, т.к. необходимо осуществить сабж, столкнулся с некоторыми проблемами, но всё таки довел до ума!

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

Я выкладываю рабочие процедуры, в которых уже нет этой проблемы, то есть работают логины типа:
test         абон получит 1ый ип
test+0     абон получит 1ый ип
test+1     абон получит 2ой ип если у него их 2, если только 1 то 1ий (и по аналогии 2,3,4 и т.д.)
test+N     абон получит N-1 ип если у него их N

и так, процедуры:

Код:
DROP FUNCTION IF EXISTS `get_ip_by_num`;
DELIMITER $$
CREATE FUNCTION `get_ip_by_num` ( user_id INTEGER UNSIGNED, num INTEGER)  
    RETURNS VARCHAR(15) NO SQL
BEGIN
    DECLARE user_ip VARCHAR(15);
    DECLARE real_ip VARCHAR(15);
    
    IF( num IS NULL ) THEN SET num=0; END IF;
    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id AND type='static' ORDER BY ip LIMIT num, 1;
    IF( user_ip IS NOT NULL ) THEN RETURN user_ip; END IF;

    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id AND type='static' ORDER BY ip LIMIT 1;
    IF( user_ip IS NOT NULL ) THEN RETURN user_ip; END IF;

    SELECT 1 INTO real_ip FROM users_services WHERE uid = user_id AND tags LIKE '%,realip,%';
    UPDATE ip_pool SET uid = user_id, `release` = UNIX_TIMESTAMP() + 300
        WHERE (uid = 0 OR uid = user_id)
            AND type = 'dynamic'
            AND realip = IF(real_ip>0,1,0)
        ORDER BY uid DESC, id ASC LIMIT 1;

    SELECT INET_NTOA(ip) INTO user_ip FROM ip_pool
        WHERE uid = user_id LIMIT 1;
    RETURN user_ip;
END$$
DELIMITER ;

Не забудьте в процедуре radcheck изменить hardpass на свой ключ шифрования паролей из файла nodeny/sat.cfg

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
  DECLARE real_login VARCHAR(64) DEFAULT NULL;
  SELECT SUBSTRING_INDEX(login, '=2B', 1) INTO real_login;
  SELECT id, name, 'Password' AS Attribute, AES_DECRYPT(passwd,'hardpass') AS Value,'=='
  FROM users WHERE name=real_login;
END$$
DELIMITER ;

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE ip_index INT ;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;

  SELECT SUBSTRING_INDEX(login, '=2B', 1) INTO real_login;
  
  IF login REGEXP '[=2B][0-9]+$' THEN
   SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;
  ELSE SET ip_index=0;END IF;
  
  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
END$$
DELIMITER ;

Код:
DROP PROCEDURE IF EXISTS `radupdate`;
DELIMITER $$
CREATE PROCEDURE `radupdate`(IN `login` VARCHAR(64), IN `ip` VARCHAR(16), IN `properties` VARCHAR(255))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;
  DECLARE ip_index INT ;
  
  SELECT SUBSTRING_INDEX(login, '=2B', 1) INTO real_login;
  IF login REGEXP '[=2B][0-9]+$' THEN
   SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;
  ELSE SET ip_index=0;END IF;
 
  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip;
  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
END$$
DELIMITER ;

кто подскажет, зачем нужен в процедуре radupdate на входе вторым параметром IN `ip` VARCHAR(16), он нигде в ней не используется

Код:
DROP PROCEDURE IF EXISTS `radstop`;
DELIMITER $$
CREATE PROCEDURE `radstop`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE ip_index INT ;
  DECLARE real_login VARCHAR(64) DEFAULT NULL;

  SELECT SUBSTRING_INDEX(login, '=2B', 1) INTO real_login;
  
  IF login REGEXP '[=2B][0-9]+$' THEN
   SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'=2B','') AS UNSIGNED) INTO ip_index;
  ELSE SET ip_index=0;END IF;
 
  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1;
  DELETE FROM auth_now WHERE ip = get_ip_by_num(usr_id, ip_index) LIMIT 1;
END$$
DELIMITER ;

Предлагаю все эти процедуры добавить в коробку, так же процедура get_ip_by_num может полностью заменить процедуру get_ip

принимаю СПАСИБКИ в Карму

to be continued...


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Redmen от 05 Февраля 2017, 17:55:38
...продолжение

Во-вторых при тестировании всего этого в freeradius-2.2.9 при radiusd -X и radtest .. было замечено:
Код:
Found Auth-Type = PAP
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!    Replacing User-Password in config items with Cleartext-Password.     !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Please update your configuration so that the "known good"               !!!
!!! clear text password is in Cleartext-Password, and not in User-Password. !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


то есть оно просит в процедуре radcheck заменить это
Код:
 SELECT id, name, 'Password' AS Attribute,

на ето
Код:
 SELECT id, name, 'Cleartext-Password' AS Attribute,


Но В Н И М А Н И  Е ! ! !

ЭТОГО ДЕЛАТЬ НЕ НАДО! ! !
в freeradius-2.x.x работает по старому, а по новому нужно еще кучу настроек радиуса перековыривать

но по старому точно не будет работать в  freeradius-3.x.xтолько по новому

Т.к. freeradius-2.x.x больше обновляться не будет, и последняя стабильная версия  freeradius-2.2.9,

я уже себе на виртуалке для теста настроил  freeradius-3.0.12, но это труднее чем 2.x.x,
поэтому инструкцию пока не выкладываю (не готова)


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: kostya_zpr от 18 Мая 2017, 13:40:20
В такой реализации, как приведена в этой ветке, очень смущает строчка "WHERE uid = user_id AND type='static' ORDER BY ip "
То есть если добавить еще один адрес, меньший, чем последний, то все привязки поплывут
Никаких других механизмов фиксации ip по передаваемому логину не придумали?

Для нас тема очень актуальна, т.к. в N50.32 существует куча "корпоративных" абонентов, с индивидуальными логинами на общем счёте и не можем их нормально перенести

Насчет RADIUS - я у себя сделал так
Код:
/* For RADIUS 1.X */
DROP PROCEDURE IF EXISTS `radcheck`;

DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
  SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'XXXXXX') AS Value,'=='
  FROM users WHERE name=login;
  END$$
DELIMITER ;

/* For RADIUS 2.X */
DROP PROCEDURE IF EXISTS `radcheck2`;

DELIMITER $$
CREATE PROCEDURE `radcheck2` (IN login VARCHAR(64))
BEGIN
  SELECT id,name,'Cleartext-Password' AS Attribute,AES_DECRYPT(passwd,'XXXXXX') AS Value,':='
  FROM users WHERE name=login;
  END$$
DELIMITER ;
Для второго Радиуса нужно указывать не '==', а ':=', ну и как было указано выше, 'Cleartext-Password' вместо 'Password'


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Efendy от 20 Мая 2017, 07:57:16
Могу написать модуль, 50 у.е цена устраивает?


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: kostya_zpr от 20 Мая 2017, 08:15:10
Пока сам попробую мозги поразмять :)

Но из ответа следует:
1) данная фича еще не реализована, это не я плохо искал функционал
2) все реализуемо

Будут сложности - обращусь


Название: Re: FAQ. Несколько ip на PPPoE
Отправлено: Efendy от 20 Мая 2017, 11:47:01
https://youtu.be/A2yx5TcQzpQ

60 у.е