Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | ncgi :: [03f5d49c12]. Replaced custom url parser for redirection with use of package "uri" (uri::split). This fixes an issue where redirection mishandles a query string in the REQUEST_URI. Testsuite extended. Version bumped to 1.4.3. |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9f2e9488ebf3b74f3966e708abb6bf1c |
User & Date: | andreask 2014-06-30 17:22:47 |
Context
2014-06-30
| ||
18:12 | Ticket [d679822510] :: Fixed creative writing of loop variable by the search loop invoking LoaddAccelerator when sourcing the package. uuid :: Bumped to 1.0.4. sha1 :: Bumped to 1.1.1. md4 :: Bumped to 1.0.6. ripemd128 :: Bumped to 1.0.5. ripemd160 :: Bumped to 1.0.5. crc32 :: Bumped to 1.3.2. Further reviewed as users of the LoadAccelator pattern, and found to not be affected by the problem are: base32 base32::hex blowfish json md5 v2 pt::parse::peg pt::rde sha1 v2 sha256 struct::graph struct::queue struct::set struct::stack struct::tree check-in: 64c68f3380 user: andreask tags: trunk | |
17:22 | ncgi :: [03f5d49c12]. Replaced custom url parser for redirection with use of package "uri" (uri::split). This fixes an issue where redirection mishandles a query string in the REQUEST_URI. Testsuite extended. Version bumped to 1.4.3. check-in: 9f2e9488eb user: andreask tags: trunk | |
2014-06-23
| ||
21:46 | json :: [3d91afbcf2]. Fixed handling of illegal escape sequences in both Tcl and C implementations of the parser. Version bumped to 1.3.3. check-in: 8e0ee4f384 user: andreask tags: trunk | |
Changes
Changes to modules/ncgi/ncgi.man.
|
| > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [vset VERSION 1.4.3] [manpage_begin ncgi n [vset VERSION]] [see_also html] [keywords CGI] [keywords cookie] [keywords form] [keywords html] [comment {-*- tcl -*- doctools manpage}] [moddesc {CGI Support}] [titledesc {Procedures to manipulate CGI values.}] [category {CGI programming}] [require Tcl 8.4] [require ncgi [opt [vset VERSION]]] [description] [para] The [package ncgi] package provides commands that manipulate CGI values. These are values that come from Web forms and are processed either by CGI scripts or web pages with embedded Tcl code. Use the [package ncgi] package to query these values, set and get cookies, and |
︙ | ︙ |
Changes to modules/ncgi/ncgi.tcl.
1 2 3 4 5 6 | # ncgi.tcl # # Basic support for CGI programs # # Copyright (c) 2000 Ajuba Solutions. # Copyright (c) 2012 Richard Hipp, Andreas Kupries | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # ncgi.tcl # # Basic support for CGI programs # # Copyright (c) 2000 Ajuba Solutions. # Copyright (c) 2012 Richard Hipp, Andreas Kupries # Copyright (c) 2013-2014 Andreas Kupries # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # Please note that Don Libes' has a "cgi.tcl" that implements version 1.0 # of the cgi package. That implementation provides a bunch of cgi_ procedures |
︙ | ︙ | |||
24 25 26 27 28 29 30 31 | # The query data is composed of names and values, and the names can be # repeated. The names and values are encoded, and this module takes care # of decoding them. # We use newer string routines package require Tcl 8.4 package require fileutil ; # Required by importFile. | > | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # The query data is composed of names and values, and the names can be # repeated. The names and values are encoded, and this module takes care # of decoding them. # We use newer string routines package require Tcl 8.4 package require fileutil ; # Required by importFile. package require uri package provide ncgi 1.4.3 namespace eval ::ncgi { # "query" holds the raw query (i.e., form) data # This is treated as a cache, too, so you can call ncgi::query more than # once |
︙ | ︙ | |||
724 725 726 727 728 729 730 | # proto http or https # server The server, which we are careful to match with the # current one in base Basic Authentication is being used. # port This is set if it is not the default port. if {[info exists env(REQUEST_URI)]} { # Not all servers have the leading protocol spec | | > > > | 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 | # proto http or https # server The server, which we are careful to match with the # current one in base Basic Authentication is being used. # port This is set if it is not the default port. if {[info exists env(REQUEST_URI)]} { # Not all servers have the leading protocol spec #regsub -- {^https?://[^/]*/} $env(REQUEST_URI) / request_uri array set u [uri::split $env(REQUEST_URI)] set request_uri /$u(path) unset u } elseif {[info exists env(SCRIPT_NAME)]} { set request_uri $env(SCRIPT_NAME) } else { set request_uri / } set port "" |
︙ | ︙ |
Changes to modules/ncgi/ncgi.test.
︙ | ︙ | |||
300 301 302 303 304 305 306 | } exit } $sub_ap $cmdlFile $futlFile $ncgiFile $URL] test1 set f [open "|[list $::tcltest::tcltest test1]" r+] set res [read $f] close $f removeFile test1 | | | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | } exit } $sub_ap $cmdlFile $futlFile $ncgiFile $URL] test1 set f [open "|[list $::tcltest::tcltest test1]" r+] set res [read $f] close $f removeFile test1 set res } "Content-Type: text/html\nLocation: $URL\n\nPlease go to <a href=\"$URL\">$URL</a>\n" set URL /elsewhere/foo.html set URL2 http://www/elsewhere/foo.html test ncgi-11.2 {ncgi::redirect} { set env(REQUEST_URI) http://www/cgi-bin/test.cgi set env(REQUEST_METHOD) GET |
︙ | ︙ | |||
439 440 441 442 443 444 445 446 447 448 449 450 451 452 | } $sub_ap $cmdlFile $futlFile $ncgiFile $URL] test1 set f [open "|[list $::tcltest::tcltest test1]" r+] set res [read $f] close $f removeFile test1 set res } "Content-Type: text/html\nLocation: $URL2\n\nPlease go to <a href=\"$URL2\">$URL2</a>\n" test ncgi-12.1 {ncgi::header} { makeFile [format { set auto_path {%s} if {[catch { source %s source %s | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | } $sub_ap $cmdlFile $futlFile $ncgiFile $URL] test1 set f [open "|[list $::tcltest::tcltest test1]" r+] set res [read $f] close $f removeFile test1 set res } "Content-Type: text/html\nLocation: $URL2\n\nPlease go to <a href=\"$URL2\">$URL2</a>\n" set URL login.tcl set URL2 https://foo.com/cgi-bin/login.tcl test ncgi-11.7 {ncgi::redirect} { set env(REQUEST_URI) https://foo.com/cgi-bin/view.tcl?path=/a/b/c set env(REQUEST_METHOD) GET set env(QUERY_STRING) {} set env(SERVER_NAME) foo.com set env(SERVER_PORT) 443 set env(HTTPS) "on" makeFile [format { set auto_path {%s} if {[catch { source %s source %s source %s ncgi::redirect %s } err]} { puts $err } exit } $sub_ap $cmdlFile $futlFile $ncgiFile $URL] test1 set f [open "|[list $::tcltest::tcltest test1]" r+] set res [read $f] close $f removeFile test1 set res } "Content-Type: text/html\nLocation: $URL2\n\nPlease go to <a href=\"$URL2\">$URL2</a>\n" test ncgi-12.1 {ncgi::header} { makeFile [format { set auto_path {%s} if {[catch { source %s source %s |
︙ | ︙ |
Changes to modules/ncgi/pkgIndex.tcl.
1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} | | | 1 2 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} package ifneeded ncgi 1.4.3 [list source [file join $dir ncgi.tcl]] |