
--# Web Server built with Glade

include GtkEngine.e

-- You may need to change the following line if you use a terminal other 
-- than gnome-terminal. This is only necessary if you want to use the 
-- tail -f option to display on-going connection requests;

constant term = "gnome-terminal --title='SERVER LOG' --window-with-profile=logview -e "

   add(builder,"webserver.glade")
   set("ip","text",get_net_address())
    
main()

--------------------------------------
global function on_help_button_clicked()
--------------------------------------
    show_uri(sprintf("file:///%s",
        {canonical_path("~/demos/documentation/ServerHelp.html")}))
return 1
end function

-----------------------------------------------------------------------
global function on_log_file_icon_press(atom self) 
-----------------------------------------------------------------------
  set(self,"text","")
return 1
end function

------------------------------------------------------------------------
global function on_ok_button_clicked(atom ctl, atom data)
------------------------------------------------------------------------
object server = canonical_path("~/demos/examples/httpd.ex")
object logfilename = get("log_file","text")

object path = get("filechooserbutton1","filename")
	if atom(path) then -- nothing chosen
		Warn(,,"Must select a root file path!")
		return 1
	end if

-- build a command string to pass to httpd.ex;
object params = sprintf("eui %s -bind %s:%s ",
    {server,get("ip","text"),get("port","text")})
    
    if length(path) > 0 then
        params &= sprintf("-root '%s' ",{canonical_path(path)})
    end if

    if length(logfilename) > 0 then
        params &= sprintf("-log %s ",{logfilename})
    end if

    if get("sort","active") then
        params &= " -s "
    end if

    if get("show_hidden","active") then
        params &=" -h "
    end if

    if get("show_full_request","active") then
        params &= " -r "
    end if

    params &= " & "
   
    if get("tail_f","active") then -- open a term to tail the log
        system_exec(sprintf("%s 'tail -f %s' & ",{term,logfilename}),0)
    end if

    system_exec(params)

return 1
end function

