Commit Graph

1628 Commits

Author SHA1 Message Date
Moritz Warning
787608b568 use _network function to reduce source code complexity 2015-06-20 16:34:19 +02:00
Moritz Warning
2b04ac5e9b replace _networks map by vector
_networks is usually quite small, using binary search on a vector might be faster comapred to std::map.
This is especially true when using uClibc++, which uses a list.
2015-06-20 16:25:21 +02:00
Kees Bos
50d4f66d73 Fixed member authorization bug and minor cleanup 2015-06-19 21:19:42 +02:00
Adam Ierymenko
7bae95836c Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address. 2015-06-19 10:23:25 -07:00
Adam Ierymenko
07f84a99b4 Rebuild properly signed root topology after supernode -> rootserver name change. 2015-06-19 09:52:45 -07:00
Adam Ierymenko
f89f02ce9e Merge pull request #187 from keesbos/fix-ipv4-assignment
Fix for ipv4 assignment
2015-06-19 09:08:06 -07:00
Adam Ierymenko
be4f08a548 Merge pull request #186 from mwarning/txQueue_vector
replace txQueue list by vector for faster memory access and less allo…
2015-06-18 15:42:12 -07:00
Moritz Warning
0073d0f694 replace txQueue list by vector for faster memory access and less allocations 2015-06-19 00:28:51 +02:00
Kees Bos
16eae132fa Fix for ipv4 assignment 2015-06-18 19:14:52 +02:00
Adam Ierymenko
6fc150bddb Move js/ to ZeroTierIntegrations project. 2015-06-18 08:01:28 -07:00
Adam Ierymenko
87bb0086de Almost certain fix for GitHub issue #184 on -dev 2015-06-17 12:46:12 -07:00
Adam Ierymenko
1d0654bd14 Merge pull request #182 from keesbos/rootserver
Renamed supernode to rootserver
2015-06-16 13:50:29 -07:00
Adam Ierymenko
463442eb6f Merge pull request #181 from keesbos/bugfix
Bugfixes
2015-06-16 13:50:13 -07:00
Kees Bos
4affa10ca0 Fix 404 on creation of new network 2015-06-15 10:29:12 +02:00
Kees Bos
2e1d363a86 Removed a superfluous cross join 2015-06-15 03:19:25 +02:00
Kees Bos
1cbdae65fe Fix controller/network/*/member/*
Cross join works other than expected or something changed. The
_sGetMember2 returned too many rows. Replaced it with an explicit
join statement.
2015-06-15 03:19:25 +02:00
Kees Bos
dcbae5f313 Bugfix controller get member info 2015-06-15 03:19:25 +02:00
Adam Ierymenko
845955dea5 Add definition for VERB_CMA -- GitHub issue #180 2015-06-13 18:08:00 +02:00
Adam Ierymenko
8aa68cd5f1 Add new fields in operator== 2015-06-13 13:13:19 +02:00
Adam Ierymenko
edbc5d3588 Gateways support in NetworkConfig object. 2015-06-13 13:06:49 +02:00
Adam Ierymenko
96a58becf8 Gateways support in network controller schema and database (not implemented yet in client) toward GitHub issue #178 2015-06-13 11:34:31 +02:00
Adam Ierymenko
8a9715f183 Rename ruleId to ruleNo and optimize some indexes in Sqlite3 schema. 2015-06-13 10:05:34 +02:00
Adam Ierymenko
1b122cddbd Merge pull request #179 from keesbos/bugfix
Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST
2015-06-13 09:37:00 +02:00
Kees Bos
42390e662b Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST 2015-06-13 03:14:06 +02:00
Adam Ierymenko
494681a482 This might be a final fix for GitHub issue #173 and possibly others: ACTIVELY detect borked port status on Windows and if any "cable unplugged" or other wacky states are detected whack the adapter (close and reopen). Tested adding a whole bunch of windows networks, removing, adding more, etc. and it seems to work very well! 2015-06-12 16:02:04 +02:00
Adam Ierymenko
dbf40f30f9 Merge pull request #177 from keesbos/linux-ui
Linux ui
2015-06-12 13:49:45 +02:00
Kees Bos
dc50e8ae5b Add ui to /var/lib/zerotier (linux installer) 2015-06-11 17:56:54 +02:00
Kees Bos
7a55c6b388 Return 404 on delete if network member is missing (controller) 2015-06-11 12:20:52 +02:00
Kees Bos
c2ce018202 Return 404 on delete if network doesn't exist (controller) 2015-06-11 12:10:25 +02:00
Kees Bos
0d0af07ce9 Get deletion of networks in controller going
Multiple statements in a sqlite3_prepare_v2 is not usable. Only
the first statement will be executed.

Since the schema now uses 'ON DELETE CASCADE', there's only
one statement needed.

If multiple statements are needed, there should be either multiple
sqlite3_prepare_v2 calls be used or the sqlite3_exec function.
2015-06-11 11:49:13 +02:00
Kees Bos
de697a1c45 Change schema to enforce foreing keys
The foreign keys have 'ON DELETE CASCADE' to simplify the removal
of networks etc. (controller code)

Some unique constraints are replaced with a multi column primary
key.

To update an existing database:
 * install updated binaries
 * stop service
 * sqlite3 controller.db .dump | \
    egrep '((^PRAGMA)|(^BEGIN)|(^INSERT)|(^COMMIT))' | \
    grep -v 'schemaVersion' > data.sql
 * mv controller.db controller.db.backup
 * start service
 * stop service
 * sqlite3 controller.db < data.sql
 * start service
2015-06-11 11:35:25 +02:00
Adam Ierymenko
00aa115898 Allow double-close just in case in Phy<> 2015-06-09 16:30:44 +02:00
Adam Ierymenko
17ca5be4c1 Rework Phy<> to clean up _socks entries only in poll() to fix instability in proxy. 2015-06-09 16:27:11 +02:00
Adam Ierymenko
ab720a6f1e Fix for poll() in Phy<> with no sockets open. Only affects tcp-proxy. 2015-06-05 13:48:33 -07:00
Adam Ierymenko
e5e11c1b24 Update AUTHORS, change to MarkDown. 2015-06-04 11:58:49 -07:00
Adam Ierymenko
bd7e4ab695 VERSION 1.0.3: public preview release
After many months of intense development, ZeroTier is proud to release version
1.0.3 of ZeroTier One.

This version focuses on under-the-hood and network level improvements to
prepare the way for more user-facing improvements in the months to come, as
well as new products built around the ZeroTier core.

1.0.3 contains a large number of changes, so we're not going to push it out
via our auto-update mechanism yet. We're going to update the download links
on the web site and let users try it out for a while first. If problems are
found, we'll do a 1.0.4 before we push it out to existing installations.

--
Important note for Linux users: we've decided to stop pushing auto-updates for
Linux, and this version's official Linux binaries are built without update
checking enabled. Linux is used mostly on servers, and based on user feedback
we've found that most users don't like anything auto-updating outside of the
normal package management channels. Instead, we'll be working over the next
few months to get ZeroTier One included in a number of upstream Linux
distributions. That way you'll be able to 'apt-get' or 'yum' install it and
stay up to date that way. Auto-updates will remain for Macintosh and Windows
users until/unless we can move to 'app store' deployment on those platforms.
--

Now for the change list. It's a big one!

NEW FEATURES and IMPROVEMENTS

 * Client support is in place for preferred relays on a per-network basis.
   This allows you to define statically assigned nodes that act as relays for
   indirect communication and connection setup for communication between peers
   on a given virtual network. If defined, they'll be used in preference to
   supernodes for this purpose. If they're offline, ZeroTier will fall back to
   global supernodes. This will require support on the web control panel for
   most users to use.

 * This version sends NAT "keepalive" packets every 20 seconds, which is
   similar to the behavior of most SIP phones. This should improve reliability
   behind NATs with short timeouts and certain cheap consumer NAT devices.

 * Improvements have been made to NAT traversal to traverse more symmetric
   NAT configurations, and to rate limit traversal attempts to avoid looking
   like a port scan.

 * New direct paths are now confirmed prior to use. This should improve
   reliability in cases where a NAT traversal attempt "half succeeds" by
   preventing the use of direct links that aren't actually usable.

 * A new geo-located TCP tunneling fallback implementation should improve
   performance for heavily firewalled users who can't use UDP.

 * ZeroTier now uses remotely reported accounts of your external IP address
   to detect changes in your network connectivity instead of relying on
   "fingerprinting" of the OS-level local network environment. This should
   improve reliability in cases where external routers have dynamic IPs or
   when changing between networks with different external IPs but similar
   internal addressing schemes. This should also improve reliability for
   use within virtual machines, since the external link address might change
   but the VM's link addresses will not.

 * We've eliminated the old Unix domain socket (or named pipe on Windows)
   control bus in favor of a local HTTP JSON API. It runs on 127.0.0.1
   port 9993 and can be accessed via standard HTTP. This improves
   interoperability with scripts and other tools and allows us to use
   HTML5 for the desktop UI component. See README.md in the service/
   subfolder of the source tree for JSON API documentation.

 * The old Qt GUI has been dropped in favor of a React-based HTML5 UI. The
   code for this is found in ui/, and if ui/ is present in the ZeroTier
   home folder the JSON API HTTP server will serve it on 127.0.0.1/9993.
   The Windows and Mac UIs are now web control wrappers which access this
   UI locally and automate the process of token lookup and login.

PACKAGING / INSTALLATION IMPROVEMENTS

 * The Macintosh version is now packaged as a .pkg file instead of the old
   .app that would download its components and bootstrap itself. Several
   Mac users had problems with this, so we made it a package instead.

 * The Windows installer now includes a cleaner driver installation module
   that installs the driver as part of the main MSI file instead of spawning
   a subprocess.

BUG FIXES

 * Windows now comes with an updated NDIS6 Ethernet tap device driver.
   If you still have the old NDIS5 driver installed you'll keep using it,
   so if you want to switch to the NDIS6 driver uninstall your old version
   and do a fresh install of the new one. NDIS5 is deprecated, so we are
   hoping an NDIS6 driver will fix a number of difficult to reproduce
   issues that some Windows users have reported. It will also likely
   improve performance.

 * Fixed a "pseudo" memory leak related to the old auto-update code. The
   amount of "committed" (but not used) memory would increase over time.
   Since this was not actual used memory it didn't cause real problems,
   but the issue is gone now.

 * A very rare threading deadlock was fixed.

 * Fix for Linux installer that would falsely recognize systemd on some
   Ubuntu systems.

DEEP UNDER THE HOOD

 * This version has been heavily refactored at the source code level! The
   node/ subfolder now contains the core ZeroTier network virtualization
   engine without any OS-specific or transport-specific code. This is in
   preparation for future plans around embedded devices, etc. There is now
   a public C-level API in include/ZeroTierOne.h that defines an interface
   to the node core.

 * A new network controller implementation is in 1.0.3 based on SQLite and
   the local JSON API control bus. IT HAS NOT BEEN HEAVILY TESTED YET, so we
   do not recommend using it in production until the next version. You are
   welcome to experiment with it.
2015-06-03 19:34:00 -07:00
Adam Ierymenko
ee1a008f2d Product code for 1.0.3 etc. 2015-06-03 18:53:54 -07:00
Adam Ierymenko
4c687fca45 No auto-updates on BSD either. 2015-06-03 18:13:42 -07:00
Adam Ierymenko
753a80d419 Linux auto-update is going away. 2015-06-03 17:53:21 -07:00
Adam Ierymenko
7213a6cf0b Make max HTTP message size (max update size) larger since Windows MSI is about 8MB already. 2015-06-03 17:20:30 -07:00
Adam Ierymenko
9b0c8965bb Make status line in UI show "TUNNELED" if slow TCP tunneling mode is active. 2015-06-03 16:47:07 -07:00
Adam Ierymenko
7e647c5303 NOHUP-ify the child process on OSX auto-update. 2015-06-03 16:37:24 -07:00
Adam Ierymenko
fe87136870 Auto-update fix -- signature is in hex. 2015-06-03 16:25:16 -07:00
Adam Ierymenko
b897ec1efd Put version back to 1.0.3. 2015-06-03 16:19:44 -07:00
Adam Ierymenko
6a11c76248 Temporarily bump version to fake 1.0.99 to test auto-update within network. 2015-06-03 16:09:56 -07:00
Adam Ierymenko
3512402558 OSX .pkg files must be signed with productsign and an installer cert. 2015-06-02 19:17:39 -07:00
Adam Ierymenko
4fe12756d4 Get rid of "autoupdating" in Linux package names. 2015-06-02 17:14:18 -07:00
Adam Ierymenko
bf415bdeb9 docs 2015-06-02 17:05:31 -07:00
Adam Ierymenko
c5a3e80113 Linux installer tweaks, and Mac updater tweak. 2015-06-02 16:54:27 -07:00
Adam Ierymenko
806ea79f37 docs 2015-06-02 16:44:43 -07:00