aboutsummaryrefslogtreecommitdiff
path: root/src/ellinika/cgi.scm4
diff options
context:
space:
mode:
Diffstat (limited to 'src/ellinika/cgi.scm4')
-rw-r--r--src/ellinika/cgi.scm425
1 files changed, 20 insertions, 5 deletions
diff --git a/src/ellinika/cgi.scm4 b/src/ellinika/cgi.scm4
index 8c9b54d..51f9570 100644
--- a/src/ellinika/cgi.scm4
+++ b/src/ellinika/cgi.scm4
@@ -1,39 +1,54 @@
1;;;; -*- scheme -*- 1;;;; Greek Dictionary Web Engine -*- scheme -*-
2;;;; Greek Dictionary Web Engine 2;;;; Copyright (C) 2005, 2007, 2010, 2015 Sergey Poznyakoff
3;;;; Copyright (C) 2005, 2007, 2010 Sergey Poznyakoff
4;;;; 3;;;;
5;;;; This program is free software; you can redistribute it and/or modify 4;;;; This program is free software; you can redistribute it and/or modify
6;;;; it under the terms of the GNU General Public License as published by 5;;;; it under the terms of the GNU General Public License as published by
7;;;; the Free Software Foundation; either version 3 of the License, or 6;;;; the Free Software Foundation; either version 3 of the License, or
8;;;; (at your option) any later version. 7;;;; (at your option) any later version.
9;;;; 8;;;;
10;;;; This program is distributed in the hope that it will be useful, 9;;;; This program is distributed in the hope that it will be useful,
11;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of 10;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13;;;; GNU General Public License for more details. 12;;;; GNU General Public License for more details.
14;;;; 13;;;;
15;;;; You should have received a copy of the GNU General Public License 14;;;; You should have received a copy of the GNU General Public License
16;;;; along with this program. If not, see <http://www.gnu.org/licenses/>. 15;;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
17;;;; 16;;;;
18(define-module (ellinika cgi) 17(define-module (ellinika cgi)
19 #:use-module (ellinika config) 18 #:use-module (ellinika config)
20 #:use-module (ellinika i18n) 19 #:use-module (ellinika i18n)
21 #:use-module ifelse(IFACE,[CGI],(www cgi),(guile-user)) 20 #:use-module ifelse(IFACE,[CGI],(www cgi),(guile-user))
21 #:use-module (ice-9 iconv)
22 #:use-module (rnrs bytevectors)
22 #:re-export (base-dir html-dir sysconf-dir locale-path 23 #:re-export (base-dir html-dir sysconf-dir locale-path
23 ellinika-sql-connection 24 ellinika-sql-connection
24 config-file-name )) 25 config-file-name ))
25 26
26 27
27ifelse(IFACE,[CGI],,dnl 28ifelse(IFACE,[CGI],[
29(define-public cgi-script-name
30 (cgi:getenv 'script-name))
31(define-public cgi-server-hostname
32 (cgi:getenv 'server-hostname))
33(define-public cgi-server-protocol-name
34 (cgi:getenv 'server-protocol-name))
35(define-public cgi-server-protocol-version
36 (cgi:getenv 'server-protocol-version))
37(define-public (cgi:value-u8 key)
38 (let ((x (cgi:value key)))
39 (if x
40 (utf8->string (string->bytevector x "ISO-8859-1"))
41 x)))
42],[
28(define form-data 43(define form-data
29 (append 44 (append
30 (parse-form-data 45 (parse-form-data
31 (table:get (request-rec:subprocess-env Request) "QUERY_STRING")) 46 (table:get (request-rec:subprocess-env Request) "QUERY_STRING"))
32 (if (= (request-rec:method-number Request) 2) 47 (if (= (request-rec:method-number Request) 2)
33 (parse-form-data (read-post-data Request)) 48 (parse-form-data (read-post-data Request))
34 '()))) 49 '())))
35 50
36(define-public (cgi:value name) 51(define-public (cgi:value name)
37 (assoc-ref form-data name)) 52 (assoc-ref form-data name))
38 53
39(define-public (cgi:names) 54(define-public (cgi:names)
@@ -50,25 +65,25 @@ ifelse(IFACE,[CGI],,dnl
50(define-public cgi-server-protocol-name #f) 65(define-public cgi-server-protocol-name #f)
51(define-public cgi-server-protocol-version #f) 66(define-public cgi-server-protocol-version #f)
52 67
53(let* ((server-protocol (table:get (request-rec:subprocess-env Request) 68(let* ((server-protocol (table:get (request-rec:subprocess-env Request)
54 "SERVER_PROTOCOL"))) 69 "SERVER_PROTOCOL")))
55 (if server-protocol 70 (if server-protocol
56 (let ((slash (string-index server-protocol #\/))) 71 (let ((slash (string-index server-protocol #\/)))
57 (set! cgi-server-protocol-name (substring server-protocol 72 (set! cgi-server-protocol-name (substring server-protocol
58 0 slash)) 73 0 slash))
59 (set! cgi-server-protocol-version (substring server-protocol 74 (set! cgi-server-protocol-version (substring server-protocol
60 (1+ slash)))))) 75 (1+ slash))))))
61 76
62) 77])
63 78
64 79
65;;; User-definable variables 80;;; User-definable variables
66(define-public dict-template-file-name "dict.html") 81(define-public dict-template-file-name "dict.html")
67(define-public nea-template-file-name "nea.html") 82(define-public nea-template-file-name "nea.html")
68(define-public monima-nea-template-file-name "monima.html") 83(define-public monima-nea-template-file-name "monima.html")
69(define-public target-language "el_GR") 84(define-public target-language "el_GR")
70 85
71(define-public word-forms-reference '()) 86(define-public word-forms-reference '())
72 87
73(define-public ref-loc #f) 88(define-public ref-loc #f)
74 89

Return to:

Send suggestions and report system problems to the System administrator.