diff options
author | alekseiplusplus <alekseijeaves@protonmail.com> | 2024-06-30 14:48:13 +1000 |
---|---|---|
committer | alekseiplusplus <alekseijeaves@protonmail.com> | 2024-06-30 14:48:13 +1000 |
commit | d5cc926ec6c3020d2d51cacc7d14e59c558c4167 (patch) | |
tree | 7dbc071ee3ecd6c143426984c19b4c73c11a42c7 | |
parent | a61f03cfbf62eb006e6bd845694f18d40101d4e8 (diff) |
beginning draftwork on modules
-rwxr-xr-x | configure.tcl | 18 | ||||
-rwxr-xr-x | html.tcl | 16 | ||||
-rwxr-xr-x | http.tcl | 8 | ||||
-rw-r--r-- | modules/template.tcl | 14 | ||||
-rwxr-xr-x | tcl-httpd (renamed from main.tcl) | 3 |
5 files changed, 52 insertions, 7 deletions
diff --git a/configure.tcl b/configure.tcl index 5691763..3c3a426 100755 --- a/configure.tcl +++ b/configure.tcl @@ -2,7 +2,7 @@ namespace eval http { # The directory which files are searched for. - variable root {/home/aleksei/www/files/} + variable srv {/home/aleksei/www/files/} # hook_namespace refers to a user-created namespace. # It must have some things such as # A proc 'main' which is what the server will execute to get information. @@ -14,12 +14,24 @@ namespace eval http { {/fonts/} } } -} + namespace eval module { + #variable directory {} + source modules/template.tcl + } +} -## Import HTML Generating Modules ## Validate configuration variables. ## Especially file exists content ## Especially validate the existence of necessary components in $content + + +proc validate {} { + # Two types of rules + # The VARIABLE=value + # For instance, SRV=/ and whatnot + # The @ACTION Etc + # For instance, @MODULE and @PRECACHE +} diff --git a/html.tcl b/html.tcl new file mode 100755 index 0000000..9a6a946 --- /dev/null +++ b/html.tcl @@ -0,0 +1,16 @@ + +namespace eval html { + + proc start {title} { + return "<!DOCTYPE html><html><head><title>$title</title><link rel='stylesheet' href='/style.css'></head><body>"; + } + + proc end {} { + return "</body></html>" + } + + proc link {name link} { + return "<a href=\"$link\">$name</a>" + } + +} @@ -1,5 +1,5 @@ # From configuration -# root Directory which files reside in. +# srv Directory which files reside in. namespace eval http { @@ -41,7 +41,7 @@ namespace eval http { proc server {channel address port} { variable hook_namespace; - variable root; + variable srv; ## (1) Handle first line puts "(1)" @@ -80,7 +80,7 @@ namespace eval http { ## (3) Find if the file exists, or there is a hooked application. # If file exists, then 200 OK! - set filename [string cat $root [request_target::file $request_target]] + set filename [string cat $srv [request_target::file $request_target]] if [expr [file exists $filename] && [file isfile $filename]] { respond $channel 200 $filename } elseif [expr [file exists [string cat $filename "index.html"]] && [file isfile [string cat $filename "index.html"]]] { @@ -121,7 +121,7 @@ namespace eval http { proc respond {channel status {optional {}}} { ## Import Variables - variable root; + variable srv; variable status_codes; variable hook_namespace; ## New Variables diff --git a/modules/template.tcl b/modules/template.tcl new file mode 100644 index 0000000..b76c201 --- /dev/null +++ b/modules/template.tcl @@ -0,0 +1,14 @@ +namespace eval template { + + variable targets { + target1 target2 + } + + proc run {request_target} { + return [string cat \ + [http::start "Title"] \ + "This is a template<br>" \ + "request_target: $request_target" \ + [http::end]] + } +} @@ -1,8 +1,11 @@ #!/bin/tclsh source configure.tcl + source http.tcl +source html.tcl + socket -server http::server 8000 vwait forever |