#
# Copyright for the Uniform Repository Service (c) 1995 - 2000, 2021, 2023, 2024, 2025 # by Gerald Banon. All rights reserved. # Version 2.1 # from.tcl # # The document is searched within the collection defined by the local bibliographic mirror # (unless the call is done from another mirror). If it is not found the it is search im the whole URLib collection. # The document corresponding to the official version or the most recent # metadata last update is returned. # # Example of: # /col/inpe.br/gb/1998/08.02.08.56/doc/goto-/inpe.br/gb/1998/08.08.09.10 # PATH_INFO = /inpe.br/gb/1998/08.02.08.56/to-/inpe.br/gb/1998/08.08.09.10 # see reserved file names in iconet.com.br/banon/2008/12.11.01.03 (Testando nome de arquivo e sequência de pastas/arquivo reservados) proc From {} { if [catch { ## http://mtc-m12.sid.inpe.br/col/urlib.net/www/2023/06.03.21.17/doc/upn:4CR88AP:8JMKD3MGP3W34R/44C25PS ## /urlib.net/www/2023/06.03.21.17/to/upn:4CR88AP/8JMKD3MGP3W34R/44C25PS # http://mtc-m12.sid.inpe.br/col/urlib.net/www/2023/06.03.21.17/doc/urn:doi:10.17487/RFC8141 # /urlib.net/www/2023/06.03.21.17/to/urn:doi/10.17487/RFC8141 ## http://gjfb:1905/col/iconet.com.br/banon/2001/04.28.19.50/doc/urlib:4CR88AP:QABCDSTQQW/4BT93R5?forcehistorybackflag=1 ## /iconet.com.br/banon/2001/04.28.19.50/to/urlib:4CR88AP/QABCDSTQQW/4BT93R5?forcehistorybackflag=1 # http://gjfb0520.sid.inpe.br/col/urlib.net/www/2023/11.16.13.37/doc/urn:doi:10.1590/0001-3765202320210807 # /urlib.net/www/2023/11.16.13.37/to/urn:doi/10.1590/0001-3765202320210807 global env # ibiResolver (local site) set ibiResolver $env(SERVER_NAME):$env(SERVER_PORT) if ![regexp {/([^/]*/[^/]*/[^/]*/[^/]*)/to/([^/]*)/([^/]*/[^/]*/[^/]*/[^/]*.*)$} $env(PATH_INFO) m source resolverID destination] { regexp {/([^/]*/[^/]*/[^/]*/[^/]*)/to/([^/]*)/([^/]*/[^/]*.*)$} $env(PATH_INFO) m source resolverID destination ;# added by GJFB in 2021-11-17 to resolve urn } if 0 { puts {Content-Type: text/html} puts {} puts $env(PATH_INFO) puts $resolverID } ## regsub {goto} $resolverID {upn:4CR88AP} resolverID ;# nameSpaceID value is upn:4CR88AP- or upn:4CR88AP # regsub {goto} $resolverID {ibi} resolverID ;# URI prefix value is ibi- or ibi ## regsub {^ibi(-?)$} $resolverID {upn:4CR88AP\1} resolverID ;# nameSpaceID value is upn:4CR88AP- or upn:4CR88AP if {[info exists env(QUERY_STRING)] && [string compare {} $env(QUERY_STRING)] != 0} { # set queryString ?$env(QUERY_STRING) ;# commented by GJFB in 2021-10-08 # set queryString ?$env(QUERY_STRING)&linktype=relative ;# added by GJFB in 2021-10-08 - linktype is used in ReturnURLPropertyList2 - commented by GJFB in 2024-01-04 set queryString ?$env(QUERY_STRING)&ibiurl.clientinformation.citingitem=$source&linktype=relative ;# added by GJFB in 2021-10-08 - linktype is used in ReturnURLPropertyList2 - added by GJFB in 2024-01-04 } else { # set queryString {} ;# commented by GJFB in 2021-10-08 # set queryString ?linktype=relative ;# added by GJFB in 2021-10-08 - linktype is used in ReturnURLPropertyList2 - commented by GJFB in 2024-01-04 set queryString ?ibiurl.clientinformation.citingitem=$source&linktype=relative ;# added by GJFB in 2021-10-08 - linktype is used in ReturnURLPropertyList2 - added by GJFB in 2024-01-04 } if [regsub {goto} $resolverID {ibi} resolverID] { ;# resolverID value is ibi- or ibi set link $ibiResolver/$resolverID/$destination$queryString ;# traditional link } else { set link $ibiResolver/$resolverID:$destination$queryString ;# to be solved in 'resolve' } # puts "Location: http://mtc-m12.sid.inpe.br/urn:doi:10.17487/RFC8141 ;# to be solved in 'resolve' # puts "Location: http://gjfb0520.sid.inpe.br/10.1590/urn:doi:0001-3765202320210807? ; to be solved in 'resolve' puts "Location: http://$link" puts "" # => Location: http://doi.org/10.1590/0001-3765202320210807?ibiurl.clientinformation.citingitem=urlib.net/www/2023/11.16.13.37&linktype=relative ## => Location: http://gjfb:1905/upn:4CR88AP:urlib.net/www/2024/08.26.03.05?forcehistorybackflag=1&ibiurl.clientinformation.citingitem=iconet.com.br/banon/2001/04.28.19.50&linktype=relative ## => Location: http://gjfb:1905/upn:4CR88AP:QABCDSTQQW/4BT93R5?forcehistorybackflag=1&ibiurl.clientinformation.citingitem=iconet.com.br/banon/2001/04.28.19.50&linktype=relative ## => Location: http://gjfb:1905/upn:4CR88AP-:QABCDSTQQW/4BT93R5?forcehistorybackflag=1&ibiurl.clientinformation.citingitem=iconet.com.br/banon/2001/04.28.19.50&linktype=relative } m] { if ![string equal {} $m] { puts {Content-Type: text/html} puts {} puts "From: $m" if 0 {global errorInfo; puts$errorInfo} } } } #