mirror of https://github.com/jeelabs/esp-link.git
parent
c4cded360e
commit
3067718143
@ -0,0 +1,114 @@ |
||||
#!/usr/bin/perl |
||||
|
||||
use strict; |
||||
use Data::Dumper; |
||||
|
||||
my $dir = shift @ARGV; |
||||
my $out = shift @ARGV; |
||||
|
||||
my $espfs = ''; |
||||
|
||||
my @structured = read_dir_structure($dir, ""); |
||||
|
||||
for my $file (@structured) |
||||
{ |
||||
my $flags = 0; |
||||
my $name = $file; |
||||
my $compression = 0; |
||||
|
||||
if( $name =~ /\.gz$/ ) |
||||
{ |
||||
$flags |= 2; |
||||
$name =~ s/\.gz$//; |
||||
} |
||||
|
||||
my $head = '<!doctype html><html><head><title>esp-link</title><link rel=stylesheet href="/pure.css"><link rel=stylesheet href="/style.css"><meta name=viewport content="width=device-width, initial-scale=1"><script src="/ui.js"></script></head><body><div id=layout>'; |
||||
|
||||
open IF, "<", "$dir/$file" or die "Can't read file: $!"; |
||||
my @fc = <IF>; |
||||
close(IF); |
||||
my $cnt = join("", @fc); |
||||
|
||||
if( $name =~ /\.html$/ ) |
||||
{ |
||||
if( ! ( $flags & 2 ) ) |
||||
{ |
||||
$cnt = "$head$cnt"; |
||||
} |
||||
else |
||||
{ |
||||
printf("TODO: prepend headers to GZipped HTML content!\n"); |
||||
} |
||||
} |
||||
|
||||
$name .= chr(0); |
||||
$name .= chr(0) while( (length($name) & 3) != 0 ); |
||||
|
||||
my $size = length($cnt); |
||||
|
||||
$espfs .= "ESfs"; |
||||
$espfs .= chr($flags); |
||||
$espfs .= chr($compression); |
||||
$espfs .= chr( length($name) & 255 ); |
||||
$espfs .= chr( length($name) / 256 ); |
||||
$espfs .= chr( $size & 255 ); |
||||
$espfs .= chr( ( $size / 0x100 ) & 255 ); |
||||
$espfs .= chr( ( $size / 0x10000 ) & 255 ); |
||||
$espfs .= chr( ( $size / 0x1000000 ) & 255 ); |
||||
$espfs .= chr( $size & 255 ); |
||||
$espfs .= chr( ( $size / 0x100 ) & 255 ); |
||||
$espfs .= chr( ( $size / 0x10000 ) & 255 ); |
||||
$espfs .= chr( ( $size / 0x1000000 ) & 255 ); |
||||
|
||||
$espfs .= $name; |
||||
|
||||
|
||||
|
||||
$cnt .= chr(0) while( (length($cnt) & 3) != 0 ); |
||||
$espfs .= $cnt; |
||||
} |
||||
|
||||
$espfs .= "ESfs"; |
||||
$espfs .= chr(1); |
||||
for(my $i=0; $i < 11; $i++) |
||||
{ |
||||
$espfs .= chr(0); |
||||
} |
||||
|
||||
open FH, ">", $out or die "Can't open file for write, $!"; |
||||
print FH $espfs; |
||||
close(FH); |
||||
|
||||
|
||||
exit(0); |
||||
|
||||
sub read_dir_structure |
||||
{ |
||||
my ($dir, $base) = @_; |
||||
|
||||
my @files; |
||||
|
||||
opendir my $dh, $dir or die "Could not open '$dir' for reading: $!\n"; |
||||
|
||||
while (my $file = readdir $dh) { |
||||
if ($file eq '.' or $file eq '..') { |
||||
next; |
||||
} |
||||
|
||||
my $path = "$dir/$file"; |
||||
if( -d "$path" ) |
||||
{ |
||||
my @sd = read_dir_structure($path, "$base/$file"); |
||||
push @files, @sd ; |
||||
} |
||||
else |
||||
{ |
||||
push @files, "$base/$file"; |
||||
} |
||||
} |
||||
|
||||
close( $dh ); |
||||
|
||||
$_ =~ s/^\/// for(@files); |
||||
return @files; |
||||
} |
Binary file not shown.
@ -0,0 +1,3 @@ |
||||
<div> |
||||
<h1>Hello</h1> |
||||
</div> |
Loading…
Reference in new issue