{"id":18336289,"url":"https://github.com/byconity/ipdb-c","last_synced_at":"2025-06-14T17:37:33.440Z","repository":{"id":79868052,"uuid":"581135685","full_name":"ByConity/ipdb-c","owner":"ByConity","description":"submodule for ByConity project","archived":false,"fork":false,"pushed_at":"2023-01-06T10:34:53.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T19:55:03.197Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ByConity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-22T11:16:19.000Z","updated_at":"2024-01-01T03:58:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"44ffb856-06ba-4f78-a2d5-2e0ed79c95f8","html_url":"https://github.com/ByConity/ipdb-c","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByConity%2Fipdb-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByConity%2Fipdb-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByConity%2Fipdb-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByConity%2Fipdb-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ByConity","download_url":"https://codeload.github.com/ByConity/ipdb-c/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103911,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T20:07:12.140Z","updated_at":"2025-04-09T19:55:11.432Z","avatar_url":"https://github.com/ByConity.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ipdb-c\nIPIP.net officially supported IP database ipdb format parsing library\n\n## Dependence\n```sh\ndnf install json-c-devel\n```\n\n## Build \u0026 Run \u0026 Output\n```sh\ngcc -std=gnu99 main.c ipdb.c -ljson-c -o main\n\n./main\n\nnew ipdb reader err: 0\nipdb build time: 1535451865\nipdb ipv4 support: 0\nipdb ipv6 support: 1\nipdb language: CN EN \nipdb fields: country_name region_name city_name owner_domain isp_domain latitude longitude timezone utc_offset china_admin_code idd_code country_code continent_code idc base_station country_code3 european_union currency_code currency_name anycast \nCN find err: 0\n中国\t北京\t北京\t清华大学网络科学与网络空间研究院\t教育网\t39.904989\t116.405285\tAsia/Shanghai\tUTC+8\t110000\t86\tCN\tAP\t\t\tCHN\t0\tCNY\tYuan Renminbi\t\n1: country_name: 中国\t\n2: region_name: 北京\t\n3: city_name: 北京\t\n4: owner_domain: 清华大学网络科学与网络空间研究院\t\n5: isp_domain: 教育网\t\n6: latitude: 39.904989\t\n7: longitude: 116.405285\t\n8: timezone: Asia/Shanghai\t\n9: utc_offset: UTC+8\t\n10: china_admin_code: 110000\t\n11: idd_code: 86\t\n12: country_code: CN\t\n13: continent_code: AP\t\n14: idc: \t\n15: base_station: \t\n16: country_code3: CHN\t\n17: european_union: 0\t\n18: currency_code: CNY\t\n19: currency_name: Yuan Renminbi\t\n20: anycast: \nEN find err: 0\nChina\tBeijing\tBeijing\t\tCHINAEDU\t39.904989\t116.405285\tAsia/Shanghai\tUTC+8\t110000\t86\tCN\tAP\t\t\tCHN\t0\tCNY\tYuan Renminbi\t\n1: country_name: China\t\n2: region_name: Beijing\t\n3: city_name: Beijing\t\n4: owner_domain: \t\n5: isp_domain: CHINAEDU\t\n6: latitude: 39.904989\t\n7: longitude: 116.405285\t\n8: timezone: Asia/Shanghai\t\n9: utc_offset: UTC+8\t\n10: china_admin_code: 110000\t\n11: idd_code: 86\t\n12: country_code: CN\t\n13: continent_code: AP\t\n14: idc: \t\n15: base_station: \t\n16: country_code3: CHN\t\n17: european_union: 0\t\n18: currency_code: CNY\t\n19: currency_name: Yuan Renminbi\t\n20: anycast: \ntime used: 2027772us.\n```\n\n## Example\n```c\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cmemory.h\u003e\n#include \u003csys/time.h\u003e\n#include \"ipdb.h\"\n\nint main() {\n    ipdb_reader *reader;\n    int err = ipdb_reader_new(\"/root/cpp/ipdb-c/mydata6vipday4.ipdb\", \u0026reader);\n    printf(\"new ipdb reader err: %d\\n\", err);\n    if (!err) {\n        printf(\"ipdb build time: %li\\n\", reader-\u003emeta-\u003ebuild_time);\n        printf(\"ipdb ipv4 support: %i\\n\", ipdb_reader_is_ipv4_support(reader));\n        printf(\"ipdb ipv6 support: %i\\n\", ipdb_reader_is_ipv6_support(reader));\n        printf(\"ipdb language: \");\n        for (int i = 0; i \u003c reader-\u003emeta-\u003elanguage_length; ++i) {\n            printf(\"%s \", reader-\u003emeta-\u003elanguage[i].name);\n        }\n        printf(\"\\n\");\n        printf(\"ipdb fields: \");\n        for (int i = 0; i \u003c reader-\u003emeta-\u003efields_length; ++i) {\n            printf(\"%s \", reader-\u003emeta-\u003efields[i]);\n        }\n        printf(\"\\n\");\n\n        char body[512];\n        char tmp[64];\n        char *lang[2];\n        lang[0] = \"CN\";\n        lang[1] = \"EN\";\n        for (int i = 0; i \u003c 2; ++i) {\n            err = ipdb_reader_find(reader, \"2001:250:200::\", lang[i], body);\n            printf(\"%s find err: %d\\n\", lang[i], err);\n            if (err) continue;\n            printf(\"%s\\n\", body);\n            int f = 0, p1 = 0, p2 = -1;\n            do {\n                if (*(body + p1) == '\\t' || !*(body + p1)) {\n                    strncpy(tmp, body + p2 + 1, (size_t) p1 - p2);\n                    tmp[p1 - p2] = 0;\n                    printf(\"%d: %s: %s\\n\", f + 1, reader-\u003emeta-\u003efields[f], tmp);\n                    p2 = p1;\n                    ++f;\n                }\n            } while (*(body + p1++));\n        }\n        int x = 1000000;\n        struct timeval start, end;\n        gettimeofday(\u0026start, NULL);\n        do {\n            ipdb_reader_find(reader, \"2001:250:200::\", \"CN\", body);\n        } while (--x);\n        gettimeofday(\u0026end, NULL);\n        long timeuse = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;\n        printf(\"time used: %ldus.\\n\", timeuse);\n    }\n    ipdb_reader_free(\u0026reader);\n    return 0;\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyconity%2Fipdb-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyconity%2Fipdb-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyconity%2Fipdb-c/lists"}