Implemented an option to turn off TLS support

This commit is contained in:
Luxferre
2024-10-08 11:55:44 +03:00
parent f558616122
commit bf5c6b1db8
3 changed files with 35 additions and 4 deletions
+26 -3
View File
@@ -6,7 +6,6 @@
# created by Luxferre in 2024, released into public domain
package require uri
package require tls
package require inifile
package require Tk
@@ -43,6 +42,7 @@ set bfg_highlight_fgcolor $bfg_main_fgcolor
set bfg_highlight_bgcolor yellow
set bfg_error_fgcolor red
set bfg_error_bgcolor $bfg_main_bgcolor
set bfg_tls_support 1
# read configuration from ini
set confini ""
@@ -52,6 +52,8 @@ set bookmarks ""
if {$confini ne ""} {
set val [::ini::value $confini net timeout $bfg_net_timeout]
if {$val ne ""} {set bfg_net_timeout $val}
set val [::ini::value $confini net tls "on"]
if {$val ne ""} {set bfg_tls_support $val}
set val [::ini::value $confini widget ttkTheme $bfg_theme]
if {$val ne ""} {set bfg_theme $val}
set val [::ini::value $confini widget font $bfg_widgetfont]
@@ -106,6 +108,16 @@ if {$confini ne ""} {
::ini::close $confini
}
# load TLS support
if {($bfg_tls_support eq "off") || ($bfg_tls_support eq "false" || ($bfg_tls_support eq "none"))} {
set bfg_tls_support 0
} else {
set bfg_tls_support 1
}
if {$bfg_tls_support eq 1} {
package require tls
}
# generate fonts
foreach fid {widget entry status text mono} {
set vname [string cat bfg_ $fid font]
@@ -392,6 +404,7 @@ proc extOpen {url} {
# common URL downloader
# return the contents in $bfg_response
proc urldl {inputurl isbinary} {
global bfg_tls_support bfg_response
set parts [url2dict $inputurl]
set host [dict get $parts host]
set port [dict get $parts port]
@@ -399,8 +412,18 @@ proc urldl {inputurl isbinary} {
set selector [dict get $parts selector]
set scheme [dict get $parts scheme]
set is_tls 0
if {$scheme eq "gemini"} {set is_tls 1}
if {$scheme eq "gophers"} {set is_tls 1}
if {($scheme eq "gemini") || ($scheme eq "gophers")} {
if {$bfg_tls_support eq 0} { # report unsupported content
set errmsg {BFG error: TLS support is turned off in the configuration}
if {$scheme eq "gemini"} {
set bfg_response [string cat "50 " $errmsg "\r\n"]
}
if {$scheme eq "gophers"} {
set bfg_response [string cat "3" $errmsg "\t-\t-\t-\r\n"]
}
return $scheme
} else {set is_tls 1}
}
set encoding "utf-8"
if {$isbinary eq 1} {set encoding "binary"}
reqresp $host $port $selector $is_tls $encoding