1. a letoltheto forras targizibol kifelejtettek a ./configure scriptet, szoval lehet felpakolni az autoconf/libtool bloatwaret hozza :(
$ sudo apt install libtool intltool libltdl-dev
$ ./autogen.sh
$ ./configure
2. configure: error: Required program 'asciidoc' not found
hat az asciidoc-ot inkabb nem rakom fel, mert ugy saccra 200 csomagot dependel magaval :)
inkabb kap egy --disable-man-pages parametert.
3. vegul igy sikerult:
$ ./configure CFLAGS='-g -O0' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --disable-man-pages --disable-perl
$ make
$ make install
4. hat persze, hogy nem mukodik!
location -h
Traceback (most recent call last):
File "/usr/bin/location", line 32, in <module>
import location
ModuleNotFoundError: No module named 'location'
mivel nyilvan rossz helyre masolta a python libeket...
/usr/lib/python3.10/site-packages/location helyett /usr/local/lib/python3.10/dist-packages konyvtarba kellene...
5. mar majdnem jo! elindul! :)
$ location version
location: Could not open database /var/lib/location/database.db: [Errno 2] No such file or directory
pedig ott a db is de nyilvan azt se masolta a helyere, de meg csak a konyvtarat se hozta letre...
libloc-0.9.16/data/database.db -> /var/lib/location/database.db
$ location version
Thu, 20 Oct 2022 06:27:23 GMT$ location verify
Database successfully verified
6. hat frissitsunk egyet!
$ location update
azota eltelt ugy 20 perc de meg semmi se tortent... tcpdump szerint 0 adatforgalom van. kezdem feladni!
es a weboldalon sincs sehol info arrol, honnan lehetne manualisan letolteni a db-t, ha mar a sajat update-je nem muxik :(
szerk: a forraskodban megtalaltam, itten vala: https://location.ipfire.org/databases/1/location.db.xz
- arpi_esp blogja
- A hozzászóláshoz be kell jelentkezni
- 561 megtekintés
Hozzászólások
Csomag csak debianra van, minden mas igyjart
Ez ebben a formában nem igaz. :)
cat /etc/system-release
Fedora release 38 (Thirty Eight)
========================= Name Exactly Matched: libloc =========================
libloc.i686 : Library to determine a location of an IP address in the Internet
libloc.x86_64 : Library to determine a location of an IP address in the Internet
======================== Name & Summary Matched: libloc ========================
libloc-devel.i686 : Developmental files for libloc C library
libloc-devel.x86_64 : Developmental files for libloc C library
liblockfile-devel.i686 : Development files for liblockfile
liblockfile-devel.x86_64 : Development files for liblockfile
perl-libloc.x86_64 : Perl interface to libloc library
python3-libloc.x86_64 : Python interface to libloc library
============================= Name Matched: libloc =============================
libloc-tools.noarch : Tools for downloading and querying IPFire Location
: database
liblockfile.x86_64 : This implements a number of functions found in -lmail on
: SysV systems
liblockfile.i686 : This implements a number of functions found in -lmail on SysV
: systems
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ugy ertettem, hogy az o download oldalukon nincs mas... es ubuntuban se volt, de ezexerint fedoraba csomagolt valaki :)
- A hozzászóláshoz be kell jelentkezni
megneztem ugy 20 ip cimmel (reszben fejbol reszben log fieokbol). a nagy reszenel nem volt lenyeges elteres, ahol igen:
195.133.13.79
maxminddb: Czechia (JSC RetnNet)
location:
Country : Russian Federation
Autonomous System : AS29470 - JSC "RetnNet"
a whois alapjan egyebkent orosz az ip tartomany, tehat itt a maxmind teved vszinu...
52.156.253.34
maxminddb: Ireland (Microsoft Azure)
location:
Country : United States of America
Autonomous System : AS8075 - MICROSOFT-CORP-MSN-AS-BLOCK
probaltam whois-el es traceroute-al is igazsagot tenni, de nem jutottam eredmenyre :(
- A hozzászóláshoz be kell jelentkezni
hirtelen felindulasbol megirtam pure pythonban, nagyjabol mar muxik is (IPv6-ra jot ir ki, v4-re valamiert nem talalja, meg ra kell jonnom hogy forditja at a v4 cimeket v6-ra az eredeti libloc):
https://github.com/gereoffy/pylibloc/
szerk: mostmar mukodik mindenre :)
- A hozzászóláshoz be kell jelentkezni
azota addig optimalizaltam, hogy mar gyorsabb mint az eredeti :)
- A hozzászóláshoz be kell jelentkezni
poenbol megirtam C-ben is, 100 sor az egesz (nem mintha nem elferne 50-ben is kicsit zsufoltabban)
https://github.com/gereoffy/ipstat46/blob/main/nanolibloc.c
# gcc -g3 -Wall nanolibloc.c && ./a.out
Result: net=270606 asn=1955 CC=HU/EU 'Hungary' ORG='KIFU (Governmental Info Tech Development Agency)'
szerintem aki az eredetit irta azt programsoronkent fizettek... kulon func van arra hogy megnezze egy szam negativ-e, meg ilyenek... az if(version==1) helyett switch-case van vagy 10 sorban elnyujtva { }-ekkel, minden egyes helyen.
- A hozzászóláshoz be kell jelentkezni
Elég fiatal projekt még, a csomagolási hiányosságokat remélem idővel megoldják. Bízom benne, hogy a TOR hátterével megmarad a db frissessége és a hozzáférés is.
Nekem működik a Debian-ban lévő csomag egyébként nem áll meg az update. A "man location" doksija szerint valami DNS rekordot is ellenőriz? mielőtt letöltené a db-t. A debug mondjuk semmi ilyesmit nem mond, az If-modified-since alapján szedi le tippre...., forrásból kiderülne gondolom van-e valami extra dns lookup.
sudo location --debug update
HTTP GET Request to location.ipfire.org
URL: https://location.ipfire.org/databases/1/location.db.xz
Headers:
If-modified-since: Mon, 03 Jul 2023 05:03:48 GMT
User-agent: location/0.9.16
HTTP Response: 200
Headers:
date: Mon, 03 Jul 2023 06:07:14 GMT
last-modified: Mon, 03 Jul 2023 05:06:03 GMT
etag: "5353a0-5ff8e1f96af46"
accept-ranges: bytes
content-length: 5460896
x-content-type-options: nosniff
x-frame-options: deny
referrer-policy: strict-origin
x-xss-protection: 1; mode=block
content-type: application/x-xz
strict-transport-security: max-age=31536000; includeSubDomains; preload
connection: close
Opening downloaded database at /var/lib/location/tmp2b9fnp8n
Downloaded new database from Mon, 03 Jul 2023 05:03:48 GMT
location version
Mon, 03 Jul 2023 05:03:48 GMT
- A hozzászóláshoz be kell jelentkezni
mivel kb 100 sorban megirhato szinte barmilyen nyelven a lekerdezes lib nelkul, nem is biztos hogy van ertelme cosmagolni :)
- A hozzászóláshoz be kell jelentkezni
Jepp.
Haproxy-hoz használom főleg, lehet egy Lua implementáció jól jönne :).
- A hozzászóláshoz be kell jelentkezni
hat a Lua-t nem vallalom, meg a Rust-om gondolkozom... ez pont jo lenne a rust megtanulasahoz, van benne filekezeles, bytearray/memoria matatas, szam konverzio, string kezeles stb, de megse tul bonyolult.
- A hozzászóláshoz be kell jelentkezni
Ha esetleg valaki gondolkodna, hogy melyiket valassza mass lookupra mmdb(geoip) vagy libloc(ipfire), akkor egyertelmuen mmdb.
Benchmark eredeti altaluk adott libek mmdb vs libloc (gcc7):
db entryk: 8 252 820 (kb friss geoip2bol buildeltem uj libloc es mmdb dbt is)
10 000 000 lekeresre, random ipk, de ugyan az a random ip mind2 lib eseten.
[libloc] Finished in 9.570 seconds
[libmaxminddb] Finished in 2.913 seconds
Szoval ugyan azzal a dbvel geoip/mmdb gyorsabb.
- A hozzászóláshoz be kell jelentkezni
kiprobalhatnad az en verziomat is, szerintem legalabb 5x gyorsabb a C libloc-nal (nincs benne rekurzio es felesleges v4->v6 forditgatas):
https://github.com/gereoffy/ipstat46/blob/main/nanolibloc.c
ha nem eleg gyors, vannak meg otleteim ra (a py-be megcsinalt v4 optimalizlat lookup c-ben is gyors lenne, meg leheten a country code-okhoz csinalni egy 64k-s 1:1 mapping tablat akkor nem kene a 254 entryt vegigkeresni...)
szerk: becommiteltem par optimalizalast meg :)
ez 10.000.000 db random ipv4 cimet 2.028 sec alatt keresett ki (stringbol).
- A hozzászóláshoz be kell jelentkezni
Gyorsabb volt, de nem talalt meg mindent :) Igy konnyu. :)
- A hozzászóláshoz be kell jelentkezni
hogyhogy nem talalt? tudsz peldat mondani (meg hozza adni db-t)? lehet val valami bug, bar annyira egyszeru hogy ezt nehez lenne elrontani.
- A hozzászóláshoz be kell jelentkezni
elvileg megoszottam veled testdb-t githubon es kapcsolatban elkuldtem egyeb infokat
- A hozzászóláshoz be kell jelentkezni
igen, es valaszoltam is az emailre akkor. szerintem csak az volt a baj, hogy en 31-es netmaskig mentem le a faban, a te hibas peldadhoz meg /32 kellett volna (bar ez szerintem nem eletszeru, de mind1), igy a for ciklust kellett mask<32-rol mask<=32-re atirni, de ezt mar be is commiteltem a hithubra. ettol sokkal lassabb nem lesz, max 2-3%-al.
le tudnad ujra tesztelni? :)
- A hozzászóláshoz be kell jelentkezni
Sorry spambe kerult.
15M test.db (ipfire)
2.9M test.mmdb (maxmind)
Mostmar jo eredmenyt ad.
[loc] Finished in: 11.741 seconds (found: 8750000, not_found: 1250000, speed: 851699/s)
- io(in=0, out=0), ctx_switch(v=0, iv=550), time(user=11.701s, system=0.020s)
[maxminddb] Finished in: 2.562 seconds (found: 8750000, not_found: 1250000, speed: 3902826/s)
- io(in=0, out=0), ctx_switch(v=0, iv=14), time(user=2.562s, system=0.000s)
[nanoloc] Finished in: 0.781 seconds (found: 8750000, not_found: 1250000, speed: 12795919/s)
- io(in=0, out=0), ctx_switch(v=0, iv=8), time(user=0.779s, system=0.002s)
- A hozzászóláshoz be kell jelentkezni
koszi! a sebessegek megleptek, nem szamitottam ekkora kulonbsegre, max ugy 5x-re. es meg mindig vannak otleteim, hogy lehetne 25-50% gyorsitani rajta...
kivancsisagbol ma megneztem a maxminddb felepiteset. a binaris fa resze lenyegeben ugyanolyan mint a libloc-nal, a metadata van maskepp tarolva de ugyse az a lassu. a binaris fa bejarasnal kb ugyanazokat a trukkoket alkalmazzak ok is (a C libjukben) mint en, rekurzio nelkuli ciklus, ipv4 root node elore kikeresve stb. ehhez kepest nem is ertem, hogy lehet 3x lassabb az enyemnel, ha kb ugyanugy mukodik, es meg a db-juk is kisebb...
- A hozzászóláshoz be kell jelentkezni