ChangeLog 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. Version 1.999.128:
  2. - tun2socks: add option --append-source-to-username to give the SOCKS server the source IP of the connection
  3. - tun2socks: IPv6 support, and updated to newer version of lwIP
  4. - tun2socks: fix some bugs/crashes
  5. - tun2socks, udpgw: transparent DNS forwarding, though no Windows support on udpgw side (contributed by Kerem Hadimli)
  6. - NCD: preliminary support for dynamically loading commands
  7. Version 1.999.127:
  8. - client, server: implement experimental support for performing SSL operations in worker threads. Currently it's rather inefficient.
  9. - NCD: modules: value: implement value::append() for appending to a list
  10. - NCD: modules: net_iptables: add single-argument form of append and insert commands, allowing for generic use
  11. - NCD: modules: net_iptables: implement net.iptables.insert() and net.ebtables.insert()
  12. - NCD: modules: sys_start_process: implement options, including username, term_on_deinit and deinit_kill_time
  13. - NCD: modules: sys_request_server: implement _caller in request handler
  14. - NCD: modules: add getenv()
  15. - NCD: modules: daemon: implement options, including username option
  16. - NCD: modules: runonce: add new options format with a map, implement username option
  17. - NCD: modules: add buffer(), which exposes a buffer with efficient appending and removing from the beginning.
  18. - NCD: add a new internal string representation called ComposedString. This allows modules to expose the concatenation of multiple memroy buffers as a single string value, efficiently.
  19. - fix many, hopefully all, strict aliasing violations. In particular, this fixes a bug where the DHCP client integrated into NCD won't work correctly, subject to optimization flags.
  20. - NCD: modules: sleep: interpret empty string as no sleeping, add sleep(ms_start) with one argument
  21. - NCD: modules: add log(), log_r() and log_fr() commands for logging via the BLog system
  22. Version 1.999.126:
  23. - NCD: modules: sleep: interpret empty string time as no sleeping, add sleep(ms_start) with one argument
  24. - NCD: modules: add log module for message logging using the BLog system
  25. - NCD: implement the "include" and "include_guard" directives, which allow separating reusable code into files
  26. - NCD: modules: call2: implement call_with_caller_target(), which makes it easier to write reusable code that calls back user-provided code
  27. - NCD: modules: call2: remove call2_if(), call2_ifelse(), embcall2(), embcall2_if(), embcall2_ifelse()
  28. - NCD: modules: add sys.start_process(), which implements starting and controlling external processes and reading/writing their stdout/stdin
  29. - tun2socks: implement SOCKS password authentication
  30. - NCD: track the depth of values and limit the maximum depth. This avoids stack overflow with very deeply nested values.
  31. - NCD: modules: add substr()
  32. - NCD: process_manager: add 2-argument start() method which doesn't take a process identifier
  33. - NCD: process_manager: allow process identifiers to be any value not just strings
  34. - NCD: multidepend, depend_scope: fix immediate effect order when a depend finishes backtracking
  35. - NCD: add depend_scope module to do exactly what the multidepend module does, but with separate non-global dependency name scopes
  36. - NCD: multidepend: allow dependency names to be any value not just strings
  37. - NCD: implement value::insert(what) for appending to a list
  38. - NCD: change the format of addresses in sys.request_server() and sys.request_client() to be the same as in the socket module
  39. - NCD: add socket module (sys.connect() and sys.listen())
  40. - NCD: fix bug where duplicate template/process names would not be detected and weird behaviour would result
  41. - NCD: add backtrack_point() for simple backtracking
  42. - NCD: add file_open() for more complete file I/O
  43. - NCD: implement parse_ipv6_addr() and parse_ipv6_cidr_addr()
  44. - NCD: port to Emscripten/Javascript, for the in-browser demo
  45. - NCD: many performance and memory usage improvements
  46. - NCD: add assert_false()
  47. - NCD: don't link to OpenSSL to for random number generator. Use /dev/urandom instead to generate XIDs for DHCP.
  48. - NCD: deprecate ip_in_network() and instead add net.ipv{4,6}.addr_in_network(), net.ipv{4,6}.ifnot_addr_in_network()
  49. - NCD: implement some IPv6 modules: net.ipv6.addr(), net.ipv6.route()
  50. - NCD: support CIDR style addr/prefix addresses in various modules
  51. - NCD: recognize Elif and Else with capital first letter to be consistent with other reserved keywords
  52. Version 1.999.123:
  53. - NCD: performance improvements related to finding modules for statements
  54. - NCD: performance improvements related to resolving object names
  55. - NCD: performance improvements related to instantiating statement arguments
  56. - NCD: add value::replace_this() and value::replace_this_undo()
  57. - NCD: add value::reset()
  58. - NCD: add value::replace() and value::replace_undo()
  59. - Port to compile with MSVC for Windows.
  60. - NCD: add Foreach clause
  61. - NCD: implement _caller in spawn(), add spawn::join()
  62. - NCD: add explode()
  63. - NCD: add hard_reboot() and hard_poweroff()
  64. - NCD: add file_stat() and file_lstat()
  65. - NCD: fix regex_replace() semantics. It was very broken because it did a complete replacement pass for every regex on the list, so it would match parts that have already been replaced, producing unexpected results.
  66. - NCD: small performance improvement
  67. Version 1.999.121:
  68. - NCD: improve error handling semantics; see http://code.google.com/p/badvpn/source/detail?r=1376
  69. - NCD: fix assertion failure in sys.evdev() if a device error occurs (e.g. device unplugged) while an event is being processed. Similar fix in some other modules, but these may not be reproducable.
  70. - NCD: some more performance improvements
  71. - NCD: some performance improvements (~30% faster interpretation of cpu-bound code)
  72. - NCD: implemented If..elif..else clause.
  73. - NCD: net.backend.wpa_supplicant: fix to work with wpa_supplicant>=1.0
  74. Version 1.999.115:
  75. - NCD: Many improvements; new statements, including call(), alias(), foreach(), choose().
  76. Version 1.999.113:
  77. - NCD: when starting child processes, make sure that file descriptors for standard
  78. streams are always open in the child, by opening /dev/null if they are not.
  79. - Improve build system to allow selective building of components.
  80. By default, everything is built, unless -DBUILD_NOTHING_BY_DEFAULT=1 is given.
  81. Individual components can then be enabled or disabled using -DBUILD_COMPONENT=1
  82. and -DBUILD_COMPONENT=0.
  83. - When starting any BadVPN program, make sure that file descriptors for standard
  84. streams are always open in the child, by opening /dev/null if they are not.
  85. - NCD: net.backend.wpa_supplicant(): add 'bssid' and 'ssid' variables to allow
  86. determining what wireless network wpa_supplicant connected to.
  87. - NCD: net.backend.wpa_supplicant(): do not require the user to start wpa_supplicant via
  88. stdbuf, but do it automatically.
  89. Version 1.999.111:
  90. - Improved protocol such that peers can use SSL when comminicating via the server. This
  91. improves security, as compromising the server will not allow the attacker to see secret
  92. data shared by peers (in particular, encryption keys and OTP seeds when in UDP mode).
  93. Compatibility is preserved if an only if the following conditions are met:
  94. - The server is using the latest version.
  95. - If the network is using SSL, all clients using the new version are using the
  96. "--allow-peer-talk-without-ssl" command line option.
  97. Be aware, however, that using the "--allow-peer-talk-without-ssl" option negates the
  98. security benefits of the new SSL support - not only between pairs of peers where one
  99. peer is using the old version, but also between pairs where both peers are capable
  100. of SSL. This is because the server can re-initialize the pair, telling them not to use
  101. SSL.
  102. Version 1.999.107:
  103. - Added Windows IOCP support, removing the limitation on ~64 connections. This is important
  104. for tun2socks, which may have to handle several hundred connections.
  105. Version 1.999.105.2:
  106. - Fixed an assertion failure in tun2socks related to sending data to SOCKS.
  107. Version 1.999.101.3:
  108. - Fixed UDP transport on Windows 7 which didn't work (was only tested on XP).
  109. Version 1.999.101:
  110. - Fixed a protocol issue present in versions <=1.999.100.3. Compatibility is preserved in
  111. case of a new server and old clients, but it is not possible to connect to an old server
  112. with a new client.