83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/perl -w
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# copyright (C) 1999-2006 Mitel Networks Corporation
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								# This program is free software; you can redistribute it and/or modify
							 | 
						||
| 
								 | 
							
								# it under the terms of the GNU General Public License as published by
							 | 
						||
| 
								 | 
							
								# the Free Software Foundation; either version 2 of the License, or
							 | 
						||
| 
								 | 
							
								# (at your option) any later version.
							 | 
						||
| 
								 | 
							
								# 		
							 | 
						||
| 
								 | 
							
								# 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
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								package esmith;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use strict;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use esmith::ConfigDB;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use constant WEBFUNCTIONS => '/usr/share/smanager/lib/SrvMngr/Controller';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								my $rtdb ||= esmith::ConfigDB->open('routes') or
							 | 
						||
| 
								 | 
							
								    die "Couldn't create Routes DB\n";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								opendir DIR, WEBFUNCTIONS or 
							 | 
						||
| 
								 | 
							
								    die "Couldn't open ", WEBFUNCTIONS, "\n";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								my @files = grep (/^[A-Z].*\.pm$/, readdir (DIR));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								closedir DIR;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								foreach my $file (@files) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    next if (-d WEBFUNCTIONS . "/$file");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    my $file2 = lc($file);
							 | 
						||
| 
								 | 
							
								    $file2 =~ s/\.pm$//;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    #-------------------------------------------------- 
							 | 
						||
| 
								 | 
							
								    # extract method, url, action, name from controllers script
							 | 
						||
| 
								 | 
							
								    #-------------------------------------------------- 
							 | 
						||
| 
								 | 
							
								    open(SCRIPT, WEBFUNCTIONS . "/$file");
							 | 
						||
| 
								 | 
							
								    my $routes	= undef;
							 | 
						||
| 
								 | 
							
								    my $method	= undef;
							 | 
						||
| 
								 | 
							
								    my $url	= undef;
							 | 
						||
| 
								 | 
							
								    my $ctlact	= undef;
							 | 
						||
| 
								 | 
							
								    my $name	= undef;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while ( <SCRIPT> ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# name   : contrib,     method : get,   url : /contrib,   ctlact : contrib#main
							 | 
						||
| 
								 | 
							
									($name, $method, $url, $ctlact) = ($1, $2, $3, $4)
							 | 
						||
| 
								 | 
							
									    if (/^#\s*name\s*:\s*(.+?),\s*method\s*:\s*(.+?),\s*url\s*:\s*(.+?),\s*ctlact\s*:\s*(.+?)\s*$/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# routes : end
							 | 
						||
| 
								 | 
							
									$routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/);
							 | 
						||
| 
								 | 
							
									last if (defined $routes and $routes eq 'end');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (defined $method and defined $url and
							 | 
						||
| 
								 | 
							
										defined $ctlact and defined $name) {
							 | 
						||
| 
								 | 
							
									    my $key = $file2.'+'.$name;
							 | 
						||
| 
								 | 
							
									    my $rec = $rtdb->get($key) || 
							 | 
						||
| 
								 | 
							
								    		$rtdb->new_record($key, { type => 'route' } );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 	    $rec->merge_props(
							 | 
						||
| 
								 | 
							
										Url => $url,
							 | 
						||
| 
								 | 
							
										Method => $method,
							 | 
						||
| 
								 | 
							
										Ctlact => $ctlact
							 | 
						||
| 
								 | 
							
									    )
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    close SCRIPT;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |