initial commit of file from CVS for smeserver-manager on Fri Mar 22 14:54:28 AEDT 2024
This commit is contained in:
		| @@ -0,0 +1 @@ | ||||
| enabled | ||||
							
								
								
									
										2
									
								
								root/etc/e-smith/db/configuration/defaults/smanager/type
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								root/etc/e-smith/db/configuration/defaults/smanager/type
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| service | ||||
|  | ||||
							
								
								
									
										38
									
								
								root/etc/e-smith/db/configuration/migrate/smanager
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								root/etc/e-smith/db/configuration/migrate/smanager
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| { | ||||
|     sub gen_pwd { | ||||
|         use MIME::Base64 qw(encode_base64); | ||||
|         my $p = "not set due to error"; | ||||
|         if ( open( RANDOM, "/dev/urandom" ) ){ | ||||
|             my $buf; | ||||
|             # 57 bytes is a full line of Base64 coding, and contains | ||||
|             # 456 bits of randomness - given a perfectly random /dev/random | ||||
|             if ( read( RANDOM, $buf, 57 ) != 57 ){ | ||||
|                 warn("Short read from /dev/random: $!"); | ||||
|             } | ||||
|             else{ | ||||
|                 $p = encode_base64($buf); | ||||
|                 chomp $p; | ||||
|             } | ||||
|             close RANDOM; | ||||
|         } | ||||
|         else{ | ||||
|             warn "Could not open /dev/urandom: $!"; | ||||
|         } | ||||
|         return $p; | ||||
|     } | ||||
|  | ||||
|     my $rec = $DB->get('smanager') | ||||
|         || $DB->new_record('smanager', {type => 'service'}); | ||||
|  | ||||
|     my $pwd = $rec->prop('Secrets'); | ||||
|     if (not $pwd or length($pwd) < 57){ | ||||
|         my $pwd = gen_pwd(); | ||||
|         $rec->set_prop('Secrets', $pwd); | ||||
|     } | ||||
|  | ||||
|     my $theme = $rec->prop('Theme'); | ||||
|     if (not $theme){ | ||||
|         $rec->set_prop('Theme', 'default'); | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										109
									
								
								root/etc/e-smith/events/actions/locales2-conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								root/etc/e-smith/events/actions/locales2-conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| #!/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 constant DEBUG => 0; | ||||
|  | ||||
| use constant I18NMODULES => '/usr/share/smanager/lib/SrvMngr/I18N/Modules'; | ||||
|  | ||||
|     #------------------------- | ||||
|     # get locale modules list  | ||||
|     #------------------------- | ||||
| opendir DIR, I18NMODULES or die "Couldn't open ", I18NMODULES, "\n"; | ||||
| my @dirs = grep (/^[A-Z]/, readdir (DIR)); | ||||
| closedir DIR; | ||||
|  | ||||
| # put 'General' lexicon first | ||||
| unshift @dirs, 'General'; | ||||
|  | ||||
| foreach my $module (@dirs) { | ||||
|  | ||||
|     next if (-f I18NMODULES . "/$module"); | ||||
|  | ||||
|     #------------------------- | ||||
|     # get lexicons list  | ||||
|     #------------------------- | ||||
|     opendir DIR, I18NMODULES . "/$module" or die "Couldn't open ", I18NMODULES, "\n"; | ||||
|     my @lexs = grep (/_.*\.lex$/, readdir (DIR)); | ||||
|     closedir DIR; | ||||
|  | ||||
|     foreach my $lex (@lexs) { | ||||
| 	my $long_lex = I18NMODULES . "/$module/$lex"; | ||||
|  | ||||
| 	next if (-d $long_lex); | ||||
|  | ||||
| 	# my ($mod, $lang) = split /[_.]/, $lex; # module name without '_' | ||||
| 	my @elements = split /[_.]/, $lex; | ||||
| 	next if ( scalar @elements < 3 ); | ||||
|  | ||||
| 	my $mod = join( '_', @elements[0..(scalar @elements - 3)] ); | ||||
| 	my $lang = @elements[scalar @elements - 2]; | ||||
|  | ||||
| 	next if ( $mod ne lc($module) ); | ||||
|  | ||||
| 	$lang =~ s/-/_/; | ||||
| 	my $long_pm = I18NMODULES . "/$module/$lang". '.pm'; | ||||
| 	if ( -f $long_pm ) { | ||||
| 	    # .pm file not newer than .lex | ||||
| 	    next if ((stat($long_lex))[9] < (stat($long_pm))[9]); | ||||
| 	    print "locales2: error cp\n" unless system("cp -f $long_pm ${long_pm}.svg") == 0;  | ||||
| 	} | ||||
|  | ||||
| 	open(FIL, '>:encoding(UTF-8)', $long_pm) | ||||
| 	     or die "Couldn't open ", $long_pm, " for writing.\n"; | ||||
| 	 | ||||
| 	print FIL "package SrvMngr::I18N::Modules::${module}::${lang};\n"; | ||||
| 	print FIL "use strict;\nuse warnings;\nuse utf8;\nuse Mojo::Base 'SrvMngr::I18N';\n\n"; | ||||
| 	print FIL "use SrvMngr::I18N::Modules::General::${lang};\n\nmy %lexicon = (\n"; | ||||
|  | ||||
|     #-------------------- | ||||
|     # copy lexicon to pm | ||||
|     #-------------------- | ||||
| 	open(FIL2, '<:encoding(UTF-8)', $long_lex) | ||||
| 	     or die "Couldn't open ", $long_lex, " for reading.\n"; | ||||
| 	while ( <FIL2> ) { | ||||
| 	    print FIL $_; | ||||
| 	} | ||||
| 	close FIL2; | ||||
|  | ||||
| 	print FIL ");\n\nour %Lexicon = (\n"; | ||||
| 	print FIL "	%\{ SrvMngr::I18N::Modules::General::${lang}::Lexicon \},\n" unless $module eq 'General'; | ||||
| 	print FIL "	%lexicon\n);\n\n\n1;\n"; | ||||
|  | ||||
| 	close FIL; | ||||
| 	 | ||||
|     #------------------------- | ||||
|     # eval and restore if NOT OK | ||||
|     #------------------------- | ||||
| 	if ( eval "use lib '".I18NMODULES."/../../../'; require '$long_pm';" ) { | ||||
| 	    print "Lexicon $lang for $module ($lex) written to ${lang}.pm\n" if DEBUG; | ||||
| 	    if ( -f ${long_pm}.'.svg' ) {  | ||||
| 		print "locales2: error rm" unless system("rm -f ${long_pm}.svg") == 0;  | ||||
| 	    }  | ||||
| 	} else { | ||||
| 	    print "ERROR: Lexicon $lang for $module ($lex) NOT written to ${lang}.pm\n$@\n"; | ||||
| 	    if ( -f ${long_pm}.'.svg' ) {  | ||||
| 		print "locales2: error mv" unless system("mv -f ${long_pm}.svg $long_pm") == 0;  | ||||
| 	    }  | ||||
| 	} | ||||
|     } | ||||
| } | ||||
							
								
								
									
										176
									
								
								root/etc/e-smith/events/actions/navigation2-conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								root/etc/e-smith/events/actions/navigation2-conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,176 @@ | ||||
| #!/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 constant SMNGR_LIB => '/usr/share/smanager/lib'; | ||||
| use constant I18NMODULES => 'SrvMngr/I18N/Modules'; | ||||
| use constant WEBFUNCTIONS => 'SrvMngr/Controller'; | ||||
| use constant NAVDIR => '/home/e-smith/db'; | ||||
| use constant NAVIGATIONDIR => 'navigation2'; | ||||
| use constant DEBUG => 0; | ||||
|  | ||||
| use esmith::NavigationDB; | ||||
| use esmith::I18N; | ||||
|  | ||||
| use Data::Dumper;	# activate if DEBUG | ||||
|  | ||||
| my $navigation_ignore =  | ||||
| 	"(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm(-.*)?)"; | ||||
|  | ||||
| my $i18n = new esmith::I18N; | ||||
|  | ||||
| my %navdbs; | ||||
|  | ||||
| opendir FUNCTIONS, SMNGR_LIB.'/'.WEBFUNCTIONS or  | ||||
|     die "Couldn't open ", SMNGR_LIB.'/'.WEBFUNCTIONS, "\n"; | ||||
| my @files = grep (!/^${navigation_ignore}$/, readdir (FUNCTIONS)); | ||||
| closedir FUNCTIONS; | ||||
|  | ||||
| my @langs = $i18n->availableLanguages();  | ||||
| #my @langs = ('en', 'fr');  | ||||
| #print Dumper(\@langs); | ||||
|  | ||||
|  | ||||
| foreach my $lang (@langs) | ||||
| { | ||||
|     my $long_lex = SMNGR_LIB.'/'.I18NMODULES."/General/general_$lang.lex"; | ||||
|     next unless ( -e $long_lex ); | ||||
|  | ||||
|     open(LEX, '<:encoding(UTF-8)', $long_lex) | ||||
|          or die "Couldn't open ", $long_lex, " for reading.\n"; | ||||
|     my @gen_lex = <LEX>; | ||||
|     close LEX; | ||||
|  | ||||
|     foreach my $file (@files) | ||||
|     { | ||||
| 	next if (-d SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file"); | ||||
| #        next unless ( $file =~ m/D.*\.pm$/ ); | ||||
|         next unless ( $file =~ m/[A-Z].*\.pm$/ ); | ||||
|  | ||||
| 	my $file2 = lc($file); | ||||
| 	$file2 =~ s/\.pm$//; | ||||
|  | ||||
|     #--------------------------------------------------  | ||||
|     # extract heading, description and weight information | ||||
|     # from Mojo controller | ||||
|     #--------------------------------------------------  | ||||
| 	open(SCRIPT, SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file"); | ||||
|         my $heading            	= undef; | ||||
|         my $description        	= undef; | ||||
|         my $heading_weight     	= undef; | ||||
|         my $description_weight 	= undef; | ||||
|         my $menucat		= undef; | ||||
|         my $routes		= undef; | ||||
|  | ||||
|         while ( <SCRIPT> ) | ||||
| 	{ | ||||
| 	    $heading = $1 if (/^\s*#\s*heading\s*:\s*(.+?)\s*$/); | ||||
| 	    $description = $1  | ||||
| 		if (/^\s*#\s*description\s*:\s*(.+?)\s*$/); | ||||
| 	    ($heading_weight, $description_weight) = ($1, $2)  | ||||
| 		if (/^\s*#\s*navigation\s*:\s*(\d+?)\s+(\d+?)\s*$/); | ||||
| 	    $menucat = $1  | ||||
| 		if (/^\s*#\s*menu\s*:\s*(.+?)\s*$/); | ||||
|  | ||||
| 	    last if (defined $heading and  | ||||
| 		defined $description and | ||||
| 		defined $heading_weight and | ||||
| 		defined $description_weight and | ||||
| 		defined $menucat); | ||||
|  | ||||
| 	    # routes : end  (stop before eof if 'menu' is not here before 'routes'!!! | ||||
| 	    $routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/); | ||||
| 	    last if (defined $routes and $routes eq 'end'); | ||||
| 	} | ||||
| 	close SCRIPT; | ||||
|  | ||||
| 	print "updating script $file for lang $lang\n" if DEBUG; | ||||
| 	my $navdb = $navdbs{$lang}; | ||||
| 	my $navinfo = NAVDIR.'/'.NAVIGATIONDIR . "/navigation.$lang"; | ||||
| 	$navdb ||= esmith::NavigationDB->open($navinfo); | ||||
| 	$navdb ||= esmith::NavigationDB->create($navinfo) or | ||||
| 	    die "Couldn't create $navinfo\n"; | ||||
|         $navdbs{$lang} ||= $navdb; | ||||
| 	my $rec = $navdb->get($file2) ||  | ||||
| 	    $navdb->new_record($file2, { type => 'panel' } ); | ||||
|  | ||||
| 	my @panel_lex = (); | ||||
| 	$long_lex = SMNGR_LIB.'/'.I18NMODULES.'/'.ucfirst($file2)."/${file2}_$lang.lex"; | ||||
| 	if ( -e $long_lex ) { | ||||
| 	    open(LEX, '<:encoding(UTF-8)', $long_lex) | ||||
|     		 or die "Couldn't open ", $long_lex, " for reading.\n"; | ||||
| 	    @panel_lex = <LEX>; | ||||
| 	    close LEX; | ||||
| 	} | ||||
|  | ||||
| 	my %Lexicon = (); | ||||
| 	push(@panel_lex, @gen_lex); | ||||
| 	my $top_error = 0; | ||||
|  | ||||
| 	chomp @panel_lex; | ||||
| 	for (@panel_lex) { | ||||
| 	    next unless $_;	# first one empty | ||||
| 	    my ($k, $v) = split / => /, $_; | ||||
| #	errors on split to $v (use DEBUG to see) | ||||
| 	    if ( $k and $v ) { | ||||
| 		$k =~ s/\'//g; | ||||
| 		$v =~ s/\'//g; | ||||
| 		$v =~ s/,$//g; | ||||
| 		$Lexicon{ $k } = $v; | ||||
| 	    } else { | ||||
| 		$k = "?" unless ($k); | ||||
| 		print STDERR "Error for $lang $file2 on $k \n" if DEBUG; | ||||
| 		$top_error++; | ||||
| 	    } | ||||
| 	} | ||||
| 	if ( $top_error > 0) { | ||||
| 	    if ( DEBUG ) { | ||||
| 	        print STDERR "$top_error errors for $lang $file2\n"; | ||||
| #		print Dumper(\@panel_lex); | ||||
| #		print Dumper(\%Lexicon); | ||||
| #		exit 1; | ||||
| 	    } | ||||
| 	} | ||||
|  | ||||
| 	my $loc_heading =  localise( \%Lexicon, $heading ); | ||||
| 	my $loc_description =  localise( \%Lexicon, $description ); | ||||
| 	$loc_heading =~ s/^\s*(\w.*?)\s*$/$1/; | ||||
| 	$loc_description =~ s/^\s*(\w.*?)\s*$/$1/; | ||||
|  | ||||
| 	$rec->merge_props( | ||||
| 	    Heading => $loc_heading, | ||||
| 	    Description => $loc_description, | ||||
| 	    HeadingWeight => localise( \%Lexicon, $heading_weight ), | ||||
| 	    DescriptionWeight => localise( \%Lexicon, $description_weight ), | ||||
| 	    MenuCat => (defined $menucat ? $menucat : 'A')); | ||||
|     } | ||||
|     #warn "trying to close for lang $lang\n"; | ||||
|     my $navdb = $navdbs{$lang}; | ||||
|     $navdb->close(); | ||||
| } | ||||
|  | ||||
|  | ||||
| sub localise { | ||||
|     my ($lexicon, $string) = @_; | ||||
|     $string  = "" unless defined $string; | ||||
|     return $lexicon->{$string} || $string; | ||||
| } | ||||
							
								
								
									
										82
									
								
								root/etc/e-smith/events/actions/routes2-conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								root/etc/e-smith/events/actions/routes2-conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | ||||
| #!/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; | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										0
									
								
								root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										6
									
								
								root/etc/e-smith/templates/etc/crontab/smanager
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								root/etc/e-smith/templates/etc/crontab/smanager
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|     return "# smanager is disabled\n"  | ||||
| 	unless $smanager{status} eq 'enabled'; | ||||
|  | ||||
|     return "15 0 * * * root /usr/share/smanager/script/daily.sh \n" | ||||
| } | ||||
| @@ -0,0 +1,44 @@ | ||||
| { | ||||
|     # vim: ft=perl: | ||||
|  | ||||
|     $haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ?  'yes' : 'no'; | ||||
|     $plainTextAccess = ${'httpd-admin'}{PermitPlainTextAccess} || 'no'; | ||||
|     $plainPort = ${'httpd-e-smith'}{TCPPort} || '80'; | ||||
|     $adminPort2 = ${'smanager'}{TCPPort} || '982'; | ||||
|     $adminAccess = ${'smanager'}{access} || 'private'; | ||||
|     $sslPort = ${modSSL}{TCPPort} || '443'; | ||||
|  | ||||
|     $OUT = ''; | ||||
|  | ||||
|     foreach $place ('smanager') | ||||
|     { | ||||
|         if (($port eq $plainPort) && ($haveSSL eq 'yes') && ($plainTextAccess ne 'yes')) | ||||
|         { | ||||
|             $OUT .= '    RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$' . "\n"; | ||||
|             $OUT .= "    RewriteRule ^/$place(/.*|\$)    https://%{HTTP_HOST}/$place\$1 [L,R]\n"; | ||||
|             $OUT .= "\n"; | ||||
| 	} | ||||
|         $OUT .= "    RewriteRule ^/$place\$   https://%{HTTP_HOST}/$place/ [L,R]\n\n"; | ||||
|  | ||||
|         $OUT .= "    ProxyRequests Off\n"; | ||||
|         $OUT .= "    ProxyPreserveHost On\n"; | ||||
|         $OUT .= "    ProxyPass /$place http://127.0.0.1:$adminPort2 keepalive=On\n"; | ||||
|         $OUT .= "    ProxyPassReverse /$place http://127.0.0.1:$adminPort2\n"; | ||||
|         $OUT .= "    RequestHeader set X-Forwarded-Proto 'http'\n"; | ||||
|  | ||||
|         $OUT .= "    <Location '/$place'>\n"; | ||||
|         if ($port eq $plainPort) | ||||
|         { | ||||
|             $OUT .= '        Require ip 127.0.0.1' . "\n"; | ||||
|         } | ||||
|         elsif (($haveSSL eq 'yes') && ($port eq $sslPort) && ($adminAccess eq 'public')) | ||||
|         { | ||||
|             $OUT .= "#       public access requested in conf db\n"; | ||||
|             $OUT .= "        Require all granted\n"; | ||||
|         } else { | ||||
|             $OUT .= "#       private access by default\n"; | ||||
|             $OUT .= "        Require ip $localAccess $externalSSLAccess\n"; | ||||
|         } | ||||
|         $OUT .= "    </Location>\n"; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,3 @@ | ||||
| \{ | ||||
| # configuration file for Mojolicious Server-Manager2 application | ||||
| # | ||||
| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|     my @secrets = split /,/, $smanager{'Secrets'}; | ||||
|     $OUT .= "    secrets => ['"; | ||||
|     if ( $secrets[0] ) { $OUT .= "$secrets[0]'"; } | ||||
|     if ( $secrets[1] ) { $OUT .= ",'$secrets[1]'"; } | ||||
|     if ( $secrets[2] ) { $OUT .= ",'$secrets[2]'"; } | ||||
|     $OUT .= "],"; | ||||
| } | ||||
| @@ -0,0 +1 @@ | ||||
|     theme => '{ $smanager{'Theme'} || 'default' }', | ||||
| @@ -0,0 +1,2 @@ | ||||
|     # session timeout | ||||
|     timeout => '{ $smanager{'Timeout'} || 300 }', | ||||
| @@ -0,0 +1,4 @@ | ||||
|     # password reset disabled by default | ||||
|     pwdreset => { ($smanager{'PwdReset'} eq 'enabled' ? '1' : '0') || '0' }, | ||||
|     # reset delay in hours | ||||
|     pwdreset_delay => 2, | ||||
| @@ -0,0 +1,16 @@ | ||||
|     hypnotoad => \{ | ||||
|     ## adresses and ports listened | ||||
|         listen => ['http://127.0.0.1:{$smanager{'TCPPort'} || 982 }'], | ||||
|         proxy  => 1, | ||||
|         pid_file => '/var/run/smanager.pid', | ||||
|  | ||||
|     ## process number based on CPU number [x 2] | ||||
|         workers => (`grep processor /proc/cpuinfo | wc -l` * 2), | ||||
|  | ||||
|     ## connections queue size, per worker | ||||
|         accepts => 100, | ||||
|  | ||||
|     ## propriétaire et groupe du serveur | ||||
|         user => 'admin', | ||||
|         group => 'admin' | ||||
|     \}, | ||||
| @@ -0,0 +1,2 @@ | ||||
|     # is js-jquery available | ||||
|     hasJquery => { -f '/usr/share/smanager/themes/default/public/js/jquery.min.js' ? '1' : '0'; }, | ||||
| @@ -0,0 +1,5 @@ | ||||
|     modules_dir => 'lib/SrvMngr/Controller', | ||||
|     webapp => 'smanager', | ||||
|     mode => 'production', | ||||
|     debug => 0, | ||||
| \} | ||||
| @@ -0,0 +1,250 @@ | ||||
| { | ||||
|     $OUT = <<'EOF'; | ||||
|  | ||||
| /*	from e-smith-manager to smanager (smeserver_manager2)  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /* This is the stylesheet used as the basis for older broswers. | ||||
|  | ||||
| Note that you CANNOT simly add styles here and hope they work.  ONLY CSS | ||||
| level 1 styles should be in this file.  Everyting else goes into the other 3 | ||||
| files. | ||||
|  | ||||
| These basic styles ensire that browsers that don't understand the @import | ||||
| method will still be usable.  All modern browsers will use the styles in | ||||
| sme_main.css, sme_menu.css or sme_header.css depending on the frame in which | ||||
| the page is found.    | ||||
| */ | ||||
|  | ||||
| /* Default HTML styles */ | ||||
| body { | ||||
|     background: #ffffff; | ||||
|     color: #000000; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     border-width: 0; | ||||
| } | ||||
|  | ||||
| table, tr, td, div, p, form { | ||||
|     color: #000000; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
| } | ||||
|  | ||||
| p { | ||||
|     margin-top: 8px; | ||||
|     margin-bottom: 2px; | ||||
| } | ||||
|  | ||||
| form { | ||||
|     margin-top: 2px; | ||||
|     margin-bottom: 2px; | ||||
| } | ||||
|  | ||||
| span { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
| } | ||||
|  | ||||
| .notsmall { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
| } | ||||
|  | ||||
| h1, .h1 { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     color: #333333; | ||||
|     font-size: 18px; | ||||
|     margin-bottom: 4px; | ||||
|     margin-top: 12px; | ||||
| } | ||||
|  | ||||
| h2, .h2 { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     color: #333333; | ||||
|     font-size: 14px; | ||||
|     margin-bottom: 3px; | ||||
|     margin-top: 12px; | ||||
| } | ||||
|  | ||||
| h3, .h3 { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     color: #333333; | ||||
|     font-size: 12px; | ||||
|     margin-bottom: 2px; | ||||
|     margin-top: 12px; | ||||
| } | ||||
|  | ||||
| h4, .h4 { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-style: italic; | ||||
|     color: #333333; | ||||
|     font-size: 12px; | ||||
|     margin-bottom: 2px; | ||||
|     margin-top: 10px; | ||||
| } | ||||
|  | ||||
| ol, ul, li { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px; | ||||
|     font-weight: normal; | ||||
|     color: black; | ||||
| } | ||||
|  | ||||
| ul { | ||||
|     list-style-type: circle; | ||||
| } | ||||
|  | ||||
| /* Core styles for use with sme_header.css*/ | ||||
| body.header {  | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background: #cccccc;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
| } | ||||
|  | ||||
| .hilightbar { | ||||
|     background-color: #ffc50a; | ||||
|     font-size: 4px; | ||||
| } | ||||
|  | ||||
| .infobar { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background-color: #cccccc; | ||||
| } | ||||
|  | ||||
| .darkergrey { | ||||
|     color: #666666; | ||||
| } | ||||
|  | ||||
| td.darkgrey { | ||||
|     background-color: #888888; | ||||
| } | ||||
|  | ||||
| a.update { | ||||
|     color: red; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background: #cccccc;  | ||||
| } | ||||
|  | ||||
| /* Core styles for use with sme_menu.css */ | ||||
|  | ||||
| body.menu {  | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px; | ||||
|     background-color: #e8f3e1; | ||||
| } | ||||
|  | ||||
| td.section { | ||||
|     padding-bottom: 2px;  | ||||
|     padding-top: 8px;  | ||||
| } | ||||
|  | ||||
| .section { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px; | ||||
|     font-weight: bold; | ||||
|     background-color: #e8f3e1; | ||||
| } | ||||
|  | ||||
| a.item {  | ||||
|     color: #00008b; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background: #e8f3e1;  | ||||
| } | ||||
|  | ||||
| a.sl {  | ||||
|     color: green; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background: #e8f3e1;  | ||||
| } | ||||
|  | ||||
| a.alert {  | ||||
|     color: red; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background: #e8f3e1;  | ||||
| } | ||||
|  | ||||
| /* Core styles for use with sme_main.css */ | ||||
| body.main {  | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px;  | ||||
|     background-color: #ffffff; | ||||
|     color: #000000; | ||||
| } | ||||
|  | ||||
| td.sme-noborders-label { | ||||
|     font-weight: bold; | ||||
|     width: 33%; | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| hr.sectionbar { | ||||
|     color: #666666; | ||||
|     background-color: #666666; | ||||
|     height: 1px; | ||||
|     width: 80%; | ||||
|     border: 0; | ||||
| } | ||||
|  | ||||
| hr.sme-copyrightbar { | ||||
|     color: #dddddd; | ||||
|     background-color: #dddddd; | ||||
|     height: 1px; | ||||
|     width: 100%; | ||||
|     border: 0; | ||||
| } | ||||
|  | ||||
| .sme-copyright { | ||||
|     color: #777777; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
| } | ||||
|  | ||||
| /*These style definitions were found int he old css file (manager.css) | ||||
| but don't seem to ever be referenced in the code.  They're here | ||||
| for reference. | ||||
|  | ||||
| .centerit { | ||||
|     text-align: center; | ||||
| } | ||||
| .highlight { | ||||
|     background: #ffc61e; | ||||
| } | ||||
| .subheading { | ||||
|     background: #ffffff; | ||||
|     color: #1e385b; | ||||
| } | ||||
| */ | ||||
|  | ||||
| EOF | ||||
| } | ||||
| @@ -0,0 +1,71 @@ | ||||
| { | ||||
|     $OUT =<<'HERE'; | ||||
|  | ||||
| /*	from e-smith-manager to smanager (smeserver_manager2)  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*contribs.org styling  | ||||
| */ | ||||
| body.header { | ||||
| background: #bee6a2; | ||||
|     } | ||||
| .hilightbar { | ||||
| background-color: #ffffff; | ||||
|     } | ||||
| .infobar { | ||||
| background-color: #98d36e; | ||||
|     } | ||||
| a.update { | ||||
| font-size: 11px; | ||||
| background: #98d36e; | ||||
|     } | ||||
|  | ||||
| /* Core styles for use with sme_menu.css */ | ||||
| body.menu { | ||||
| background-color: #e8f3e1; | ||||
|     } | ||||
| td.section { | ||||
| background-color: #e8f3e1; | ||||
|     } | ||||
| a.item { | ||||
| background: #e8f3e1; | ||||
|     } | ||||
| a.sl { | ||||
| background: #e8f3e1; | ||||
|     } | ||||
| a.alert { | ||||
| background: #e8f3e1; | ||||
|     } | ||||
|      | ||||
| /* Core Styles for use with sme_main.css */ | ||||
| hr.sectionbar { | ||||
| color: #8ebe43; | ||||
| background-color: #8ebe43; | ||||
|     } | ||||
| hr.sme-copyrightbar { | ||||
| color: #8ebe43; | ||||
| background-color: #8ebe43; | ||||
|     } | ||||
| HERE | ||||
| } | ||||
| @@ -0,0 +1 @@ | ||||
| /* DO NOT MODIFY THIS FILE! It is updated automatically */ | ||||
| @@ -0,0 +1,440 @@ | ||||
| { | ||||
|     $OUT = <<'EOF'; | ||||
|  | ||||
| /*	from e-smith-manager to smanager (smeserver_manager2)  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*	This is the stylesheet used in the main panels only.   | ||||
|  | ||||
|    This file inherits the styles use in sme_core in the "header" section, and | ||||
|    as noted in the code below. Note that some of the styles here are empty.   | ||||
| 	This is because the style definition has moved safely to sme_core.css | ||||
| 	and the placeholder is left here for reference or future use. | ||||
|  | ||||
|    There are a lot of styles in here, so read carefully.  Each one is documented. | ||||
|  | ||||
| 	Styles that were in the old stylesheets, but are not used in the UI are at the | ||||
| 	bottom, commented out.  These can be removed at the end of the 6.0 cycle */ | ||||
|  | ||||
| /* general page properties */ | ||||
| body, body.main {  | ||||
|     margin-top: 5px;  | ||||
|     margin-right: 20px;  | ||||
|     margin-bottom: 5px;  | ||||
|     margin-left: 5px;  | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Table properties ****************************************/ | ||||
| /* There are THREE  types of tables | ||||
|    1. *.sme-layout*     is used for layout purposes.  It is the "master | ||||
| 	                      container" on a page.  It controls the top-level table | ||||
|                          inside of which everything else is put. | ||||
| 	2. *.sme-noborders*  is used for layout, and defines a borderless table and  | ||||
| 	                      cells used within it. | ||||
| 	2. *.sme-border*     is used for tabular data, and defines a header row and borders | ||||
| 	                      for tables that need borders | ||||
|  | ||||
| 	*/ | ||||
|  | ||||
| /*First, some defaults */ | ||||
| td { | ||||
|     text-align: left; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*  | ||||
| sme-layout* : Used for top-level layout | ||||
| */ | ||||
|  | ||||
| table.sme-layout { | ||||
|     border-collapse: collapse; | ||||
| 	 margin-bottom: 2px; | ||||
| 	 margin-top: 2px; | ||||
| } | ||||
|  | ||||
| tr.sme-layout { | ||||
|     border: 1px solid #dddddd;  | ||||
| } | ||||
|  | ||||
| td.sme-layout { | ||||
|     border: 1px solid #dddddd;  | ||||
| } | ||||
|  | ||||
| /*This special style is actually used only for the button row along the bottom of each page*/ | ||||
| th.sme-layout { | ||||
|     border: 1px solid #dddddd;  | ||||
|     background-color: #e8f3e1; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 9pt; | ||||
|     font-weight: bold; | ||||
|     color: #000000; | ||||
|     text-align: right;  | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| /*  | ||||
| sme-noborders* : Used for mid-level layout | ||||
| */ | ||||
| table.sme-noborders { | ||||
|     padding: 0px; | ||||
|     margin-top: 0px; | ||||
|     margin-bottom: 20px; | ||||
|     margin-left: 0px; | ||||
|     margin-right: 0px; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px; | ||||
| } | ||||
| td.sme-noborders-label { | ||||
|     font-weight: bold; | ||||
|     /*width: 250px;*/ | ||||
|     text-align: right; | ||||
|     /*vertical-align: top;*/ | ||||
|     background-color: #e8f3e1; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px; | ||||
| } | ||||
| td.sme-noborders-content { | ||||
|     text-align: left; | ||||
|     vertical-align: top;	 | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 11px; | ||||
| } | ||||
| td.sme-noborders-info, div.sme-noborders-info { | ||||
|     text-align: left; | ||||
|     vertical-align: top;	 | ||||
| } | ||||
| /* Used for a left-most column of radio buttons (see date/time panel) */ | ||||
| td.sme-radiobutton { | ||||
|     width: 30px; | ||||
| } | ||||
| /*  | ||||
| sme-border* : Used for tabular data | ||||
| */ | ||||
| table.sme-border { | ||||
|     border-collapse: collapse; | ||||
|     border: 2px solid #cccccc; | ||||
|     empty-cells: show; | ||||
|     margin: 5px 5px 5px 2px;	  | ||||
| } | ||||
| td.sme-border, | ||||
| td.sme-border-warning, | ||||
| td.sme-border-right, | ||||
| td.sme-border-center { | ||||
|     border: 1px solid #cccccc; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px; | ||||
|     font-weight: normal; | ||||
|     color: #000000; | ||||
|     text-align: left; | ||||
|     padding-left: 2px; | ||||
|     padding-right: 2px; | ||||
|     padding-top: 3px; | ||||
|     padding-bottom: 3px; | ||||
| } | ||||
| td.sme-border-warning { | ||||
|     color: red; | ||||
| 	 } | ||||
| td.sme-border-right {text-align: right;} | ||||
| td.sme-border-center {text-align: center;} | ||||
| th.sme-border { | ||||
|     border: 1px solid #cccccc;  | ||||
|     background-color: #bee6a2; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px; | ||||
|     font-weight: bold; | ||||
|     color: #000000; | ||||
|     text-align: center; | ||||
| 	 vertical-align: bottom; | ||||
|     padding-left: 2px; | ||||
|     padding-right: 2px; | ||||
|     padding-left: 3px; | ||||
|     padding-right: 3px; | ||||
|     padding-top: 3px; | ||||
|     padding-bottom: 3px; | ||||
| 	 /*border-width: 1px; | ||||
| 	 border-style: solid; | ||||
|     border-color: #F2F0EE #75736E #75736E #F2F0EE ;*/  | ||||
| } | ||||
| td.sme-border a, td.sme-border-right a, td.sme-border-center a { | ||||
|     font-size: 10px; | ||||
| } | ||||
|  | ||||
| /* misc layout stuff*/ | ||||
| /* these two are for any error messages that pop up*/ | ||||
| div.error, div.sme-error, span.error, span.sme-error { | ||||
|     color: red; | ||||
|     background-color: #ffffff; | ||||
|     border-width: 1px; | ||||
|     border-style: solid; | ||||
|     border-color: red ;  | ||||
|     padding: 2px; | ||||
|     margin-left: 20px; | ||||
|     margin-right: 20px; | ||||
|     margin-top:0px; | ||||
|     margin-bottom:0px; | ||||
| 	  | ||||
| } | ||||
|  | ||||
| div.error-noborders, div.sme-error-noborders, | ||||
| span.error-noborders, span.sme-error-noborders | ||||
| { | ||||
|     color: red; | ||||
|     background-color: #ffffff; | ||||
|     border-width: 0px; | ||||
| } | ||||
|  | ||||
| div.error h2, span.error h2, | ||||
| div.error p, span.error p | ||||
| { | ||||
|     color: red; | ||||
| } | ||||
| /* These are for the special case of a link being inside an error message */ | ||||
| div.sme-error a, div.error a, span.error a, span.sme-error a, | ||||
| div.error-noborders a, div.sme-error-noborders a, | ||||
| span.error-noborders a, span.sme-error-noborders a | ||||
| { | ||||
|     color: #ff0000; | ||||
|     font-weight: bold; | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| /* For when a link is the error message */ | ||||
| a.error:link, a.error:visited, a.error:hover, a.error:active { | ||||
|     color: #ff0000; | ||||
|     font-weight: normal; | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| /* these two are for any success messages that pop up*/ | ||||
| div.success, span.success { | ||||
|     color: #006400; | ||||
|     background-color: #ffffff; | ||||
|     border-width: 1px; | ||||
|     border-style: solid; | ||||
|     border-color: #006400 ;  | ||||
|     padding: 2px; | ||||
|     margin-left: 20px; | ||||
|     margin-right: 20px; | ||||
|     margin-top:0px; | ||||
|     margin-bottom:0px; | ||||
| 	  | ||||
| } | ||||
|  | ||||
| /* These two are for the special case of a link being inside a success message */ | ||||
| div.success a, span.success a  | ||||
| { | ||||
|     color: #006400; | ||||
|     font-weight: bold; | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| div.success h2, span.success h2, | ||||
| div.success p, span.success p | ||||
| { | ||||
|     color: green; | ||||
| } | ||||
|  | ||||
| /*These two define the copyright footer styles, one for the line and one for the text*/ | ||||
| hr.sme-copyrightbar { | ||||
| } | ||||
| .sme-copyright { | ||||
| } | ||||
|  | ||||
| /* These ones define styles for the links that are made to look like | ||||
|    standard form submit buttons */ | ||||
| a.button-like:link,  | ||||
| a.button-like:visited, | ||||
| a.button-like:hover, | ||||
| a.button-like:active, | ||||
| a.button-like-small:link,  | ||||
| a.button-like-small:visited, | ||||
| a.button-like-small:hover, | ||||
| a.button-like-small:active {  | ||||
|     font-family: sans-serif; | ||||
|     font-size: 13px;  | ||||
|     color: black;  | ||||
|     background: #D4D0C8;  | ||||
|     text-decoration: none; | ||||
|     text-align: left;  | ||||
|     border-color: #F2F0EE #75736E #75736E #F2F0EE ;  | ||||
|     margin-top: 10px;  | ||||
|     margin-right: 2px;  | ||||
|     margin-bottom: 10px;  | ||||
|     margin-left: 2px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 2px;  | ||||
|     border-right-width: 2px;  | ||||
|     border-bottom-width: 2px;  | ||||
|     border-left-width: 2px; | ||||
|     padding-top: 2px;  | ||||
|     padding-bottom: 2px;  | ||||
|     padding-left: 6px;  | ||||
|     padding-right: 6px;  | ||||
|  } | ||||
| a.button-like-small:link,  | ||||
| a.button-like-small:visited, | ||||
| a.button-like-small:hover, | ||||
| a.button-like-small:active {  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px; | ||||
|     font-size: 10px;  | ||||
|     padding-top: 0px;  | ||||
|     padding-bottom: 0px;  | ||||
|     padding-left: 1px;  | ||||
|     padding-right: 1px;  | ||||
| } | ||||
| a.button-like:active, | ||||
| a.button-like-small:active {  | ||||
|     border-color: #75736E #F2F0EE #F2F0EE #75736E  ;  | ||||
| } | ||||
|  | ||||
| /* EXPERIMENTAL SECTION */ | ||||
| /* These are styles used to experiment with. */ | ||||
|  | ||||
| /* class for links, similar to the class in sme_menu.css, but for a red button */ | ||||
| a.button-like-red:link,  | ||||
| a.button-like-red:visited, | ||||
| a.button-like-red:hover, | ||||
| a.button-like-red:active {  | ||||
|     border-left: #F1726C 2px solid; | ||||
|     border-right: #B42025 2px solid; | ||||
|     border-top: #F1726C 2px solid; | ||||
|     border-bottom: #B42025 2px solid; | ||||
|  } | ||||
| a.button-like-red:active {  | ||||
|     border-color: #75736E #F2F0EE #F2F0EE #75736E  ;  | ||||
| } | ||||
|  | ||||
| /*These are style definitions found in the UI but not defined in any file I  | ||||
|   could locate.  They're listed here for historical purposes, but have been | ||||
|   removed from the UI | ||||
|  | ||||
| pagedescription (used in the first paragraph of text on a page) [HTML.pm] | ||||
| label (used in forms) [HTML.pm] | ||||
| field (used in forms) [HTML.pm] | ||||
| fielddescription (used ???)[HTML.pm] | ||||
| buttons (used in forms) [HTML.pm] | ||||
| */   | ||||
| /*td.sme-submitbutton { | ||||
| 	text-align: right; | ||||
| } | ||||
| */ | ||||
|  | ||||
| /*These style definitions were found int he old css file (manager.css) | ||||
|   but don't seem to ever be referenced in the code.  They're here | ||||
|   for reference. | ||||
|  | ||||
| .banner { | ||||
|     background: #000000; | ||||
|     color: #ffffff; | ||||
| } | ||||
| .banner-right { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     background: #e17200; | ||||
|     color: #ffffff; | ||||
| } | ||||
| .border { | ||||
|     background: #000000; | ||||
|     color: #000000; | ||||
|     border-color: #000000; | ||||
| } | ||||
| .sidebar { | ||||
|     width: 200px; | ||||
|     background: #ffffff; | ||||
|     font-size: smaller; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-weight: normal; | ||||
| } | ||||
| .sidebar-title { | ||||
|     background: #1e385b; | ||||
|     color: #ffffff; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-weight: bold; | ||||
| } | ||||
| .newsitem { | ||||
|     background: #ffffff; | ||||
|     color: #000000; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     margin-left: 5px; | ||||
|     margin-right: 5px; | ||||
|     margin-top: 5px; | ||||
|     margin-bottom: 5px; | ||||
| } | ||||
| .newsitem-title { | ||||
|     background: #cccccc; | ||||
|     color: #ffffff; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-weight: bold; | ||||
| } | ||||
| .newsitem-footer { | ||||
|     background: #cccccc; | ||||
|     color: #000000; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: smaller; | ||||
|     text-align: right; | ||||
| } | ||||
| .newsitem-detail { | ||||
|     font-size: smaller; | ||||
|     font-weight: normal; | ||||
| }  | ||||
| .formlabel { | ||||
|     background: #c0c0c0; | ||||
|     color: #000000; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: small; | ||||
|     font-weight: bold; | ||||
|     text-align: right; | ||||
| } | ||||
| .welcome-link { | ||||
|     background: #ffffff; | ||||
|     color: #1e385b; | ||||
| } | ||||
| .littlelink { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
| } | ||||
| #textlayer { | ||||
|     position: absolute; | ||||
|     visibility: inherit; | ||||
|     top: 160px; | ||||
|     left: 50px; | ||||
|     z-index: 2; | ||||
| } | ||||
| #para { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-weight: bold; | ||||
|     color: #000000; | ||||
| }   | ||||
| #title { | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-weight: bold; | ||||
|     padding: 7px 7px 7px 7px; | ||||
|     color: #ffffff; | ||||
| }  | ||||
| */ | ||||
|  | ||||
| EOF | ||||
| } | ||||
| @@ -0,0 +1,50 @@ | ||||
| { | ||||
|     $OUT =<<'HERE'; | ||||
|  | ||||
| /*	from e-smith-manager to smanager (smeserver_manager2)  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
| /*contribs.org styling */ | ||||
|  | ||||
| /* This special style is actually used only for the button row along the bottom of each page */ | ||||
| th.sme-layout { | ||||
| border: 1px solid #8ebe43; | ||||
| background-color: #bee6a2; | ||||
|     } | ||||
| table.sme-border { | ||||
| border: 2px solid #dddddd; | ||||
|     } | ||||
| td.sme-border-warning, | ||||
| td.sme-border-right, | ||||
| td.sme-border-center { | ||||
| border: 1px solid #dddddd; | ||||
|     } | ||||
| td.sme-border-right {text-align: right;} | ||||
| td.sme-border-center {text-align: center;} | ||||
| th.sme-border { | ||||
| border: 1px solid #dddddd; | ||||
| background-color: #e8f3e1; | ||||
|     } | ||||
| HERE | ||||
| } | ||||
|      | ||||
| @@ -0,0 +1 @@ | ||||
| /* DO NOT MODIFY THIS FILE! It is updated automatically */ | ||||
| @@ -0,0 +1,229 @@ | ||||
| { | ||||
|     $OUT = <<'EOF'; | ||||
|  | ||||
| /*	from e-smith-manager to smanager (smeserver_manager2)  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /* This is the stylesheet used in the navigation panel only | ||||
|  | ||||
|    This file inherits the styles use in sme_core in the "navigation" section, | ||||
|    and as noted in the code below. Note that some of the styles here are empty. | ||||
|    This is because the style definition has moved safely to sme_core.css and | ||||
|    the placeholder is left here for reference or future use. | ||||
|  | ||||
|    There are a lot of styles in here, so read carefully.  Each one is | ||||
|    documented. | ||||
|  | ||||
|    Styles that were in the old stylesheets, but are not used in the UI are at | ||||
|    the bottom, commented out.  These can be removed at the end of the 6.0 | ||||
|    cycle */ | ||||
|  | ||||
| /* Sets the general page properties */ | ||||
| body, body.menu {  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 2px;  | ||||
| } | ||||
|  | ||||
| /* This is the section heading style */ | ||||
| .section { | ||||
| } | ||||
|  | ||||
| td.menu-cell { | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     padding-left: 0px; | ||||
|     padding-right: 0px; | ||||
|     padding-top: 0px; | ||||
|     padding-bottom: 0px; | ||||
|  | ||||
| } | ||||
|  | ||||
| /* | ||||
| All the a links use pseudoclasses to control the two visual link styles. | ||||
| For example: | ||||
|   a.item:link             the general link item | ||||
|   a.item-current:link:    the active link item | ||||
|  | ||||
| The switch from item to item-current is done with a javascript script in the head of the | ||||
| navigation page, using the onClick event. | ||||
|  | ||||
| We are making heavy use of the cascade with these. | ||||
| */     | ||||
|  | ||||
| /* a:link controls the look of a link when the mouse is nowhere near it */ | ||||
| a.item:link, a.item-current:link,  | ||||
| a.warn:link, a.warn-current:link {  | ||||
|     display: block; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
|     color: black;  | ||||
|     background: #e8f3e1;  | ||||
|     text-decoration: none; | ||||
|     text-align: left;  | ||||
|     border-color: #e8f3e1;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px; | ||||
|     padding-right: 10px;  | ||||
|     padding-left: 10px;  | ||||
|     padding-top: 0px;  | ||||
|     padding-bottom: 2px;  | ||||
|  } | ||||
|  | ||||
| /* a:visited controls the look of a visited link (one that has been clicked) */ | ||||
| a.item:visited, a.item-current:visited,  | ||||
| a.warn:visited, a.warn-current:visited {  | ||||
|     display: block; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
|     color: black;  | ||||
|     background: #e8f3e1;  | ||||
|     text-decoration: none;  | ||||
|     border-color: #e8f3e1;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px; | ||||
|     padding-right: 10px;  | ||||
|     padding-left: 10px;  | ||||
|     padding-bottom: 2px;  | ||||
|     text-align: left;  | ||||
| } | ||||
|  | ||||
| /* a:hover controls the look of a link under the curser*/ | ||||
| a.item:hover, a.item-current:hover, | ||||
| a.warn:hover, a.warn-current:hover {  | ||||
|     display: block; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
|     color: black;  | ||||
|     text-decoration: none;  | ||||
|     background: #cccccc;  | ||||
|     border-color: #888888;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px; | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px;  | ||||
|     padding-right: 10px;  | ||||
|     padding-left: 10px;  | ||||
|     padding-bottom: 2px;  | ||||
|     text-align: left;  | ||||
| } | ||||
|  | ||||
| /* a:active controls the look of a link as it is selected*/ | ||||
| a.item:active, a.item-current:active,  | ||||
| a.warn:active, a.warn-current:active {  | ||||
|     display: block; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
|     color: white;  | ||||
|     background: black;  | ||||
|     text-decoration: none ;  | ||||
|     border-color: #000000;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px;  | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px; | ||||
|     padding-right: 10px;  | ||||
|     padding-left: 10px;  | ||||
|     padding-bottom: 2px;  | ||||
|     text-align: left;  | ||||
| } | ||||
|  | ||||
| /*  | ||||
| These styles are to ensure that a selected link appears selected, even if the link | ||||
| opens in another frame.  This uses a javascript chunk in the head of the navigation  | ||||
| frame to change the style using the onClick event. | ||||
| */ | ||||
| a.item-current:link,    a.warn-current:link, | ||||
| a.item-current:visited, a.warn-current:visited,  | ||||
| a.item-current:active,  a.warn-current:active, | ||||
| a.item-current:hover,   a.warn-current:hover {  | ||||
|     display: block; | ||||
|     font-family: Verdana, Arial, Helvetica, sans-serif; | ||||
|     font-size: 10px;  | ||||
|     color: black;  | ||||
|     text-decoration: none;  | ||||
|     background: #ffffff;  | ||||
|     border-color: #888888;  | ||||
|     margin-top: 0px;  | ||||
|     margin-right: 0px; | ||||
|     margin-bottom: 0px;  | ||||
|     margin-left: 0px;  | ||||
|     border-style: solid;  | ||||
|     border-top-width: 1px;  | ||||
|     border-right-width: 1px;  | ||||
|     border-bottom-width: 1px;  | ||||
|     border-left-width: 1px;  | ||||
|     padding-right: 10px;  | ||||
|     padding-left: 10px;  | ||||
|     padding-bottom: 2px;  | ||||
|     text-align: left;  | ||||
| } | ||||
|  | ||||
| /* these two add a border on the styles defined directly above when | ||||
| the mouse is hovering over them */ | ||||
| a.item-current:hover,   a.warn-current:hover {  | ||||
|     border-color: #888888;  | ||||
| } | ||||
|  | ||||
| /* These redefine a few elements to make room for the icon to the left of the warn class*/ | ||||
| a.warn:link,    a.warn-current:link,  | ||||
| a.warn:visited, a.warn-current:visited,  | ||||
| a.warn:active,  a.warn-current:active, | ||||
| a.warn:hover,   a.warn-current:hover {  | ||||
|     background-image: url(/server-common/warn.gif); | ||||
|     background-repeat: no-repeat; | ||||
|     background-position: 10px;  | ||||
|     padding-left: 25px;  | ||||
| } | ||||
| /*end*/ | ||||
|  | ||||
| EOF | ||||
| } | ||||
| @@ -0,0 +1 @@ | ||||
| /* DO NOT MODIFY THIS FILE! It is updated automatically */ | ||||
| @@ -0,0 +1,278 @@ | ||||
| { | ||||
|     $OUT = <<'EOF'; | ||||
|  | ||||
| /*	smeserver_manager2  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------- | ||||
|  * copyright (C) 1999-2003 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 | ||||
|  * | ||||
|  * Technical support for this program is available from Mitel Networks | ||||
|  * Please visit our web site www.mitel.com for details. | ||||
|  *---------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /* This is the basic stylesheet originally used in the mojo version. | ||||
|    */ | ||||
|  | ||||
| body{ | ||||
|     background-color: #FFF; | ||||
| } | ||||
|  | ||||
| #container{ | ||||
|     max-width: 100%; | ||||
|     position: relative; | ||||
|     margin: auto; | ||||
| } | ||||
|  | ||||
| #navigation{ | ||||
|     width: 190px; | ||||
|     position: absolute; | ||||
|     margin-left: 0px; | ||||
|     padding: 5px; | ||||
|     background-color: #E8F3E1; | ||||
| /*    height: 600px; */ | ||||
|     overflow: auto; | ||||
| } | ||||
|  | ||||
| #main{ | ||||
|     margin-left: 195px; | ||||
|     padding: 10px; | ||||
| } | ||||
|  | ||||
| #central{ | ||||
|     margin-left: 0px; | ||||
|     padding: 5px; | ||||
| } | ||||
|  | ||||
| #footer{ | ||||
|     margin-left: 0px; | ||||
|     padding: 5px; | ||||
| } | ||||
|  | ||||
| #header { | ||||
|     background: #bee6a2; | ||||
| } | ||||
|  | ||||
| #header h1, a:link, a:visited { | ||||
|     color: black; | ||||
|     text-decoration: none; | ||||
| /* contribs.org styling */ | ||||
| } | ||||
|  | ||||
| a:link { color: #006921; text-decoration: none; } | ||||
| a:visited { color: #063; text-decoration: none; } | ||||
| a:hover { color: #F00; text-decoration: none; } | ||||
| a:active { color: #606060; text-decoration: none; } | ||||
|  | ||||
| .sme-error { | ||||
|     color: red; | ||||
|     background-color: #ffffff; | ||||
|     border-width: 1px; | ||||
|     border-style: solid; | ||||
|     border-color: red ;  | ||||
|     padding: 2px; | ||||
|     margin-left: 10px; | ||||
|     margin-right: 10px; | ||||
|     margin-top:0px; | ||||
|     margin-bottom:0px; | ||||
| } | ||||
|  | ||||
| .sme-warning { | ||||
|     color: orange; | ||||
|     background-color: #ffffff; | ||||
|     border-width: 1px; | ||||
|     border-style: solid; | ||||
|     border-color: orange ;  | ||||
|     padding: 4px; | ||||
|     margin-left: 20px; | ||||
|     margin-right: 20px; | ||||
|     margin-top:2px; | ||||
|     margin-bottom:2px; | ||||
| } | ||||
|  | ||||
| #footer img { | ||||
|     float: right; | ||||
|     position: fixed; | ||||
|     margin-left: 40%; | ||||
| } | ||||
|  | ||||
| label.field-with-error { | ||||
| 	color: #dd7e5e | ||||
| } | ||||
|  | ||||
| input.field-with-error {  | ||||
| 	background-color: #fd9e7e  | ||||
| } | ||||
|  | ||||
| span.label { | ||||
|     display: inline-block; | ||||
|     font-weight: bold; | ||||
|     background-color: #e8f3e1; /*lightgreen;*/ | ||||
|     width: 30%; | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| td.label { | ||||
|     font-weight: bold; | ||||
|     background-color: #e8f3e1; /*lightgreen;*/ | ||||
|     width: 30%; | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| span.label2 { | ||||
|     display: inline-block; | ||||
|     font-weight: bold; | ||||
|     background-color: #e8f3e1; /*lightgreen;*/ | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| span.data { | ||||
|     padding: 2px; | ||||
|     font-weight: bold; | ||||
|     margin-left: 0%; | ||||
| /*    background-color: lightblue;*/ | ||||
| } | ||||
|  | ||||
| span.data2 { | ||||
|     padding: 2px; | ||||
| /*    background-color: lightblue; */ | ||||
| } | ||||
|  | ||||
| input.action { | ||||
|     margin-left: 0px; | ||||
|     background-color: #bee6a2; /*lightgreen;*/ | ||||
|     color: darkgreen; | ||||
|     border-radius: 8px; | ||||
|     border: 2px solid #4CAF50; /* Green */ | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
| } | ||||
|  | ||||
| input.action:hover {background-color: #3e8e41; color:white;} | ||||
|  | ||||
| input.action:active { | ||||
|   background-color: #3e8e41; | ||||
|   transform: translate(-2px,2px); | ||||
| } | ||||
|  | ||||
| .center { | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
| } | ||||
|  | ||||
| input.action2 { | ||||
|     margin-left: 0px; | ||||
|     color: black; | ||||
|     background-color: #d4d0c8; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
| } | ||||
|  | ||||
|  | ||||
| #modul.desc { | ||||
|     padding: 3px; | ||||
|     background-color: grey; | ||||
| } | ||||
|  | ||||
| [type = 'text'] { | ||||
|     margin-left: 0px; | ||||
|     /*background-color: lightblue;*/ | ||||
| } | ||||
|  | ||||
| .a, .return { | ||||
|     color: #661866; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| a.section { | ||||
| } | ||||
| .a, .item { | ||||
|     line-height: 12px; | ||||
| } | ||||
|  | ||||
| a.section-title { | ||||
|     display: inline-block; | ||||
|     color: #6CA345;	/*#888;*/ | ||||
|     padding-left: 5px; | ||||
|     padding-right: 5px; | ||||
|     line-height: 18px; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| a.menu-title { | ||||
|     display: inline-block; | ||||
|     color: #1A6D1A;	/*#666;*/ | ||||
|     padding-left: 1px; | ||||
|     padding-right: 1px; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
|  | ||||
| #module { | ||||
| /*    height: 600px; */ | ||||
|     overflow: auto; | ||||
| } | ||||
|  | ||||
|  | ||||
| #h2l1 { | ||||
|     height: 40px; | ||||
|     width: 100%; | ||||
| } | ||||
| #h2e11 { | ||||
|     width: 70%; | ||||
|     float: left; | ||||
| } | ||||
| #h2e12 { | ||||
|     background-color: #C0E7A6; | ||||
|     float: left; | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| #h2l2 { | ||||
| /*    background-color: #A8F9E7;*/ | ||||
|     border-top: solid white 3px; | ||||
|     border-bottom: solid white 2px; | ||||
|     height: 14px; | ||||
|     width: 100%; | ||||
|     padding: 1px; | ||||
| } | ||||
|  | ||||
| #h2e21 { | ||||
|     float: left; | ||||
|     width: 70%; | ||||
| } | ||||
|  | ||||
| #h2e22,#h2e23 { | ||||
|     float: left; | ||||
|     width: 10%; | ||||
|     text-align: center; | ||||
| } | ||||
|  | ||||
| .toggle-password { | ||||
|     margin-left: -30px; | ||||
| } | ||||
|  | ||||
| .tg-icon { | ||||
|     position: relative; | ||||
|     top: 5px; | ||||
|     left: 2px; | ||||
| } | ||||
|  | ||||
| /*end*/ | ||||
| EOF | ||||
| } | ||||
| @@ -0,0 +1 @@ | ||||
| /* DO NOT MODIFY THIS FILE! It is updated automatically */ | ||||
							
								
								
									
										0
									
								
								root/etc/e-smith/web/common/cgi-bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								root/etc/e-smith/web/common/cgi-bin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								root/etc/e-smith/web/common/css/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								root/etc/e-smith/web/common/css/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								root/etc/e-smith/web/functions/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								root/etc/e-smith/web/functions/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								root/etc/e-smith/web/panels/manager2/common/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								root/etc/e-smith/web/panels/manager2/common/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
		Reference in New Issue
	
	Block a user
	 Trevor Batley
					Trevor Batley