Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
f68f7cf
document compilation requirements for systemd support on Debian
Apr 2, 2014
5cb67a4
prep for autotools: autoconf defines VERSION so s/VERSION/PROTOCOL_VE…
Apr 24, 2014
1619dd1
prep for autotools: conditionally #include "config.h" in *.c
Apr 24, 2014
469edfa
autotoolize
Apr 24, 2014
96ac283
git ignore, autotools version
Apr 24, 2014
3e7cf55
Added option for multiple nameservers, used in round-robin
frekky Aug 14, 2015
709afb8
Updated docs
frekky Aug 14, 2015
92f3963
Created sliding window buffer implementation and handling code
frekky Aug 21, 2015
0fcd8d3
Updated docs + protocol description (800)
frekky Aug 21, 2015
83f7060
Client side sliding window implementation (requires further testing)
frekky Aug 21, 2015
844abef
A little bit of refactoring - separated iodined.c into separate files
frekky Aug 21, 2015
d8c0819
Server-side sliding window implementation mostly finished. Requires
frekky Aug 21, 2015
96f9270
Removed unhelpful coding errors.
frekky Aug 21, 2015
5df91ed
Added encoder length calculation functions
frekky Aug 23, 2015
391bf52
Added window_buffer_resize function
frekky Aug 23, 2015
8e08c00
Window buffer max_fragsize adjusted according to MAX_HOSTNAME and
frekky Aug 23, 2015
4c8ce94
Minor readability adjustments + more debug output
frekky Aug 23, 2015
e7119da
Added sliding window test
frekky Aug 28, 2015
917a6af
Updated other tests to be compatible with newer code
frekky Aug 28, 2015
ce0c0dc
Second revision of protocol 800
frekky Aug 28, 2015
02c2763
Unsigned types for encoding data
frekky Aug 29, 2015
b616224
Fixed some windowing issues + made debug output optional (WINDOW_DEBUG)
frekky Aug 29, 2015
51a59be
Added more debug output and deprecated qmem
frekky Aug 29, 2015
98da57b
More unsignedness and working DNS tunnelling
frekky Aug 29, 2015
c83a52c
Now starts when no non-loopback interfaces configured
frekky Aug 29, 2015
9f6033c
Added client debug output option
frekky Aug 29, 2015
0449c46
Re-implemented working DNS tunnelling (with windows!)
frekky Aug 29, 2015
b7f0da1
Fixed C99 Compiler warning
Sep 11, 2015
c48822d
Added debug / default build options (make debug)
frekky Sep 28, 2015
33525e5
Added windows gettimeofday function and timeval macros
frekky Sep 28, 2015
bd99668
Added clear, reset and number of fragments to be sent; better debugging
frekky Sep 28, 2015
555a3cb
Modified qmem for lazy mode handling; fixed some user management issues
frekky Sep 28, 2015
c903203
Fixed issues with difftime and removed unused parts of query struct.
frekky Sep 28, 2015
c7cff96
More connection stats, timeout control + compression flags, client-side
frekky Sep 28, 2015
6eb2e4d
Added fine tuning command-line options
frekky Sep 28, 2015
ad48dc8
Updated qmem as lazy mode query buffer, other fixes/adjustments and
frekky Sep 28, 2015
070f491
Updated protocol documentation
frekky Sep 28, 2015
4f16dd1
Merge remote-tracking branch 'h44z/iodine/master'
frekky Sep 28, 2015
e454a7e
Modified options packet to change more than 1 option at a time
frekky Sep 28, 2015
f60660a
Merge remote-tracking branch 'upstream/master'
Sep 30, 2015
1b85d23
Fixed option handshake and query tracking (now works)
frekky Oct 3, 2015
51bf36c
Adjusted new command line options for case consistency
frekky Oct 3, 2015
faf7d27
Server-side query-answer logic now handled by qmem_max_wait
frekky Oct 3, 2015
9ee2399
Added user ping flag, all_users_waiting_to_send now makes sense
frekky Oct 3, 2015
4403e95
Added timeval <-> millisecond util functions
frekky Oct 3, 2015
2be624c
Fixed window_sending + made debug output nicer
frekky Oct 3, 2015
41ec2ae
Added statistics printout and command line option
frekky Oct 4, 2015
7bc4345
Added global debug macro and some refactoring for window.c debug output
frekky Oct 4, 2015
2e0b7f8
Added implied lazymode switch with server timeout of 0
frekky Oct 4, 2015
ceaac64
Refactored client/server to use debug macro
frekky Oct 4, 2015
f4f358f
Ping responses use the same query and are immediate + set window params
frekky Oct 5, 2015
49b3232
Fixed ping userid validation
frekky Oct 5, 2015
e61b38b
Updated user and window tests
frekky Oct 12, 2015
c38e7d3
Merged QMEM and DNS cache; removed implied lazy switch.
frekky Oct 17, 2015
235d3be
Improved timings + fixed immediate mode send interval.
frekky Oct 17, 2015
137d302
Debug macro now always shows source location.
frekky Oct 17, 2015
4983dad
Added client command line options + fixed version text
frekky Oct 17, 2015
8354ce2
Updated fragment timeouts to use timeval for better precision
frekky Oct 17, 2015
1c1f0b7
Updated protocol docs
frekky Oct 17, 2015
9fae60d
Updated window test for modified ACK behaviour
frekky Oct 17, 2015
87edca9
Added downstream window fragment timeout option (-j)
frekky Oct 27, 2015
91c095e
Minor adjustments and fixed some warnings
frekky Oct 27, 2015
50c9cb2
Successfully fails if data buffer is too small
frekky Oct 27, 2015
08adc5d
Added downstream window frag timeout and id=0 will now work.
frekky Oct 27, 2015
c633173
Added window frag timeout to documentation
frekky Oct 27, 2015
3bcfe91
Fixed raw UDP mode + improved debugging
frekky Oct 27, 2015
a7dee73
Making function of check_authenticated_user_and_ip a little more clear
frekky Oct 27, 2015
fbf21ca
Updated debug macros to include more info with DEBUG_BUILD
frekky Nov 10, 2015
141d1f1
Removed unused tun_user::disabled flag
frekky Nov 10, 2015
9dec2de
Updated command line arguments help
frekky Nov 10, 2015
8d25974
Increased bad fragment tolerance to keep data flowing
frekky Nov 10, 2015
f96bd37
Resend fragments ASAP to improve flow
frekky Nov 10, 2015
4a565fd
Improve data flow, better debugging, fixed ping CMC and frag timeout
frekky Nov 10, 2015
2f8125c
Updated documentation
frekky Nov 10, 2015
26b025a
Fix unused variable warning on default build
frekky Nov 11, 2015
4f470e4
Update manpage for more command line args
frekky Nov 11, 2015
35a0f82
Update changelog and readme
frekky Nov 11, 2015
4c8732f
Should now compile with mingw cross (still need zlib + err.h)
frekky Nov 15, 2015
03909ad
Fixed err.h errors
frekky Nov 16, 2015
e353137
Fixed err.h error
frekky Nov 17, 2015
68a53c4
Fixed clang warnings + debug build
frekky Nov 21, 2015
ac60bf6
Fixed unsigned assignment warnings in tests
frekky Nov 21, 2015
1ff1629
Refactor to match client.c usage
frekky Dec 16, 2015
a17b990
Reduced max label size to accomodate fussy DNS servers
frekky Dec 16, 2015
eb6d2fa
Update makefile to produce correct base64u files
frekky Dec 16, 2015
506c1de
Refactor server code to use global server_instance
frekky Jan 9, 2016
147119a
Refactor client code to use client_instance
frekky Jan 9, 2016
4cdb390
Modify debug macro to use appropriate global instance
frekky Jan 9, 2016
4c3e546
Remove unused date constants
frekky Jan 9, 2016
f4d1d16
Server now functions the same as before, using default preset
frekky Jan 9, 2016
7068bcc
Added command line option presets (--preset or -Y)
frekky Jan 9, 2016
8232979
Added more presets - TODO: test to ensure they work as described
frekky Jan 9, 2016
122e42a
Always print window sizes on startup
frekky Jan 9, 2016
ad4aa69
Make user.c independent of server for tests, add util.o to testobjs
frekky Jan 9, 2016
150bd5d
Fix clang reinitialization warning
frekky Jan 9, 2016
34e2285
Updated inline dotify test: TODO adjustible DNS max label length
frekky Jan 10, 2016
07181e6
Fixed format string warnings when compiling for 32 bit systems
frekky Jan 10, 2016
ea062a0
Fixed stats format warnings
frekky Jan 10, 2016
2850b60
Added long option support for iodined
frekky Jan 11, 2016
4b4f73d
Fixed duplicate unrecognised command line option error
frekky Jan 11, 2016
ae55020
Fix sed regex for making base64u.c for compatibility with OS X
frekky Jan 18, 2016
88b11bf
Cleaned up handle_null_request, some protocol changes
frekky Jan 22, 2016
5ceb631
Modified auth checking to count login attempts
frekky Jan 22, 2016
5233c2a
Cleaned up client send_packet functions, protocol changes
frekky Jan 22, 2016
ffcd9da
Added client support for negotiating TCP forward options
frekky Jan 29, 2016
0c33c81
Added partial server support for TCP forward negotiation + login
frekky Jan 29, 2016
b1d7a78
Added command line options for TCP forwarding - untested
frekky Jan 29, 2016
d6b48fe
Updated client-side TCP forwarding command line options
frekky Feb 4, 2016
cfd2411
Add utility functions for TCP sockets
frekky Feb 4, 2016
d46766b
Update server login protocol handling for TCP forwarding
frekky Feb 4, 2016
a5a936f
Implemented TCP forward function (can be used with SSH proxycommand)
frekky Feb 7, 2016
c8105dc
Updated protocol docs for TCP forward support
frekky Feb 7, 2016
6f43791
Fixed bug causing select invalid argument on iodined
frekky Feb 7, 2016
8384da1
Fixed systemd warning and compile error
frekky Feb 13, 2016
5dbe640
mingw don't use arpa/inet.h (#2)
Anime4000 Apr 17, 2016
9ce4b28
Fix build on Arch Linux
Jul 29, 2016
9640f3e
Add window.c to Android.mk
Jul 29, 2016
4c2f9bf
fixed buffer overflow in handle_null_request()
WGH- Aug 2, 2016
93cf0e6
fixed buffer overflow and use of uninitialized memory in handle_dns_l…
WGH- Aug 2, 2016
cf38506
Merge pull request from WGH-
frekky Aug 5, 2016
cd39727
Merge https://github.com/Pneumaticat/iodine
frekky Aug 5, 2016
8c831b0
Merge https://github.com/yarrick/iodine
frekky Sep 24, 2016
dbe9a10
Fix version check and codec check to be backwards compatible
frekky Sep 24, 2016
9e0b6d2
Avoid NULL pointer dereference on macOS
jedisct1 Nov 4, 2016
756dc20
Rename nameserv_addrs_len to nameserv_addrs_count
jedisct1 Nov 4, 2016
dd1d12e
Store the length of name servers addresses
jedisct1 Nov 4, 2016
2e6a587
add support for more query types: A6 AAAA DNAME PTR
Masaq- Nov 7, 2016
192b73c
Fixed client upenctest
frekky Dec 9, 2016
458117c
fixed write warning
frekky Dec 9, 2016
674c351
Merge branch 'Masaq--a6-dname'
frekky Dec 9, 2016
adee2b7
Merge branch 'fix-socket-length' of https://github.com/jedisct1/iodin…
frekky Dec 9, 2016
56e1887
Merge branch 'jedisct1-fix-socket-length'
frekky Dec 9, 2016
17195ee
Merge branch 'nullderef' of https://github.com/jedisct1/iodine
frekky Dec 9, 2016
082acc0
Merge jedisct1 nullderef
frekky Dec 9, 2016
61643cb
Fix inconsistent reference & warnings
frekky Dec 9, 2016
67c7ae1
Fix uninitialised variable
frekky Dec 9, 2016
b4f42ec
Fixed systemd related compile error
frekky Dec 11, 2016
11b6da1
Merge remote-tracking branch 'yarrick/master' into autotools
barak Dec 28, 2016
988d130
README is now README.md
barak Dec 28, 2016
9e5e197
update version number in autotools
barak Dec 28, 2016
d96c2ea
do gcc -std=c99 the autotools way
barak Dec 28, 2016
0f6285d
do gcc -Wall the autotools way
barak Dec 28, 2016
5183561
autotools enables debugging (gcc -g) by default
barak Dec 28, 2016
29b7110
avoid incomplete type issue
barak Dec 28, 2016
504ef5c
document use of autotools
barak Dec 28, 2016
a602f3c
tell travis to use autotools
barak Dec 28, 2016
6529fd8
need appropriate #include for socklen_t on Darwin
barak Dec 28, 2016
af51bd4
tell travis build requires autoconf AX_* macros
barak Dec 28, 2016
8e58aeb
avoid OS=DARWINdigists
barak Dec 28, 2016
4341c27
get IPV6_PKTINFO defined by Darwin headers
barak Dec 28, 2016
d26ddb9
add fine-tuning option -J to set delay variance factor
Masaq- Apr 2, 2017
d10bea1
store the delay variance factor in a double
Masaq- Apr 2, 2017
1cbe946
recalculate timeout in immediate mode also
Masaq- Apr 3, 2017
9425181
window size zero (-W0) drops packets from client tun device
Masaq- Apr 4, 2017
0d93784
option (-J0) to autodetect delay variance factor
Masaq- Jun 9, 2017
f7fd711
Merge remote-tracking branch 'upstream/master'
frekky Jun 22, 2017
ad27563
Merge with autotools branch
frekky Jun 22, 2017
6050bed
Merge branch 'delay-variance-option' of https://github.com/Masaq-/iod…
frekky Jun 22, 2017
2219dc3
Merge branch 'Masaq--delay-variance-option'
frekky Jun 22, 2017
6ea7543
Merge branch 'window-size-zero' from Masaq-
frekky Jun 24, 2017
90e9ab8
Merge branch 'Masaq--window-size-zero'
frekky Jun 24, 2017
65d9d2b
Added --enable-debug option to configure
frekky Jun 26, 2017
e99fb20
Reorganised frag data buffers for dynamic allocation
frekky Jun 26, 2017
d58dd31
Fixed major connection stability issues
frekky Jul 1, 2017
0761223
add window_slide function and adjustments to receiver code
frekky Jul 3, 2017
a2281e6
Removed guaranteed arrival constraint by default
frekky Jul 3, 2017
eee0d14
improve debug output & remove unnecessary window_ticks
frekky Jul 4, 2017
6e70998
fix reassembly, ticking and sliding
frekky Jul 4, 2017
2a425b9
be more conservative with max hostname/data len
frekky Jul 4, 2017
95d20a2
fix window test
frekky Jul 4, 2017
62e3437
fixed build on OS X 10.11
frekky Oct 2, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
/bin/
*.o
.deps/
.dirstamp
/aclocal.m4
/autom4te.cache/
/autotools/
/compile
/config.h
/config.h.in
/config.log
/config.status
/configure
/depcomp
/install-sh
/iodine
/iodined
/missing
/src/base64u.c
/src/base64u.h
/tests/test
/stamp-h1
/test-driver
/test-iodine
/test-iodine.log
/test-iodine.trs
/test-suite.log
Makefile
Makefile.in
5 changes: 2 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ language: objective-c
os: osx

before_install: brew update
install: brew install check

script: make && make test
install: brew install check autoconf-archive

script: autoreconf --install && ./configure && make && make test
5 changes: 5 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ iodine - http://code.kryo.se/iodine
CHANGES:

master:
- Multiple fragments can be in transit at one time to improve
throughput on high-latency connections
Server can now store multiple pending queries per user.
- Added bidirectional compression flags
- Added statistics report every few seconds in iodine (-V)
- Mac OS X: Support native utun VPN devices. Patch by
Peter Sagerson, ported from OpenVPN by Catalin Patulea.
- Fix compilation failure on kFreeBSD and Hurd, by Gregor Herrmann
Expand Down
109 changes: 0 additions & 109 deletions Makefile

This file was deleted.

159 changes: 159 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
## Process this file with automake to produce Makefile.in

################################################################
## shared ##
################################################################

AM_CPPFLAGS = -D$(OS)

if DEBUG
AM_CFLAGS = -pedantic -O0 -g3 -DDEBUG_BUILD
else
AM_CFLAGS = -pedantic -O3 -fno-strict-aliasing
endif

################################################################
## docs ##
################################################################

dist_man_MANS = man/iodine.8
dist_doc_DATA = CHANGELOG README.md README-android.txt README-win32.txt \
TODO doc/proto_00000402.txt doc/proto_00000500.txt \
doc/proto_00000502.txt doc/proto_00000800.txt


################################################################
## misc ##
################################################################

EXTRA_DIST = .travis.yml doc/iodine-server.service \
doc/iodine-server.socket doc/iodine.te src/Android.mk


################################################################
## src/ ##
################################################################

sbin_PROGRAMS = iodine iodined
iodine_CFLAGS = $(AM_CFLAGS)
iodined_CFLAGS = $(AM_CFLAGS)

COMMONSRC0 = src/base32.c src/base64.c src/common.c src/dns.c \
src/encoding.c src/login.c src/md5.c src/read.c src/window.c \
src/util.c

COMMONSRC = $(COMMONSRC0) src/base128.c src/tun.c src/base64u.c \
src/base64u.h src/android_dns.h src/base128.h src/base32.h \
src/base64.h src/common.h src/dns.h src/encoding.h src/login.h \
src/md5.h src/read.h src/tun.h src/version.h src/windows.h \
src/util.h src/window.h

iodine_SOURCES = $(COMMONSRC) src/iodine.c src/client.c \
src/client.h

iodined_SOURCES = $(COMMONSRC) src/iodined.c src/server.c \
src/server.h src/user.c src/fw_query.c src/fw_query.h src/user.h

EXTRA_DIST += src/android_dns.h src/base128.h src/base32.h \
src/base64.h src/client.h src/common.h src/dns.h src/encoding.h \
src/fw_query.h src/login.h src/md5.h src/read.h src/tun.h src/user.h \
src/util.h src/version.h src/windows.h

src/base64u.c: src/base64.c
@echo Making $@
@echo '/* No use in editing, produced by Makefile! */' > $@
sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/\([Bb]64\)/\1u/g ; s/0123456789+/0123456789_/' < $< >> $@

src/base64u.h: src/base64.h
@echo Making $@
@echo '/* No use in editing, produced by Makefile! */' > $@
sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/\([Bb]64\)/\1u/g ; s/0123456789+/0123456789_/' < $< >> $@

BUILT_SOURCES = src/base64u.c src/base64u.h

MOSTLYCLEANFILES = src/base64u.c src/base64u.h

clean-local:
@echo Clean Android Stuff
-rm -rf src/obj src/libs


################################################################
## tests/ ##
################################################################

if HAVE_CHECK
TESTS = test-iodine
noinst_PROGRAMS = test-iodine

test_iodine_SOURCES = tests/test.c tests/base32.c tests/base64.c \
tests/common.c tests/read.c tests/dns.c tests/encoding.c \
tests/login.c tests/user.c tests/fw_query.c tests/window.c $(COMMONSRC0) \
src/user.c src/fw_query.c

EXTRA_DIST += tests/test.h

test_iodine_LDADD = $(CHECK_LIBS)
test_iodine_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS)
test_iodine_CPPFLAGS = $(AM_CPPFLAGS) -I src
endif


################################################################
## Ancient History ##
################################################################

# retain compatibility with former target "test"

.PHONY: test
test: check

# Compile for Android.

# It is likely possible to tweak autotools into supporting this
# configuration, once that is tested the below should be removed.

.PHONY: cross-android
cross-android: src/base64u.c src/base64u.h
(cd src; ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk)

.PHONY: cross-android-dist
cross-android-dist:
rm -rf iodine-latest-android*
mkdir -p iodine-latest-android/armeabi iodine-latest-android/x86
$(MAKE) cross-android TARGET_ARCH_ABI=armeabi
cp src/libs/armeabi/* iodine-latest-android/armeabi
$(MAKE) cross-android TARGET_ARCH_ABI=x86
cp src/libs/x86/* iodine-latest-android/x86
cp README.md README-android.txt CH* TO* iodine-latest-android/
echo "Create date: " > iodine-latest-android/VERSION
date >> iodine-latest-android/VERSION
echo "Git version: " >> iodine-latest-android/VERSION
echo $(GITREVISION) >> iodine-latest-android/VERSION
zip -r iodine-latest-android.zip iodine-latest-android

# Compile for MS Windows.

# This platform is supported by autotools, so the below should be removed once
# autotools is tested in that configuration.

.PHONY: cross-mingw
cross-mingw:
echo "WARNING:"
echo "This make target is unlikely to work properly."
echo "Cross compilation is supported by autotools."
echo " ./configure --build=turingmachine-unknown-linux-gnu --host=mingw32"
$(MAKE) OS=WINDOWS32 CC=i686-mingw32-gcc all

.PHONY: cross-mingw-dist
cross-mingw-dist: cross-mingw
rm -rf iodine-latest-win32*
mkdir -p iodine-latest-win32/bin
for i in `ls bin`; do cp bin/$$i iodine-latest-win32/bin/$$i.exe; done
cp /usr/i686-mingw32/usr/bin/zlib1.dll iodine-latest-win32/bin/
cp README.md README-win32.txt CH* TO* iodine-latest-win32/
echo "Create date: " > iodine-latest-win32/VERSION
date >> iodine-latest-win32/VERSION
echo "Git version: " >> iodine-latest-win32/VERSION
echo $(GITREVISION) >> iodine-latest-win32/VERSION
zip -r iodine-latest-win32.zip iodine-latest-win32
Loading