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