diff options
Diffstat (limited to 'src/ellinika/cgi.scm4')
-rw-r--r-- | src/ellinika/cgi.scm4 | 25 |
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 | ||
27 | ifelse(IFACE,[CGI],,dnl | 28 | ifelse(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 | ||