#
# \brief  Example for hosting the genode.org website on Genode
# \author Norman Feske
# \date   2012-08-16
#
# This run script uses the lighttpd web server to host the genode.org website.
# When executed the first time, the genode.org website is downloaded to
# 'bin/genode_org/website'. When the web server is up, you may point your web
# browser to http://localhost:5555
#

create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
                  [depot_user]/pkg/[drivers_nic_pkg] \
                  [depot_user]/src/init \
                  [depot_user]/src/libc \
                  [depot_user]/src/libcrypto \
                  [depot_user]/src/libssh \
                  [depot_user]/src/libssl \
                  [depot_user]/src/lighttpd \
                  [depot_user]/src/posix \
                  [depot_user]/src/vfs \
                  [depot_user]/src/vfs_lwip \
                  [depot_user]/src/zlib

install_config {
<config>
	<parent-provides>
		<service name="ROM"/>
		<service name="LOG"/>
		<service name="RM"/>
		<service name="CPU"/>
		<service name="PD"/>
		<service name="IRQ"/>
		<service name="IO_PORT"/>
		<service name="IO_MEM"/>
	</parent-provides>
	<default-route>
		<any-service> <parent/> <any-child/> </any-service>
	</default-route>
	<default caps="100"/>

	<start name="timer">
		<resource name="RAM" quantum="1M"/>
		<provides><service name="Timer"/></provides>
	</start>

	<start name="nic_drv" caps="1000" managing_system="yes">
		<resource name="RAM" quantum="32M"/>
		<binary name="init"/>
		<route>
			<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
			<service name="Timer"> <child name="timer"/> </service>
			<any-service> <parent/> </any-service>
		</route>
		<provides> <service name="Nic"/> </provides>
	</start>

	<start name="lighttpd" caps="1000">
		<resource name="RAM" quantum="1G" />
		<config>
			<arg value="lighttpd" />
			<arg value="-f" />
			<arg value="/etc/lighttpd/lighttpd.conf" />
			<arg value="-D" />
			<vfs>
				<dir name="dev">
					<log/>
					<null/>
				</dir>
				<dir name="socket">
					<lwip dhcp="yes"/> </dir>
				<tar name="genode_org.tar"/>
			</vfs>
			<libc stdin="/dev/null" stdout="/dev/log" stderr="/dev/log"
			      socket="/socket" />
		</config>
	</start>
</config>}

#
# Create TAR archive containting the web-server configuration and the
# website content.
#

# lighttpd configuration
exec mkdir -p bin/genode_org/etc/lighttpd
set fd [open "bin/genode_org/etc/lighttpd/lighttpd.conf" w]
puts $fd {
server.port                    = 80
server.document-root           = "/website"
server.event-handler           = "select"
server.network-backend         = "write"
server.max-keep-alive-requests = 0
index-file.names               = ( "index", "index.html", "index.htm" )
mimetype.assign                = (
                                   ".png"  => "image/png",
                                   ".jpg"  => "image/jpeg",
                                   ".jpeg" => "image/jpeg",
                                   ".gif"  => "image/gif",
                                   ".css"  => "text/css",
                                   ".html" => "text/html",
                                   ".htm"  => "text/html",
                                   ""      => "text/html",
                                 ) }
close $fd

# mirror of genode.org website
if {![file exists bin/genode_org/website/index]} {
	puts "mirroring genode.org website to bin/genode_org/website..."
	exec mkdir -p bin/genode_org/website

	# ignore wget errors
	catch {
		exec wget -nH -Lrc -P bin/genode_org/website https://genode.org
	}
}

exec tar cfv bin/genode_org.tar -h -C bin/genode_org .

build_boot_image { genode_org.tar }

append qemu_args " -nographic "
append_qemu_nic_args "hostfwd=tcp::5555-:80"

run_genode_until forever
