PluginProbe ʕ •ᴥ•ʔ
NinjaFirewall (WP Edition) – Advanced Security Plugin and Firewall / 4.8.8
NinjaFirewall (WP Edition) – Advanced Security Plugin and Firewall v4.8.8
4.9 4.8.8 4.8.7 4.8.6 trunk 4.5 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6 4.6.1 4.7 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.8 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5
ninjafirewall / lib / settings_logs_live_log.php
ninjafirewall / lib Last commit date
share 9 years ago .htaccess 11 years ago anti_malware.php 5 years ago class-coupon.php 7 months ago class-email-sodium.php 1 month ago class-firewall-log.php 1 month ago class-helpers.php 9 months ago class-import-export.php 5 months ago class-ip.php 5 months ago class-nfw-database.php 7 months ago class-nfw-session.php 1 month ago class-php-session.php 1 year ago class-plugin-upgrade.php 1 month ago class_mail.php 1 month ago event_updates.php 11 months ago firewall.php 5 months ago fw_centlog.php 1 month ago fw_fileguard.php 5 months ago fw_livelog.php 1 year ago help.php 1 month ago helpers.php 1 month ago i18n-extra.php 1 month ago i18n.php 1 year ago index.html 13 years ago init_update.php 2 years ago install.php 1 year ago install_default.php 7 months ago loader.php 7 months ago mail_template_firewall.php 1 year ago mail_template_plugin.php 2 months ago scheduled_tasks.php 3 years ago settings_dashboard.php 2 months ago settings_dashboard_about.php 1 month ago settings_dashboard_statistics.php 2 months ago settings_event_notifications.php 2 months ago settings_events.php 2 months ago settings_firewall_options.php 2 months ago settings_firewall_policies.php 1 month ago settings_login_protection.php 2 months ago settings_logs.php 2 months ago settings_logs_firewall_log.php 1 month ago settings_logs_live_log.php 2 months ago settings_monitoring.php 1 month ago settings_monitoring_file_check.php 2 months ago settings_monitoring_file_guard.php 2 months ago settings_network.php 2 months ago settings_security_rules.php 2 months ago settings_security_rules_editor.php 2 months ago settings_security_rules_update.php 1 month ago sign.pub 7 years ago thickbox.php 4 years ago widget.php 3 years ago wpplus.php 5 months ago
settings_logs_live_log.php
302 lines
1 <?php
2 /*
3 +---------------------------------------------------------------------+
4 | NinjaFirewall (WP Edition) |
5 | |
6 | (c) NinTechNet - https://nintechnet.com/ |
7 +---------------------------------------------------------------------+
8 | This program is free software: you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License as |
10 | published by the Free Software Foundation, either version 3 of |
11 | the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 +---------------------------------------------------------------------+ 2023-05-14
18 */
19
20 if (! defined('NFW_ENGINE_VERSION') ) {
21 die('Forbidden');
22 }
23
24 // Block immediately if user is not allowed :
25 nf_not_allowed('block', __LINE__ );
26
27 if (! defined('NF_DISABLED') ) {
28 is_nfw_enabled();
29 }
30 if ( NF_DISABLED ) {
31 $err_msg = esc_html__('Error: NinjaFirewall must be enabled and working '.
32 'in order to use this feature.', 'ninjafirewall');
33 }
34 if ( empty( NinjaFirewall_session::read('nfw_goodguy') ) ) {
35 $err_msg = esc_html__('Warning: You must be whitelisted in order to use Live Log: click on '.
36 'the Firewall Policies menu and ensure that the "Add the Administrator to the whitelist" '.
37 'option is enabled.', 'ninjafirewall');
38 }
39 if (! empty( $err_msg ) ) {
40 ?>
41 <div class="wrap">
42 <h1><img style="vertical-align:top;" src="<?php
43 echo esc_url( plugins_url('/images/ninjafirewall_32.png',
44 dirname( __FILE__ ) ) )
45 ?>">&nbsp;<?php esc_html_e('Live Log', 'ninjafirewall') ?></h1>
46
47 <br />
48 <div class="error notice is-dismissible"><p><?php echo $err_msg ?></p></div>
49 </div>
50 <?php
51 return;
52 }
53
54 // Create an empty log et set the required session
55 @file_put_contents(
56 NFW_LOG_DIR .'/nfwlog/cache/livelog.php',
57 '<?php exit; ?>',
58 LOCK_EX
59 );
60
61 NinjaFirewall_session::write( ['nfw_livelog' => 1 ] );
62
63 if (! isset($_COOKIE['nfwscroll']) || ! empty($_COOKIE['nfwscroll']) ) {
64 // Default, if not set
65 $nfwscroll = 1;
66 } else {
67 $nfwscroll = 0;
68 }
69 if ( empty($_COOKIE['nfwlwrap']) ) {
70 // Default, if not set
71 $nfwlwrap = 0;
72 } else {
73 $nfwlwrap = 1;
74 }
75 if ( isset( $_COOKIE['nfwintval']) &&
76 preg_match('/^(5|10|20|45)000$/', $_COOKIE['nfwintval'] ) ) {
77
78 $nfwintval = (int) $_COOKIE['nfwintval'];
79 } else {
80 $nfwintval = 10000;
81 }
82 if ( NFW_IS_HTTPS == true ) {
83 $nfwsite = site_url('/index.php', 'https');
84 } else {
85 $nfwsite = site_url('/index.php');
86 }
87 ?>
88 <script>
89 var liveinterval = <?php echo $nfwintval ?>;
90 var scroll = <?php echo $nfwscroll ?>;
91 var lwrap = <?php echo $nfwlwrap ?>;
92 var site_url = '<?php echo esc_js( $nfwsite ) ?>';
93 </script>
94
95 <?php
96 if ( isset( $_POST['lf'] ) ) {
97 $res = nf_sub_liveloge_save();
98 if ( $res ) {
99 echo '<div class="error notice is-dismissible"><p>'. $res .'</p></div>';
100 } else {
101 echo '<div class="updated notice is-dismissible"><p>'.
102 esc_html__('Your changes have been saved.', 'ninjafirewall') .'</p></div>';
103 }
104 }
105 $nfw_options = nfw_get_option('nfw_options');
106
107 if ( defined('NFW_TEXTAREA_HEIGHT') ) {
108 $th = (int) NFW_TEXTAREA_HEIGHT;
109 } else {
110 $th = '450';
111 }
112 ?>
113 <form name="liveform">
114 <table class="form-table">
115 <tr>
116 <td style="width:100%;text-align:center;">
117 <progress id="nfw-progress" value="1" max="<?php echo ($nfwintval/1000) ?>" class="nfw-progress" style="display:none"></progress>
118 <br />
119 <textarea name="txtlog" id="idtxtlog" class="large-text code" style="height:<?php echo $th; ?>px;" wrap="off" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"><?php echo esc_textarea( __('Live Log lets you watch your blog traffic in real time. To enable it, click on the button below.', 'ninjafirewall') ) ?></textarea>
120 <br />
121 <div style="float:left;width:40%;padding-top:10px;" class="nfw-right">
122 <?php nfw_toggle_switch('danger', 'nfw_options[wf_case]', esc_attr__('Enabled', 'ninjafirewall'), esc_attr__('Disabled', 'ninjafirewall'), 'large', 0, false, 'onclick="nfwjs_livelog()"', 'livelog-switch', 'right') ?>
123 </div>
124 <div style="float:right;width:60%;text-align:left;padding-top:10px;" class="nfw-left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
125 <?php esc_html_e('Refresh rate:', 'ninjafirewall') ?>
126 <select name="liveint" id="liveint" onchange="nfwjs_change_int(this.value);">
127 <option value="5000"<?php selected( $nfwintval, 5000 ) ?>><?php esc_html_e('5 seconds', 'ninjafirewall') ?></option>
128 <option value="10000"<?php selected( $nfwintval, 10000 ) ?>><?php esc_html_e('10 seconds', 'ninjafirewall') ?></option>
129 <option value="20000"<?php selected( $nfwintval, 20000 ) ?>><?php esc_html_e('20 seconds', 'ninjafirewall') ?></option>
130 <option value="45000"<?php selected( $nfwintval, 45000 ) ?>><?php esc_html_e('45 seconds', 'ninjafirewall') ?></option>
131 </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
132 <input type="button" class="button-secondary" name="livecls" value="<?php esc_html_e('Clear screen', 'ninjafirewall') ?>" onClick="nfwjs_cls()" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
133 <label><input type="checkbox" name="livescroll" id="livescroll" value="1" onchange="nfwjs_is_scroll()" <?php checked($nfwscroll, 1)?> /><?php esc_html_e('Autoscrolling', 'ninjafirewall') ?></label>
134 &nbsp;&nbsp;&nbsp;
135 <label><input type="checkbox" name="linewrapping" id="linewrapping" value="1" onchange="nfwjs_linewrapping()" <?php checked($nfwlwrap, 1)?> /><?php esc_html_e('Line wrapping', 'ninjafirewall') ?></label>
136 </div>
137 </td>
138 </tr>
139 </table>
140 <p class="description alignright"><?php esc_html_e('Live Log will not display whitelisted users and brute-force attacks.', 'ninjafirewall') ?></p>
141 </form>
142 <?php
143
144 if ( empty( $nfw_options['liveformat'] ) ) {
145 $lf = 0;
146 $liveformat = '';
147 } else {
148 $lf = 1;
149 $liveformat = $nfw_options['liveformat'];
150 }
151
152 if ( empty( $nfw_options['liveport'] ) ||
153 ! preg_match('/^[1-2]$/', $nfw_options['liveport'] ) ) {
154
155 $liveport = 0;
156 } else {
157 $liveport = $nfw_options['liveport'];
158 }
159 if ( empty( $nfw_options['livetz'] ) ||
160 preg_match('/[^\w\/]/', $nfw_options['livetz'] ) ) {
161
162 $livetz = 'UTC';
163 } else {
164 $livetz = $nfw_options['livetz'];
165 }
166 if ( empty( $nfw_options['liverules'] ) ||
167 ! preg_match('/^[0-2]$/', $nfw_options['liverules'] ) ) {
168
169 $liverules = 0;
170 $lr_disabled = 'disabled="disabled" ';
171 } else {
172 $liverules = $nfw_options['liverules'];
173 $lr_disabled = '';
174 }
175 if ( empty( $nfw_options['liverulespath'] ) ) {
176 $liverulespath = '';
177 } else{
178 $liverulespath = $nfw_options['liverulespath'];
179 }
180 ?>
181 <br />
182 <form method="post">
183 <h3><?php esc_html_e('Live Log Options', 'ninjafirewall') ?></h3>
184 <table class="form-table nfw-table">
185 <tr>
186 <th scope="row" class="row-med"><?php esc_html_e('Inclusion and exclusion filters (REQUEST_URI)', 'ninjafirewall') ?></th>
187 <td>
188 <select name="liverules" onchange="nfwjs_lv_select(this.value);">
189 <option value="0"<?php selected($liverules, 0) ?>><?php esc_html_e('None', 'ninjafirewall') ?></option>
190 <option value="1"<?php selected($liverules, 1) ?>><?php esc_html_e('Must include', 'ninjafirewall') ?></option>
191 <option value="2"<?php selected($liverules, 2) ?>><?php esc_html_e('Must not include', 'ninjafirewall') ?></option>
192 </select>&nbsp;
193 <input <?php echo $lr_disabled; ?>type="text" id="lr-disabled" class="regular-text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="liverulespath" value="<?php echo esc_attr( $liverulespath ) ?>" placeholder="<?php esc_attr_e('e.g.,', 'ninjafirewall') ?> /blog <?php esc_attr_e('or', 'ninjafirewall') ?> admin.php <?php esc_attr_e('or', 'ninjafirewall') ?> index.php,/blog" />
194 <br />
195 <p class="description"><?php esc_html_e('Full or partial case-sensitive REQUEST_URI string. Multiple values must be comma-separated.', 'ninjafirewall') ?></p>
196 </td>
197 </tr>
198 <tr>
199 <th scope="row" class="row-med"><?php esc_html_e('Format', 'ninjafirewall') ?></th>
200 <td>
201 <p><label><input type="radio" name="lf" value="0"<?php checked($lf, 0) ?> onclick="document.getElementById('liveformat').disabled=true"><code>[%time] %name %client &quot;%method %uri&quot; &quot;%referrer&quot; &quot;%ua&quot; &quot;%forward&quot; &quot;%host&quot;</code></label></p>
202 <p><label><input type="radio" name="lf" value="1"<?php checked($lf, 1) ?> onclick="document.getElementById('liveformat').disabled=false;document.getElementById('liveformat').focus()"><?php esc_html_e('Custom', 'ninjafirewall') ?> </label><input id="liveformat" type="text" class="regular-text" name="liveformat" value="<?php echo esc_attr( $liveformat ); ?>"<?php disabled($lf, 0) ?> autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /></p>
203 <p class="description"><?php esc_html_e('See contextual help for available log format.', 'ninjafirewall') ?></p>
204 </td>
205 </tr>
206 <tr>
207 <th scope="row" class="row-med"><?php esc_html_e('Display', 'ninjafirewall') ?></th>
208 <td>
209 <select name="liveport">
210 <option value="0"<?php selected( $liveport, 0 ) ?>><?php esc_html_e('HTTP and HTTPS traffic (default)', 'ninjafirewall') ?></option>
211 <option value="1"<?php selected( $liveport, 1 ) ?>><?php esc_html_e('HTTP traffic only', 'ninjafirewall') ?></option>
212 <option value="2"<?php selected( $liveport, 2 ) ?>><?php esc_html_e('HTTPS traffic only', 'ninjafirewall') ?></option>
213 </select>
214 </td>
215 </tr>
216 <tr>
217 <th scope="row" class="row-med"><?php esc_html_e('Timezone', 'ninjafirewall') ?></th>
218 <td>
219 <select name="livetz">
220 <?php
221 $timezone_choice = nfw_timezone_choice();
222 foreach ($timezone_choice as $tz_place) {
223 echo '<option value ="' . esc_attr( $tz_place ) . '"';
224 if ($livetz == $tz_place) { echo ' selected'; }
225 echo '>'. esc_html( $tz_place ) .'</option>';
226 }
227 ?>
228 </select>
229 </td>
230 </tr>
231 </table>
232 <p><input type="submit" class="button-primary" value="<?php esc_html_e('Save Live Log Options', 'ninjafirewall') ?>" /></p>
233 <?php wp_nonce_field('livelog_save', 'nfwnonce', 0); ?>
234 <input type="hidden" name="tab" value="livelog" />
235 </form>
236 <?php
237
238 // ---------------------------------------------------------------------
239 function nf_sub_liveloge_save() {
240
241 if ( empty($_POST['nfwnonce']) ||
242 ! wp_verify_nonce($_POST['nfwnonce'], 'livelog_save') ) {
243
244 wp_nonce_ays('livelog_save');
245 }
246
247 $nfw_options = nfw_get_option('nfw_options');
248
249 if ( empty( $_POST['liverules'] ) ||
250 ! preg_match('/^[0-2]$/', $_POST['liverules']) ) {
251
252 $nfw_options['liverules'] = 0;
253 } else {
254 $nfw_options['liverules'] = $_POST['liverules'];
255 }
256
257 $nfw_options['liverulespath'] = '';
258 if (! empty( $_POST['liverulespath'] ) ) {
259 $liverulespath = trim( $_POST['liverulespath'], " \t\n\r\0\x0B,");
260 $nfw_options['liverulespath'] = preg_replace('/\s*,\s*/', ',', $liverulespath );
261 }
262 if ( empty( $nfw_options['liverulespath'] ) ) {
263 $nfw_options['liverules'] = 0;
264 }
265
266 if ( empty($_POST['lf']) ) {
267 $nfw_options['liveformat'] = '';
268 } else {
269 if (! empty($_POST['liveformat']) ) {
270 $tmp = stripslashes($_POST['liveformat']);
271 // Remove unwanted characters :
272 $nfw_options['liveformat'] = preg_replace('`[^a-z%[\]"\x20]`', '', $tmp);
273 }
274 if (empty($_POST['liveformat']) ) {
275 return esc_html__('Error: please enter the custom log format.', 'ninjafirewall');
276 }
277 }
278
279 if ( empty($_POST['liveport']) || ! preg_match('/^[1-2]$/', $_POST['liveport']) ) {
280 $nfw_options['liveport'] = 0;
281 } else {
282 $nfw_options['liveport'] = $_POST['liveport'];
283 }
284
285 if ( empty($_POST['livetz']) || preg_match('/[^\w\/]/', $_POST['livetz']) ) {
286 $nfw_options['livetz'] = 0;
287 } else {
288 $nfw_options['livetz'] = $_POST['livetz'];
289 }
290
291 $nfw_options = nfw_update_option('nfw_options', $nfw_options);
292 }
293
294 // ---------------------------------------------------------------------
295
296 function nfw_timezone_choice() {
297 return array('UTC', 'Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap');
298 }
299
300 // ---------------------------------------------------------------------
301 // EOF
302