2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

Simplification in html/js/css code and redirecting if /fhem not specified

git-svn-id: https://svn.fhem.de/fhem/trunk@1417 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2012-04-06 08:27:32 +00:00
parent 61f60bbe49
commit 3395687f7e

View File

@ -55,7 +55,8 @@ my $try_zlib = 1;
#########################
# As we are _not_ multithreaded, it is safe to use global variables.
# Note: for delivering SVG plots we fork
my %FW_webArgs; # all arguments specifie in the GET
my @FW_httpheader; # HTTP header, line by line
my %FW_webArgs; # all arguments specified in the GET
my $FW_cmdret; # Returned data by the fhem call
my $FW_data; # Filecontent from browser when editing a file
my $FW_detail; # currently selected device for detail view
@ -214,7 +215,8 @@ FW_Read($)
$selectlist{$nhash{NAME}} = \%nhash;
if($hash->{SSL}) {
# Certs directory must be in the modpath, i.e. at the same level as the FHEM directory
# Certs directory must be in the modpath, i.e. at the same level as the
# FHEM directory
my $mp = AttrVal("global", "modpath", ".");
my $ret = IO::Socket::SSL->start_SSL($nhash{CD}, {
SSL_server => 1,
@ -265,13 +267,13 @@ FW_Read($)
return if($hash->{BUF} !~ m/\n\n$/ && $hash->{BUF} !~ m/\r\n\r\n$/);
#Log 0, "Got: >$hash->{BUF}<";
my @lines = split("[\r\n]", $hash->{BUF});
@FW_httpheader = split("[\r\n]", $hash->{BUF});
#############################
# BASIC HTTP AUTH
my $basicAuth = AttrVal($FW_wname, "basicAuth", undef);
if($basicAuth) {
my @auth = grep /^Authorization: Basic $basicAuth/, @lines;
my @auth = grep /^Authorization: Basic $basicAuth/, @FW_httpheader;
if(!@auth) {
my $msg = AttrVal($FW_wname, "basicAuthMsg", "Fhem: login required");
print $c "HTTP/1.1 401 Authorization Required\r\n",
@ -282,8 +284,8 @@ FW_Read($)
}
#############################
my @enc = grep /Accept-Encoding/, @lines;
my ($mode, $arg, $method) = split(" ", $lines[0]);
my @enc = grep /Accept-Encoding/, @FW_httpheader;
my ($mode, $arg, $method) = split(" ", $FW_httpheader[0]);
$hash->{BUF} = "";
Log $ll, "HTTP $name GET $arg";
@ -304,9 +306,9 @@ FW_Read($)
}
my $compressed = "";
if(($FW_RETTYPE=~m/text/i ||
$FW_RETTYPE=~m/svg/i ||
$FW_RETTYPE=~m/script/i) &&
if(($FW_RETTYPE =~ m/text/i ||
$FW_RETTYPE =~ m/svg/i ||
$FW_RETTYPE =~ m/script/i) &&
(int(@enc) == 1 && $enc[0] =~ m/gzip/) &&
$try_zlib &&
AttrVal($FW_wname, "fwcompress", 1)) {
@ -342,28 +344,21 @@ FW_AnswerCall($)
$FW_tp = AttrVal($FW_wname, "touchpad", $FW_ss);
# Lets go:
if($arg =~ m,^${FW_ME}/(example.*|.*html)$,) {
my $f = $1;
$f =~ s,/,,g; # little bit of security
open(FH, "$FW_dir/$f") || return 0;
if($arg =~ m,^${FW_ME}/(.*)\.(css|html|js)$,) {
my ($file, $ext) = ($1, $2);
$file =~ s,/,,g; # little bit of security
open(FH, "$FW_dir/$file.$ext") || return 0;
FW_pO join("", <FH>);
close(FH);
$FW_RETTYPE = "text/plain; charset=$FW_encoding" if($f !~ m/\.*html$/);
return 1;
} elsif($arg =~ m,^$FW_ME/(.*).css,) {
my $cssName = $1;
return 0 if(!open(FH, "$FW_dir/$cssName.css"));
FW_pO join("", <FH>);
close(FH);
$FW_RETTYPE = "text/css";
$FW_RETTYPE = "text/css" if($ext eq "css");
$FW_RETTYPE = "application/javascript" if($ext eq "js");
return 1;
} elsif($arg =~ m,^$FW_ME/icons/(.*)$, ||
$arg =~ m,^$FW_ME/(.*.png)$,i) {
my $img = $1;
my $cachable = 1;
if(!open(FH, "$FW_dir/$img")) {
if(!open(FH, "$FW_dir/$img")) { # Hack: convert device state to icon name
FW_ReadIcons();
$img = FW_dev2image($img);
$cachable = 0;
@ -376,16 +371,13 @@ FW_AnswerCall($)
$FW_RETTYPE = "image/$f_ext[-1]";
return $cachable;
} elsif($arg =~ m,^$FW_ME/(.*).js,) { #kpb java include
open(FH, "$FW_dir/$1.js") || return 0;
FW_pO join("", <FH>);
close(FH);
$FW_RETTYPE = "application/javascript";
return 1;
} elsif($arg !~ m/^$FW_ME(.*)/) {
Log(5, "Unknown document $arg requested");
return 0;
my $c = $me->{CD};
Log 2, "$FW_wname: redirecting $arg to $FW_ME";
print $c "HTTP/1.1 302 Found\r\n",
"Content-Length: 0\r\n",
"Location: $FW_ME\r\n\r\n";
return -1;
}
@ -826,10 +818,10 @@ FW_roomOverview($)
"Howto", "$FW_ME/HOWTO.html",
"Wiki", "http://fhemwiki.de",
"Details", "$FW_ME/commandref.html",
"Definition...", "$FW_ME/cmd=style%20addDef",
"Edit files", "$FW_ME/cmd=style%20list",
"Select style", "$FW_ME/cmd=style%20select",
"Event monitor", "$FW_ME/cmd=style%20eventMonitor",
"Definition...", "$FW_ME?cmd=style%20addDef",
"Edit files", "$FW_ME?cmd=style%20list",
"Select style", "$FW_ME?cmd=style%20select",
"Event monitor", "$FW_ME?cmd=style%20eventMonitor",
"", "");
my $lastname = ","; # Avoid double "".
for(my $idx = 0; $idx < @list; $idx+= 2) {