W załączeniu patch, który otrzymałem od Roberta (CyberM) odnośnie Radiusa w LMSie. Patch wymaga kilku zmian dla postgresa, a ponieważ w tym tygodniu mogę nie mieć czasu go dopracować, więc przesyłam tutaj. Może ktoś będzie miał ochotę przeglądnąć/poprawić/skomentować. -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net !DSPAM:49b7bf7d147101327519691! diff -Naur ./lms-cvs/doc/ChangeLog ./lms/doc/ChangeLog --- ./lms-cvs/doc/ChangeLog 2009-02-27 20:07:00.000000000 +0100 +++ ./lms/doc/ChangeLog 2009-03-02 02:30:45.000000000 +0100 @@ -7,6 +7,7 @@ - changed length of ewx_pt_config.name column type to 32 characters (alec) - lmsd: added 'skip_disabled' option in ewx-pt and ewx-stm modules (alec) - BTS:0000787: fixed parse error in transferforms2.php (alec) + - added radius support (Robert "CyberM" Konopa) version 1.11.7 Bastet (2009-02-13): diff -Naur ./lms-cvs/doc/radius/README ./lms/doc/radius/README --- ./lms-cvs/doc/radius/README 1970-01-01 01:00:00.000000000 +0100 +++ ./lms/doc/radius/README 2009-03-11 09:25:28.000000000 +0100 @@ -0,0 +1,13 @@ +Aby uruchomic wsparcie dla Freeradius'a nalezy w konfiguracji interfrejsu +uzytkownika w sekcji "phpui" dodac opcje "radius" z parametrem "1". +W opcjach urzadzen i ich adresow IP pojawia sie dodatkowe pola sluzace do +konfiguracji NAS. Do niniejszej dokumentacji zalaczony jest przykladowy plik +sql.conf ktory nalezy dolaczyc do konfiguracji freeradius'a.Zalecam wczesniejsze +zrobienie kopii zapasowej orginalnego pliku konfiguracyjnego. Przykladowa +konfiguracja zapewnia autoryzacje klientow z wykorzystaniem PPPoEi hasel +MSCHAPv2 (przetestowano z wezlem PPPoE uruchomionym na Mikrotiku). Sekcje +"sql_mac" mozna wykorzystac do dodatkowej autoryzacji urzadzen z uwzglednieniem +sprzetowego adresu MAC. + +p.s. +sugestie oraz spostrzezenia prosze kierowac na adres cyberm@tlen.pl \ Brak znaku nowej linii na koñcu pliku diff -Naur ./lms-cvs/doc/radius/sql.conf ./lms/doc/radius/sql.conf --- ./lms-cvs/doc/radius/sql.conf 1970-01-01 01:00:00.000000000 +0100 +++ ./lms/doc/radius/sql.conf 2009-03-11 09:17:53.000000000 +0100 @@ -0,0 +1,168 @@ +# +# Configuration for the SQL module, when using MySQL. +# +# The database schema is available at: +# +# src/radiusd/src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql +# +# If you are using PostgreSQL, please use 'postgresql.conf', instead. +# If you are using Oracle, please use 'oracle.conf', instead. +# If you are using MS-SQL, please use 'mssql.conf', instead. +# +# $Id: sql.conf,v 1.41.2.2 2005/08/24 17:02:04 nbk Exp $ +# + +sql { + driver = "rlm_sql_mysql" + server = "localhost" + login = "lms" + password = "twojehaslo" + radius_db = "lms" + acct_table1 = "radacct" + acct_table2 = "radacct" + nas_table = "nas" + deletestalesessions = yes + sqltrace = no + sqltracefile = ${logdir}/sqltrace.sql + num_sql_socks = 15 + connect_failure_retry_delay = 60 + #safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" + sql_user_name = "%{User-Name}" + + accounting_onoff_query = "UPDATE ${acct_table1} SET AcctStopTime='%S', AcctSessionTime=unix_timestamp('%S') - unix_timestamp(AcctStartTime), AcctTerminateCause='%{Acct-Terminate-Cause}', AcctStopDelay = '%{Acct-Delay-Time}' WHERE AcctSessionTime=0 AND AcctStopTime=0 AND NASIPAddress= '%{NAS-IP-Address}' AND AcctStartTime <= '%S'" + accounting_update_query = "UPDATE ${acct_table1} \ + SET FramedIPAddress = '%{Framed-IP-Address}', \ + AcctSessionTime = '%{Acct-Session-Time}', \ + AcctInputOctets = '%{Acct-Input-Octets}', \ + AcctOutputOctets = '%{Acct-Output-Octets}' \ + WHERE AcctSessionId = '%{Acct-Session-Id}' \ + AND UserName = '%{SQL-User-Name}' \ + AND NASIPAddress= '%{NAS-IP-Address}'" + accounting_update_query_alt = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0')" + accounting_start_query = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', '%S', '0', '0', '%{Acct-Authentic}', '%{Connect-Info}', '', '0', '0', '%{Called-Station-Id}', '%{Calling-Station-Id}', '', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Acct-Delay-Time}', '0')" + accounting_start_query_alt = "UPDATE ${acct_table1} SET AcctStartTime = '%S', AcctStartDelay = '%{Acct-Delay-Time}', ConnectInfo_start = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'" + accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', AcctSessionTime = '%{Acct-Session-Time}', AcctInputOctets = '%{Acct-Input-Octets}', AcctOutputOctets = '%{Acct-Output-Octets}', AcctTerminateCause = '%{Acct-Terminate-Cause}', AcctStopDelay = '%{Acct-Delay-Time}', ConnectInfo_stop = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'" + accounting_stop_query_alt = "INSERT into ${acct_table2} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S', INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%S', '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Connect-Info}', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Acct-Terminate-Cause}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0', '%{Acct-Delay-Time}')" + + # Uncomment simul_count_query to enable simultaneous use checking + # simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" + simul_verify_query = "SELECT RadAcctId, AcctSessionId, UserName, NASIPAddress, NASPortId, FramedIPAddress, CallingStationId, FramedProtocol FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" + + # Set to 'yes' to read radius clients from the database ('nas' table) + #readclients = yes +} + +sql sql_pppoe { + driver = "rlm_sql_mysql" + server = "localhost" + login = "lms" + password = "twojehaslo" + radius_db = "lms" + deletestalesessions = yes + sqltrace = no + sqltracefile = ${logdir}/sqltrace.sql + num_sql_socks = 15 + connect_failure_retry_delay = 60 + sql_user_name = "%{User-Name}" + sql_set_password = "" + authreply_table = "radreply" + nas_table = "nas" + readclients = no + authorize_check_query = "SELECT id, lower(name) as UserName , 'User-Password' as Attribute , passwd as Value, '==' as op FROM nodes WHERE name = '%{User-Name}'\ + UNION\ + SELECT id, lower(name) as UserName , 'Simultaneous-Use' as Attribute, '1' as Value, ':=' as op FROM nodes WHERE name = '%{User-Name}'\ + UNION\ + SELECT 0 AS id, '%{User-Name}' AS UserName, 'Max-Octets' AS Attribute,\ + CONCAT(ROUND(COALESCE(x.dlimit, y.dlimit))) AS Value, ':=' AS op\ + FROM (SELECT n.id, MIN(n.name) AS name, SUM(t.dlimit/o.cnt) AS dlimit\ + FROM nodeassignments na\ + JOIN assignments a ON (na.assignmentid = a.id)\ + JOIN tariffs t ON (a.tariffid = t.id)\ + JOIN nodes n ON (na.nodeid = n.id)\ + JOIN (SELECT assignmentid, COUNT(*) AS cnt\ + FROM nodeassignments GROUP BY assignmentid) o ON (o.assignmentid = na.assignmentid)\ + WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0) AND a.suspended = 0 AND n.name = '%{User-Name}'\ + GROUP BY n.id\ + ) x\ + RIGHT JOIN (SELECT\ + SUM(t.dlimit)/o.cnt AS dlimit\ + FROM assignments a\ + JOIN tariffs t ON (a.tariffid = t.id)\ + JOIN nodes n ON (a.customerid = n.ownerid)\ + JOIN (SELECT COUNT(*) AS cnt, ownerid FROM nodes\ + WHERE NOT EXISTS(SELECT 1 FROM nodeassignments, assignments a WHERE assignmentid = a.id AND nodeid = nodes.id AND a.suspended = 0 AND (a.dateto > unix_timestamp() OR a.dateto = 0))\ + GROUP BY ownerid) o ON (o.ownerid = n.ownerid)\ + WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0) AND a.suspended = 0 AND t.dlimit != '0'\ + AND NOT EXISTS (SELECT 1 FROM nodeassignments WHERE assignmentid = a.id) AND n.name = '%{User-Name}'\ + GROUP BY n.id\ + ) y ON (1=1);" + + authorize_reply_query = "SELECT id, lower(name) as UserName , 'Framed-IP-Address' as Attribute, inet_ntoa(ipaddr) as Value, '==' as op FROM nodes WHERE name = '%{User-Name}'\ + UNION\ + SELECT 0 AS id, '%{User-Name}' AS UserName, 'Mikrotik-Rate-Limit' AS Attribute,\ + CONCAT(ROUND(COALESCE(x.upceil, y.upceil, z.upceil)),'k','/', ROUND(COALESCE(x.downceil, y.downceil, z.downceil)),'k') AS Value, '==' AS op\ + FROM (SELECT n.id, MIN(n.name) AS name, SUM(t.downceil/o.cnt) AS downceil, SUM(t.upceil/o.cnt) AS upceil\ + FROM nodeassignments na\ + JOIN assignments a ON (na.assignmentid = a.id)\ + JOIN tariffs t ON (a.tariffid = t.id)\ + JOIN nodes n ON (na.nodeid = n.id)\ + JOIN (SELECT assignmentid, COUNT(*) AS cnt\ + FROM nodeassignments GROUP BY assignmentid) o ON (o.assignmentid = na.assignmentid)\ + WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0) AND a.suspended = 0 AND n.name = '%{User-Name}'\ + GROUP BY n.id\ + ) x\ + RIGHT JOIN (SELECT\ + SUM(t.downceil)/o.cnt AS downceil,\ + SUM(t.upceil)/o.cnt AS upceil\ + FROM assignments a\ + JOIN tariffs t ON (a.tariffid = t.id)\ + JOIN nodes n ON (a.customerid = n.ownerid)\ + JOIN (SELECT COUNT(*) AS cnt, ownerid FROM nodes \ + WHERE NOT EXISTS(SELECT 1 FROM nodeassignments, assignments a WHERE assignmentid = a.id AND nodeid = nodes.id AND a.suspended = 0 AND (a.dateto > unix_timestamp() OR a.dateto = 0))\ + GROUP BY ownerid) o ON (o.ownerid = n.ownerid)\ + WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0) AND a.suspended = 0\ + AND NOT EXISTS (SELECT 1 FROM nodeassignments WHERE assignmentid = a.id) AND n.name = '%{User-Name}'\ + GROUP BY n.id\ + ) y ON (1=1)\ + RIGHT JOIN (SELECT n.id, n.name, 64 AS downceil, 64 AS upceil\ + FROM nodes n WHERE n.name = '%{User-Name}'\ + ) z ON (1=1)\ + UNION\ + SELECT id, UserName, Attribute, Value, op \ + FROM ${authreply_table} \ + WHERE Username = '%{SQL-User-Name}' \ + ORDER BY id;" +} + +sql sql_mac { + driver = "rlm_sql_mysql" + server = "localhost" + login = "lms" + password = "twojehaslo" + radius_db = "lms" + deletestalesessions = yes + sqltrace = no + sqltracefile = ${logdir}/sqltrace.sql + num_sql_socks = 10 + connect_failure_retry_delay = 60 + sql_user_name = "%{User-Name}" + sql_set_password = "" + authorize_check_query = "SELECT id, upper(mac) as UserName , 'User-Password' as Attribute, '' as Value, '==' as op FROM nodes WHERE upper(mac) = '%{SQL-User-Name}' and access=1 ORDER by id" +} + +sql sql_last_online { + driver = "rlm_sql_mysql" + server = "localhost" + login = "lms" + password = "twojehaslo" + radius_db = "lms" + postauth_table = "nodes" + deletestalesessions = yes + sqltrace = no + sqltracefile = ${logdir}/sqltrace.sql + num_sql_socks = 15 + connect_failure_retry_delay = 60 + sql_user_name = "%{User-Name}" + sql_set_password = "" + postauth_query = "UPDATE nodes SET lastonline = unix_timestamp() WHERE name='%{User-Name}'" +} diff -Naur ./lms-cvs/lib/LMS.class.php ./lms/lib/LMS.class.php --- ./lms-cvs/lib/LMS.class.php 2009-02-19 20:49:55.000000000 +0100 +++ ./lms/lib/LMS.class.php 2009-03-05 21:16:26.000000000 +0100 @@ -1154,12 +1160,13 @@ return $this->DB->GetOne('SELECT ownerid FROM nodes WHERE id=?', array($id)); } +# -- moje radius -- function NodeUpdate($nodedata, $deleteassignments=FALSE) { $this->DB->Execute('UPDATE nodes SET name=UPPER(?), ipaddr_pub=inet_aton(?), ipaddr=inet_aton(?), mac=UPPER(?), passwd=?, netdev=?, moddate=?NOW?, modid=?, access=?, warning=?, ownerid=?, info=?, - location=?, chkmac=?, halfduplex=?, linktype=?, port=? + location=?, chkmac=?, halfduplex=?, linktype=?, port=?, nas=? WHERE id=?', array($nodedata['name'], $nodedata['ipaddr_pub'], @@ -1177,6 +1184,7 @@ $nodedata['halfduplex'], isset($nodedata['linktype']) ? 1 : 0, isset($nodedata['port']) && $nodedata['netdev'] ? intval($nodedata['port']) : 0, + $nodedata['nas'], $nodedata['id'] )); @@ -1244,7 +1252,7 @@ if($result = $this->DB->GetRow('SELECT id, name, ownerid, ipaddr, inet_ntoa(ipaddr) AS ip, ipaddr_pub, inet_ntoa(ipaddr_pub) AS ip_pub, mac, passwd, access, warning, creationdate, moddate, creatorid, modid, netdev, lastonline, - info, location, chkmac, halfduplex, linktype, port + info, location, chkmac, halfduplex, linktype, port, nas FROM nodes WHERE id = ?', array($id))) { $result['createdby'] = $this->GetUserName($result['creatorid']); @@ -2895,7 +2903,7 @@ } $netdevlist = $this->DB->GetAll('SELECT d.id, d.name, d.location, - d.description, d.producer, d.model, d.serialnumber, d.ports, + d.description, d.producer, d.model, d.serialnumber, d.ports, (SELECT COUNT(*) FROM nodes WHERE netdev=d.id AND ownerid > 0) + (SELECT COUNT(*) FROM netlinks WHERE src = d.id OR dst = d.id) AS takenports @@ -2958,13 +2966,13 @@ $this->DB->Execute('DELETE FROM netdevices WHERE id=?', array($id)); $this->DB->CommitTrans(); } - +# -- moje radius -- function NetDevAdd($netdevdata) { if($this->DB->Execute('INSERT INTO netdevices (name, location, description, producer, model, serialnumber, - ports, purchasetime, guaranteeperiod) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', + ports, purchasetime, guaranteeperiod, shortname, nastype, clients, secret, community) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', array($netdevdata['name'], $netdevdata['location'], $netdevdata['description'], @@ -2973,17 +2981,23 @@ $netdevdata['serialnumber'], $netdevdata['ports'], $netdevdata['purchasetime'], - $netdevdata['guaranteeperiod'] + $netdevdata['guaranteeperiod'], + $netdevdata['shortname'], + $netdevdata['nastype'], + $netdevadta['clients'], + $netdevdata['secret'], + $netdevdata['community'] ))) return $this->DB->GetLastInsertID('netdevices'); else return FALSE; } +# -- moje radius -- function NetDevUpdate($netdevdata) { $this->DB->Execute('UPDATE netdevices SET name=?, location=?, description=?, producer=?, - model=?, serialnumber=?, ports=?, purchasetime=?, guaranteeperiod=? + model=?, serialnumber=?, ports=?, purchasetime=?, guaranteeperiod=?, shortname=?, nastype=?, clients=?, secret=?, community=? WHERE id=?', array( $netdevdata['name'], $netdevdata['location'], @@ -2994,6 +3008,11 @@ $netdevdata['ports'], $netdevdata['purchasetime'], $netdevdata['guaranteeperiod'], + $netdevdata['shortname'], + $netdevdata['nastype'], + $netdevdata['clients'], + $netdevdata['secret'], + $netdevdata['community'], $netdevdata['id'] )); } @@ -3903,6 +3922,12 @@ return $this->DB->GetOne('SELECT name FROM countries WHERE id = ?', array($id)); } +# -- moje radius -- + function GetNAStype() + { + return $this->DB->GetAllByKey('SELECT id, name FROM nastype ORDER BY name', 'id'); + } + //VoIP functions function GetVoipAccountList($order='login,asc', $search=NULL, $sqlskey='AND') { diff -Naur ./lms-cvs/lib/locale/pl/strings.php ./lms/lib/locale/pl/strings.php --- ./lms-cvs/lib/locale/pl/strings.php 2009-01-30 14:10:47.000000000 +0100 +++ ./lms/lib/locale/pl/strings.php 2009-03-02 13:53:52.000000000 +0100 @@ -2127,4 +2127,14 @@ $_LANG['with document'] = 'z dokumentem'; $_LANG['without document'] = 'bez dokumentu'; +$_LANG['Shortname:'] = 'Nazwa skrócona:'; +$_LANG['Max clients:'] = 'IloÅÄ klientów:'; +$_LANG['Secret:'] = 'HasÅo:'; +$_LANG['Community:'] = 'Community:'; +$_LANG['Enter shortname (optional)'] = 'Podaj nazwÄ skróconÄ (opcjonalnie)'; +$_LANG['Select type (optional)'] = 'Wybierz typ (opcjonalnie)'; +$_LANG['Enter max clients (optional)'] = 'Podaj maksymalnÄ liczbÄ klientów (opcjonalnie)'; +$_LANG['Enter secret (optional)'] = 'Podaj hasÅo (opcjonalnie)'; +$_LANG['Enter community (optional)'] = 'Podaj community (opcjonalnie)'; + ?> diff -Naur ./lms-cvs/lib/upgradedb/mysql.2009030501.php ./lms/lib/upgradedb/mysql.2009030501.php --- ./lms-cvs/lib/upgradedb/mysql.2009030501.php 1970-01-01 01:00:00.000000000 +0100 +++ ./lms/lib/upgradedb/mysql.2009030501.php 2009-03-11 09:09:06.000000000 +0100 @@ -0,0 +1,116 @@ +<?php + +/* + * LMS Mysql autoupgrade version 1.11-cvs + * + * (C) Copyright 2001-2009 LMS Developers + * + * Please, see the doc/AUTHORS for more information about authors! + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + * + * $Id: mysql.2009030200.php,v 1.0 2009/03/02 01:49:40 Robert "CyberM" Konopa Exp $ + */ + +$DB->Execute(" +CREATE TABLE nastype ( + id int(11) NOT NULL auto_increment, + name varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (id), + UNIQUE KEY name (name) +) TYPE=MyISAM"); + +$DB->Execute(" +CREATE TABLE radacct ( + RadAcctId bigint(21) NOT NULL auto_increment, + AcctSessionId varchar(32) NOT NULL default '', + AcctUniqueId varchar(32) NOT NULL default '', + UserName varchar(64) NOT NULL default '', + Realm varchar(64) default '', + NASIPAddress varchar(15) NOT NULL default '', + NASPortId varchar(15) default NULL, + NASPortType varchar(32) default NULL, + AcctStartTime datetime NOT NULL default '0000-00-00 00:00:00', + AcctStopTime datetime NOT NULL default '0000-00-00 00:00:00', + AcctSessionTime int(12) default NULL, + AcctAuthentic varchar(32) default NULL, + ConnectInfo_start varchar(50) default NULL, + ConnectInfo_stop varchar(50) default NULL, + AcctInputOctets bigint(12) default NULL, + AcctOutputOctets bigint(12) default NULL, + CalledStationId varchar(50) NOT NULL default '', + CallingStationId varchar(50) NOT NULL default '', + AcctTerminateCause varchar(32) NOT NULL default '', + ServiceType varchar(32) default NULL, + FramedProtocol varchar(32) default NULL, + FramedIPAddress varchar(15) NOT NULL default '', + AcctStartDelay int(12) default NULL, + AcctStopDelay int(12) default NULL, + PRIMARY KEY (RadAcctId), + KEY UserName (UserName), + KEY FramedIPAddress (FramedIPAddress), + KEY AcctSessionId (AcctSessionId), + KEY AcctUniqueId (AcctUniqueId), + KEY AcctStartTime (AcctStartTime), + KEY AcctStopTime (AcctStopTime), + KEY NASIPAddress (NASIPAddress) +"); + +$DB->Execute(" +CREATE TABLE radreply ( + id int(11) unsigned NOT NULL auto_increment, + UserName varchar(64) NOT NULL default '', + Attribute varchar(32) NOT NULL default '', + op char(2) NOT NULL DEFAULT '=', + Value varchar(253) NOT NULL default '', + PRIMARY KEY (id), + KEY UserName (UserName(32)) +"); + +$DB->Execute("ALTER TABLE nodes ADD nas int(1) NOT NULL DEFAULT '0'"); +$DB->Execute("ALTER TABLE netdevices ADD shortname varchar(32) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD nastype int(11) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD clients int(11) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD secret varchar(60) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD community varchar(50) NULL DEFAULT ''"); + + +$DB->Execute("CREATE VIEW nas AS + SELECT no.id, inet_ntoa(no.ipaddr), nd.shortname, nd.nastype type, nd.clients ports, nd.secret, nd.community, nd.description + FROM nodes no + JOIN netdevices nd ON (no.netdev = nd.id) + WHERE no.nas='1'"); + +$DB->Execute("INSERT INTO nastype (name) VALUES ('mikrotik_snmp')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('cisco')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('computone')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('livingston')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('max40xx')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('multitech')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('netserver')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('pathras')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('patton')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('portslave')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('tc')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('usrhiper')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('other')"); +$DB->Execute("INSERT INTO uiconfig (section, var, value) VALUES ('phpui', 'radius', '0')"); +$DB->Execute("INSERT INTO uiconfig (section, var, value) VALUES ('phpui', 'pubip', '1')"); + +$DB->Execute("UPDATE dbinfo SET keyvalue = ? WHERE keytype = ?", array('2009030501', 'dbversion')); + diff -Naur ./lms-cvs/lib/upgradedb/postgres.2009030501.php ./lms/lib/upgradedb/postgres.2009030501.php --- ./lms-cvs/lib/upgradedb/postgres.2009030501.php 1970-01-01 01:00:00.000000000 +0100 +++ ./lms/lib/upgradedb/postgres.2009030501.php 2009-03-11 09:09:06.000000000 +0100 @@ -0,0 +1,116 @@ +<?php + +/* + * LMS Mysql autoupgrade version 1.11-cvs + * + * (C) Copyright 2001-2009 LMS Developers + * + * Please, see the doc/AUTHORS for more information about authors! + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + * + * $Id: mysql.2009030200.php,v 1.0 2009/03/02 01:49:40 Robert "CyberM" Konopa Exp $ + */ + +$DB->Execute(" +CREATE TABLE nastype ( + id int(11) NOT NULL auto_increment, + name varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (id), + UNIQUE KEY name (name) +) TYPE=MyISAM"); + +$DB->Execute(" +CREATE TABLE radacct ( + RadAcctId bigint(21) NOT NULL auto_increment, + AcctSessionId varchar(32) NOT NULL default '', + AcctUniqueId varchar(32) NOT NULL default '', + UserName varchar(64) NOT NULL default '', + Realm varchar(64) default '', + NASIPAddress varchar(15) NOT NULL default '', + NASPortId varchar(15) default NULL, + NASPortType varchar(32) default NULL, + AcctStartTime datetime NOT NULL default '0000-00-00 00:00:00', + AcctStopTime datetime NOT NULL default '0000-00-00 00:00:00', + AcctSessionTime int(12) default NULL, + AcctAuthentic varchar(32) default NULL, + ConnectInfo_start varchar(50) default NULL, + ConnectInfo_stop varchar(50) default NULL, + AcctInputOctets bigint(12) default NULL, + AcctOutputOctets bigint(12) default NULL, + CalledStationId varchar(50) NOT NULL default '', + CallingStationId varchar(50) NOT NULL default '', + AcctTerminateCause varchar(32) NOT NULL default '', + ServiceType varchar(32) default NULL, + FramedProtocol varchar(32) default NULL, + FramedIPAddress varchar(15) NOT NULL default '', + AcctStartDelay int(12) default NULL, + AcctStopDelay int(12) default NULL, + PRIMARY KEY (RadAcctId), + KEY UserName (UserName), + KEY FramedIPAddress (FramedIPAddress), + KEY AcctSessionId (AcctSessionId), + KEY AcctUniqueId (AcctUniqueId), + KEY AcctStartTime (AcctStartTime), + KEY AcctStopTime (AcctStopTime), + KEY NASIPAddress (NASIPAddress) +"); + +$DB->Execute(" +CREATE TABLE radreply ( + id int(11) unsigned NOT NULL auto_increment, + UserName varchar(64) NOT NULL default '', + Attribute varchar(32) NOT NULL default '', + op char(2) NOT NULL DEFAULT '=', + Value varchar(253) NOT NULL default '', + PRIMARY KEY (id), + KEY UserName (UserName(32)) +"); + +$DB->Execute("ALTER TABLE nodes ADD nas int(1) NOT NULL DEFAULT '0'"); +$DB->Execute("ALTER TABLE netdevices ADD shortname varchar(32) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD nastype int(11) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD clients int(11) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD secret varchar(60) NULL DEFAULT ''"); +$DB->Execute("ALTER TABLE netdevices ADD community varchar(50) NULL DEFAULT ''"); + + +$DB->Execute("CREATE VIEW nas AS + SELECT no.id, inet_ntoa(no.ipaddr), nd.shortname, nd.nastype type, nd.clients ports, nd.secret, nd.community, nd.description + FROM nodes no + JOIN netdevices nd ON (no.netdev = nd.id) + WHERE no.nas='1'"); + +$DB->Execute("INSERT INTO nastype (name) VALUES ('mikrotik_snmp')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('cisco')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('computone')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('livingston')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('max40xx')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('multitech')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('netserver')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('pathras')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('patton')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('portslave')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('tc')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('usrhiper')"); +$DB->Execute("INSERT INTO nastype (name) VALUES ('other')"); +$DB->Execute("INSERT INTO uiconfig (section, var, value) VALUES ('phpui', 'radius', '0')"); +$DB->Execute("INSERT INTO uiconfig (section, var, value) VALUES ('phpui', 'pubip', '1')"); + +$DB->Execute("UPDATE dbinfo SET keyvalue = ? WHERE keytype = ?", array('2009030501', 'dbversion')); + diff -Naur ./lms-cvs/lib/upgradedb.php ./lms/lib/upgradedb.php --- ./lms-cvs/lib/upgradedb.php 2009-02-16 13:56:25.000000000 +0100 +++ ./lms/lib/upgradedb.php 2009-03-11 09:10:16.000000000 +0100 @@ -24,7 +24,7 @@ * $Id: upgradedb.php,v 1.149 2009/02/16 12:56:25 alec Exp $ */ -define('DBVERSION', '2009021600'); // here should be always the newest version of database! +define('DBVERSION', '2009030501'); // here should be always the newest version of database! // it placed here to avoid read disk every time when we call this file. /* diff -Naur ./lms-cvs/modules/configlist.php ./lms/modules/configlist.php --- ./lms-cvs/modules/configlist.php 2009-01-13 08:45:48.000000000 +0100 +++ ./lms/modules/configlist.php 2009-03-02 12:43:06.000000000 +0100 @@ -279,6 +279,15 @@ $config[$idx]['description'] = trans('Default period value for assignment. Default: 0'); break; + // -- moje radius -- + case 'radius': + $config[$idx]['description'] = trans('Enable or disable RADIUS support. Default: 0'); + break; + + case 'pubip': + $config[$idx]['description'] = trans('Enable or disable public IP address from nodes. Default: 1'); + break; + default: $config[$idx]['description'] = trans('Unknown option. No description.'); break; diff -Naur ./lms-cvs/modules/netdevadd.php ./lms/modules/netdevadd.php --- ./lms-cvs/modules/netdevadd.php 2009-01-13 08:45:51.000000000 +0100 +++ ./lms/modules/netdevadd.php 2009-03-02 14:57:40.000000000 +0100 @@ -28,6 +28,10 @@ { $netdevdata = $_POST['netdev']; +# -- moje -- + if(!ereg('^[0-9]{1,11}$', $netdevdata['clients'])) + $error['clients'] = trans('Invalid clients format or too long (max.11 characters) !'); + if($netdevdata['ports'] == '') $netdevdata['ports'] = 0; else @@ -80,6 +84,9 @@ $SMARTY->assign('netdev', $netdevdata); } +// -- moje radius -- +$SMARTY->assign('nastype', $LMS->GetNAStype()); + $layout['pagetitle'] = trans('New Device'); $SMARTY->display('netdevadd.html'); diff -Naur ./lms-cvs/modules/netdevedit.php ./lms/modules/netdevedit.php --- ./lms-cvs/modules/netdevedit.php 2009-01-13 08:45:51.000000000 +0100 +++ ./lms/modules/netdevedit.php 2009-03-02 22:56:46.000000000 +0100 @@ -157,6 +157,10 @@ $DB->Execute('UPDATE nodes SET halfduplex=? WHERE id=?', array($_GET['duplex'], $_GET['ip'])); $SESSION->redirect('?m=netdevinfo&id='.$_GET['id'].'&ip='.$_GET['ip']); + +case 'nas': + $DB->Execute('UPDATE nodes SET nas=? WHERE id=?', array($_GET['nas'], $_GET['ip'])); + $SESSION->redirect('?m=netdevinfo&id='.$_GET['id'].'&ip='.$_GET['ip']); case 'connect': @@ -344,6 +348,7 @@ if(!isset($nodeipdata['chkmac'])) $nodeipdata['chkmac'] = 0; if(!isset($nodeipdata['halfduplex'])) $nodeipdata['halfduplex'] = 0; + if(!isset($nodeipdata['nas'])) $nodeipdata['nas'] = 0; if(!$error) { @@ -431,6 +436,7 @@ if(!isset($nodeipdata['chkmac'])) $nodeipdata['chkmac'] = 0; if(!isset($nodeipdata['halfduplex'])) $nodeipdata['halfduplex'] = 0; + if(!isset($nodeipdata['nas'])) $nodeipdata['nas'] = 0; if(!$error) { @@ -547,6 +553,8 @@ $SMARTY->assign('replacelisttotal',$replacelisttotal); $SMARTY->assign('devlinktype',$SESSION->get('devlinktype')); $SMARTY->assign('nodelinktype',$SESSION->get('nodelinktype')); +// -- moje radius -- +$SMARTY->assign('nastype', $LMS->GetNAStype()); switch($edit) { diff -Naur ./lms-cvs/templates/netdevadd.html ./lms/templates/netdevadd.html --- ./lms-cvs/templates/netdevadd.html 2008-03-06 09:05:16.000000000 +0100 +++ ./lms/templates/netdevadd.html 2009-03-02 14:29:41.000000000 +0100 @@ -76,6 +76,69 @@ <INPUT TYPE="TEXT" NAME="netdev[location]" VALUE="{$netdev.location}" {tip text="Enter device location (optional)"}> </TD> </TR> +<!-- moje radius --> +{if $_config.phpui.radius|chkconfig} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"><BR> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Shortname:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[shortname]" VALUE="{$netdev.shortname}" MAXLENGTH="32" {tip trigger="shortname" text="Enter shortname (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Type:{/t}</B> + </TD> + <TD WIDTH="98%"> + <SELECT NAME="netdev[nastype]" {tip text="Select type (optional)"}> + <OPTION VALUE="0"</OPTION> + {foreach from=$nastype item=item key=key} + <OPTION VALUE="{$item.name}" {if $item.name==$netdevices.nastype} SELECTED{/if}>{$item.name}</OPTION> + {/foreach} + </SELECT> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Max clients:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[clients]" VALUE="{$netdev.clients}" {tip trigger="clients" text="Enter max clients (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Secret:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[secret]" VALUE="{$netdev.secret}" MAXLENGTH="60" {tip text="Enter secret (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Community:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[community]" VALUE="{$netdev.community}" MAXLENGTH="50" {tip text="Enter community (optional)"}> + </TD> + </TR> +{/if} +<!-- moje off --> </TABLE> </TD> <TD WIDTH="50%" style="vertical-align:top;"> diff -Naur ./lms-cvs/templates/netdeveditbox.html ./lms/templates/netdeveditbox.html --- ./lms-cvs/templates/netdeveditbox.html 2008-03-06 09:05:16.000000000 +0100 +++ ./lms/templates/netdeveditbox.html 2009-03-02 13:51:55.000000000 +0100 @@ -75,6 +75,74 @@ <INPUT TYPE="TEXT" NAME="netdev[location]" VALUE="{$netdevinfo.location}" {tip text="Enter device location (optional)"}> </TD> </TR> +<!-- moje radius --> +{if $_config.phpui.radius|chkconfig} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"><BR> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Shortname:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[shortname]" VALUE="{$netdevinfo.shortname}" {tip text="Enter shortname (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Type:{/t}</B> + </TD> + <TD WIDTH="98%"> + <SELECT NAME="netdev[nastype]" {tip text="Select type (optional)" trigger="type"}> + <OPTION VALUE="0"</OPTION> + {foreach from=$nastype item=item key=key} + <OPTION VALUE="{$item.name}" {if $item.name==$netdevinfo.nastype} SELECTED{/if}>{$item.name}</OPTION> + {/foreach} + </SELECT> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Max clients:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[clients]" VALUE="{$netdevinfo.clients}" {tip text="Enter max clients (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Secret:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[secret]" VALUE="{$netdevinfo.secret}" {tip text="Enter secret (optional)"}> + </TD> + </TR> + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Community:{/t}</B> + </TD> + <TD WIDTH="98%"> + <INPUT TYPE="TEXT" NAME="netdev[community]" VALUE="{$netdevinfo.community}" {tip text="Enter community (optional)"}> + </TD> + </TR> +{/if} +<!-- moje off --> </TABLE> </TD> <TD WIDTH="50%" style="vertical-align:top;"> diff -Naur ./lms-cvs/templates/netdevinfobox.html ./lms/templates/netdevinfobox.html --- ./lms-cvs/templates/netdevinfobox.html 2008-01-22 08:43:46.000000000 +0100 +++ ./lms/templates/netdevinfobox.html 2009-03-02 13:41:19.000000000 +0100 @@ -88,6 +88,79 @@ </TD> </TR> {/if} +<!-- moje radius--> +{if $_config.phpui.radius|chkconfig} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"><BR> + </TD> + </TR> + {if $netdevinfo.shortname} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Shortname:{/t}</B> + </TD> + <TD WIDTH="98%"> + {$netdevinfo.shortname} + </TD> + </TR> + {/if} + {if $netdevinfo.nastype} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Type:{/t}</B> + </TD> + <TD WIDTH="98%"> + {$netdevinfo.nastype} + </TD> + </TR> + {/if} + {if $netdevinfo.clients} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Max clients:{/t}</B> + </TD> + <TD WIDTH="98%"> + {$netdevinfo.clients} + </TD> + </TR> + {/if} + {if $netdevinfo.secret} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Secret:{/t}</B> + </TD> + <TD WIDTH="98%"> + {$netdevinfo.secret} + </TD> + </TR> + {/if} + {if $netdevinfo.community} + <TR CLASS="LIGHT"> + <TD WIDTH="1%"> + <IMG SRC="img/division.gif" ALT=""> + </TD> + <TD WIDTH="1%" NOWRAP> + <B>{t}Community:{/t}</B> + </TD> + <TD WIDTH="98%"> + {$netdevinfo.community} + </TD> + </TR> + {/if} +{/if} +<!-- moje off --> </TABLE> </TD> <TD WIDTH="50%" style="vertical-align:top;"> diff -Naur ./lms-cvs/templates/netdevipaddbox.html ./lms/templates/netdevipaddbox.html --- ./lms-cvs/templates/netdevipaddbox.html 2008-12-28 20:03:27.000000000 +0100 +++ ./lms/templates/netdevipaddbox.html 2009-03-02 22:31:20.000000000 +0100 @@ -31,6 +31,7 @@ <INPUT TYPE="TEXT" NAME="ipadd[ipaddr]" VALUE="{$nodeipdata.ipaddr}" {tip text="Enter IP address" trigger="ipaddr"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.editipaddr['ipadd[ipaddr]'],0,{$netdevinfo.id});" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {if $_config.phpui.pubip|chkconfig} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/ip_pub.gif" ALT="{t}Pub. IP address:{/t}"> @@ -42,6 +43,7 @@ <INPUT TYPE="TEXT" NAME="ipadd[ipaddr_pub]" VALUE="{$nodeipdata.ipaddr_pub}" {tip text="Enter IP address (optional)" trigger="ipaddr_pub"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.editipaddr['ipadd[ipaddr_pub]'],0,{$netdevinfo.id});" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {/if} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/mac.gif" ALT=""> @@ -74,6 +76,9 @@ <TD WIDTH="98%" NOWRAP> {t}MAC checking{/t}: <INPUT TYPE="checkbox" NAME="ipadd[chkmac]" VALUE="1" {tip text="Enable/disable MAC address checking" trigger="chkmac"}{if !isset($nodeipdata.chkmac) || $nodeipdata.chkmac} checked{/if}> {t}Half duplex{/t}: <INPUT TYPE="checkbox" NAME="ipadd[halfduplex]" VALUE="1" {tip text="Select transmission mode" trigger="halfduplex"}{if $nodeipdata.halfduplex} checked{/if}> + {if $_config.phpui.radius|chkconfig} + {t}NAS{/t}: <INPUT TYPE="checkbox" NAME="ipadd[nas]" VALUE="1" {tip text="Select NAS on or off" trigger="nas"}{if $nodeipdata.nas} checked{/if}> + {/if} </TD> </TR> <TR CLASS="LIGHT"> diff -Naur ./lms-cvs/templates/netdevipeditbox.html ./lms/templates/netdevipeditbox.html --- ./lms-cvs/templates/netdevipeditbox.html 2008-12-28 20:03:27.000000000 +0100 +++ ./lms/templates/netdevipeditbox.html 2009-03-02 22:51:19.000000000 +0100 @@ -37,6 +37,7 @@ <INPUT TYPE="TEXT" NAME="ipadd[ipaddr]" VALUE="{$nodeipdata.ipaddr}" {tip text="Enter IP address" trigger="ipaddr"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.editipaddr['ipadd[ipaddr]'],{$nodeipdata.netid},{$netdevinfo.id});" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {if $_config.phpui.pubip|chkconfig} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/ip_pub.gif" ALT=""> @@ -48,6 +49,7 @@ <INPUT TYPE="TEXT" NAME="ipadd[ipaddr_pub]" VALUE="{if $nodeipdata.ip_pub!="0.0.0.0"}{$nodeipdata.ip_pub}{/if}" {tip text="Enter IP address" trigger="ipaddr_pub"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.editipaddr['ipadd[ipaddr_pub]'],{$nodeipdata.netid},{$netdevinfo.id});" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {/if} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/mac.gif" ALT=""> @@ -80,6 +82,10 @@ <TD WIDTH="99%" NOWRAP> {t}MAC checking{/t}: <INPUT TYPE="checkbox" NAME="ipadd[chkmac]" VALUE="1" {tip text="Enable/disable MAC address checking" trigger="chkmac"}{if $nodeipdata.chkmac} checked{/if}> {t}Half duplex{/t}: <INPUT TYPE="checkbox" NAME="ipadd[halfduplex]" VALUE="1" {tip text="Select transmission mode" trigger="halfduplex"}{if $nodeipdata.halfduplex} checked{/if}> + {if $_config.phpui.radius|chkconfig} + + {t}NAS{/t}: <INPUT TYPE="checkbox" NAME="ipadd[nas]" VALUE="1" {tip text="Select NAS on or off" trigger="nas"}{if $nodeipdata.nas} checked{/if}> + {/if} </TD> </TR> <TR CLASS="LIGHT"> diff -Naur ./lms-cvs/templates/netdevipinfobox.html ./lms/templates/netdevipinfobox.html --- ./lms-cvs/templates/netdevipinfobox.html 2008-12-28 20:03:27.000000000 +0100 +++ ./lms/templates/netdevipinfobox.html 2009-03-02 23:26:45.000000000 +0100 @@ -7,6 +7,7 @@ else location.href = '?m=netdevedit&id={$netdevinfo.id}&ip={$nodeipdata.id}&action=chkmac&chkmac=0'; {literal}}{/literal} + function duplex_change() {literal}{{/literal} if(document.getElementById('duplex').checked) @@ -14,6 +15,14 @@ else location.href = '?m=netdevedit&id={$netdevinfo.id}&ip={$nodeipdata.id}&action=duplex&duplex=0'; {literal}}{/literal} + + function nas_change() +{literal}{{/literal} + if(document.getElementById('nas').checked) + location.href = '?m=netdevedit&id={$netdevinfo.id}&ip={$nodeipdata.id}&action=nas&nas=1'; + else + location.href = '?m=netdevedit&id={$netdevinfo.id}&ip={$nodeipdata.id}&action=nas&nas=0'; +{literal}}{/literal} </SCRIPT> <TABLE WIDTH="100%" CELLPADDING="3"> <TR CLASS="DARK"> @@ -71,6 +80,10 @@ <TD WIDTH="99%" COLSPAN="2"> {t}MAC checking{/t}: <INPUT TYPE="checkbox" NAME="chkmac" ID="chkmac" VALUE="1" {if $nodeipdata.chkmac} checked{/if} onclick="chkmac_change();"> {t}Half duplex{/t}: <INPUT TYPE="checkbox" NAME="duplex" ID="duplex" VALUE="1" {if $nodeipdata.halfduplex} checked{/if} onclick="duplex_change();"> + {if $_config.phpui.radius|chkconfig} + + {t}NAS{/t}: <INPUT TYPE="checkbox" NAME="nas" ID="nas" VALUE="1" {if $nodeipdata.nas} checked{/if} onclick="nas_change();"> + {/if} </TD> </TR> <TR CLASS="LIGHT"> diff -Naur ./lms-cvs/templates/nodeaddbox.html ./lms/templates/nodeaddbox.html --- ./lms-cvs/templates/nodeaddbox.html 2008-12-28 20:03:28.000000000 +0100 +++ ./lms/templates/nodeaddbox.html 2009-03-02 12:47:47.000000000 +0100 @@ -24,6 +24,7 @@ <INPUT TYPE="TEXT" NAME="nodedataipaddr" VALUE="{$nodedata.ipaddr}" {tip text="Enter IP address" trigger="ipaddr"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.nodeadd.nodedataipaddr);" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {if $_config.phpui.pubip|chkconfig} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/ip_pub.gif" ALT="{t}Pub. IP address:{/t}"> @@ -32,6 +33,7 @@ <INPUT TYPE="TEXT" NAME="nodedataipaddr_pub" VALUE="{$nodedata.ipaddr_pub}" {tip text="Enter IP address (optional)" trigger="ipaddr_pub"}> <a href="javascript: void(0);" onClick="return ipchoosewin(document.nodeadd.nodedataipaddr_pub);" {tip text="Click to select IP from the list"}>»»»</A> </TD> </TR> + {/if} <TR CLASS="LIGHT"> <TD WIDTH="1%"> <IMG SRC="img/mac.gif" ALT="{t}MAC address:{/t}"> !DSPAM:49b7bf7d147101327519691!
wybaczcie ze sie czepiam ale mialo byc wszystko na widoku a nie widze radcheck radgroup itp itd tylko sieczke zapytan w authorization, ale pomimo tego wyglada na to że jest ok, chociaz nie mialem okazji jeszcze tego zaaplikowac !DSPAM:49b837f8245244073210324!
wybaczcie ze sie czepiam ale mialo byc wszystko na widoku a nie widze radcheck radgroup itp itd tylko sieczke zapytan w authorization, ale pomimo tego wyglada na to że jest ok, chociaz nie mialem okazji jeszcze tego zaaplikowac widoku w sensie views ? jesli to miales na mysli to niestety nie dalo sie tego zrobic ladniej z uwagi na ograniczenia mysql dlatego w sql.conf sa takie fajne, nieco przydlugie zapytania :) ale zapewniam ze wszystko dziala jak
Dnia środa, 11 marca 2009 23:15, Michał Gacek napisał: powinno co produkcyjnie mam wdrozone i przetestowane. moze kiedys bedzie mozna zrobic z tego views'a a te zapytania zamienic na standartowe z orginalnego konfiga. tak chcialem to zrobic ale jak juz pisalem na ta chwile "ne da se". p.s. nie wszystkie tabele radiusa sa przeniesione do lmsa z uwagi na fakt ze i tak na ta chwile nie byly by w zaden sposob wspierane/wykorzystane. jest to co ma szanse byc w niedlugim czasie rozwijane dalej i to co bedzie przydatne wiekszosci z nas juz teraz. z drugiej strony nie widze problemu zeby dodac wszystko co mozliwe do bazy jesli takie beda oczekiwania, w koncu puste tabele specjalnie nie ciaza ;) -- Robert CyberM !DSPAM:49b84e9a257327480988918!
On Wed, 11 Mar 2009 14:42:50 +0100, A.L.E.C wrote
W załączeniu patch, który otrzymałem od Roberta (CyberM) odnośnie Radiusa w LMSie. Patch wymaga kilku zmian dla postgresa, a ponieważ w tym tygodniu mogę nie mieć czasu go dopracować, więc przesyłam tutaj. Może ktoś będzie miał ochotę przeglądnąć/poprawić/skomentować.
-- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net
No fajnie ale jak by tam było prekonfigurowane jako modelowy działający od razu przykład coś standardowego obsługiwanego natywnie przez systemy operacyjne i profesjonalne AP (mikrotikowi to sie też przyda) jak np IEEE 802.1x authentication z EAP-PEAP, żeby to wparcie LMS-a dla radiusa się na coś administratorom w firmach korzystającym z wifi przydało. Bo tu radius może sie najbardziej przydać zapewniając oprócz bezpiecznej autoryzacji także żonglerkę unikanymi kluczami dla WPA/WPA2 per user itd itp. Po co komu pppoe jak się na AP można włamać bo klucz od wieków nie zmieniany i na dodatek jednakowy dla wszystkich userów. Może więc wykorzystajmy radiusa najpierw do porządnego zabezpieczenia warstwy 2. pozdrawiam Dariusz Kowalczyk !DSPAM:49b856dd262322042218820!
No fajnie ale jak by tam było prekonfigurowane jako modelowy działający od razu przykład coś standardowego obsługiwanego natywnie przez systemy operacyjne i profesjonalne AP (mikrotikowi to sie też przyda) jak np IEEE 802.1x authentication z EAP-PEAP, żeby to wparcie LMS-a dla radiusa się na pisalem juz kilka raze ze lms nie wspiera radiusa, udostepnia mu informacje (oczywiscie w okreslonym zakresie) to subtelna lecz istotna roznica :) nikt Ci przeciez nie broni uzywac dodatkowych aktualnie dostepnych "inaczej" opcji i atrybutow radiusa. inna rzecz... kiedys jeden z moich klientow (operator) wyslal zapytania ofertowe dotyczace wdrozenia 802.1x i wiesz co... nikt nie chcial im dac prekonfigurowanego, dzialajacego od razu przykladu ;) wiec jak masz to sie podziel gotowym rozwiazaniem to sie je zaimplementuje :)
coś administratorom w firmach korzystającym z wifi przydało. Bo tu radius może sie najbardziej przydać zapewniając oprócz bezpiecznej autoryzacji także żonglerkę unikanymi kluczami dla WPA/WPA2 per user itd itp. Po co komu pppoe jak się na AP można włamać bo klucz od wieków nie zmieniany i na dodatek jednakowy dla wszystkich userów. znasz opis zlamania WPA2 ? swoja droga jak znajde nastepna wolna chwile to dopisze obsluge indywidualnych kluczy WPA2 bo i tak o tym myslalem juz wczesniej. swoja droga ilu kolegow ma indywidualne klucze dla wszystkich klientow albo choc wszystkich baz ?
Może więc wykorzystajmy radiusa najpierw do porządnego zabezpieczenia warstwy 2. moze nie wszystko na raz, pisalem dosc dawno co jest robione, do czego sie przyda i jakie daje korzysci. warstwe druga pewnie masz zabezpieczona i bez lmsa :) -- Robert CyberM
!DSPAM:49b864fa269949813612796!
W dniu 12 marca 2009 01:27 użytkownik Dariusz Kowalczyk - Webvisor <dariusz.kowalczyk@webvisor.pl> napisał:
Po co komu pppoe jak się na AP można włamać bo klucz od wieków nie zmieniany i na dodatek jednakowy dla wszystkich userów.
heh jak na ap sie włamać, możesz co najwyżej sie z authentykować, choć aby nie autentykować wszystkich jak leci sa na to sposoby bez szyfrowania, a jak masz default forward wylaczone i sciagniete adresy ip z interfejsow, to ci moga wiesz naskoczyc... do 802.11x sa tylko porzebne odpowiednie atrybuty w radcheck i radreply których to tabel niestety nie ma... Robercie, mógłbyś mi powiedziec dlaczego nie dało sie widoku zrobic :>? co viewsy maja ograniczona dlugosc zapytania czy jak... Pytam z ciekawosci bo widokami się jeszcze nie bawiłem ;> !DSPAM:49b8d7003762042218820!
W dniu 12 marca 2009 10:38 użytkownik Przemysław Kudyba <przemekk@zwierzu.zepsul.net> napisał:
Michał Gacek pisze:
do 802.11x sa tylko porzebne odpowiednie atrybuty w radcheck i radreply których to tabel niestety nie ma...
Jakie ?
wszystko zalezy od tego jakiej autentykacji uzyjesz, radius niestety ma zbyt wiele mozliwosci, i ciezko jest to wszystko ogarnac, ale jezeli chcesz juz cos robic konkretniej to niestety musisz stosowac grupy do userow, szczegolnie jezeli chcesz robic 802.1x w polaczeniu z pppoe... liste atrybutow masz tutaj: http://freeradius.org/rfc/attributes.html ale przeciez ty to wszystko wiesz, tylko ładujesz mnie pod .... ;) !DSPAM:49b8dd9210251989010922!
Michał Gacek pisze:
W dniu 12 marca 2009 10:38 użytkownik Przemysław Kudyba <przemekk@zwierzu.zepsul.net> napisał:
Michał Gacek pisze:
do 802.11x sa tylko porzebne odpowiednie atrybuty w radcheck i radreply których to tabel niestety nie ma...
Jakie ?
wszystko zalezy od tego jakiej autentykacji uzyjesz, radius niestety ma zbyt wiele mozliwosci, i ciezko jest to wszystko ogarnac, ale jezeli chcesz juz cos robic konkretniej to niestety musisz stosowac grupy do userow, szczegolnie jezeli chcesz robic 802.1x w polaczeniu z pppoe...
liste atrybutow masz tutaj: http://freeradius.org/rfc/attributes.html
ale przeciez ty to wszystko wiesz, tylko ładujesz mnie pod .... ;)
No bo właśnie ryczysz i mleka nie dajesz :) Zamiast opowiedzieć konkrwetnie to mnie zbywasz jakąś listą atrybutów. Prawda jest taka że całe magiczne 802.1x - w najprostrzym układzie, to nic więcej jak MSCHAPv2 opakowane w EAP . Zadnych dodatkowych Twoich farmazonów mu nie trzeba. !DSPAM:49b8e8c920221910919020!
W dniu 12 marca 2009 11:49 użytkownik Przemysław Kudyba <przemekk@zwierzu.zepsul.net> napisał:
No bo właśnie ryczysz i mleka nie dajesz :) Zamiast opowiedzieć konkrwetnie to mnie zbywasz jakąś listą atrybutów. Prawda jest taka że całe magiczne 802.1x - w najprostrzym układzie, to nic więcej jak MSCHAPv2 opakowane w EAP . Zadnych dodatkowych Twoich farmazonów mu nie trzeba.
ok ale jak chcesz zrobić wpa2 z osobnymi kluczami, lub nawet certyfikatami dla kazdego usera osobno, i dodatkowo jeszcze pppoe i inne ustrojstwa to juz trzeba sie posluzyc dodatkowymi atrybutami.... masz racje czasami za duzo rycze ;p, nigdy nie mówiłem że jestem mega tak jak ty, ja po prostu chciałem, aby lms był tak spięty z radiusem, abym mógł sobie kiedyś rozwinąć autentykacje w swojej sieci, bo narazie mam tylko pppoe, pozatym uzywam paru narzedzi ktore odwoluja sie do standardowej bazy radiusa... i ciezko jest mi przyjac obecne tu rozwiazanie ;), ale przeciez ja juz o tym mowilem :D Robercie, postaram się zgłębić twojego patcha i coś wymyśleć, aby bylo po mojemu ;_ !DSPAM:49b8efc725789813612796!
Michał Gacek pisze:
W dniu 12 marca 2009 11:49 użytkownik Przemysław Kudyba <przemekk@zwierzu.zepsul.net> napisał:
No bo właśnie ryczysz i mleka nie dajesz :) Zamiast opowiedzieć konkrwetnie to mnie zbywasz jakąś listą atrybutów. Prawda jest taka że całe magiczne 802.1x - w najprostrzym układzie, to nic więcej jak MSCHAPv2 opakowane w EAP . Zadnych dodatkowych Twoich farmazonów mu nie trzeba.
ok ale jak chcesz zrobić wpa2 z osobnymi kluczami, lub nawet certyfikatami dla kazdego usera osobno, i dodatkowo jeszcze pppoe i inne ustrojstwa to juz trzeba sie posluzyc dodatkowymi atrybutami....
masz racje czasami za duzo rycze ;p, nigdy nie mówiłem że jestem mega tak jak ty, ja po prostu chciałem, aby lms był tak spięty z radiusem, abym mógł sobie kiedyś rozwinąć autentykacje w swojej sieci, bo narazie mam tylko pppoe, No to może najpierw spróbuj z tym WPA+802.1x korzystając z tego co masz
Jakimi? pod ręką zamiast wymyślać kanciate jajka.
pozatym uzywam paru narzedzi ktore odwoluja sie do standardowej bazy radiusa... i ciezko jest mi przyjac obecne tu rozwiazanie ;), ale przeciez ja juz o tym mowilem :D
I konkretnie jakie funkcje one (te dodatkowe narzędzia) realizują ?
Robercie, postaram się zgłębić twojego patcha i coś wymyśleć, aby bylo po mojemu ;_
Może nie zawsze "po mojemu" == "dobrze" ;) Pozdrawiam. !DSPAM:49b8f2d231727480988918!
W dniu 12 marca 2009 12:32 użytkownik Przemysław Kudyba <przemekk@zwierzu.zepsul.net> napisał:
Jakimi? myślałem, że tą kwestie już ci wyjaśniłem, przeczytałem o tym jak wprowadzałem pppoe u siebie, zreszta nie chodzi tutaj o to, radius ma długą liste atrybutów, ciekawych atrybutów, które można wykorzystać, fajnie by było nie odcinać sobie do tego drogi...
I konkretnie jakie funkcje one (te dodatkowe narzędzia) realizują ?
np. ara, statystyki głównie
Może nie zawsze "po mojemu" == "dobrze" ;) uwielbiam polemiki z tobą zły zwierzu;) nigdy nie twierdziłem, że po mojemu znaczy dobrze, ale skoro wszystko jest jeszcze w toku, to może jakby udało mi się wymyśleć coś na rozwiazanie problemu, a nóż by się przyjeło. O to głównie tutaj chodzi o burze mózgów, i o koniec z domowymi kolanowymi rozwiązaniam... Pozatym wczesnije były ustalone pewne założenia, do których jak najbardziej chce dążyc, a obecny patch to przecie z dopiero początek
3 sprawa, jesteś takim mózgiem, wszyscy cię chwalą, czemu nie zrobisz czegos pozytecznego dla wszystkich, a tylko odzywasz sie, jak trzeba komuś pojechac ;>, na trzepaku to samo... Masz ogromną wiedze zrób z niej użytek, wpisz się w karty historii... <lol> Pozdrawiam !DSPAM:49b8f7f636141804284693!
Jak wrócę z roboty, to dorzucę swoje 0.03PLN. Póki co, źli ludzie arpingują mi 192.168.1.254 w zbridgowanej części sieci i wszystkie BB im ochoczo odpowiadają ;) !DSPAM:49b8fc7441421310814384!
masz racje czasami za duzo rycze ;p, nigdy nie mówiłem że jestem mega tak jak ty, ja po prostu chciałem, aby lms był tak spięty z radiusem, abym mógł sobie kiedyś rozwinąć autentykacje w swojej sieci, bo narazie mam tylko pppoe, pozatym uzywam paru narzedzi ktore odwoluja sie do standardowej bazy radiusa... i ciezko jest mi przyjac obecne tu rozwiazanie ;), ale przeciez ja juz o tym mowilem :D tez do tego zmierzam ale chcialem udostepnic to co bylo gotowe juz teraz zeby inni mogli z tego korzystac juz teraz. docelowo pewnie przeniose wszystkie tabele radiusa do bazy lmsa i z czasem pewnie bedzie to w pelni wspierane.
Robercie, postaram się zgłębić twojego patcha i coś wymyśleć, aby bylo po mojemu ;_ dawaj co masz :) podzielilem sie swoimi rozwiazaniami i pomyslami ze skromna nadzieja ze inni zaczna robic tak samo. oczywiscie moja prace ktos wspieral datkami :) ja tez kogos przy okazji subtelnie wsparlem ale wszystko dla dobra ogolu :D -- Robert CyberM
!DSPAM:49b9101561771989010922!
do 802.11x sa tylko porzebne odpowiednie atrybuty w radcheck i radreply których to tabel niestety nie ma... radreply jest i jest zapytanie do tego choc nie ma jeszcze mechanizmu obslugi w lmsie... zakladam ze kiedys bedzie
Robercie, mógłbyś mi powiedziec dlaczego nie dało sie widoku zrobic :>? co viewsy maja ograniczona dlugosc zapytania czy jak... ano sa pewne ograniczenia dla mysql, nie da sie zrobic views'a zapytaniem zawierajacym podzapytanie a takie wlasnie to zapytanie musi byc. jakzniknie to ograniczenie to bedzie to przerobione tak zeby w sql.conf pozostawalo jak najwiecej z orginalnej konfiguracji zeby docelowo ze zmieniac tylko login, haslo i nazwe bazy -- Robert CyberM
!DSPAM:49b8e20213601703090906!
Witam Czy ktos mi moze powiedziec co na temat tego jak LMS obsluguje taka sytuacje: Komputer klienta jest za accesspointem (nazywajmy go AP) (co w sieciach radiowych jest czeste), ktory swoim MAC adresem maskuje MAC adres karty sieciowej komputera klienta. Serwer widzi MAC adres AP i ten wpis jest w ethers, iptables itd itd. Natomiast ten MAC adres jest nieprzydatny dla np dhcp - tam jest wymagany MAC adres karty sieciowej komputera klienta. Ja nie widze jakiesj opcji, przy dodawaniu komputera klienta, ktora by mowila "za MAC adresem AP", "to jest MAC AP a to karty sieciowej komputera", nie widze jakiegos pola np IP dla AP i MAC dla AP i osobno to samo dla komputera. Jak to jest w LMS? Musialy by byc min dwa wpisy dla klienta 1 - IP komputera oraz MAC adres jego karty sieciowej - przytdatne dla dhcp i skryptu generujacego dhcp.conf 2 - IP (opcjonalnie) oraz koniecznie MAC adres tego accesspointa - dla odpowiednich wpisow iptables itp bo ja jakos tego nie wiedze a przydalo by sie. moze da sie inaczej? !DSPAM:49b8dbce8192889253296!
A.L.E.C pisze:
W załączeniu patch, który otrzymałem od Roberta (CyberM) odnośnie Radiusa w LMSie. Patch wymaga kilku zmian dla postgresa, a ponieważ w tym tygodniu mogę nie mieć czasu go dopracować, więc przesyłam tutaj. Może ktoś będzie miał ochotę przeglądnąć/poprawić/skomentować.
Witam, moje uwagi poniżej. 1) Po co wprowadzać opcję 'pubip' w UI ? 2) W tabeli radacct przechowywane są dane, które są już w tabeli stats (mam na myśli 'AcctInputOctets', 'AcctOutputOctets' w 'radacct' i 'upload', 'download' w 'stats'). Nie ma sensu trzymać nadmiarowych danych, nie wspominając, o tym, że LMS nie skorzysta z nich, bo statystyki używają tablicy 'stats'. Moja sugestia jest taka, że jeżeli już umieszczać tablicę radacct w bazie, to warto przerobić LMSa, tak, aby zamiast z tabeli 'stats' korzystał z radacct. Trzeba będzie w tym celu przerobić też moduł kompaktujący statystki, tak, żeby nie usuwał początków i końców sesji, a jedynie wpisy typu InterimUpdate. Dzięki temu w LMS będzie można przeglądać logi z sesji i generować statystki ruchu na podstawie danych z jednej tabeli. -- Pozdrawiam Grzegorz Chwesewicz, Chilan mailto:grzegorz.chwesewicz@chilan.com
W dniu 12 marca 2009 12:18 użytkownik Grzegorz Chwesewicz <grzegorz.chwesewicz@chilan.com> napisał:
2) W tabeli radacct przechowywane są dane, które są już w tabeli stats (mam na myśli 'AcctInputOctets', 'AcctOutputOctets' w 'radacct' i 'upload', 'download' w 'stats'). Nie ma sensu trzymać nadmiarowych danych, nie wspominając, o tym, że LMS nie skorzysta z nich, bo statystyki używają tablicy 'stats'.
boże, to że lms nie korzysta z tej tabeli nie znaczy, że inne narzędzie nie korzysta, to że lms jest za głupi żeby z niej korzystać no to już trudno, można zrobić zawsze opcje, dla ludzi którzy nie lubia nadmiarowości, zresztą accounting można wyłączyć z poziomu radiusa czy też samego nasa, wiec jedyne co zostanie to struktura dodatkowej bazy...
Moja sugestia jest taka, że jeżeli już umieszczać tablicę radacct w bazie, to warto przerobić LMSa, tak, aby zamiast z tabeli 'stats' korzystał z radacct. Trzeba będzie w tym celu przerobić też moduł kompaktujący statystki, tak, żeby nie usuwał początków i końców sesji, a jedynie wpisy typu InterimUpdate. Dzięki temu w LMS będzie można przeglądać logi z sesji i generować statystki ruchu na podstawie danych z jednej tabeli.
Marzy mi się to bardzo mocno:), ale prędko chyba nie nastanie... bo trzeba by bylo przerobic to co do tej pory korzystalo z tabeli stats i do niej rozne rzeczy wstawialo, przeciez nie wszyscy maja, beda miec radiusa... Pozdrawiam !DSPAM:49b8f0f427004073210324!
A nie latwiej przerobic zapytania radiusa z sql.conf zeby braly te informacje ze 'stats' ??? to tylko taka moja sugestia mala nie mam u siebie radiusa ale zamierzam wprowadzic, a po co dodatkowe tabele pola itd... jak mozna tylko zmienic zapytania !DSPAM:49b8f1cc28586258220944!
W dniu 12 marca 2009 12:28 użytkownik Przemysław Bryniak <hacus@tlen.pl> napisał:
A nie latwiej przerobic zapytania radiusa z sql.conf zeby braly te informacje ze 'stats' ???
to tylko taka moja sugestia mala nie mam u siebie radiusa ale zamierzam wprowadzic, a po co dodatkowe tabele pola itd... jak mozna tylko zmienic zapytania
a żeś wyskoczył, co prawda mozna zmienic insterty interim update itp, ale temat był dłubany wiele wątków wczesniej, że to lms ma byc zgodny z radiusem a nie na odwrót ;), pozatym stats lmsa, wypada naprawde bladziutko przy radacct, po co ucinac sobie mozliwosci... ale dobra juz zamykam jape..... skoro patch juz jest i został ogolnie przyjety !DSPAM:49b8f2c130491614647931!
W dniu 12 marca 2009 12:28 użytkownik Przemysław Bryniak <hacus@tlen.pl> napisał:
A nie latwiej przerobic zapytania radiusa z sql.conf zeby braly te informacje ze 'stats' ???
to tylko taka moja sugestia mala nie mam u siebie radiusa ale zamierzam wprowadzic, a po co dodatkowe tabele pola itd... jak mozna tylko zmienic zapytania
a żeś wyskoczył, co prawda mozna zmienic insterty interim update itp, ale temat był dłubany wiele wątków wczesniej, że to lms ma byc zgodny z radiusem a nie na odwrót ;), pozatym stats lmsa, wypada naprawde bladziutko przy radacct, po co ucinac sobie mozliwosci... ale dobra juz zamykam jape..... skoro patch juz jest i został ogolnie przyjety
Nie no wiesz patch jest w "wersji" pierwszej :) mysle ze wszystko jest do przedyskutowania tylko wlasnie co z userami ktorzy nie maja/ nie beda miec radiusa.... coprawda tabele z radiusa beda miec wiec staty moga do niej leciec normalnie ... tylko jakos z glowa trzeba by to napisac albo trzymac 2 tabele i w zaleznosci od wyboru userka korzystac albo z tej albo z tej .... tylko trzeba jak napisalem znalezc jakis sensowny kompromis na to rozwiazanie !DSPAM:49b8f3a232401322221663!
Michał Gacek wrote:
boże, to że lms nie korzysta z tej tabeli nie znaczy, że inne narzędzie nie korzysta, to że lms jest za głupi żeby z niej korzystać no to już trudno, można zrobić zawsze opcje, dla ludzi którzy nie lubia nadmiarowości, zresztą accounting można wyłączyć z poziomu radiusa czy też samego nasa, wiec jedyne co zostanie to struktura dodatkowej bazy...
Dopóki LMS nie będzie umiał z tej tabeli skorzystać, jej struktura się w bazie nie znajdzie. Jeśli będzie komuś potrzebna, to sobie sam ją utworzy. Nie widzi mi się też pomysł rezygnowania z dotychczasowych statystyk i przechodzenie na strukturę radiusową, ona po prostu jest mniej optymalna od naszej jeśli chodzi o bardzo dużą ilość danych. Kluczem jest nazwa komputera (UserName) - porażka. Dla postgresa można zrobić kilka triggerów, żeby przerzucić dane z tej tabeli do LMSowej, ale dla mysql musielibyśmy podnieść wymagania, bo triggery są od 5.0.2. Wtedy statystyki transferów byłyby w stats, a cała radiusowa reszta w radacct. -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net !DSPAM:49b8f80d37362042218820!
A.L.E.C pisze:
Michał Gacek wrote:
boże, to że lms nie korzysta z tej tabeli nie znaczy, że inne narzędzie nie korzysta, to że lms jest za głupi żeby z niej korzystać no to już trudno, można zrobić zawsze opcje, dla ludzi którzy nie lubia nadmiarowości, zresztą accounting można wyłączyć z poziomu radiusa czy też samego nasa, wiec jedyne co zostanie to struktura dodatkowej bazy...
Dopóki LMS nie będzie umiał z tej tabeli skorzystać, jej struktura się w bazie nie znajdzie. Jeśli będzie komuś potrzebna, to sobie sam ją utworzy.
Nie widzi mi się też pomysł rezygnowania z dotychczasowych statystyk i przechodzenie na strukturę radiusową, ona po prostu jest mniej optymalna od naszej jeśli chodzi o bardzo dużą ilość danych. Kluczem jest nazwa komputera (UserName) - porażka. Dla postgresa można zrobić kilka triggerów, żeby przerzucić dane z tej tabeli do LMSowej, ale dla mysql musielibyśmy podnieść wymagania, bo triggery są od 5.0.2. Wtedy statystyki transferów byłyby w stats, a cała radiusowa reszta w radacct.
W takim razie warto rozszerzyć tabelę 'stats' o pola: type, ipaddr, sessionid. Wtedy będzie można za pomocą 'type' oznaczyć czy jest to SessionStart, InterimUpdate itd. 'ipaddr' przyda się do celów retencji połączeń, np. w sytuacji, gdy adresy IP komputerów są przydzielane dynamicznie. Za pomocą 'sessionid' będzie można łatwo wybierać dane dot. konkretnych sesji. W takim rozwiązaniu nie trzeba modyfikować LMS, a jedynie zmienić format danych dot. statystyk w jakim radius będzie przesyłał dane do LMS. Przykład: Początek sesji: type=1, dt=<aktualna_data>, upload,download=0, ipaddr=<adres_ip>, sessionid=asdf Aktualizacja danych: type=2, dt=<aktualna_data>, upload,download=xxx, ipaddr=<adres_ip>, sessionid=asdf Koniec sesji: type=3, dt=<aktualna_data>, upload,download=xxx, ipaddr=<adres_ip>, sessionid=asdf -- Pozdrawiam Grzegorz Chwesewicz, Chilan mailto:grzegorz.chwesewicz@chilan.com
W dniu 12 marca 2009 13:11 użytkownik Grzegorz Chwesewicz <grzegorz.chwesewicz@chilan.com> napisał:
W takim razie warto rozszerzyć tabelę 'stats' o pola: type, ipaddr, sessionid. Wtedy będzie można za pomocą 'type' oznaczyć czy jest to SessionStart, InterimUpdate itd. 'ipaddr' przyda się do celów retencji połączeń, np. w sytuacji, gdy adresy IP komputerów są przydzielane dynamicznie.
Za pomocą 'sessionid' będzie można łatwo wybierać dane dot.
konkretnych sesji.
W takim rozwiązaniu nie trzeba modyfikować LMS, a jedynie zmienić format danych dot. statystyk w jakim radius będzie przesyłał dane do LMS.
Przykład: Początek sesji: type=1, dt=<aktualna_data>, upload,download=0, ipaddr=<adres_ip>, sessionid=asdf
Aktualizacja danych: type=2, dt=<aktualna_data>, upload,download=xxx, ipaddr=<adres_ip>, sessionid=asdf
Koniec sesji: type=3, dt=<aktualna_data>, upload,download=xxx, ipaddr=<adres_ip>, sessionid=asdf
-- Pozdrawiam Grzegorz Chwesewicz, Chilan mailto:grzegorz.chwesewicz@chilan.com
_______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
!DSPAM:49b8fcfa42932010814668!
W takim razie warto rozszerzyć tabelę 'stats' o pola: type, ipaddr, sessionid. Wtedy będzie można za pomocą 'type' oznaczyć czy jest to SessionStart, InterimUpdate itd. 'ipaddr' przyda się do celów retencji połączeń, np. w sytuacji, gdy adresy IP komputerów są przydzielane dynamicznie.
nie chodzi nawet juz o dynamiczne przydzielanie, wystarczy ze zmienisz ludkowi z wew na publiczny pozniej z powrotem, po paru miechach wpada policja co z tego ze masz ip jak nie wiesz kto go wtedy uzywal... taka ekstremalna sytuacja, mozna oczyuwiscie sobie zapisywac te zmiany w polach do notatek ;), ale generalnie po to wlasnie jest radacct, zeby mieć kontrole i wszystko czarno na biały, kto co gdzie kiedy i ile... w lmsie podejrzewam ze jak sie zmieni ip userkowi to statystyki wczesniejsze trafia (chociaz nie jestem pewny bo nigdy tego nie uzywalem) Sorry za wczesniejszego smiecia nie wiem jak to sie stalo... Pozdrawiam !DSPAM:49b8fdf144891614647931!
W dniu 12 marca 2009 12:56 użytkownik A.L.E.C <alec@alec.pl> napisał:
Dla postgresa można zrobić kilka triggerów, żeby przerzucić dane z tej tabeli do LMSowej, ale dla mysql musielibyśmy podnieść wymagania, bo triggery są od 5.0.2. Wtedy statystyki transferów byłyby w stats, a cała radiusowa reszta w radacct.
Wydaje mi się że każdy rozsądny admin, który przesiadł się na gałęź 5.0.x w mysql dba o aktualizacje i napewno nie trzyma 5.0.1, wiec podniesienie wymagań raczej nie powinno być takie straszne Ale to tylko moje skromne zdanie... poza tym jest to wersja rozwojowa i chyba najlepszy moment na to aby takie zmiany wprowadzac !DSPAM:49b8feac46748045311664!
Michał Gacek wrote:
W dniu 12 marca 2009 12:56 użytkownik A.L.E.C <alec@alec.pl> napisał:
Dla postgresa można zrobić kilka triggerów, żeby przerzucić dane z tej tabeli do LMSowej, ale dla mysql musielibyśmy podnieść wymagania, bo triggery są od 5.0.2. Wtedy statystyki transferów byłyby w stats, a cała radiusowa reszta w radacct.
Wydaje mi się że każdy rozsądny admin, który przesiadł się na gałęź 5.0.x w mysql dba o aktualizacje i napewno nie trzyma 5.0.1, wiec podniesienie wymagań raczej nie powinno być takie straszne Ale to tylko moje skromne zdanie... poza tym jest to wersja rozwojowa i chyba najlepszy moment na to aby takie zmiany wprowadzac
Jeżeli o mnie chodzi to moglibyśmy zrezygnować z wspierania mysqla całkowicie ;) Ale w sumie masz rację, chyba świat się nie zawali jeśli zaczniemy wymagać 5.0 -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net !DSPAM:49b8ff3a48324380352099!
Jeżeli o mnie chodzi to moglibyśmy zrezygnować z wspierania mysqla całkowicie ;) Ale w sumie masz rację, chyba świat się nie zawali jeśli zaczniemy wymagać 5.0
-- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net
Jeśli to ma przyśpieszyć projekt LMS-a i ułatwić jego tworzenie i zarządzanie kodem to jestem za skorzystaniem tylko z jednej bazy danych np postgresql. Używamy co prawda mysql-a z lms ale jak trzeba przesiądziemy sie na postgresa Jak migracja bedzie łatwa a najlepiej automatyczna poprzez uruchomienie skryptu to pewnie nikt nie bedzie miał nic przeciw. Dariusz Kowalczyk !DSPAM:49b9457b97284380352099!
Witam Ustawilem naliczanie FV dla jednego klienta w sytemie kwartalnym jako data naliczania wybralem 01/01 czyli z tego co rozumiem pierwszy dzien pierwszego miesiaca, a date rozpoczecia na 01.03.2009. Przyszedl 01.03.2009 i... nie naliczylo FV! Czemu? Czy brane sa sztywne kwartaly w skali roku? Myslalem ze LMS zaczni mi naliczas kwartal od podanej daty (01.03.2009)?? !DSPAM:49be4381227887480988918!
A czy drugi kwartał nie zaczyna się przypadkiem 1.04.2009 ? (następne 1.07, 1.10) Rafał W dniu 2009-03-16, o godz. 13:18, "Igor Brzezek" <kursy@zalyski.pl> napisał(a):
Witam Ustawilem naliczanie FV dla jednego klienta w sytemie kwartalnym jako data naliczania wybralem 01/01 czyli z tego co rozumiem pierwszy dzien pierwszego miesiaca, a date rozpoczecia na 01.03.2009. Przyszedl 01.03.2009 i... nie naliczylo FV! Czemu? Czy brane sa sztywne kwartaly w skali roku? Myslalem ze LMS zaczni mi naliczas kwartal od podanej daty (01.03.2009)??
_______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
!DSPAM:49be474e231471252921014!
Dopóki LMS nie będzie umiał z tej tabeli skorzystać, jej struktura się w bazie nie znajdzie. Jeśli będzie komuś potrzebna, to sobie sam ją utworzy. w sumie dodalem to w patchu zeby w niedlugim czasie z tego korzystac w lmsie :) ale dodac tabele radacct do bazy mozna zawsze wiec upieral sie nie bede -- Robert CyberM
!DSPAM:49b9113a64047480988918!
Marzy mi się to bardzo mocno:), ale prędko chyba nie nastanie... bo trzeba by bylo przerobic to co do tej pory korzystalo z tabeli stats i do niej rozne rzeczy wstawialo, przeciez nie wszyscy maja, beda miec radiusa... chcialbym to zrobic tak zeby wlaczajac w gui wsparcie dla radiusa statystyki brane byly z radiusa. publiczne ip mozna wylaczyc w konfiguracji gui ) zawarlem to w tym patchu, wystarczy dodac opcje pubip=0, mnie to strasznie draznilo, paru znajomych tez wiec to zrobilem zwlaszcza ze nie bylo to nic wielkiego -- Robert CyberM
!DSPAM:49b90f3359974062814199!
Grzegorz Chwesewicz wrote:
1) Po co wprowadzać opcję 'pubip' w UI ?
myślę, że możemy się pozbyć opcji 'pubip' jak i 'radius' z patcha. -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net !DSPAM:49b8ffc249571336712104!
myślę, że możemy się pozbyć opcji 'pubip' jak i 'radius' z patcha. to mysle moglo by zostac, kodu raptem pare bajtow a jak ktos z tych funcjonalnosci nie korzysta bedzie mogl sobie wylaczyc przez co gui staje sie przejzystrze... no ale nie ja tu rzadze ;) niech sie koledzy wypowiedza -- Robert CyberM
!DSPAM:49b911ab65351711816961!
A.L.E.C pisze:
W załączeniu patch, który otrzymałem od Roberta (CyberM) odnośnie Radiusa w LMSie. Patch wymaga kilku zmian dla postgresa, a ponieważ w tym tygodniu mogę nie mieć czasu go dopracować, więc przesyłam tutaj. Może ktoś będzie miał ochotę przeglądnąć/poprawić/skomentować.
Jesli nie bylo powazniejszych zastrzezen to juz czas pewnie na prowadzenie tego patcha do cvs. Dalsze poprawki badz modyfikacje wyjda "w praniu" wiec poki co to nie ma co zwlekac, w koncu chyba zaplacone :) Jesli sie myle to mnie poprawcie. -- Pozdrawiam Tomasz Dąbek [Thomas] [gg:14553 mail:tdabek_NO_@go2.pl] !DSPAM:49c2f436202551804284693!
tdabek@go2.pl wrote:
Jesli nie bylo powazniejszych zastrzezen to juz czas pewnie na prowadzenie tego patcha do cvs. Dalsze poprawki badz modyfikacje wyjda "w praniu" wiec poki co to nie ma co zwlekac, w koncu chyba zaplacone :) Jesli sie myle to mnie poprawcie.
Może nie zapłaciłeś temu komu trzeba? ;) Oczywiście żartuję. Nie miałem czasu się tym zająć, a Robert zapowiadał jakieś poprawki, więc czekam. -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Project Developer http://roundcube.net !DSPAM:49c3cd6b326411989010922!
A.L.E.C pisze:
Może nie zapłaciłeś temu komu trzeba? ;) Oczywiście żartuję. Nie miałem czasu się tym zająć, a Robert zapowiadał jakieś poprawki, więc czekam.
Ok w takim razie czekamy na decydujace poprawki Roberta i mam nadzieje, ze lada chwila sie pojawia. Robercie, jak wyglada sprawa? Tam chyba wiele nie trzeba bylo poprawiac przynajmniej na tym etapie? -- Pozdrawiam Tomasz Dąbek [Thomas] [gg:14553 mail:tdabek_NO_@go2.pl] !DSPAM:49c3e5ac17332010814668!
czasu się tym zająć, a Robert zapowiadał jakieś poprawki, więc czekam. Ok w takim razie czekamy na decydujace poprawki Roberta i mam nadzieje, ze lada chwila sie pojawia. Robercie, jak wyglada sprawa? Tam chyba wiele nie trzeba bylo poprawiac przynajmniej na tym etapie? przepraszam za zwloke, musialem na pare dni wyjechac i nie mialem jak sie tym zajac. dajcie mi dzien/dwa, poprawie to co wyszlo w miedzy czasie i podesle patcha. -- Robert CyberM
!DSPAM:49c8c6fc202778616076440!
czasu się tym zająć, a Robert zapowiadał jakieś poprawki, więc czekam. witam na wstepie przepraszam za poslizg ale powrot nieco mi sie przesunal. w zalaczniku patch. poprawilem to co udalo sie znalesc. baza aktualizuje sie poprawnie, sprawdzilem dwa razy. do reszty zastrzezen zdaje sie nie bylo wiec teraz powienno wszystko grac. -- Robert CyberM
!DSPAM:49d1ca9e124164380352099!
Robert mam pytanie bo przejrzalem tego patcha recznie i chciales sie zapytac co to jest discount przy customer*.html ? :) ---- Wiadomość Oryginalna ---- Od: Robert <cyberm@sarocom.net> Do: lista użytkowników LMS <lms@lists.lms.org.pl> Data: 31 marca 2009 9:47 Temat: Re: [lms] radius patch
czasu się tym zająć, a Robert zapowiadał jakieś poprawki, więc czekam. witam na wstepie przepraszam za poslizg ale powrot nieco mi sie przesunal. w zalaczniku patch. poprawilem to co udalo sie znalesc. baza aktualizuje sie poprawnie, sprawdzilem dwa razy. do reszty zastrzezen zdaje sie nie bylo wiec teraz powienno wszystko grac. -- Robert CyberM
!DSPAM:49d1fb8c158214062814199!
uczestnicy (10)
-
A.L.E.C -
Dariusz Kowalczyk - Webvisor -
Grzegorz Chwesewicz -
Igor Brzezek -
Michał Gacek -
Przemysław Bryniak -
Przemysław Kudyba -
Rafał Ramocki -
Robert -
tdabek@go2.pl