1 /* <!-- copyright */ 2 /* 3 * aria2 - The high speed download utility 4 * 5 * Copyright (C) 2006 Tatsuhiro Tsujikawa 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * 21 * In addition, as a special exception, the copyright holders give 22 * permission to link the code of portions of this program with the 23 * OpenSSL library under certain conditions as described in each 24 * individual source file, and distribute linked combinations 25 * including the two. 26 * You must obey the GNU General Public License in all respects 27 * for all of the code used other than OpenSSL. If you modify 28 * file(s) with this exception, you may extend this exception to your 29 * version of the file(s), but you are not obligated to do so. If you 30 * do not wish to do so, delete this exception statement from your 31 * version. If you delete this exception statement from all source 32 * files in the program, then also delete it here. 33 */ 34 /* copyright --> */ 35 #ifndef D_PREFS_H 36 #define D_PREFS_H 37 38 #include "common.h" 39 #include <string> 40 41 namespace aria2 { 42 43 struct Pref { 44 Pref(const char* k, size_t i); 45 // Keyword, aka Option Name 46 const char* k; 47 // Option ID 48 size_t i; 49 }; 50 51 typedef const Pref* PrefPtr; 52 53 namespace option { 54 55 // Returns the number of options. 56 size_t countOption(); 57 58 // Returns Pref whose ID is id. id must be less than countOption(). 59 PrefPtr i2p(size_t id); 60 61 // Returns Pref whose keyword is k. If no such Pref is found, returns 62 // special null Pref whose ID is 0. 63 PrefPtr k2p(const std::string& k); 64 65 // Deletes resources allocated for preferences. Call this function at 66 // the end of the program only once. 67 void deletePrefResource(); 68 69 } // namespace option 70 71 /** 72 * Constants 73 */ 74 extern const std::string A2_V_TRUE; 75 extern const std::string A2_V_FALSE; 76 extern const std::string A2_V_DEFAULT; 77 extern const std::string V_NONE; 78 extern const std::string V_MEM; 79 extern const std::string V_ALL; 80 extern const std::string A2_V_FULL; 81 extern const std::string A2_V_HIDE; 82 extern const std::string A2_V_GEOM; 83 extern const std::string V_PREALLOC; 84 extern const std::string V_FALLOC; 85 extern const std::string V_TRUNC; 86 extern const std::string V_DEBUG; 87 extern const std::string V_INFO; 88 extern const std::string V_NOTICE; 89 extern const std::string V_WARN; 90 extern const std::string V_ERROR; 91 extern const std::string V_INORDER; 92 extern const std::string A2_V_RANDOM; 93 extern const std::string V_FEEDBACK; 94 extern const std::string V_ADAPTIVE; 95 extern const std::string V_LIBUV; 96 extern const std::string V_EPOLL; 97 extern const std::string V_KQUEUE; 98 extern const std::string V_PORT; 99 extern const std::string V_POLL; 100 extern const std::string V_SELECT; 101 extern const std::string V_BINARY; 102 extern const std::string V_ASCII; 103 extern const std::string V_GET; 104 extern const std::string V_TUNNEL; 105 extern const std::string V_PLAIN; 106 extern const std::string V_ARC4; 107 extern const std::string V_HTTP; 108 extern const std::string V_HTTPS; 109 extern const std::string V_FTP; 110 extern const std::string A2_V_TLS11; 111 extern const std::string A2_V_TLS12; 112 extern const std::string A2_V_TLS13; 113 114 extern PrefPtr PREF_VERSION; 115 extern PrefPtr PREF_HELP; 116 117 /** 118 * General preferences 119 */ 120 // values: 1*digit 121 extern PrefPtr PREF_TIMEOUT; 122 // values: 1*digit 123 extern PrefPtr PREF_DNS_TIMEOUT; 124 // values: 1*digit 125 extern PrefPtr PREF_CONNECT_TIMEOUT; 126 // values: 1*digit 127 extern PrefPtr PREF_MAX_TRIES; 128 // values: 1*digit 129 extern PrefPtr PREF_AUTO_SAVE_INTERVAL; 130 // values: a string that your file system recognizes as a file name. 131 extern PrefPtr PREF_LOG; 132 // values: a string that your file system recognizes as a directory. 133 extern PrefPtr PREF_DIR; 134 // values: a string that your file system recognizes as a file name. 135 extern PrefPtr PREF_OUT; 136 // values: 1*digit 137 extern PrefPtr PREF_SPLIT; 138 // value: true | false 139 extern PrefPtr PREF_DAEMON; 140 // value: a string 141 extern PrefPtr PREF_REFERER; 142 // value: 1*digit 143 extern PrefPtr PREF_LOWEST_SPEED_LIMIT; 144 // value: 1*digit 145 extern PrefPtr PREF_PIECE_LENGTH; 146 // value: 1*digit 147 extern PrefPtr PREF_MAX_DOWNLOAD_LIMIT; 148 // value: 1*digit 149 extern PrefPtr PREF_STARTUP_IDLE_TIME; 150 // value: prealloc | falloc | none 151 extern PrefPtr PREF_FILE_ALLOCATION; 152 // value: 1*digit 153 extern PrefPtr PREF_NO_FILE_ALLOCATION_LIMIT; 154 // value: true | false 155 extern PrefPtr PREF_ALLOW_OVERWRITE; 156 // value: true | false 157 extern PrefPtr PREF_REALTIME_CHUNK_CHECKSUM; 158 // value: true | false 159 extern PrefPtr PREF_CHECK_INTEGRITY; 160 // value: string that your file system recognizes as a file name. 161 extern PrefPtr PREF_NETRC_PATH; 162 // value: 163 extern PrefPtr PREF_CONTINUE; 164 // value: 165 extern PrefPtr PREF_NO_NETRC; 166 // value: 1*digit 167 extern PrefPtr PREF_MAX_OVERALL_DOWNLOAD_LIMIT; 168 // value: 1*digit 169 extern PrefPtr PREF_MAX_DOWNLOADS; 170 // value: string that your file system recognizes as a file name. 171 extern PrefPtr PREF_INPUT_FILE; 172 // value: true | false 173 extern PrefPtr PREF_DEFERRED_INPUT; 174 // value: 1*digit 175 extern PrefPtr PREF_MAX_CONCURRENT_DOWNLOADS; 176 // value: true | false 177 extern PrefPtr PREF_OPTIMIZE_CONCURRENT_DOWNLOADS; 178 // value: 1*digit ['.' [ 1*digit ] ] 179 extern PrefPtr PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFA; 180 // value: 1*digit ['.' [ 1*digit ] ] 181 extern PrefPtr PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFB; 182 // value: true | false 183 extern PrefPtr PREF_FORCE_SEQUENTIAL; 184 // value: true | false 185 extern PrefPtr PREF_AUTO_FILE_RENAMING; 186 // value: true | false 187 extern PrefPtr PREF_PARAMETERIZED_URI; 188 // value: true | false 189 extern PrefPtr PREF_ALLOW_PIECE_LENGTH_CHANGE; 190 // value: true | false 191 extern PrefPtr PREF_NO_CONF; 192 // value: string 193 extern PrefPtr PREF_CONF_PATH; 194 // value: 1*digit 195 extern PrefPtr PREF_STOP; 196 // value: true | false 197 extern PrefPtr PREF_QUIET; 198 // value: true | false 199 extern PrefPtr PREF_ASYNC_DNS; 200 // value: 1*digit 201 extern PrefPtr PREF_SUMMARY_INTERVAL; 202 // value: debug, info, notice, warn, error 203 extern PrefPtr PREF_LOG_LEVEL; 204 // value: debug, info, notice, warn, error 205 extern PrefPtr PREF_CONSOLE_LOG_LEVEL; 206 // value: inorder | feedback | adaptive 207 extern PrefPtr PREF_URI_SELECTOR; 208 // value: 1*digit 209 extern PrefPtr PREF_SERVER_STAT_TIMEOUT; 210 // value: string that your file system recognizes as a file name. 211 extern PrefPtr PREF_SERVER_STAT_IF; 212 // value: string that your file system recognizes as a file name. 213 extern PrefPtr PREF_SERVER_STAT_OF; 214 // value: true | false 215 extern PrefPtr PREF_REMOTE_TIME; 216 // value: 1*digit 217 extern PrefPtr PREF_MAX_FILE_NOT_FOUND; 218 // value: epoll | select 219 extern PrefPtr PREF_EVENT_POLL; 220 // value: true | false 221 extern PrefPtr PREF_ENABLE_RPC; 222 // value: 1*digit 223 extern PrefPtr PREF_RPC_LISTEN_PORT; 224 // value: string 225 extern PrefPtr PREF_RPC_USER; 226 // value: string 227 extern PrefPtr PREF_RPC_PASSWD; 228 // value: 1*digit 229 extern PrefPtr PREF_RPC_MAX_REQUEST_SIZE; 230 // value: true | false 231 extern PrefPtr PREF_RPC_LISTEN_ALL; 232 // value: true | false 233 extern PrefPtr PREF_RPC_ALLOW_ORIGIN_ALL; 234 // value: string that your file system recognizes as a file name. 235 extern PrefPtr PREF_RPC_CERTIFICATE; 236 // value: string that your file system recognizes as a file name. 237 extern PrefPtr PREF_RPC_PRIVATE_KEY; 238 // value: true | false 239 extern PrefPtr PREF_RPC_SECURE; 240 // value: true | false 241 extern PrefPtr PREF_RPC_SAVE_UPLOAD_METADATA; 242 // value: true | false 243 extern PrefPtr PREF_DRY_RUN; 244 // value: true | false 245 extern PrefPtr PREF_REUSE_URI; 246 // value: string 247 extern PrefPtr PREF_ON_DOWNLOAD_START; 248 extern PrefPtr PREF_ON_DOWNLOAD_PAUSE; 249 extern PrefPtr PREF_ON_DOWNLOAD_STOP; 250 extern PrefPtr PREF_ON_DOWNLOAD_COMPLETE; 251 extern PrefPtr PREF_ON_DOWNLOAD_ERROR; 252 // value: string 253 extern PrefPtr PREF_INTERFACE; 254 // value: string 255 extern PrefPtr PREF_MULTIPLE_INTERFACE; 256 // value: true | false 257 extern PrefPtr PREF_DISABLE_IPV6; 258 // value: true | false 259 extern PrefPtr PREF_HUMAN_READABLE; 260 // value: true | false 261 extern PrefPtr PREF_REMOVE_CONTROL_FILE; 262 // value: true | false 263 extern PrefPtr PREF_ALWAYS_RESUME; 264 // value: 1*digit 265 extern PrefPtr PREF_MAX_RESUME_FAILURE_TRIES; 266 // value: string that your file system recognizes as a file name. 267 extern PrefPtr PREF_SAVE_SESSION; 268 // value: 1*digit 269 extern PrefPtr PREF_MAX_CONNECTION_PER_SERVER; 270 // value: 1*digit 271 extern PrefPtr PREF_MIN_SPLIT_SIZE; 272 // value: true | false 273 extern PrefPtr PREF_CONDITIONAL_GET; 274 // value: true | false 275 extern PrefPtr PREF_SELECT_LEAST_USED_HOST; 276 // value: true | false 277 extern PrefPtr PREF_ENABLE_ASYNC_DNS6; 278 // value: 1*digit 279 extern PrefPtr PREF_MAX_DOWNLOAD_RESULT; 280 // value: 1*digit 281 extern PrefPtr PREF_RETRY_WAIT; 282 // value: string 283 extern PrefPtr PREF_ASYNC_DNS_SERVER; 284 // value: true | false 285 extern PrefPtr PREF_SHOW_CONSOLE_READOUT; 286 // value: default | inorder | geom 287 extern PrefPtr PREF_STREAM_PIECE_SELECTOR; 288 // value: true | false 289 extern PrefPtr PREF_TRUNCATE_CONSOLE_READOUT; 290 // value: true | false 291 extern PrefPtr PREF_PAUSE; 292 // value: default | full | hide 293 extern PrefPtr PREF_DOWNLOAD_RESULT; 294 // value: true | false 295 extern PrefPtr PREF_HASH_CHECK_ONLY; 296 // values: hashType=digest 297 extern PrefPtr PREF_CHECKSUM; 298 // value: pid 299 extern PrefPtr PREF_STOP_WITH_PROCESS; 300 // value: true | false 301 extern PrefPtr PREF_ENABLE_MMAP; 302 // value: true | false 303 extern PrefPtr PREF_FORCE_SAVE; 304 // value: true | false 305 extern PrefPtr PREF_SAVE_NOT_FOUND; 306 // value: 1*digit 307 extern PrefPtr PREF_DISK_CACHE; 308 // value: string 309 extern PrefPtr PREF_GID; 310 // values: 1*digit 311 extern PrefPtr PREF_SAVE_SESSION_INTERVAL; 312 // value: true |false 313 extern PrefPtr PREF_ENABLE_COLOR; 314 // value: string 315 extern PrefPtr PREF_RPC_SECRET; 316 // values: 1*digit 317 extern PrefPtr PREF_DSCP; 318 // values: true | false 319 extern PrefPtr PREF_PAUSE_METADATA; 320 // values: 1*digit 321 extern PrefPtr PREF_RLIMIT_NOFILE; 322 // values: SSLv3 | TLSv1 | TLSv1.1 | TLSv1.2 323 extern PrefPtr PREF_MIN_TLS_VERSION; 324 // value: 1*digit 325 extern PrefPtr PREF_SOCKET_RECV_BUFFER_SIZE; 326 // value: 1*digit 327 extern PrefPtr PREF_MAX_MMAP_LIMIT; 328 // value: true | false 329 extern PrefPtr PREF_STDERR; 330 // value: true | false 331 extern PrefPtr PREF_KEEP_UNFINISHED_DOWNLOAD_RESULT; 332 333 /** 334 * FTP related preferences 335 */ 336 extern PrefPtr PREF_FTP_USER; 337 extern PrefPtr PREF_FTP_PASSWD; 338 // values: binary | ascii 339 extern PrefPtr PREF_FTP_TYPE; 340 // values: true | false 341 extern PrefPtr PREF_FTP_PASV; 342 // values: true | false 343 extern PrefPtr PREF_FTP_REUSE_CONNECTION; 344 // values: hashType=digest 345 extern PrefPtr PREF_SSH_HOST_KEY_MD; 346 347 /** 348 * HTTP related preferences 349 */ 350 extern PrefPtr PREF_HTTP_USER; 351 extern PrefPtr PREF_HTTP_PASSWD; 352 // values: string 353 extern PrefPtr PREF_USER_AGENT; 354 // value: string that your file system recognizes as a file name. 355 extern PrefPtr PREF_LOAD_COOKIES; 356 // value: string that your file system recognizes as a file name. 357 extern PrefPtr PREF_SAVE_COOKIES; 358 // values: true | false 359 extern PrefPtr PREF_ENABLE_HTTP_KEEP_ALIVE; 360 // values: true | false 361 extern PrefPtr PREF_ENABLE_HTTP_PIPELINING; 362 // value: 1*digit 363 extern PrefPtr PREF_MAX_HTTP_PIPELINING; 364 // value: string 365 extern PrefPtr PREF_HEADER; 366 // value: string that your file system recognizes as a file name. 367 extern PrefPtr PREF_CERTIFICATE; 368 // value: string that your file system recognizes as a file name. 369 extern PrefPtr PREF_PRIVATE_KEY; 370 // value: string that your file system recognizes as a file name. 371 extern PrefPtr PREF_CA_CERTIFICATE; 372 // value: true | false 373 extern PrefPtr PREF_CHECK_CERTIFICATE; 374 // value: true | false 375 extern PrefPtr PREF_USE_HEAD; 376 // value: true | false 377 extern PrefPtr PREF_HTTP_AUTH_CHALLENGE; 378 // value: true | false 379 extern PrefPtr PREF_HTTP_NO_CACHE; 380 // value: true | false 381 extern PrefPtr PREF_HTTP_ACCEPT_GZIP; 382 // value: true | false 383 extern PrefPtr PREF_CONTENT_DISPOSITION_DEFAULT_UTF8; 384 385 /**; 386 * Proxy related preferences 387 */ 388 extern PrefPtr PREF_HTTP_PROXY; 389 extern PrefPtr PREF_HTTPS_PROXY; 390 extern PrefPtr PREF_FTP_PROXY; 391 extern PrefPtr PREF_ALL_PROXY; 392 // values: comma separated hostname or domain 393 extern PrefPtr PREF_NO_PROXY; 394 // values: get | tunnel 395 extern PrefPtr PREF_PROXY_METHOD; 396 extern PrefPtr PREF_HTTP_PROXY_USER; 397 extern PrefPtr PREF_HTTP_PROXY_PASSWD; 398 extern PrefPtr PREF_HTTPS_PROXY_USER; 399 extern PrefPtr PREF_HTTPS_PROXY_PASSWD; 400 extern PrefPtr PREF_FTP_PROXY_USER; 401 extern PrefPtr PREF_FTP_PROXY_PASSWD; 402 extern PrefPtr PREF_ALL_PROXY_USER; 403 extern PrefPtr PREF_ALL_PROXY_PASSWD; 404 405 /** 406 * BitTorrent related preferences 407 */ 408 // values: 1*digit 409 extern PrefPtr PREF_PEER_CONNECTION_TIMEOUT; 410 // values: 1*digit 411 extern PrefPtr PREF_BT_TIMEOUT; 412 // values: 1*digit 413 extern PrefPtr PREF_BT_REQUEST_TIMEOUT; 414 // values: true | false 415 extern PrefPtr PREF_SHOW_FILES; 416 // values: 1*digit 417 extern PrefPtr PREF_MAX_OVERALL_UPLOAD_LIMIT; 418 // values: 1*digit 419 extern PrefPtr PREF_MAX_UPLOAD_LIMIT; 420 // values: a string that your file system recognizes as a file name. 421 extern PrefPtr PREF_TORRENT_FILE; 422 // values: 1*digit 423 extern PrefPtr PREF_LISTEN_PORT; 424 // values: true | false | mem 425 extern PrefPtr PREF_FOLLOW_TORRENT; 426 // values: 1*digit *( (,|-) 1*digit) 427 extern PrefPtr PREF_SELECT_FILE; 428 // values: 1*digit ['.' [ 1*digit ] ] 429 extern PrefPtr PREF_SEED_TIME; 430 // values: 1*digit ['.' [ 1*digit ] ] 431 extern PrefPtr PREF_SEED_RATIO; 432 // values: 1*digit 433 extern PrefPtr PREF_BT_KEEP_ALIVE_INTERVAL; 434 // values: a string, less than or equals to 20 bytes length 435 extern PrefPtr PREF_PEER_ID_PREFIX; 436 // values: a string representing the extended BT handshake peer user agent 437 extern PrefPtr PREF_PEER_AGENT; 438 // values: true | false 439 extern PrefPtr PREF_ENABLE_PEER_EXCHANGE; 440 // values: true | false 441 extern PrefPtr PREF_ENABLE_DHT; 442 // values: a string 443 extern PrefPtr PREF_DHT_LISTEN_ADDR; 444 // values: 1*digit 445 extern PrefPtr PREF_DHT_LISTEN_PORT; 446 // values: a string 447 extern PrefPtr PREF_DHT_ENTRY_POINT_HOST; 448 // values: 1*digit 449 extern PrefPtr PREF_DHT_ENTRY_POINT_PORT; 450 // values: a string (hostname:port) 451 extern PrefPtr PREF_DHT_ENTRY_POINT; 452 // values: a string 453 extern PrefPtr PREF_DHT_FILE_PATH; 454 // values: true | false 455 extern PrefPtr PREF_ENABLE_DHT6; 456 // values: a string 457 extern PrefPtr PREF_DHT_LISTEN_ADDR6; 458 // values: a string 459 extern PrefPtr PREF_DHT_ENTRY_POINT_HOST6; 460 // values: 1*digit 461 extern PrefPtr PREF_DHT_ENTRY_POINT_PORT6; 462 // values: a string (hostname:port) 463 extern PrefPtr PREF_DHT_ENTRY_POINT6; 464 // values: a string 465 extern PrefPtr PREF_DHT_FILE_PATH6; 466 // values: plain | arc4 467 extern PrefPtr PREF_BT_MIN_CRYPTO_LEVEL; 468 // values:: true | false 469 extern PrefPtr PREF_BT_REQUIRE_CRYPTO; 470 // values: 1*digit 471 extern PrefPtr PREF_BT_REQUEST_PEER_SPEED_LIMIT; 472 // values: 1*digit 473 extern PrefPtr PREF_BT_MAX_OPEN_FILES; 474 // values: true | false 475 extern PrefPtr PREF_BT_SEED_UNVERIFIED; 476 // values: true | false 477 extern PrefPtr PREF_BT_HASH_CHECK_SEED; 478 // values: 1*digit 479 extern PrefPtr PREF_BT_MAX_PEERS; 480 // values: a string (IP address) 481 extern PrefPtr PREF_BT_EXTERNAL_IP; 482 // values: 1*digit '=' a string that your file system recognizes as a file name. 483 extern PrefPtr PREF_INDEX_OUT; 484 // values: 1*digit 485 extern PrefPtr PREF_BT_TRACKER_INTERVAL; 486 // values: 1*digit 487 extern PrefPtr PREF_BT_STOP_TIMEOUT; 488 // values: head[=SIZE]|tail[=SIZE], ... 489 extern PrefPtr PREF_BT_PRIORITIZE_PIECE; 490 // values: true | false 491 extern PrefPtr PREF_BT_SAVE_METADATA; 492 // values: true | false 493 extern PrefPtr PREF_BT_METADATA_ONLY; 494 // values: true | false 495 extern PrefPtr PREF_BT_ENABLE_LPD; 496 // values: string 497 extern PrefPtr PREF_BT_LPD_INTERFACE; 498 // values: 1*digit 499 extern PrefPtr PREF_BT_TRACKER_TIMEOUT; 500 // values: 1*digit 501 extern PrefPtr PREF_BT_TRACKER_CONNECT_TIMEOUT; 502 // values: 1*digit 503 extern PrefPtr PREF_DHT_MESSAGE_TIMEOUT; 504 // values: string 505 extern PrefPtr PREF_ON_BT_DOWNLOAD_COMPLETE; 506 // values: string 507 extern PrefPtr PREF_BT_TRACKER; 508 // values: string 509 extern PrefPtr PREF_BT_EXCLUDE_TRACKER; 510 // values: true | false 511 extern PrefPtr PREF_BT_REMOVE_UNSELECTED_FILE; 512 // values: true |false 513 extern PrefPtr PREF_BT_DETACH_SEED_ONLY; 514 // values: true | false 515 extern PrefPtr PREF_BT_FORCE_ENCRYPTION; 516 // values: true | false 517 extern PrefPtr PREF_BT_ENABLE_HOOK_AFTER_HASH_CHECK; 518 // values: true | false 519 extern PrefPtr PREF_BT_LOAD_SAVED_METADATA; 520 521 /** 522 * Metalink related preferences 523 */ 524 // values: a string that your file system recognizes as a file name. 525 extern PrefPtr PREF_METALINK_FILE; 526 // values: a string 527 extern PrefPtr PREF_METALINK_VERSION; 528 // values: a string 529 extern PrefPtr PREF_METALINK_LANGUAGE; 530 // values: a string 531 extern PrefPtr PREF_METALINK_OS; 532 // values: a string 533 extern PrefPtr PREF_METALINK_LOCATION; 534 // values: true | false | mem 535 extern PrefPtr PREF_FOLLOW_METALINK; 536 // values: http | https | ftp | none 537 extern PrefPtr PREF_METALINK_PREFERRED_PROTOCOL; 538 // values: true | false 539 extern PrefPtr PREF_METALINK_ENABLE_UNIQUE_PROTOCOL; 540 // values: a string 541 extern PrefPtr PREF_METALINK_BASE_URI; 542 543 } // namespace aria2 544 545 #endif // D_PREFS_H 546