Commit Graph

111 Commits

Author SHA1 Message Date
Adam Rocska c645dd40c4 Created the intentional duplicate of interpretArray. Intenional duplicate, because I know nothing about this php and perl scripter mountebank fantasy data type.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-27 09:44:54 +02:00
Adam Rocska 3bd97a83f1 Array interpretation in place, the logic seems to work. Gotta duplicate the data cache container, because there's no word in the spec, nor guarantee that its array-like structure related assumptions are correct.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-27 08:58:55 +02:00
Adam Rocska 5bcd7ba700 This awful design seems to be able to tackle php scripter stupidity. The code sucks, but at least is testable and works so far. Now I just gotta reconstruct sequence types, and I finally can forget about this horror, and stop taking sedatives.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-26 16:43:56 +02:00
Adam Rocska 8bbcfb3d3b Data padding added. Necessary code to handle php retardnesss of having 32bit integers defined in 0, 1, 2, 3 bytes...
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-20 17:44:19 +02:00
Adam Rocska 13fdc79bf9 Attempting a different way of typeconversion in hope, that we can handle the php scripter style stupidifaction of 11bit integers, and God knows what other retarded concepts can arise.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-19 14:51:32 +02:00
Adam Rocska ac0abc8607 WIP. Total mess.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-18 13:48:36 +02:00
Adam Rocska f6ab2f4cac Attempting another different approach.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-18 00:26:10 +02:00
Adam Rocska 966928cfd2 Falling back to the original crap code that emerged from crap php scripters' logic. Too many edge cases and stupidities to bother with. Dumb design can't be made straight.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-17 19:49:15 +02:00
Adam Rocska ddd782925d DataType foundations re-implemented. Can guess from this convoluted unclear non-unequivocal php scripter's fantasy the type of the data.
I must say, that it's outrageously stupid, that with this control byte data type definition the scripters "designed" implicitly allows for two different ways of defining map types. One is [0b111X_XXXX] and the other is [0b000X_XXXX, 0b0000_0000], where both resolve to fantasy 7 with that fucking retarded logic, though are not equal.

Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 18:24:06 +02:00
Adam Rocska 2969e82f3f isExtendedType implemented for DataType enum value
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 16:44:12 +02:00
Adam Rocska f02cb01293 Gotta redesign the whole decoder layer. Managed to sketch a way to tackle with these php scripter fantasies in the MaxMind DB spec on the whiteboard.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-16 15:09:22 +02:00
Adam Rocska 057f29110a MaxMindPointer needs to also be castable to int. This whole typecasting crap should be fixed at some point, if I figure out how to de-phpify the spec.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 15:26:55 +02:00
Adam Rocska 2ec6980964 MaxMind Iterator now supports peek, an operation to seek control bytes, and binary data without modifying the pointer's state. Useful for MaaxMind's pointer lookup.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 13:19:26 +02:00
Adam Rocska 97407b3520 I figured out, that there's no case when Data would be nil.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 12:29:02 +02:00
Adam Rocska e98405eaf7 Provided a test for the control byte skipping case.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 11:46:57 +02:00
Adam Rocska 09c5d36736 Dummy code in place.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:38:36 +02:00
Adam Rocska 3d372ee48b Lookup edge cases.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 10:32:12 +02:00
Adam Rocska 24b51db462 Preparing the iterator for automatic pointer resolution.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-15 09:34:56 +02:00
Adam Rocska 52adc7d958 Any decoder extended to decode MaxMindPointer values.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 20:47:12 +02:00
Adam Rocska a67bb082c5 MaxMind Pointer Decoder somewhat implemented. But this whole spiel with control bytes & things is insane. Code is as inconsistent as the spec.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 20:19:28 +02:00
Adam Rocska 4d0d5c9eb5 Narrowed down the maxamind pointer to unsigned 32 bit integers.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 19:57:58 +02:00
Adam Rocska 991dd27296 Misimplementation fixed.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 17:24:14 +02:00
Adam Rocska bd5079e1c3 Decoder's ControlByte now also supports MaxMind's yet another edge case.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 17:17:29 +02:00
Adam Rocska 0ba9fa285c Foundations for the DataSection module.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 15:35:23 +02:00
Adam Rocska 59b5816f99 Had to implement some basic MaxMindPointer type. Surprisingly swift has no newtype typealias mechanism, and we only need to differentiate "plain naked" UInt from UInt intended to be used as MaxMind's php folks' pointer value.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 14:26:23 +02:00
Adam Rocska b1ac89d57c Added a few fields to the metadata struct to make db file processing a bit more efficient in other layers.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-14 12:13:22 +02:00
Adam Rocska 196a53dd2e Removed legacy data initialization from stream.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 19:03:25 +02:00
Adam Rocska bf686792be Fixed the bad description rep of v6 ip addresses.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 18:57:02 +02:00
Adam Rocska 79c9fe5fc6 Added assertion to an edge case I forgot about.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:58:29 +02:00
Adam Rocska fa661011ab Fixed the broken precondition.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:52:27 +02:00
Adam Rocska 3a7f8eb363 Forgot to do an equatable node equals node struct assertion.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:41:00 +02:00
Adam Rocska 30dc788d3f Did proper assertions. This time I did pay attention.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:36:46 +02:00
Adam Rocska 68507104bd Revert "Added forgotten assertions :)"
This reverts commit 9c5c97bf

I was a complete moron with the asserts.

Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:19:12 +02:00
Adam Rocska 9c5c97bf8a Added forgotten assertions :)
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:17:21 +02:00
Adam Rocska 85448a6404 Provided some test for the Metadata reader.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:13:12 +02:00
Adam Rocska 59d72720e7 Making code a little bit leaner & added ipv6 tests.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 17:09:11 +02:00
Adam Rocska 64ff06cc22 In memory lookup implemented.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 16:38:07 +02:00
Adam Rocska c2e128e521 Found a wrong precondition in the IPAddress.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 16:24:13 +02:00
Adam Rocska c521f4b89b All in all, the lookup is successful.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 16:20:18 +02:00
Adam Rocska 44f9b103c4 Changed the dataa chunking preconditions a bit, and fixed a programmer error.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 13:55:17 +02:00
Adam Rocska 27f3086b7c Needed this data extension to have a cleaner data chunking process.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 13:41:46 +02:00
Adam Rocska 8f46a8c429 Committing sketch code. Something's coming together shortly.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-13 12:17:06 +02:00
Adam Rocska ee69802b9d Lookup direction implemented.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-12 17:48:39 +02:00
Adam Rocska 9be0210f25 Did not assert calculated values.
Signed-off-by: Adam Rocska <adam.rocska@adams.solutions>
2020-05-12 14:22:07 +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 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 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