• No results found

How to install RADIUSdesk on CentOS 6.4 using Nginx

N/A
N/A
Protected

Academic year: 2021

Share "How to install RADIUSdesk on CentOS 6.4 using Nginx"

Copied!
20
0
0

Loading.... (view fulltext now)

Full text

(1)

How to install RADIUSdesk

on CentOS 6.4 using Nginx

Freddy FALANGA

With this document you will install step by step RADIUSdesk on CentOS 6.4 32 bits using nginx web

server.

Important

This installation manual is a modification of the RADIUSdesk wiki page (based on Ubuntu 12.04)

modified and adapted for CentOS 6.4.

(2)

Background

Nginx

is a web server that is gaining a lot of popularity today.

It is fresh, lightweight, fast, scales well and is able to take a lot of load without overwhelming your system.

Nginx

is one of those things that will cross any web developer's path sooner or later.

This section will cover the steps you have to go through to get RADIUSdesk working with a

LEMP

stack CentOS 6.4

* A LEMP stack is one of those acronyms you can impress your friends with. It stands for Linux NginX MySQL and PHP.

What do we require

A standard

Nginx

install on CentOS is actually very simple.

The part that is more involved is to tweak

Nginx

to do the following:

Requirement

Comment

Interpret PHP Scripts

We would like the web server to call the PHP interpreter when a page ending with .php is requested.

Be able to have access to the MySQL

functions of PHP

Since we set up a LEMP server, we need to have a MySQL server installed and accessible from PHP.

Be as fast as possible

To be fast, especially with serving PHP scripts, we can use a caching module in PHP which will speed things up.

Modify the expiry date of http headers to

encourage caching

We want files that should should not change (e.g. css or images) to be cached on the client's side to make the client's

experience more pleasant

Compress text before they are served to the

client

We can compress the text that flows between the client and the server and in this way reduce the

over the line

bytes which in

turn should also give the client a more pleasant experience

Enable rewrite rules in CakePHP for

pretty URL's

CakePHP makes use of the .htaccess files in Apache to enable pretty URLs. Since Nginx does not support .htaccess files, we need

to change Nginx to behave in the same way.

Disable SELinux policy by editing /etc/sysconfig/selinux

SELinux = disable (default value is enforcing)

Flush iptables

iptables –F iptables –X

service iptables save

(3)

HOWTO

Enable epel repository (CentOS 6 32 bits)

yum install –y wget nano cd tmp/

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm

To verify your repository list run the command below

yum repolist

You will get something like this

repo id repo name status base CentOS-6 – Base 4 802 *epel Extra Packages for Enterprise Linux 6 - i386 8 120 extras CentOS-6 - Extras 12 updates CentOS-6 - Updates 0 repolist: 12 934

Install Nginx

We assume you have a clean install of CentOS 6.4

WITHOUT

Apache running (in Centos httpd dependency is required for php package).

service httpd stop chkconfig httpd off

Install Nginx

yum install nginx

Ensure the web server starts up and is running

service nginx start

Navigate to the IP Address of the server where you installed

Nginx

using a browser to ensure Nginx serves content e.g. http://your IP address (for example : http://192.168.0.1)

(4)

Configure Nginx to interpret .php files

php-fpm

The default install of

Nginx

does not support the serving of

.php

files.

We will install a program (actually a service) called

php-fpm

.

This service will listen for requests to interpret.

By default it listens on a network socket (127.0.0.1:9000)

We will change it to rather listen on a UNIX socket which will make things a bit faster.

Install the php-fpm service :

yum install -y php-fpm php php-pear php-gd php-common php-cli php-mysql system-config-network-tui nano wget unzip unixODBC postgresql

Edit /etc/php.ini

From

allow_call_time_pass_reference = Off short_open_tag = Off output_buffering = 4096 ;date.timezone =

To

allow_call_time_pass_reference = On short_open_tag = On output_buffering = 4096

date.timezone = Africa/Kinshasa (modify it to your regional settings)

Edit the config file so it creates a unix socket instead of a network socket to listen on.

nano /etc/php-fpm.d/www.conf

Change the listen part to the following:

(5)

listen = /var/run/php-fpm/php-fpm.sock

Start (Restart if you have already start it after installation) the php-fpm service :

service php-fpm restart

Modify Nginx

Now that the php-fpm service is configured we should change the default

Nginx

server to make use of it.

Edit the default server file:

nano /etc/nginx/conf.d/default.conf

Add

index.php

to this line:

#add index.php

index index.php index.html index.htm;

Activate PHP processing by uncommenting this this section. Note that we use the UNIX socket:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 #

location ~ \.php$ {

root /usr/share/nginx/html;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php;

include fastcgi_params; }

Enable the hiding of .htaccess files

# deny access to .htaccess files, if Apache's document root # concurs with nginx's one

#

location ~ /\.ht { deny all; }

Restart the

Nginx

web server's configuration

service nginx restart

Create a test

.php

file to confirm that it does work

(6)

Contents:

<?php

phpinfo(); ?>

Navigate to http://127.0.0.1/test.php and see if the page display the PHP info. (as shown below)

Install MySQL

Be sure to supply a root password for the MySQL database when asked for it if you are security conscious else simply hit the ESC key.

yum install –y mysql-server mysql

Performance tune Nginx

Enable caching of PHP code

Install and activate php-xcache.

yum install -y php-xcache service php-fpm restart

(7)

Modify expiry date for certain files

Edit the

/etc/nginx/sites-available/default

file:

nano /etc/nginx/conf.d/default.conf

Add the following inside the server section:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|js|css)$ {

rewrite ^/c2/rd_cake/webroot/(.*)$ /c2/rd_cake/webroot/$1 break; rewrite ^/c2/rd_cake/(.*)$ /c2/rd_cake/webroot/$1 break;

access_log off; expires max;

add_header Cache-Control public; }

Restart Nginx:

service nginx restart

Compress the text before sending it to client

Edit the main config file of

Nginx

.

nano /etc/nginx/nginx.conf

Change the compression section to contain the following:

#gzip on; #gzip_disable "msie6"; gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

gzip_buffers 16 8k;

gzip_disable "MSIE [1-6]\.(?!.*SV1)";

Restart Nginx

service nginx restart

Install RADIUSdesk

The first part prepared everything to install

RADIUSdesk

. This part will go through the steps to install the latest RADIUSdesk.

RADIUSdesk consists of three components.

(8)

o

rd_cake

is a CakePHP application and can be considered the engine room. Here the data is processed before being presented by the presentation layer.

o

rd_login_pages

is a directory with various login pages which are centrally managed through the RADIUSdesk

Dynamic login pages

applet.

We will use SVN (subversion) to either check out the latest version (trunk) of RADIUSdesk; or check out one of the tagged releases

Install CakePHP

Make sure the following packages are installed:

Download the 2.x version of CakePHP (Version 2.2.9 is recommended for its stability in CentOS). https://github.com/cakephp/cakephp/tags

There are two formats to choose from when selecting to download, Zip or Tar.gz. Select Tar.gz.

Copy and extract it inside the directory that Nginx is serving its content from (/usr/share/nginx/html by default on CentOS)

cp cakephp-2.2.9.tar.gz /usr/share/nginx/html cd /usr/share/nginx/html tar -xzvf cakephp-2.2.9.tar.gz ln -s ./cakephp-2.2.9 ./cake2

Restart php-fpm

service php-fpm restart

Install RADIUSdesk CakePHP Application

Install subversion in order for you to check out the latest source for RADIUSdesk.

yum install subversion

Check out the rd_cake branch from trunk to /usr/share/nginx/html.

cd /usr/share/nginx/html/cake2

svn checkout svn://[email protected]/p/radiusdesk/code/trunk/rd_cake ./rd_cake

If you are following the development of RADIUSdesk and want to make sure you have the latest SVN you can simply cd to /usr/share/nginx/html/cake2/rd_cake and

run

svn up [email protected]

to fetch the latest changes.

Change the following directories to be writable by apache:

chown -R apache. /usr/share/nginx/html/cake2/

The Database

Create the following blank database:

mysql -u root create database rd;

GRANT ALL PRIVILEGES ON rd.* to 'rd'@'127.0.0.1' IDENTIFIED BY 'rd'; GRANT ALL PRIVILEGES ON rd.* to 'rd'@'localhost' IDENTIFIED BY 'rd'; exit;

(9)

Populate the database (trunk):

mysql -u root rd < /usr/share/nginx/html/cake2/rd_cake/Setup/Db/rd.sql

If you use a tagged release:

mysql -u root rd < /usr/share/nginx/html/cake2/rd_cake/Setup/Db/rd_<tagged_version>.sql

If you are upgrading from a tagged release:

mysql -u root rd < /usr/share/nginx/html/cake2/rd_cake/Setup/Db/rd_beta<your_tagged_version>_to_beta<next_tagged_verion>.sql

Configure Nginx

Since CakePHP uses rewrite rules, we have to configure Nginx in such a way as to allow rewriting of the URL's that starts with /cake2/rd_cake.

Edit

/etc/nginx/conf.d/default.conf

nano /etc/nginx/conf.d/default.conf

Add the following section inside the server section:

location /cake2/rd_cake {

rewrite ^/cake2/rd_cake/(.*)$ /cake2/rd_cake/webroot/$1 break; try_files $uri $uri/ /cake2/rd_cake/webroot/index.php?q=$uri&$args; }

Restart the Nginx web server:

service nginx restart

Modify all the paths

Some paths were hard coded into the files of RADIUSdesk.

Since the files are no longer located under

/var/www

/ but rather located under

/usr/share/nginx/html

we need to change them.

Fortunately UNIX (including Linux) has some very powerful scripting tools available to do just that for us.

Run the following command to update the paths

ln -s /usr/share/nginx/html/ /etc/nginx/ (please don’t forget this symbolic link) cd /usr/share/nginx/html/cake2

bash -c "grep -R --files-with-matches '/var/www' . | sort | uniq | xargs perl -p -i.bak -e 's/\/var\/www\//\/usr\/share\/nginx\/html\//g'"

Test things out

RADIUSdesk supports multiple languages which are sourced during loading. To confirm that the CakePHP application is working as intended, go to this URL:

http://your IP address/cake2/rd_cake/phrase_values/get_language_strings.json?_dc=1355816922405&language=

Your browser should show a JSON encrypted string:

(10)

Congratulations you are almost there. Next we will install the viewer component

Viewer component

Check out the latest code of the viewer component under the /usr/share/nginx/html/ directory:

cd /usr/share/nginx/html/

svn checkout svn://[email protected]/p/radiusdesk/code/trunk/rd ./rd

If you are following the development of RADIUSdesk and want to make sure you have the latest SVN you can simply cd to /usr/share/nginx/html/rd and run

svn up [email protected]

to

fetch the latest changes.

For the viewer component you need the ExtJS toolkit. As of this writing the latest version of ExtJS is 4.2.0. The development however was done on 4.1.1. This version is not easy to find on

Sencha's download page so we've added it to the SVN repository for easy download

Checkout and unzip the GPL version under the /usr/share/nginx/html/rd directory.

NOTE

: This is a single big file which will take some time to download over slow connections.

cd /usr/share/nginx/html/

svn checkout svn://svn.code.sf.net/p/radiusdesk/code/extjs ./ mv ext-4.1.1a-gpl.zip ./rd

(11)

cd /usr/share/nginx/html/rd unzip ext-4.1.1a-gpl.zip

Rename the extracted directory to simply ext:

cd /usr/share/nginx/html/rd mv ext-4.1.1a ext

Copy the ux folder under examples to the src folder

cp -R /usr/share/nginx/html/rd/ext/examples/ux /usr/share/nginx/html/rd/ext/src

Now try to log in on the following URL with username

root

and password

admin

: http://your IP address/rd

Dynamic Login Pages

Check out the latest code of the dynamic login pages under the

/usr/share/nginx/html

/ directory:

cd /usr/share/nginx/html/

(12)

If you are following the development of RADIUSdesk and want to make sure you have the latest SVN you can simply cd to

/usr/share/nginx/html/rd_login_pages

and run

svn up [email protected]

to fetch the latest changes.

Speed things up

The Java Script code from SVN is not optimised. You can however make things a bit faster by the following tweaks.

Edit the

/usr/share/nginx/html/rd/app/app.js

file and modify the top part to force it to cache the files:

From

Ext.Loader.setConfig({enabled:true}); //Ext.Loader.setConfig({enabled:true,disableCaching: false});

To

//Ext.Loader.setConfig({enabled:true}); Ext.Loader.setConfig({enabled:true,disableCaching: false});

Edit the

/usr/share/nginx/html/rd/index.html

file and change this part:

<!-- <x-bootstrap> -->

<script src="ext/ext-dev.js"></script> <script src="bootstrap.js"></script> <!-- </x-bootstrap> -->

To look like this:

<!-- <x-bootstrap> -->

<script src="ext/ext-all.js"></script> <script src="bootstrap.js"></script> <!-- </x-bootstrap> -->

Cron Scripts

RADIUSdesk

requires a few scripts to run periodically in order to maintain a healthy and working system.

To activate the cron scripts execute the following command, which will add

RADIUSdesk

's crons scripts to the Cron system

For Apache

cp /var/www/cake2/rd_cake/Setup/Cron/rd /etc/cron.d/

For Nginx

cd /usr/share/nginx/html

bash -c "grep -R --files-with-matches '/var/www' . | sort | uniq | xargs perl -p -i.bak –e 's/\/var\/www\//\/usr\/share\/nginx\/www\//g'" cp /usr/share/nginx/html/cake2/rd_cake/Setup/Cron/rd /etc/cron.d/

If you want to change the default intervals at which the scripts get executed, just edit the /etc/cron.d/rd file.

(13)

From

* * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd mon >> /dev/null 2>&1

* * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd debug_check >> /dev/null 2>&1 * * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd auto_close >> /dev/null 2>&1 * * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Accounting >> /dev/null 2>&1 */15 * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Voucher >> /dev/null 2>&1 #Every two minutes; you ma want to increase it on bigger deployments

*/2 * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Removeduplicates >> /dev/null 2>&1

#Every 10 minutes to keep it stable

*/10 * * * * root /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Freeradius >> /dev/null 2>&1 #Every 10 minutes check the auto add table to assign devices to users with this feature enabled

*/10 * * * * www-data /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake AutoAddDevices >> /dev/null 2>&1

To

* * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd mon >> /dev/null 2>&1

* * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd debug_check >> /dev/null 2>&1 * * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Rd auto_close >> /dev/null 2>&1 * * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Accounting >> /dev/null 2>&1 */15 * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Voucher >> /dev/null 2>&1 #Every two minutes; you ma want to increase it on bigger deployments

*/2 * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Removeduplicates >> /dev/null 2>&1

#Every 10 minutes to keep it stable

*/10 * * * * root /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake Freeradius >> /dev/null 2>&1 #Every 10 minutes check the auto add table to assign devices to users with this feature enabled

*/10 * * * * apache /usr/share/nginx/html/cake2/rd_cake/Console/cake -app /usr/share/nginx/html/cake2/rd_cake AutoAddDevices >> /dev/null 2>&1

Install FreeRADIUS on CentOS 6.4

Introduction

 FreeRADIUS is the world's most popular RADIUS server. It features various back-ends. Some include LDAP and SQL.

 FreeRADIUS is in version 2.2.x as of this writing.

 RADIUSdesk is a front-end to the MySQL database used by FreeRADIUS.

 We will compile the latest version of FreeRADIUS (2.2.0 as of this writing) from source code and install it on a CentOS server.

 At this time please DO NOT use version 2.2.1 of FreeRADIUS.

 The developers are busy resolving some issues related to this relase:

(14)

 Please use this URL and download 2.2.0.

 ftp://ftp.freeradius.org/pub/freeradius/

 FreeRADIUS has a feature to use custom modules. RADIUSdesk will use a few small custom Perl modules to enhance the default functionality of FreeRADIUS.

 FreeRADIUS supply AAA (Authentication, Authorization and Accounting) service s.

Compiling FreeRADIUS

This section has two options to chose from after you have installed the required software.

The recommended option is to apply a small patch which will include the rlm_raw FreeRADIUS module.

The standard option is not to apply the patch and simply compile the source as is.

Install required software

Before you compile the source code of FreeRADIUS, ensure the following packages are installed:

yum install build-essential libmysqlclient-dev libperl-dev libssl-dev

OPTION 1 -> Dynamic Clients using rlm_raw (Recommended way)

If you will have clients that will contact the FreeRADIUS server from an unknown IP Address (Typically from behind a DSL connection that uses DHCP), we will be making use of the dynamic client feature of FreeRADIUS. This section then is for you.

Download FreeRADIUS source code. http://freeradius.org/download.html

 At this time please DO NOT use version 2.2.1 of FreeRADIUS.

 The developers are busy resolving some issues related to this relase:

 http://freeradius.1045715.n5.nabble.com/What-does-FR-2-2-2-fix-td5722733.html

 Please use this URL and download 2.2.0.

 ftp://ftp.freeradius.org/pub/freeradius/

Extract the code

tar -xzvf freeradius-server-2.2.0.tar.gz

Build and install FreeRADIUS as normal.

./configure; make && make install

Confirm rlm_raw in installed. (Should list rlm_raw-2.2.0.so and rlm_raw.so)

ls /usr/lib/freeradius | grep raw Setup FreeRADIUS

The following commands will set-up FreeRADIUS to work optimal with RADIUSdesk that runs on Nginx.

mv /etc/raddb /etc/raddb.orig

cp /usr/share/nginx/html/cake2/rd_cake/Setup/Radius/raddb_rd.tar.gz /etc/ cd /etc/

tar -xzvf raddb_rd.tar.gz

chown –R radiusd.radiusd /etc/raddb chmod 644 /etc/raddb/dictionary ldconfig

Activate the rlm_raw module

(15)

cd /etc/raddb/ sites-enabled

ln -s ../sites-available/dynamic-clients ./ chown –R radiusd.radiusd /etc/raddb

 Erase all contents of dynamic-clients

cd /etc/raddb/ sites-enabled echo ‘’ > dynamic-clients

 Edit the /etc/raddb/sites-enabled/dynamic-clients file and replace the content with this:

#Define a client that has a 'catch all' client dymamic {

ipaddr = 0.0.0.0 netmask = 0

#We spacify the virtual server that will be used for client verification dynamic_clients = dynamic_client_server lifetime = 86400 } server dynamic_client_server { authorize {

#With RADIUSdesk we mis-use the optional Community field in the NAS table to specify the value of an attribute that the raw module should read #In this sample we use the MAC address of the Device running Coova Chilli, but you can use any of the attributes inside the request.

#The mac is then added as the value of the Community optional field in YFi to create a match #rlm_raw: Called-Station-Id = 08-00-27-56-22-0B

#Test to see if our required raw attribute exists if("%{raw:NAS-Identifier}"){

#Test to see if it is in the DB

if ("%{sql: select count(*) from nas where nas.nasidentifier='%{raw:NAS-Identifier}'}" == 1) { update control {

FreeRADIUS-Client-IP-Address = "%{Packet-Src-IP-Address}" FreeRADIUS-Client-Require-MA = no

FreeRADIUS-Client-Secret = "%{sql: select nas.secret from nas where nas.nasidentifier='%{raw:NAS-Identifier}'}" FreeRADIUS-Client-Shortname = "%{sql: select nas.shortname from nas where nas.nasidentifier='%{raw:NAS-Identifier}'}" FreeRADIUS-Client-NAS-Type = "other"

#Optional Virtual server

#FreeRADIUS-Client-Virtual-Server = "dynamic_server" } ok } } } }

 Create a raw module in file /etc/raddb/modules/raw (empty definition)

(16)

 and insert these lines

raw { }

 Tell FreeRADIUS to instantiate the raw module upon start-up. Edit the /etc/raddb/radiusd.conf file and ensure raw is added to theinstantiate section:

instantiate { ... raw ... }

In /etc/raddb/dictionary replace :

$INCLUDE /usr/local/share/freeradius/dictionary by $INCLUDE /usr/share/freeradius/dictionary

$INCLUDE /usr/local/etc/raddb/dictionary_overrides/dictionary.mikrotik by $INCLUDE /etc/raddb/dictionary_overrides/dictionary.mikrotik

$INCLUDE /usr/local//etc/raddb/dictionary_overrides/dictionary.chillispot by $INCLUDE /etc/raddb/dictionary_overrides/dictionary.chillispot nano /etc/raddb/dictionary

Comment out all default values in /etc/raddb/clients.conf of client localhost nano /etc/raddb/clients.conf

Testing FreeRADIUS

Test to see if Free Radius works by issuing the following command:

radiusd -X

This will start FreeRadius in debug mode ( To stop it → Ctrl+c).

FreeRADIUS has a start-up script. The following will ensure automatic start-up between reboots.

chkconfig radius on

Add script to sudoers file

Failing to do this step will leave the advanced features of RADIUSdesk broken.

To create the ability for the web server to exercise some control over FreeRADIUS, we will have a custom script which is added to the sodoers file.

The correct wat to edit the sodoers file is by using:

nano /etc/sudoers

For Nginx add the following at the bottom

# Members of the admin group may gain root privileges

(17)

 And change Defaults requiretty to Defaults !visiblepw To #Defaults requiretty to #Defaults !visiblepw

 Confirm that this line is now inside the /etc/sudoers file

cat /etc/sudoers

This will allow the root user in RADIUSdesk to start and stop FreeRADIUS and also to do on-the-fly activation of debug traces.

 Give the 777 permission to all *.pl files in /usr/share/nginx/html/cake2/rd_cake/Setup/Scripts/

cd /usr/share/nginx/html/cake2/rd_cake/Setup/Scripts/ chmod 777 *.pl

Edit /usr/share/nginx/html/cake2/rd_cake/Setup/Scripts/radscenario.pl and set

my $radclient = "/usr/local/bin/radclient"

; to

my $radclient = "/usr/bin/radclient";

nano radscenario.pl

If there are no errors start the FreeRADIUS service through the start-up script.

service radiusd start

Install Node.js on CentOS 6.4

Introduction

Node.js is part of the next generation web servers that is small; fast and super efficient.

Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

You can read more about Node.js on their website. http://nodejs.org/

The reason we are interested in Node.js is because it supports Websocket. Websocket is a reasonably new technology that is supported by the latest versions of all the major browsers which allows you to display data in real-time.

You can read more about Websocket on their website. http://www.websocket.org/

We will make use of Socket.IO as a wrapper to Websocket which runs on Node.js to read the log file and debug output of FreeRADIUS in real-time.

You can read more about Socket.IO on their website. http://socket.io/
(18)

Install Node.js and dependencies

Install the stable version of Node.js. This package will also include the npm package manager for Node.js.

cd tmp

yum install

python

gcc-c++ gcc

make

wget http://nodejs.org/dist/v0.10.12/node-v0.10.12.tar.gz

tar –xzvf node-v0.10.12.tar.gz

cd node-v0.10.12

./configure; make && make install (it will take a long time please be patient)

We need to install the following Node.js packages globally.

npm

-g

install

tail

npm

-g

install

socket.io npm

-g

install

connect npm

-g

install

mysql npm

-g

install

forever

Add start-up script

Everything is now installed that we will need to enable us to serve the FreeRADIUS log file in real-time using Node.js, Websocket and Socet.IO.

We need to install a start-up file, start the Node.js server up and confirm that it works.

If you are running Nginx; the sample start-up script is found under /usr/share/nginx/html/cake2/rd_cake/Setup/Node.js/nodejs-socket-io.

cp

/usr/share/nginx/html/

cake2

/

rd_cake

/

Setup

/

Node.js

/

nodejs-socket-io

/

etc

/

init.d

chmod

755

/

etc

/

init.d

/

nodejs-socket-io chkconfig nodejs-socket-io on

Ensure you have this values (below) in

/

etc/init.d

/

nodejs-socket-io before you start nodejs-socket-io service. If not, please take your time to edit the file to have the result shown below

NAME="Node.js SocketIO" NODE_BIN_DIR="/usr/local/bin"

NODE_PATH=/usr/lib/nodejs:/usr/local/lib/node_modules/:/usr/share/javascript APPLICATION_DIRECTORY="/usr/share/nginx/html/cake2/rd_cake/Setup/Node.js"  Edit the Logfile.node.js to point to the correct radius.log file path

(19)

 And be sure to have values as shown below

//___ Variable decleration ____

var filename= "/var/log/radius/radius.log";

var port = 8000;

Test the Node.js server

Start the server and confirms that it is running on port 8000 by requesting the client side Socket.io library.

service

nodejs-socket-io start  Confirm it is running by checking the log file output:

cat

/

var

/

log

/

nodejs-socket-io.log

#Result in....

info: socket.io started Up and running on port

8000

(20)

Things to remember about Websocket

Websocket is not supported in IE version 9 and below.

Remember that this is running on port 8000 and some firewalls may block it.

You are welcome to alter the port on which Node.js serve by editing the /rd_cake/Setup/Node.js/Logfile.node.js file.

The start-up script calls Logfile.node.js during start-up. Depending on the web server you run; the absolute path of this script will change accordingly. Be sure to update this script as well if you change servers (Nginx VS Apache).

Although this Node.js server serves the FreeRADIUS log file; it will only be visible if the requester provides the token belonging to root. All other users will not be allowed to see this log file through the Node.js server.

CONGRATULATION! YOUR RADIUSDESK INSTALLATION IS FINISHED!

To get last svn code in one compressed file you can use this url:

http://sourceforge.net/p/radiusdesk/code/HEAD/tarball?path=/trunk

http://your I o http://127.0.0.1/test.php https://github.com/cakephp/cakephp/tags http://freeradius.1045715.n5.nabble.com/What-does-FR-2-2-2-fix-td5722733.html ftp://ftp.freeradius.org/pub/freeradius/ http://freeradius.org/download.html http://nodejs.org/ http://www.websocket.org/ http://socket.io/ http://nodejs.org/dist/v0.10.12/node-v0.10.12.tar.gz http://sourceforge.net/p/radiusdesk/code/HEAD/tarball?path=/trunk

References

Related documents

focus on groups with symmetric access to genre expectations. Future research could explore how genre expectations develop and are shared among people with asymmetric access to

Interviews were conducted before and after intervention using a physical restraint questionnaire to examine any change in staff knowledge, attitudes, and behaviours on physical

With the date and plan in place, the real work will be in starting to implement the plan as the date for retirement draws near. Regardless of whether you work in a firm or as a

In this chapter, we faced the question of whether it is possible to estimate at the same time the task being performed (reach a target position) and the signal model (binary

Based on the purpose, this study include the type of causal research for this study was conducted to test the effect of independent variables (profitability,

We found that an inhomogeneity along the plane of the 2D topological insulator can lead to different Rashba spin-orbit coupling strengths (two different momentum-dependent

Implementasi konvensi Hak Anak di Kepulauan Riau masih belum terlaksana dengan baik, masih banyaknya terjadi tingkat kekerasan yang terjadi pada anak, seperti anak

Such a collegiate cul- ture, like honors cultures everywhere, is best achieved by open and trusting relationships of the students with each other and the instructor, discussions