Posted to tcl by mookie at Tue Mar 08 13:31:41 GMT 2022view pretty
proc 2Hex { input } { binary encode hex [encoding convertto utf-8 "$input"] }
proc 2Base { input } { encoding convertfrom utf-8 [binary decode hex "$input"] }
####
set blog_dir ./blogServ/data" ;#todo replace hardcoded path
set blog_file "dox.blog"
proc sqlite_create {} {
;# procedure to create sqlite db
variable blog_dir
variable blog_file
sqlite3 journal "$blog_dir/$blog_file"
journal eval { CREATE TABLE "entries" (
"journal_entry_idx" INTEGER,
"journal_entry_menu_tag" TEXT,
"journal_entry_title" TEXT,
"journal_entry_image" TEXT,
"journal_entry_content" TEXT,
"journal_entry_datetime" TEXT,
PRIMARY KEY("journal_entry_idx" AUTOINCREMENT)
); }
} ;#end proc
## Procedure to add new data to DB from Recieved data
proc sqlite_new_entry {packet} {
# procedure to update db with new file
;# sqlite_new_entry "New Title" "No-Image" "Some New Content" "21st Feburary 2022"
variable blog_dir
variable blog_file
##Check data to see if we received it all
puts "?>>>>>>>>>SQL>>>>>>>>>"
puts "Packet Received:\n$packet"
puts "Packet Data"
puts "0: journal_entry_menu_tag | [dict get [2Base $packet] journal_entry_menu_tag]"
puts "1: journal_entry_title | [dict get [2Base $packet] journal_entry_title]"
puts "2: journal_entry_image | [dict get [2Base $packet] journal_entry_image]"
puts "3: journal_entry_content | [dict get [2Base $packet] journal_entry_content]"
puts "4: journal_entry_content | [dict get [2Base $packet] journal_entry_datetime]"
puts "5: not-used"
puts "6: not-used"
puts "7: not-used"
puts ">>>>>>>>>>>>>>>>>>>>>?"
;#Todo: Neaten data entries to variables
set journal_entry_menu_tag "[2Hex [dict get [2Base $packet] journal_entry_menu_tag]]"
set journal_entry_title "[2Hex [dict get [2Base $packet] journal_entry_title]]"
set journal_entry_image "[2Hex [dict get [2Base $packet] journal_entry_image]]"
set journal_entry_content "[2Hex [dict get [2Base $packet] journal_entry_content]]"
set journal_entry_datetime "[2Hex [dict get [2Base $packet] journal_entry_datetime]]"
sqlite3 db "$blog_dir/$blog_file"
db eval { INSERT INTO entries (journal_entry_menu_tag, journal_entry_title, journal_entry_image,
journal_entry_content, journal_entry_datetime )
VALUES( :journal_entry_menu_tag, :journal_entry_title, :journal_entry_image,
:journal_entry_content, :journal_entry_datetime ) }
db close } ;#end proc
# procedure to view post when "blog_button" is clicked
# This should pull the single row based on the "MenuTag" (the identifier of the button pressed in HTML FORM"
proc sqlite_view {journal_entry_menu_tag} {
variable blog_dir
variable blog_file
;#procedure to read sqlite to dictonary
set journal_entry_menu_tag "f09f9299" ;#hard coded for testing
sqlite3 db "$blog_dir/$blog_file" ; # Open up an existing database or create a new empty one.
set value [db eval {SELECT * FROM entries WHERE journal_entry_menu_tag = :journal_entry_menu_tag} ]
db close
puts $value ;#Returns no result all data is populated
return $value
} ;#end proc
## Communications
NaviServer
Data to send: 737769746368207669657720757365725f66696c6520646f7820706f73745f74797065206a6f75726e616c20636f6e66696720
7b646973706c61795f6d61785f656e7472795f6d656e7520357d206a6f75726e616c5f7573657220646f78206a6f75726e616c5f656e7472795f6964782031206a6f75726e616c5f656e7472795f6d656e755f746167206630396639323939206a6f75726e616c5f656e7472795f7469746c65207b7d206a6f75726e616c5f656e7472795f696d616765207b7d206a6f75726e616c5f656e7472795f636f6e74656e74207b7d206a6f75726e616c5f656e7472795f6461746574696d65207b323032322f30332f30382031333a31377d203120746f706261725f757365725f6d656e752032206a6f75726e616c5f656e74726965735f6d656e752033206a6f75726e616c5f656e7472795f7469746c652034206a6f75726e616c5f656e7472795f696d6167652035206a6f75726e616c5f656e7472795f6d656e755f7461672036206a6f75726e616c5f656e7472795f636f6e74656e7420372075695f61646d696e5f616374696f6e5f627574746f6e73
Socket Server
Packet Received:
737769746368206e657720757365725f66696c6520646f7820706f73745f74797065206a6f75726e616c20636f6e666967207b646973706c61795f6d61785f656e7472795f6d656e7520357d206a6f75726e616c5f7573657220646f78206a6f75726e616c5f656e7472795f6964782031206a6f75726e616c5f656e7472795f6d656e755f74616720f09f9299206a6f75726e616c5f656e7472795f7469746c65207bf09f9aa720496e2070726f67726573737d206a6f75726e616c5f656e7472795f696d616765207b7d206a6f75726e616c5f656e7472795f636f6e74656e74207be29aa0efb88f20496620796f75722072656164696e6720746869732c20203c6272202f3e2050726f677265737320697320756e64657277617920696e206372656174696e672061206e657720706c6174666f726d2e0a3c6272202f3e203c6272202f3e200a416e64206e6f7720616c6c2066756e6374696f6e7320776f726b20616761696e2e203c62723e0a0a0a436f6d706c657465643a203c6272202f3e200ae29c94efb88f20437265617465204461746162617365203c6272202f3e200ae29c94efb88f205570646174696e67204461746162617365203c6272202f3e200ae29c94efb88f204e657720456e74727920746f204461746162617365203c6272202f3e200a3c6272202f3e200a496e2050726f67726573733a203c6272202f3e200a0a3c6272202f3e0a4e6f7420537461727465643a203c6272202f3e0ae29d8c202044656c6574696f6e2066726f6d204461746162617365203c6272202f3e207d206a6f75726e616c5f656e7472795f6461746574696d65207b323032322f30332f30382031333a31377d203120746f706261725f757365725f6d656e752032206a6f75726e616c5f656e74726965735f6d656e752033206a6f75726e616c5f656e7472795f7469746c652034206a6f75726e616c5f656e7472795f696d6167652035206a6f75726e616c5f656e7472795f6d656e755f7461672036206a6f75726e616c5f656e7472795f636f6e74656e7420372075695f61646d696e5f616374696f6e5f627574746f6e73
Dictonary converted back to BASE32 data
switch get
user_file dox
post_type journal
config {display_max_entry_menu 5}
journal_user dox
journal_entry_idx 1
journal_entry_menu_tag %F0%9F%92%99
journal_entry_title {%F0%9F%9A%A7 In progress}
journal_entry_image {}
journal_entry_content { If your reading this, <br /> Progress is underway in creating a new platform.
<br /> <br />
And now all functions work again. <br>
Completed: <br />
Create Database <br />
Updating Database <br />
New Entry to Database <br />
<br />
In Progress: <br />
<br />
Not Started: <br />
L Deletion from Database <br /> }
journal_entry_datetime {2022/03/08 13:17}
1 topbar_user_menu
2 journal_entries_menu
3 journal_entry_title
4 journal_entry_image
5 journal_entry_menu_tag
6 journal_entry_content
7 ui_admin_action_buttons
connection error status: 0
###
Comments
Posted by sebres at Tue Mar 08 14:05:47 GMT 2022 [text] [code]
set packet {737769746368207669657720757365725f66696c6520646f7820706f73745f74797065206a6f75726e616c20636f6e66696720 7b646973706c61795f6d61785f656e7472795f6d656e7520357d206a6f75726e616c5f7573657220646f78206a6f75726e616c5f656e7472795f6964782031206a6f75726e616c5f656e7472795f6d656e755f746167206630396639323939206a6f75726e616c5f656e7472795f7469746c65207b7d206a6f75726e616c5f656e7472795f696d616765207b7d206a6f75726e616c5f656e7472795f636f6e74656e74207b7d206a6f75726e616c5f656e7472795f6461746574696d65207b323032322f30332f30382031333a31377d203120746f706261725f757365725f6d656e752032206a6f75726e616c5f656e74726965735f6d656e752033206a6f75726e616c5f656e7472795f7469746c652034206a6f75726e616c5f656e7472795f696d6167652035206a6f75726e616c5f656e7472795f6d656e755f7461672036206a6f75726e616c5f656e7472795f636f6e74656e7420372075695f61646d696e5f616374696f6e5f627574746f6e73 } puts [2Base $packet] ; # ===> ... journal_entry_menu_tag f09f9299 ... set journal_entry_menu_tag "[2Hex [dict get [2Base $packet] journal_entry_menu_tag]]"; # ===> 6630396639323939