9 |
10 |
11 |
12 |
30 |
31 |
32 |
172 |
--------------------------------------------------------------------------------
/nginx/contrib/unicode2nginx/win-utf:
--------------------------------------------------------------------------------
1 | charset_map windows-1251 utf-8 {
2 |
3 | 80 D082 ; #CYRILLIC CAPITAL LETTER DJE
4 | 81 D083 ; #CYRILLIC CAPITAL LETTER GJE
5 | 82 E2809A ; #SINGLE LOW-9 QUOTATION MARK
6 | 83 D193 ; #CYRILLIC SMALL LETTER GJE
7 | 84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK
8 | 85 E280A6 ; #HORIZONTAL ELLIPSIS
9 | 86 E280A0 ; #DAGGER
10 | 87 E280A1 ; #DOUBLE DAGGER
11 | 88 E282AC ; #EURO SIGN
12 | 89 E280B0 ; #PER MILLE SIGN
13 | 8A D089 ; #CYRILLIC CAPITAL LETTER LJE
14 | 8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
15 | 8C D08A ; #CYRILLIC CAPITAL LETTER NJE
16 | 8D D08C ; #CYRILLIC CAPITAL LETTER KJE
17 | 8E D08B ; #CYRILLIC CAPITAL LETTER TSHE
18 | 8F D08F ; #CYRILLIC CAPITAL LETTER DZHE
19 | 90 D192 ; #CYRILLIC SMALL LETTER DJE
20 | 91 E28098 ; #LEFT SINGLE QUOTATION MARK
21 | 92 E28099 ; #RIGHT SINGLE QUOTATION MARK
22 | 93 E2809C ; #LEFT DOUBLE QUOTATION MARK
23 | 94 E2809D ; #RIGHT DOUBLE QUOTATION MARK
24 | 95 E280A2 ; #BULLET
25 | 96 E28093 ; #EN DASH
26 | 97 E28094 ; #EM DASH
27 | 99 E284A2 ; #TRADE MARK SIGN
28 | 9A D199 ; #CYRILLIC SMALL LETTER LJE
29 | 9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
30 | 9C D19A ; #CYRILLIC SMALL LETTER NJE
31 | 9D D19C ; #CYRILLIC SMALL LETTER KJE
32 | 9E D19B ; #CYRILLIC SMALL LETTER TSHE
33 | 9F D19F ; #CYRILLIC SMALL LETTER DZHE
34 | A0 C2A0 ; #NO-BREAK SPACE
35 | A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U
36 | A2 D19E ; #CYRILLIC SMALL LETTER SHORT U
37 | A3 D088 ; #CYRILLIC CAPITAL LETTER JE
38 | A4 C2A4 ; #CURRENCY SIGN
39 | A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
40 | A6 C2A6 ; #BROKEN BAR
41 | A7 C2A7 ; #SECTION SIGN
42 | A8 D081 ; #CYRILLIC CAPITAL LETTER IO
43 | A9 C2A9 ; #COPYRIGHT SIGN
44 | AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE
45 | AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
46 | AC C2AC ; #NOT SIGN
47 | AD C2AD ; #SOFT HYPHEN
48 | AE C2AE ; #REGISTERED SIGN
49 | AF D087 ; #CYRILLIC CAPITAL LETTER YI
50 | B0 C2B0 ; #DEGREE SIGN
51 | B1 C2B1 ; #PLUS-MINUS SIGN
52 | B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
53 | B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
54 | B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN
55 | B5 C2B5 ; #MICRO SIGN
56 | B6 C2B6 ; #PILCROW SIGN
57 | B7 C2B7 ; #MIDDLE DOT
58 | B8 D191 ; #CYRILLIC SMALL LETTER IO
59 | B9 E28496 ; #NUMERO SIGN
60 | BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE
61 | BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
62 | BC D198 ; #CYRILLIC SMALL LETTER JE
63 | BD D085 ; #CYRILLIC CAPITAL LETTER DZE
64 | BE D195 ; #CYRILLIC SMALL LETTER DZE
65 | BF D197 ; #CYRILLIC SMALL LETTER YI
66 | C0 D090 ; #CYRILLIC CAPITAL LETTER A
67 | C1 D091 ; #CYRILLIC CAPITAL LETTER BE
68 | C2 D092 ; #CYRILLIC CAPITAL LETTER VE
69 | C3 D093 ; #CYRILLIC CAPITAL LETTER GHE
70 | C4 D094 ; #CYRILLIC CAPITAL LETTER DE
71 | C5 D095 ; #CYRILLIC CAPITAL LETTER IE
72 | C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE
73 | C7 D097 ; #CYRILLIC CAPITAL LETTER ZE
74 | C8 D098 ; #CYRILLIC CAPITAL LETTER I
75 | C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I
76 | CA D09A ; #CYRILLIC CAPITAL LETTER KA
77 | CB D09B ; #CYRILLIC CAPITAL LETTER EL
78 | CC D09C ; #CYRILLIC CAPITAL LETTER EM
79 | CD D09D ; #CYRILLIC CAPITAL LETTER EN
80 | CE D09E ; #CYRILLIC CAPITAL LETTER O
81 | CF D09F ; #CYRILLIC CAPITAL LETTER PE
82 | D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER
83 | D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES
84 | D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE
85 | D3 D0A3 ; #CYRILLIC CAPITAL LETTER U
86 | D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF
87 | D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA
88 | D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE
89 | D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE
90 | D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA
91 | D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA
92 | DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN
93 | DB D0AB ; #CYRILLIC CAPITAL LETTER YERU
94 | DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN
95 | DD D0AD ; #CYRILLIC CAPITAL LETTER E
96 | DE D0AE ; #CYRILLIC CAPITAL LETTER YU
97 | DF D0AF ; #CYRILLIC CAPITAL LETTER YA
98 | E0 D0B0 ; #CYRILLIC SMALL LETTER A
99 | E1 D0B1 ; #CYRILLIC SMALL LETTER BE
100 | E2 D0B2 ; #CYRILLIC SMALL LETTER VE
101 | E3 D0B3 ; #CYRILLIC SMALL LETTER GHE
102 | E4 D0B4 ; #CYRILLIC SMALL LETTER DE
103 | E5 D0B5 ; #CYRILLIC SMALL LETTER IE
104 | E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE
105 | E7 D0B7 ; #CYRILLIC SMALL LETTER ZE
106 | E8 D0B8 ; #CYRILLIC SMALL LETTER I
107 | E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I
108 | EA D0BA ; #CYRILLIC SMALL LETTER KA
109 | EB D0BB ; #CYRILLIC SMALL LETTER EL
110 | EC D0BC ; #CYRILLIC SMALL LETTER EM
111 | ED D0BD ; #CYRILLIC SMALL LETTER EN
112 | EE D0BE ; #CYRILLIC SMALL LETTER O
113 | EF D0BF ; #CYRILLIC SMALL LETTER PE
114 | F0 D180 ; #CYRILLIC SMALL LETTER ER
115 | F1 D181 ; #CYRILLIC SMALL LETTER ES
116 | F2 D182 ; #CYRILLIC SMALL LETTER TE
117 | F3 D183 ; #CYRILLIC SMALL LETTER U
118 | F4 D184 ; #CYRILLIC SMALL LETTER EF
119 | F5 D185 ; #CYRILLIC SMALL LETTER HA
120 | F6 D186 ; #CYRILLIC SMALL LETTER TSE
121 | F7 D187 ; #CYRILLIC SMALL LETTER CHE
122 | F8 D188 ; #CYRILLIC SMALL LETTER SHA
123 | F9 D189 ; #CYRILLIC SMALL LETTER SHCHA
124 | FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN
125 | FB D18B ; #CYRILLIC SMALL LETTER YERU
126 | FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN
127 | FD D18D ; #CYRILLIC SMALL LETTER E
128 | FE D18E ; #CYRILLIC SMALL LETTER YU
129 | FF D18F ; #CYRILLIC SMALL LETTER YA
130 | }
131 |
--------------------------------------------------------------------------------
/nginx/contrib/unicode2nginx/koi-utf:
--------------------------------------------------------------------------------
1 | charset_map koi8-r utf-8 {
2 |
3 | 80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL
4 | 81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL
5 | 82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT
6 | 83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT
7 | 84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT
8 | 85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT
9 | 86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
10 | 87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT
11 | 88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
12 | 89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL
13 | 8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
14 | 8B E29680 ; # UPPER HALF BLOCK
15 | 8C E29684 ; # LOWER HALF BLOCK
16 | 8D E29688 ; # FULL BLOCK
17 | 8E E2968C ; # LEFT HALF BLOCK
18 | 8F E29690 ; # RIGHT HALF BLOCK
19 | 90 E29691 ; # LIGHT SHADE
20 | 91 E29692 ; # MEDIUM SHADE
21 | 92 E29693 ; # DARK SHADE
22 | 93 E28CA0 ; # TOP HALF INTEGRAL
23 | 94 E296A0 ; # BLACK SQUARE
24 | 95 E28899 ; # BULLET OPERATOR
25 | 96 E2889A ; # SQUARE ROOT
26 | 97 E28988 ; # ALMOST EQUAL TO
27 | 98 E289A4 ; # LESS-THAN OR EQUAL TO
28 | 99 E289A5 ; # GREATER-THAN OR EQUAL TO
29 | 9A C2A0 ; # NO-BREAK SPACE
30 | 9B E28CA1 ; # BOTTOM HALF INTEGRAL
31 | 9C C2B0 ; # DEGREE SIGN
32 | 9D C2B2 ; # SUPERSCRIPT TWO
33 | 9E C2B7 ; # MIDDLE DOT
34 | 9F C3B7 ; # DIVISION SIGN
35 | A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL
36 | A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL
37 | A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
38 | A3 D191 ; # CYRILLIC SMALL LETTER IO
39 | A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
40 | A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT
41 | A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
42 | A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
43 | A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT
44 | A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
45 | AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
46 | AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT
47 | AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
48 | AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
49 | AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT
50 | AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
51 | B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
52 | B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
53 | B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
54 | B3 D081 ; # CYRILLIC CAPITAL LETTER IO
55 | B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
56 | B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
57 | B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
58 | B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
59 | B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
60 | B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
61 | BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
62 | BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
63 | BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
64 | BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
65 | BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
66 | BF C2A9 ; # COPYRIGHT SIGN
67 | C0 D18E ; # CYRILLIC SMALL LETTER YU
68 | C1 D0B0 ; # CYRILLIC SMALL LETTER A
69 | C2 D0B1 ; # CYRILLIC SMALL LETTER BE
70 | C3 D186 ; # CYRILLIC SMALL LETTER TSE
71 | C4 D0B4 ; # CYRILLIC SMALL LETTER DE
72 | C5 D0B5 ; # CYRILLIC SMALL LETTER IE
73 | C6 D184 ; # CYRILLIC SMALL LETTER EF
74 | C7 D0B3 ; # CYRILLIC SMALL LETTER GHE
75 | C8 D185 ; # CYRILLIC SMALL LETTER HA
76 | C9 D0B8 ; # CYRILLIC SMALL LETTER I
77 | CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I
78 | CB D0BA ; # CYRILLIC SMALL LETTER KA
79 | CC D0BB ; # CYRILLIC SMALL LETTER EL
80 | CD D0BC ; # CYRILLIC SMALL LETTER EM
81 | CE D0BD ; # CYRILLIC SMALL LETTER EN
82 | CF D0BE ; # CYRILLIC SMALL LETTER O
83 | D0 D0BF ; # CYRILLIC SMALL LETTER PE
84 | D1 D18F ; # CYRILLIC SMALL LETTER YA
85 | D2 D180 ; # CYRILLIC SMALL LETTER ER
86 | D3 D181 ; # CYRILLIC SMALL LETTER ES
87 | D4 D182 ; # CYRILLIC SMALL LETTER TE
88 | D5 D183 ; # CYRILLIC SMALL LETTER U
89 | D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE
90 | D7 D0B2 ; # CYRILLIC SMALL LETTER VE
91 | D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN
92 | D9 D18B ; # CYRILLIC SMALL LETTER YERU
93 | DA D0B7 ; # CYRILLIC SMALL LETTER ZE
94 | DB D188 ; # CYRILLIC SMALL LETTER SHA
95 | DC D18D ; # CYRILLIC SMALL LETTER E
96 | DD D189 ; # CYRILLIC SMALL LETTER SHCHA
97 | DE D187 ; # CYRILLIC SMALL LETTER CHE
98 | DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN
99 | E0 D0AE ; # CYRILLIC CAPITAL LETTER YU
100 | E1 D090 ; # CYRILLIC CAPITAL LETTER A
101 | E2 D091 ; # CYRILLIC CAPITAL LETTER BE
102 | E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE
103 | E4 D094 ; # CYRILLIC CAPITAL LETTER DE
104 | E5 D095 ; # CYRILLIC CAPITAL LETTER IE
105 | E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF
106 | E7 D093 ; # CYRILLIC CAPITAL LETTER GHE
107 | E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA
108 | E9 D098 ; # CYRILLIC CAPITAL LETTER I
109 | EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I
110 | EB D09A ; # CYRILLIC CAPITAL LETTER KA
111 | EC D09B ; # CYRILLIC CAPITAL LETTER EL
112 | ED D09C ; # CYRILLIC CAPITAL LETTER EM
113 | EE D09D ; # CYRILLIC CAPITAL LETTER EN
114 | EF D09E ; # CYRILLIC CAPITAL LETTER O
115 | F0 D09F ; # CYRILLIC CAPITAL LETTER PE
116 | F1 D0AF ; # CYRILLIC CAPITAL LETTER YA
117 | F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER
118 | F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES
119 | F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE
120 | F5 D0A3 ; # CYRILLIC CAPITAL LETTER U
121 | F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE
122 | F7 D092 ; # CYRILLIC CAPITAL LETTER VE
123 | F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN
124 | F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU
125 | FA D097 ; # CYRILLIC CAPITAL LETTER ZE
126 | FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA
127 | FC D0AD ; # CYRILLIC CAPITAL LETTER E
128 | FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA
129 | FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE
130 | FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN
131 | }
132 |
--------------------------------------------------------------------------------
/nginx/docs/OpenSSL.LICENSE:
--------------------------------------------------------------------------------
1 |
2 | LICENSE ISSUES
3 | ==============
4 |
5 | The OpenSSL toolkit stays under a double license, i.e. both the conditions of
6 | the OpenSSL License and the original SSLeay license apply to the toolkit.
7 | See below for the actual license texts. Actually both licenses are BSD-style
8 | Open Source licenses. In case of any license issues related to OpenSSL
9 | please contact openssl-core@openssl.org.
10 |
11 | OpenSSL License
12 | ---------------
13 |
14 | /* ====================================================================
15 | * Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.
16 | *
17 | * Redistribution and use in source and binary forms, with or without
18 | * modification, are permitted provided that the following conditions
19 | * are met:
20 | *
21 | * 1. Redistributions of source code must retain the above copyright
22 | * notice, this list of conditions and the following disclaimer.
23 | *
24 | * 2. Redistributions in binary form must reproduce the above copyright
25 | * notice, this list of conditions and the following disclaimer in
26 | * the documentation and/or other materials provided with the
27 | * distribution.
28 | *
29 | * 3. All advertising materials mentioning features or use of this
30 | * software must display the following acknowledgment:
31 | * "This product includes software developed by the OpenSSL Project
32 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
33 | *
34 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
35 | * endorse or promote products derived from this software without
36 | * prior written permission. For written permission, please contact
37 | * openssl-core@openssl.org.
38 | *
39 | * 5. Products derived from this software may not be called "OpenSSL"
40 | * nor may "OpenSSL" appear in their names without prior written
41 | * permission of the OpenSSL Project.
42 | *
43 | * 6. Redistributions of any form whatsoever must retain the following
44 | * acknowledgment:
45 | * "This product includes software developed by the OpenSSL Project
46 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
47 | *
48 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
49 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
51 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
52 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
53 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
54 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
55 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
57 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
58 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 | * OF THE POSSIBILITY OF SUCH DAMAGE.
60 | * ====================================================================
61 | *
62 | * This product includes cryptographic software written by Eric Young
63 | * (eay@cryptsoft.com). This product includes software written by Tim
64 | * Hudson (tjh@cryptsoft.com).
65 | *
66 | */
67 |
68 | Original SSLeay License
69 | -----------------------
70 |
71 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
72 | * All rights reserved.
73 | *
74 | * This package is an SSL implementation written
75 | * by Eric Young (eay@cryptsoft.com).
76 | * The implementation was written so as to conform with Netscapes SSL.
77 | *
78 | * This library is free for commercial and non-commercial use as long as
79 | * the following conditions are aheared to. The following conditions
80 | * apply to all code found in this distribution, be it the RC4, RSA,
81 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation
82 | * included with this distribution is covered by the same copyright terms
83 | * except that the holder is Tim Hudson (tjh@cryptsoft.com).
84 | *
85 | * Copyright remains Eric Young's, and as such any Copyright notices in
86 | * the code are not to be removed.
87 | * If this package is used in a product, Eric Young should be given attribution
88 | * as the author of the parts of the library used.
89 | * This can be in the form of a textual message at program startup or
90 | * in documentation (online or textual) provided with the package.
91 | *
92 | * Redistribution and use in source and binary forms, with or without
93 | * modification, are permitted provided that the following conditions
94 | * are met:
95 | * 1. Redistributions of source code must retain the copyright
96 | * notice, this list of conditions and the following disclaimer.
97 | * 2. Redistributions in binary form must reproduce the above copyright
98 | * notice, this list of conditions and the following disclaimer in the
99 | * documentation and/or other materials provided with the distribution.
100 | * 3. All advertising materials mentioning features or use of this software
101 | * must display the following acknowledgement:
102 | * "This product includes cryptographic software written by
103 | * Eric Young (eay@cryptsoft.com)"
104 | * The word 'cryptographic' can be left out if the rouines from the library
105 | * being used are not cryptographic related :-).
106 | * 4. If you include any Windows specific code (or a derivative thereof) from
107 | * the apps directory (application code) you must include an acknowledgement:
108 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
109 | *
110 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
111 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
112 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
113 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
114 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
115 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
116 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
117 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
118 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
119 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
120 | * SUCH DAMAGE.
121 | *
122 | * The licence and distribution terms for any publically available version or
123 | * derivative of this code cannot be changed. i.e. this code cannot simply be
124 | * copied and put under another distribution licence
125 | * [including the GNU Public Licence.]
126 | */
127 |
128 |
--------------------------------------------------------------------------------
/app-vue/src/assets/sad.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/server/services/NginxService.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const LOGGER = require('../utils/logger');
4 | const childProcess = require('child_process');
5 | const fkill = require('fkill');
6 |
7 | class NginxService {
8 |
9 | constructor(app, db, ws, startNginx) {
10 | this.db = db;
11 | this.nginx = null;
12 |
13 | app.route('/api/nginx/logs/access')
14 | .get(this.getAccessLog.bind(this))
15 | ;
16 |
17 | app.route('/api/nginx/conf')
18 | .get(this.getConfFile.bind(this))
19 | ;
20 |
21 | app.route('/api/nginx/servers')
22 | .get(this.getServers.bind(this))
23 | .post(this.postServers.bind(this))
24 | ;
25 |
26 | app.route('/api/nginx/servers/:id')
27 | .get(this.getServer.bind(this))
28 | .post(this.postServer.bind(this))
29 | .delete(this.deleteServer.bind(this))
30 | ;
31 |
32 | app.route('/api/nginx/http')
33 | .get(this.getHttpConf.bind(this))
34 | .post(this.postHttpConf.bind(this))
35 | ;
36 |
37 | app.route('/api/nginx/run')
38 | .post(this.runNginx.bind(this))
39 | ;
40 |
41 | app.route('/api/nginx/running')
42 | .get(this.isRunning.bind(this))
43 | ;
44 |
45 | app.route('/api/nginx/kill')
46 | .post(this.killNginx.bind(this))
47 | ;
48 |
49 | if (startNginx) {
50 | this.runNginx();
51 | }
52 |
53 | }
54 |
55 | getAccessLog(req, res) {
56 | let accessLogs = fs.readFileSync(path.join(__dirname, '../../logs/json.log')).toString().split('\r\n').reverse();
57 | res.send(accessLogs.splice(0, accessLogs.length > 1000 ? 1000 : accessLogs.length));
58 | }
59 |
60 | postServers(req, res) {
61 | (req.body || []).forEach((server) => {
62 | this.db.save(this.db.getNginx(), server);
63 | });
64 | res.send(this.db.getNginx().data)
65 | }
66 |
67 | postServer(req, res) {
68 | if (Number.parseInt(req.params.id, 10) === req.body.$loki) {
69 | this.db.save(this.db.getNginx(), req.body);
70 | res.sendStatus(200);
71 | } else {
72 | res.sendStatus(400);
73 | }
74 | }
75 |
76 | getHttpConf(req, res) {
77 | res.send(this.db.getNginxHttpConf().data);
78 | }
79 |
80 | postHttpConf(req, res) {
81 | this.db.save(this.db.getNginxHttpConf(), req.body);
82 | res.sendStatus(200);
83 | }
84 |
85 | deleteServer(req, res) {
86 | const serverToRemove = this.db.getNginx().data.find((server) => server.$loki === Number.parseInt(req.params.id, 10));
87 | this.db.remove(this.db.getNginx(), serverToRemove);
88 | res.send(this.db.getNginx().data)
89 | }
90 |
91 | getServers(req, res) {
92 | res.send(this.db.getNginx().data)
93 | }
94 |
95 | getServer(req, res) {
96 | res.send(this.db.getNginx().data.find((server) => server.$loki === Number.parseInt(req.params.id, 10)));
97 | }
98 |
99 | getConfFile(req, res) {
100 | const httpConf = (this.db.getNginxHttpConf().data && this.db.getNginxHttpConf().data.length > 0)
101 | ? this.db.getNginxHttpConf().data : [{additionnalHttpConf : ''}];
102 | const serversToStart = this.db.getNginx().data
103 | .filter((server) => server.enable);
104 | res.send(this.generateConfFile(httpConf[0], serversToStart));
105 | }
106 |
107 | runNginx(req, res) {
108 | let messageSent = false;
109 | try {
110 | if (this.nginx) {
111 | LOGGER.error('Nginx is already running');
112 | if (res) {
113 | res.send({
114 | date: new Date(),
115 | log: 'Nginx is already running',
116 | status: 'error'
117 | });
118 | }
119 | return;
120 | }
121 | const confFile = path.join(__dirname, '../../nginx/conf/nginx.tmp.conf');
122 | const httpConf = (this.db.getNginxHttpConf().data && this.db.getNginxHttpConf().data.length > 0)
123 | ? this.db.getNginxHttpConf().data : [{additionnalHttpConf : ''}];
124 | const serversToStart = this.db.getNginx().data
125 | .filter((server) => server.enable);
126 | fs.writeFileSync(confFile, this.generateConfFile(httpConf[0], serversToStart));
127 | this.nginx = childProcess.spawn(path.join(__dirname, '../../nginx/nginx.exe'), ['-c', confFile], {
128 | cwd: path.join(__dirname, '../../')
129 | });
130 | LOGGER.debug('Running nginx with PID : ', this.nginx.pid);
131 | this.nginx.stdout.on('data', (d) => LOGGER.debug('stdout', d.toString()));
132 | this.nginx.stderr.on('data', (d) => {
133 | LOGGER.debug('stderr', d.toString());
134 | this.nginx = null;
135 | try {
136 | res.send({
137 | date: new Date(),
138 | log: 'Error starting server : ' + d.toString(),
139 | status: 'error'
140 | });
141 | messageSent = true;
142 | } catch(e){
143 | console.error("Too late, we already sent an OK message...")
144 | }
145 | });
146 | this.nginx.on('message', (d) => LOGGER.debug('message', (d || '').toString()));
147 |
148 | setTimeout(() => {
149 | if (res && !messageSent) {
150 | res.send({
151 | date: new Date(),
152 | log: 'Started servers : ' + serversToStart.map((server) => server.displayName).join(','),
153 | status: 'success'
154 | });
155 | }
156 | },2000);
157 | } catch (e) {
158 | this.nginx = null;
159 | if (res) {
160 | res.send({
161 | date: new Date(),
162 | log: 'Error starting server : ' + e,
163 | status: 'error'
164 | });
165 | }
166 | }
167 | }
168 |
169 | generateConfFile(httpConf, serversToStart) {
170 | return `
171 | events {
172 | worker_connections 1024;
173 | }
174 |
175 |
176 | http {
177 | include mime.types;
178 | default_type application/octet-stream;
179 |
180 | sendfile on;
181 |
182 | keepalive_timeout 65;
183 | log_format json_logs '{"remote_addr":"$remote_addr" , "remote_user" : "$remote_user", "time_local" : "$time_local", '
184 | '"proxy_host":"$proxy_host", "request": "$request", "status": "$status", "body_bytes_sent": "$body_bytes_sent", '
185 | ' "http_referrer" : "$http_referer", "http_user_agent" : "$http_user_agent"}';
186 |
187 | ${httpConf.additionnalHttpConf || '# No additionnal http configuration'}
188 |
189 | ${serversToStart
190 | .map((server) => server.conf)
191 | .reduce((a, b) => a + '\r\n' + b)}
192 | }`;
193 | }
194 |
195 | killNginx(req, res) {
196 | try {
197 | if (this.nginx) {
198 | this.nginx.on('close', (d) => {
199 | LOGGER.debug('closed', this.nginx.pid, 'with result =>', (d || '').toString());
200 | this.nginx = null;
201 | res.send({
202 | date: new Date(),
203 | log: 'Killed nginx',
204 | status: 'success'
205 | });
206 | });
207 | fkill(this.nginx.pid, {tree: true, force: true});
208 | } else {
209 | res.sendStatus(204);
210 | }
211 | } catch (e) {
212 | res.send({
213 | date: new Date(),
214 | log: 'Nginx isn\'t running',
215 | status: 'error'
216 | })
217 | }
218 | }
219 |
220 | isRunning(req, res) {
221 | setTimeout(() => {
222 | if (this.nginx) {
223 | res.send(true);
224 | } else {
225 | res.send(false)
226 | }
227 | }, 1000);
228 | }
229 | }
230 |
231 | module.exports = {
232 | NginxService
233 | };
234 |
--------------------------------------------------------------------------------
/app-vue/src/assets/quasar-logo-full.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
192 |
--------------------------------------------------------------------------------
/app-vue/src/components/Servers.vue:
--------------------------------------------------------------------------------
1 |
2 |