<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=Freebsd_%2B_Freeradius3_%2B_Nodeny_Plus</id>
	<title>Freebsd + Freeradius3 + Nodeny Plus - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=Freebsd_%2B_Freeradius3_%2B_Nodeny_Plus"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T12:23:14Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv: /* для pppoe */</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2018-03-23T10:26:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;для pppoe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== '''для dhcp''' ==&lt;br /&gt;
'''cat /usr/local/etc/raddb/sites-enabled/nodeny'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
server default {&lt;br /&gt;
    listen {&lt;br /&gt;
        type = auth&lt;br /&gt;
        ipaddr = *&lt;br /&gt;
        port = 1812&lt;br /&gt;
    }&lt;br /&gt;
    listen {&lt;br /&gt;
        type = acct&lt;br /&gt;
        ipaddr = *&lt;br /&gt;
        port = 0&lt;br /&gt;
    }&lt;br /&gt;
    authorize {&lt;br /&gt;
            sql&lt;br /&gt;
            pap&lt;br /&gt;
            update control {&lt;br /&gt;
                             Auth-Type := &amp;quot;Accept&amp;quot;&lt;br /&gt;
                            }&lt;br /&gt;
    }&lt;br /&gt;
    authenticate {&lt;br /&gt;
            Auth-Type PAP {&lt;br /&gt;
                pap&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
    preacct {&lt;br /&gt;
            acct_unique&lt;br /&gt;
            preprocess&lt;br /&gt;
    }&lt;br /&gt;
    accounting {&lt;br /&gt;
            sql&lt;br /&gt;
            exec&lt;br /&gt;
    }&lt;br /&gt;
    session {&lt;br /&gt;
            radutmp&lt;br /&gt;
            sql&lt;br /&gt;
    }&lt;br /&gt;
    post-auth {&lt;br /&gt;
            sql&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
'''cat /usr/local/etc/raddb/mods-enabled/sql'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sql {&lt;br /&gt;
    driver = &amp;quot;rlm_sql_mysql&amp;quot;&lt;br /&gt;
    mysql {&lt;br /&gt;
warnings = auto&lt;br /&gt;
    }&lt;br /&gt;
    server = &amp;quot;localhost&amp;quot;&lt;br /&gt;
    port = 3306&lt;br /&gt;
    login = &amp;quot;nodeny&amp;quot;&lt;br /&gt;
    password = &amp;quot;hardpass&amp;quot;&lt;br /&gt;
    radius_db = &amp;quot;nodeny&amp;quot;&lt;br /&gt;
        authorize_check_query = &amp;quot;call radcheck('%{User-Name}')&amp;quot;&lt;br /&gt;
        authorize_reply_query = &amp;quot;call radreply('%{User-Name}')&amp;quot;&lt;br /&gt;
        accounting {&lt;br /&gt;
            query = &amp;quot;call radupdate('%{User-Name}','%{Framed-IP-Address}',\&lt;br /&gt;
                    'nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
            type {&lt;br /&gt;
                start {&lt;br /&gt;
                    query = &amp;quot;call radupdate('%{User-Name}','%{Framed-IP-Address}',\&lt;br /&gt;
                            'nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        post-auth {&lt;br /&gt;
        query = &amp;quot;call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\&lt;br /&gt;
                'nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mysql процедуры'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radcheck`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))&lt;br /&gt;
BEGIN&lt;br /&gt;
  SELECT Null, login, 'Cleartext-Password' AS Attribute, '' AS Value,':=';&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radreply`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))&lt;br /&gt;
BEGIN&lt;br /&gt;
    DECLARE usr_mac VARCHAR(12);&lt;br /&gt;
    DECLARE usr_ip VARCHAR(15);&lt;br /&gt;
    DECLARE usr_id INT;&lt;br /&gt;
    SELECT REPLACE(login, ':', '') INTO usr_mac;&lt;br /&gt;
    SELECT uid INTO usr_id FROM mac_uid WHERE mac=usr_mac;&lt;br /&gt;
    IF usr_id IS NOT NULL AND usr_id&amp;gt;0 THEN&lt;br /&gt;
        SELECT get_ip(usr_id) INTO usr_ip;&lt;br /&gt;
        UPDATE mac_uid SET ip=0 WHERE ip=INET_ATON(usr_ip) AND uid&amp;lt;&amp;gt;usr_id;&lt;br /&gt;
        UPDATE mac_uid SET ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP() WHERE uid=usr_id;&lt;br /&gt;
    ELSE&lt;br /&gt;
        UPDATE mac_uid SET ip=0 WHERE uid=0 AND time&amp;lt;(UNIX_TIMESTAMP()-3600);&lt;br /&gt;
        START TRANSACTION;&lt;br /&gt;
        SELECT INET_NTOA(ip) INTO usr_ip FROM ip_pool p WHERE uid=0 AND type='dynamic'&lt;br /&gt;
            AND NOT EXISTS (SELECT ip FROM mac_uid WHERE ip=p.ip)&lt;br /&gt;
            ORDER BY RAND() LIMIT 1 FOR UPDATE;&lt;br /&gt;
        INSERT INTO mac_uid VALUES(&lt;br /&gt;
            NULL, usr_mac, INET_ATON(usr_ip), 0, UNIX_TIMESTAMP(), 0, 0, 0)&lt;br /&gt;
        ON DUPLICATE KEY&lt;br /&gt;
            UPDATE ip=IF(ip&amp;gt;0,ip,INET_ATON(usr_ip)), time=UNIX_TIMESTAMP();&lt;br /&gt;
        COMMIT;&lt;br /&gt;
        SELECT INET_NTOA(ip) INTO usr_ip FROM mac_uid WHERE mac=usr_mac;&lt;br /&gt;
    END IF;&lt;br /&gt;
    SELECT NULL, login, 'Framed-IP-Address', usr_ip, '=';&lt;br /&gt;
    SELECT NULL, login, 'Session-Timeout', '600', '=';&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radupdate`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radupdate`(&lt;br /&gt;
    IN login VARCHAR(64), IN ipa VARCHAR(16), IN properties VARCHAR(255))&lt;br /&gt;
BEGIN&lt;br /&gt;
    DECLARE usr_mac VARCHAR(16);&lt;br /&gt;
    SELECT REPLACE(login, ':', '') INTO usr_mac;&lt;br /&gt;
    CALL set_auth(ipa, CONCAT('mod=dhcp;user=', usr_mac, ';', REPLACE(properties,';','')));&lt;br /&gt;
    UPDATE mac_uid SET time=UNIX_TIMESTAMP() WHERE ip=INET_ATON(ipa) LIMIT 1;&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''для pppoe''' ==&lt;br /&gt;
'''cat /usr/local/etc/raddb/sites-enabled/nodeny'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
server default {&lt;br /&gt;
    listen {&lt;br /&gt;
        type = auth&lt;br /&gt;
        ipaddr = *&lt;br /&gt;
        port = 1812&lt;br /&gt;
    }&lt;br /&gt;
    listen {&lt;br /&gt;
        type = acct&lt;br /&gt;
        ipaddr = *&lt;br /&gt;
        port = 0&lt;br /&gt;
    }&lt;br /&gt;
    authorize {&lt;br /&gt;
            sql&lt;br /&gt;
           pap&lt;br /&gt;
            chap&lt;br /&gt;
            mschap&lt;br /&gt;
    }&lt;br /&gt;
    authenticate {&lt;br /&gt;
            Auth-Type PAP {&lt;br /&gt;
                pap&lt;br /&gt;
            }&lt;br /&gt;
            Auth-Type CHAP {&lt;br /&gt;
                chap&lt;br /&gt;
            }&lt;br /&gt;
            Auth-Type MSCHAP {&lt;br /&gt;
                mschap&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
   preacct {&lt;br /&gt;
            acct_unique&lt;br /&gt;
            preprocess&lt;br /&gt;
    }&lt;br /&gt;
    accounting {&lt;br /&gt;
            sql&lt;br /&gt;
            exec&lt;br /&gt;
    }&lt;br /&gt;
    session {&lt;br /&gt;
            radutmp&lt;br /&gt;
            sql&lt;br /&gt;
    }&lt;br /&gt;
    post-auth {&lt;br /&gt;
            sql&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
'''cat /usr/local/etc/raddb/mods-enabled/sql'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sql {&lt;br /&gt;
        driver = &amp;quot;rlm_sql_mysql&amp;quot;&lt;br /&gt;
        mysql {&lt;br /&gt;
                warnings = auto&lt;br /&gt;
        }&lt;br /&gt;
        server = &amp;quot;localhost&amp;quot;&lt;br /&gt;
        port = 3306&lt;br /&gt;
        login = &amp;quot;nodeny&amp;quot;&lt;br /&gt;
        password = &amp;quot;hardpass&amp;quot;&lt;br /&gt;
        radius_db = &amp;quot;nodeny&amp;quot;&lt;br /&gt;
        authorize_check_query = &amp;quot;call radcheck('%{User-Name}')&amp;quot;&lt;br /&gt;
        authorize_reply_query = &amp;quot;call radreply('%{User-Name}')&amp;quot;&lt;br /&gt;
        accounting {&lt;br /&gt;
            query = &amp;quot;call radupdate('%{User-Name}','%{Framed-IP-Address}',\&lt;br /&gt;
                    'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
            type {&lt;br /&gt;
                start {&lt;br /&gt;
                    query = &amp;quot;call radupdate('%{User-Name}','%{Framed-IP-Address}',\&lt;br /&gt;
                            'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        post-auth {&lt;br /&gt;
            query = &amp;quot;call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\&lt;br /&gt;
                'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mysql процедуры'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radcheck`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))&lt;br /&gt;
BEGIN&lt;br /&gt;
  SELECT id,name,'Cleartext-Password' AS Attribute,AES_DECRYPT(passwd,'hardpass') AS Value,':='&lt;br /&gt;
    FROM users WHERE name=login;&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radreply`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))&lt;br /&gt;
BEGIN&lt;br /&gt;
  DECLARE usr_id INT;&lt;br /&gt;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;&lt;br /&gt;
&lt;br /&gt;
  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;&lt;br /&gt;
  SELECT get_ip(usr_id) INTO usr_ip;&lt;br /&gt;
&lt;br /&gt;
  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';&lt;br /&gt;
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';&lt;br /&gt;
  SELECT NULL,login,'Framed-Protocol','PPP','=';&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radupdate`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255))&lt;br /&gt;
BEGIN&lt;br /&gt;
  DECLARE usr_id INT;&lt;br /&gt;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;&lt;br /&gt;
  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;&lt;br /&gt;
  SELECT get_ip(usr_id) INTO usr_ip;&lt;br /&gt;
  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));&lt;br /&gt;
  UPDATE users SET id=usr_id WHERE id=usr_id LIMIT 1;&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&lt;br /&gt;
DROP PROCEDURE IF EXISTS `radstop`;&lt;br /&gt;
DELIMITER $$&lt;br /&gt;
CREATE PROCEDURE `radstop`(IN login VARCHAR(64))&lt;br /&gt;
BEGIN&lt;br /&gt;
  DECLARE usr_id INT;&lt;br /&gt;
  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;&lt;br /&gt;
  DELETE FROM auth_now WHERE ip = get_ip(usr_id) LIMIT 1;&lt;br /&gt;
END$$&lt;br /&gt;
DELIMITER ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sv</name></author>
	</entry>
</feed>