summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralekseiplusplus <alekseijeaves@protonmail.com>2024-06-30 14:48:13 +1000
committeralekseiplusplus <alekseijeaves@protonmail.com>2024-06-30 14:48:13 +1000
commitd5cc926ec6c3020d2d51cacc7d14e59c558c4167 (patch)
tree7dbc071ee3ecd6c143426984c19b4c73c11a42c7
parenta61f03cfbf62eb006e6bd845694f18d40101d4e8 (diff)
beginning draftwork on modules
-rwxr-xr-xconfigure.tcl18
-rwxr-xr-xhtml.tcl16
-rwxr-xr-xhttp.tcl8
-rw-r--r--modules/template.tcl14
-rwxr-xr-xtcl-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>"
+ }
+
+}
diff --git a/http.tcl b/http.tcl
index 307aebf..3995c80 100755
--- a/http.tcl
+++ b/http.tcl
@@ -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]]
+ }
+}
diff --git a/main.tcl b/tcl-httpd
index bd24e69..ade8359 100755
--- a/main.tcl
+++ b/tcl-httpd
@@ -1,8 +1,11 @@
#!/bin/tclsh
source configure.tcl
+
source http.tcl
+source html.tcl
+
socket -server http::server 8000
vwait forever