Commit Graph

198 Commits

Author SHA1 Message Date
Adam Rocska f7ddfc1cbb Found a bug, fixed it.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-12 14:18:09 +02:00
Adam Rocska af4d01c185 Metadataa decode extracted.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-12 13:53:46 +02:00
Adam Rocska 2e325801e0 Metadataa deciphering implemented & exposed the markerbytes in the marker lookup.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-12 13:36:07 +02:00
Adam Rocska 03d2d31251 Another concept.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 23:48:36 +02:00
Adam Rocska 81319a7f54 Code concept still in progress
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 23:38:43 +02:00
Adam Rocska bdc331e188 Removed dead code.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 21:32:11 +02:00
Adam Rocska 93dbdf79f1 getting markerLookup into the metadata reader
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 21:30:45 +02:00
Adam Rocska 0a8222aeb0 Moved the marker lookup algorithm in a more professional packaging.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 21:27:52 +02:00
Adam Rocska 3b80256856 MetadataStruct moved to its own module.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 13:41:38 +02:00
Adam Rocska 5db534cb55 MetadataStruct moved to its own module.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 13:32:49 +02:00
Adam Rocska bcd1c7e023 Perparation work for the metadata module.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 13:20:08 +02:00
Adam Rocska 07a8298fc4 Reorganizing the code a bit.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-11 13:09:00 +02:00
Adam Rocska ede019e149 Refactor & Node for index.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-10 20:06:45 +02:00
Adam Rocska caa6ce4d06 Committing the maxminditerator changes, though I might try a totally different approach.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-08 13:23:51 +02:00
Adam Rocska 773f0d26cd Removed the publicity of the pointer value of the iterator. Legacy of an older concept.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-08 12:18:55 +02:00
Adam Rocska 75de094c7f Committing the whole current state I have. I must apply few changes, and transition to Stream based processing (somehow).
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-08 12:15:36 +02:00
Adam Rocska dfa9844ccd Made the IpAddress custom string convertible.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 20:41:21 +02:00
Adam Rocska c549114806 IPV4-mapped IPV6 address support added.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 19:50:19 +02:00
Adam Rocska 8b1f95ed7c IPV4 can now be equality compared with IPV6
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 19:33:02 +02:00
Adam Rocska 7a921f62b6 IPV6 can now be constructed from IPV4
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 19:22:56 +02:00
Adam Rocska deecce754f Added initializer from Data.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 18:38:22 +02:00
Adam Rocska 4ffc0ae3a0 Added initializer from string.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 18:31:14 +02:00
Adam Rocska a51a554958 Fixed the broken tests.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 18:18:49 +02:00
Adam Rocska b5dd2f8693 IpAddress enum now also supports IPv6.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 17:47:52 +02:00
Adam Rocska 6d5156758b Found a convenient way of handling ip addresses in the "non-php way", yet supporting comfort. It'll be great.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-07 15:44:18 +02:00
Adam Rocska b01b12a00d Work in progress. Trying to find a decent way of interpreting "binary search tree" of MMDB, when they allow "28 bits" sized records. Do the math.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 16:39:30 +02:00
Adam Rocska f6ba8dc10f Metadata can now be constructed of iterators as well, because why not. I see an organic design pattern emerge here.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 15:36:10 +02:00
Adam Rocska 8c68f0b72d We can decode the metadata nicely.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 14:45:02 +02:00
Adam Rocska a635323351 Removed todo test
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 11:20:32 +02:00
Adam Rocska dd81fb54ed Fixed typo in test.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 11:20:16 +02:00
Adam Rocska 5600f50365 Extended the ControlByte struct to expose the encapsulated binary definition.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 11:18:36 +02:00
Adam Rocska d13efc0387 Array decoder provided.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-06 09:46:20 +02:00
Adam Rocska 8c82b2d9fe Made the MaxMindIterator's pointer a public read, private write field.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 19:04:28 +02:00
Adam Rocska a3cfe00c0c Forgot to commit the String decoder. It's not the most elegant approach, as it completely and consciously ignores little endian utf-8 strings, but I won't bother, as MaxMindDB is big endian so far. When there's time, it needs a proper implementation.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 19:03:52 +02:00
Adam Rocska 31cd94ba37 Forgot to commit this Numeric change. The naming most probably will still vary, but I again hve too many outstanding changes.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 19:02:44 +02:00
Adam Rocska 4a247352ca MaxMind Any decoder. Partial implementation, lots of todos, but boy it's a good way to go from this dark cave.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 19:01:34 +02:00
Adam Rocska dbafc06173 Removed dead code.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 13:35:15 +02:00
Adam Rocska d71a736207 Decoder approach is kept.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 13:33:20 +02:00
Adam Rocska a3eaa2b8c9 MaxMind Iterator is done.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 13:33:03 +02:00
Adam Rocska f97ca19be5 Iterator in progress. The concept is good enough, just has to be polished.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-05 00:31:52 +02:00
Adam Rocska 017626c3a7 Added nextValue skeleton.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 21:08:27 +02:00
Adam Rocska 3f4914190d A strategy emerged on how to process MaxMindDB data. May not be the best, but it could work.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 21:05:55 +02:00
Adam Rocska 6449c653b2 It works. The motto should still remain "RTFM". Signed integers arrive as two's complement instead of signed magnitude (duh).
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 15:24:44 +02:00
Adam Rocska a9dd03de70 Simplified the inlined type cast state. Now it's time to try the integer sign part.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:52:44 +02:00
Adam Rocska bee57f211a Last try before dumping & preconditioning: Moved the typed value contruction into the padding & truncating functions. Here the integer signed cases could be handled properly.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:44:41 +02:00
Adam Rocska 438c0eca44 Doing a commit, to save the state. But will remove truncation logic at all, and just simply set a precondition. MaxMind's DB format could possible have an "overflow case" happen, but it just won't be supported.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-04 10:35:42 +02:00
Adam Rocska 9d34199730 I'll figure out int32 later.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 18:23:09 +02:00
Adam Rocska 9adc855359 Work in progress with the decoder. I want to avoid creating a copy in memory just because maxmind's binary data format sucks jack's shit...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 17:41:57 +02:00
Adam Rocska 4ab4518902 Found some dead code.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 15:11:02 +02:00
Adam Rocska 1c8ead14ce Can decode UInt16
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-03 14:15:15 +02:00