Andrew Bettison
49ee4d13f0
Re-write manifest parsing, improve rhizome_fetch.c logging
...
Rhizome manifest parser now parses and validates all known fields, informs
about unsupported fields, and unpacks fields into relevant struct manifest
elements where appropriate. Is also stricter about whitespace.
Rhizome fetch code now logs debug messages if DEBUG_RHIZOME_RX bit is on.
2012-07-12 16:39:01 +09:30
Andrew Bettison
d111f763c7
Fix bugs revealed by 'rhizomeprotocol' test
...
Was not transmitting actual HTTP server port in rhizome announcements, was
always transmitting port 4110.
When trying for a free HTTP server port, sometimes bind() succeeds but listen()
fails with EADDRINUSE, so new logic to deal with that.
2012-07-12 12:10:59 +09:30
Andrew Bettison
ff2c98afb3
Add "rhizome.fetch_interval_ms" config option
2012-07-11 16:51:30 +09:30
Andrew Bettison
8020ea3b74
Merge branch 'eventscheduler' into master
...
Conflicts:
commandline.c
monitor.c
overlay.c
overlay_interface.c
overlay_packetformats.c
rhizome_fetch.c
rhizome_http.c
rhizome_packetformats.c
serval.h
server.c
testdefs.sh
testframework.sh
tests/dnaprotocol
tests/server
2012-07-03 10:26:22 +09:30
Andrew Bettison
08a8ec13e8
Start rhizome HTTP server on first available port
2012-07-02 16:24:07 +09:30
Jeremy Lakeman
89566e4d3d
Refactor how functions are scheduled or file handes are watched
2012-07-02 13:19:54 +09:30
Jeremy Lakeman
29cba17891
Fix rhizome transfers
2012-06-27 16:54:42 +09:30
gardners
b40a468276
Merge branch 'eventscheduler'
...
Conflicts:
monitor.c
serval.h
2012-06-25 16:50:23 +09:30
Andrew Bettison
208b9c15fd
Factor out rhizome_hex_to_bytes() and chartonybl()
2012-06-25 14:51:21 +09:30
gardners
5dc6d122a5
significant progress towards clean callback scheduler for poll()
...
events and timed callbacks.
2012-06-22 16:05:49 +09:30
Andrew Bettison
56cb12f507
Refactor rhizome db creation and execution functions
2012-06-12 18:12:36 +09:30
Andrew Bettison
637ef02f30
Add _selfsigned column to "rhizome list" output
...
Add <pin,pin...> arg1 to "rhizome list" command, so it can open the keyring
Some tests in tests/rhizome fail
2012-06-08 18:25:43 +09:30
Andrew Bettison
7a71a521f8
Pass author SID parameters in binary, not hex
2012-06-08 15:27:15 +09:30
Andrew Bettison
86c7819f97
Remove spurious ERROR messsages
...
Tests assert that stderr contains no ERROR: lines after a successful exit
Rewrote sqlite_exec_int64() to separate error outcomes from legitimate
result values
Changed several WHY() calls to DEBUG()
Improved test framework
2012-06-08 13:13:26 +09:30
Andrew Bettison
a9ad1b6afc
Add <bsk> optional arg to "rhizome add file"
...
Improve regular expressions for common data types in test scripts
Revert column count field delimiter in "rhizome list" from ":" to "\n"
Add a few more test cases
2012-06-05 13:58:59 +09:30
Andrew Bettison
304db6e5f4
Fix SEGV bug in "rhizome extract file" command
...
Add optional <key> argument, validate and parse it properly.
2012-06-01 18:12:59 +09:30
gardners
2aaea99bfa
added function for computing bundle shared secret, e.g., for
...
MeshMS encryption. Currently just returns NULL (no encryption),
and not yet hooked in.
2012-05-28 13:51:24 +02:00
Jeremy Lakeman
36389d2b78
Insert manifest within a transaction
2012-05-28 14:08:01 +09:30
gardners
30e53f963c
fixed various manifest synchronisation bugs, including probably
...
the main one that was stopping meshms (large manifests would
practically never get advertised under certain (common) conditions).
2012-05-27 08:31:48 +02:00
gardners
94d17a9260
more work on encrypting bundles. code passes all 23 rhizome tests.
2012-05-26 11:36:19 +02:00
gardners
58cc45043b
added code to encrypt files when storing into the database.
2012-05-26 11:36:19 +02:00
gardners
2de6bb025a
rhizome_extract_file can now decrypt a file, and also uses
...
progressive blob operations so that we can extract files of
unlimited size.
2012-05-26 11:36:19 +02:00
gardners
04cc05d6e1
refactored manifest verification into a separate function
...
that is called only when needed, and marks a manifest as finalised
if the verifcation fails. reading a manifest now never sets
finalised flag, as either _finalise() or _verify() must be called.
2012-05-26 11:36:18 +02:00
gardners
e213a9eae8
renamed sanity_check to check_sanity for consistency.
...
Put missing check for illegal service type into check_sanity.
2012-05-26 11:36:18 +02:00
gardners
8161709c4e
work on fixing handling of duplicate rhizome bundle debouncing.
...
(seems to work from command line, but not from the test framework).
2012-05-26 11:36:18 +02:00
gardners
b0dca7e03f
merged in latest changes from team.
2012-05-26 11:36:18 +02:00
Andrew Bettison
d215d90b40
Refactored some rhizome db SQL code
...
Added sqlite_exec_void() function, so that sqlite_exec_int64() can return
an error if no rows are found instead of 0, which can be misleading.
2012-05-25 19:42:45 +09:30
Andrew Bettison
bea9188cd5
Fix another manifest leak
...
Add manifest alloc/free debug logging to help, 'debug.manifests' option
2012-05-25 17:01:56 +09:30
Andrew Bettison
49aec4d331
Improve rhizome manifest debugging
...
Move rhizome_new_manifest() out of rhizome_read_manifest_file() so that the
out-of-manifest report shows the names of the functions where the manifests
were really allocated.
2012-05-25 15:38:13 +09:30
Andrew Bettison
c0ac693957
Remove old payload when updating a manifest with a new payload
2012-05-25 14:29:55 +09:30
Andrew Bettison
fa26b53294
Fix SEGV bug
...
rhizome_write_manifest_file() was not checking for NULL fopen() result
Standardise rhizome "import" directory pathname handling
2012-05-24 11:28:32 +09:30
Andrew Bettison
1af9125392
All rhizome database keys are uppercase hex
...
FILES.id, MANIFESTS.id, FILEMANIFESTS.fileid, FILEMANIFESTS.manifestid
Named constants for hex and binary ID sizes
2012-05-23 16:04:00 +09:30
gardners
e3387fbecf
periodic sucking in from rhizome prioritised list now works.
2012-05-22 15:57:18 +09:30
gardners
f528110257
almost have priority pre-listing of bundles for rhizome working.
2012-05-22 15:57:18 +09:30
gardners
0abc7ff96e
added code to create and maintain priority download list for
...
rhizome, so that we get things in a sensible order.
2012-05-22 15:57:18 +09:30
gardners
8e9396419c
adding ignored manifest list to let us ignore repeated offerings
...
of broken manifests without wasting effort.
2012-05-22 14:15:35 +09:30
gardners
29bb86d9e7
first cut at supressing rhizome activity during calls.
2012-05-22 13:05:29 +09:30
Andrew Bettison
e6575cb369
Introduce macro constants for Rhizome service names
...
Use "MeshMS1" instead of "MeshMS"... version 2 won't be far away
2012-05-20 16:07:22 +09:30
Andrew Bettison
33f7ea7103
Add three optional args to "rhizome list" command
...
service, sender_sid, recipient_sid - not yet implemented
2012-05-16 13:47:58 +09:30
gardners
0eafc34970
BK encoding and decoding complete, but untested.
2012-05-15 20:04:41 +09:30
gardners
525d3c4154
substantial work towards implementing BK field in rhizome manifests.
2012-05-15 17:24:25 +09:30
Andrew Bettison
f90b21ec78
Implement rhizome config options
...
rhizome.datastore_path - if not set, reverts to serval instance path
rhizome.enable - if not set, defaults to true
2012-05-15 12:56:10 +09:30
Andrew Bettison
b02e9b9ac4
Overhaul rhizome datastore path code
...
Create datastore directory and all parent dirs if it does not exist
More robust error checking and buffer overflow protection
New mkdirs() and mkdirsn() functions
2012-05-14 18:37:32 +09:30
gardners
0b5a9665b2
first cut code for sending monitor socket announcements when
...
rhizome bundles are received.
2012-05-12 07:24:52 +09:30
Andrew Bettison
7ba15ccdd7
Add "rhizome extract file" command with tests
2012-05-02 17:57:35 +09:30
Andrew Bettison
146eb7cdfd
Add "rhizome extract manifest" command
2012-05-02 16:03:09 +09:30
Andrew Bettison
a73916e85a
Implement JNI command-line interface (untested)
...
- argv is (const char *const *) everywhere, to avoid having to strdup() all the
Java arg strings
- changed (char*) to (const char*) in lots of places to fix cascading compiler
warnings as a result of argv constness
- fixed a bug in "config get" command when used without 'variable' arg
2012-04-23 17:18:15 +09:30
Andrew Bettison
de88d3db21
Make "dna rhizome add" work for more test cases
...
- adding a bundle using an existing manifest with an incorrect payload should
fail with an error
- adding a bundle using an existing manifest to update the payload to a new
version should succeed
- improve format of "dna rhizome list" output to one bundle per line
2012-04-13 18:03:19 +09:30
Andrew Bettison
7b53fd6782
Rhizome add does not add duplicate files
...
- If a bundle has the same payload hash and manifest.name as one already in
the rhizome store, then the "dna rhizome add" command will not add it
- Now passes fourth test case in tests/dna_rhizome
2012-04-12 18:33:43 +09:30
Andrew Bettison
f52db7f406
Fix bugs revealed by rhizome "add manifest" test case
2012-04-10 18:13:05 +09:30
Andrew Bettison
74986a0c30
Implement "rhizome add file" and "rhizome list"
2012-04-02 17:42:40 +09:30
Daniel O'Connor
a8411edf3f
- Use system wide sqlite3 lib via pkg-config
...
- Remove nacl-gcc-prep, it's now in nacl
- Sort sources and have 1 per line.
- Add missing source files.
- Use naclinc.txt and nacllib.txt generated by nacl/nacl-gcc-prep
- Update ignore file now nacl files don't pollute this directory.
2012-02-27 12:41:48 +10:30
gardners
8a24fb95b1
Converted manifest storage to using static set of manifest structures
...
and added manifest leak detection and some other memory corruption
protections.
2012-01-28 11:45:45 +10:30
gardners
45e8d68522
Added a manifest:version cache to avoid database lookups when being
...
offered manifests, thus saving cpu/energy.
2012-01-27 17:11:18 +10:30
gardners
c0676fd530
Fixed various bugs and memory leaks in rhizome file fetching.
...
Now successfully fetches manifests for files we already have in
the database, using the existing database copy of the file.
Also added filter to stop same file being fetched more than once at
same time..
2012-01-27 16:21:48 +10:30
gardners
cdf1c45da4
Rhizome fetching over http now receives files and imports them.
...
Still some wrinkles to work out.
2012-01-13 21:13:17 +10:30
gardners
f862ba0af6
Rhizome file transfer via http getting close
...
(send side needs to send file body)
2012-01-13 17:21:06 +10:30
gardners
bf9f8559f1
Various debug fiddles and conversion from select() to poll()
...
(although poll() still doesn't let us monitor ordinary files
which is silly.)
2012-01-12 16:47:24 +10:30
gardners
42b5c08321
Refactored rhizome.c into several smaller files.
...
Manifests are now gleaned from advertisements, and the ones that
are interesting are scheduled for importing into database.
(actual importing is not yet done -- requires fetching of file).
2012-01-12 14:05:05 +10:30
gardners
4e6ef2e69e
Various fixes to Rhizome web server and BAR generation.
...
Can now present a set of BARs via HTTP.
2012-01-03 16:35:02 +10:30
gardners
6231e8784c
Added ability to de-hex result rows when streaming results of sql
...
query.
2012-01-03 14:54:32 +10:30
gardners
c380ab0450
More work on rhizome web server.
...
Can now serve lists of manifest/file IDs.
2012-01-03 14:45:50 +10:30
gardners
9c8ea5908c
Various fixes towards working internal web server.
2012-01-03 08:57:52 +10:30
gardners
d29efac21f
More work on getting Rhizome web server working.
...
Can now produce parsable http responses as well as parse requests.
Now to actually implement some of the requests ...
2011-12-29 10:11:03 +10:30
gardners
ccf26e1fe0
Rhizome web server can now serve a 400 error message, which means
...
that lots of the underlying stuff is now in place.
2011-12-23 04:25:18 +10:30
gardners
16fb3a3f61
Added missing GPL license statements.
2011-12-21 20:25:05 +10:30
gardners
cbd0cf6117
Began work on rhizome integrated web server.
2011-12-21 16:28:08 +10:30
gardners
b7b795d4fc
manifest reading now reads and can verify signatures.
...
Still incomplete. Doesn't yet count verify errors etc.
2011-12-21 07:46:12 +10:30
gardners
a159edf152
updating manifests now correctly removes old files and old
...
versions of the manifest.
group subscriptions not yet implemented, and reading of signatures
not yet implemented. Controls on group membership and pushing files
to groups not yet implemented. Group ciphers not yet implemented.
2011-12-20 22:09:49 +10:30
gardners
745cade469
Further work on getting signatures and signed manifests working.
...
Some work on updating existing manifests, although some cascading
consequences need addressing (in particular checking if the file
associated with the old version of the manifest still needs to hang
about, and if so, whether its highest priority has changed).
2011-12-20 17:27:24 +10:30
gardners
cc09a0f994
Some database schema tweaks and additional checks on manifests when
...
importing (we now need to have either the key for the manifest, or to
be creating the manifest).
2011-12-20 15:48:26 +10:30
gardners
a50c56ac92
Importing of a bundle into the database now seems to work.
...
(group membership not currently handled, signing not currently
handled).
2011-12-20 13:24:09 +10:30
gardners
312eaa397b
Significant progress on Rhizome.
...
Manifest reading and writing to disk (not database) seems okay now.
Working on database side of things next.
2011-12-20 11:25:52 +10:30
gardners
17f0b5da10
Moved BYTE_ORDER definition to Android.mk
2011-12-19 09:01:03 +10:30
gardners
d5004e15d2
Fix various Android NDK build issues
...
(specify endianness, copy libsqlite.so from an Android phone
for link templating)
2011-12-19 08:56:25 +10:30
gardners
16d22d41a3
Fixed crypto structure size specifications to specify the exact
...
crypto implementation (wise anyway, but required for our Android
cross-compile of NaCl).
2011-12-19 08:22:34 +10:30
gardners
c110e46a08
fixes to previous commit.
2011-12-19 08:10:02 +10:30
gardners
000dd2db55
Moved rhizome prototypes into separate header file.
...
(needed for android building where undefined functions are
an error, not a warning).
2011-12-19 08:04:31 +10:30