#!/usr/bin/perl -w
# OneClickInstallUI http://i.opensu.se/devel:languages:perl/perl-Fuse

use strict;
use POSIX;
use Fuse;
use LWP::UserAgent;
my $mnt=shift || die "usage: $0 MNT\n";
my $baseurl="http://localhost/~bernhard";
my $ua=LWP::UserAgent->new(parse_head=>0, timeout=>9);

sub my_getdir($)
{ my($f)=@_;
	my $url="$baseurl$f";
	print "getdir: $url\n";
	my $r = $ua->get("http://localhost/~bernhard/");
	if($r->code!=200) {
		return -1*ENOENT;
	}
	$_=$r->content;
	my @ref=(m/a href="([^"]+)"/g);
	@ref=grep {m/^[^?]+$/} @ref; # filter out dynamic links
	return (@ref,0);
	#print $r->status_line, $r->content;
#	return (".", "testab", "2", 0);
}

sub my_getattr($)
{ my($f)=@_;
    my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)=(0,0);
	$mode=0040755; # dir
	$nlink=1;
	$uid=$<;
	($gid)=split / /,$(;
	$size=0;
	$rdev=0;
	$atime=time;
	$ctime=$atime;
	$mtime=$atime;
	$blksize=1024;
	$blocks=1;
    return ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks);
	return -1*ENOENT;
}

#my $response = $ua->get("http://localhost/~bernhard/");
#print $response->status_line, $response->content;
#exit 0;
Fuse::main(
	debug=>1,
	mountpoint=>$mnt,
	getdir=>\&my_getdir,
	getattr=>\&my_getattr,
);
