diff --git a/regina.1.md b/regina.1.md index 2e88d86..77eb34e 100644 --- a/regina.1.md +++ b/regina.1.md @@ -36,7 +36,8 @@ Regina supports several data visualization configurations and can generate an ad ## Dependencies - **nginx**: You need a nginx webserver that outputs the access log in the `combined` format, which is the default -- **Python 3.10** +- **sqlite >= 3.37** +- **Python >= 3.10** - **Python/matplotlib** ## Installation @@ -52,7 +53,7 @@ If you also want to install the man-page and the zsh completion script: ```shell sudo cp regina.1.man /usr/share/man/man1/regina.1 sudo gzip /usr/share/man/man1/regina.1 - sudo cp regina/package-data/_regina.compdef.zsh /usr/share/zsh/site-functions/_regina + sudo cp regina/package-data/_regina.compdef.zsh /usr/local/share/zsh/site-functions/_regina sudo chmod +x /usr/share/zsh/site-functions/_regina ``` @@ -113,7 +114,6 @@ In our example, `/www` will look like this: |-- resources | |-- image.jpg |-- index.html - ``` ### Automation @@ -138,14 +138,41 @@ This will make you the owner of the log 9 minutes after midnight, just before `r You can acquire such a database for free at [ip2location.com](https://lite.ip2location.com/) (and probably some other sites as well!). After creating create an account you can download several different databases in different formats. For `regina`, download the `IP-COUNTRY-REGION-CITY` for IPv4 as *csv*. -By default, `regina` only tells you which country a user is from. -To see the individual cities for countries, append the two-letter country code to the `get_cities_for_contries` option in the `data-collection` section in the config file. -After that, oad the GeoIP-data into your database: + +To configure regina to use the GeoIP database, edit `get_visitor_location` and `get_cities_for_contries` in section `data-collection`. +By default, `regina` only tells you which country a user is from. +Append the two-letter country codes for countries you are interested in to the `get_cities_for_contries` option. +After that, add the GeoIP-data into your database: ``` regina --config regina.conf --update-geoip path-to-csv ``` Depending on how many countries you specified, this might take a long time. You can delete the `csv` afterwards. + +# CUSTOMIZATION +## Generated html +The generated file does not need to be an html. The template can be any text file. +`regina` will only replace certain words starting with a `%`. +You can see all supported variables and their values by running `--visualize` with `debug_level = 1`. + +## Data export +If you want to further process the data generated by regina, you can export the data by setting the `data_out_dir` in the `data-export` section. +The data can be exported as `csv` or `pkl`. +If you choose `pkl` as filetype, all rankings will be exported as python type `list[tuple[int, str]]`. + +## Database +You can of course work directly with the database, as long as it is not altered. +Editing, adding or deleting entries might make the database incompatible with regina, so only do that if you know what you are doing. +Just querying entries will be fine though. + +# TROUBLESHOOTING +## General +If you are having problems, try setting the `debug_level` in section `debug` of the configuration file to a non-zero value. + +## sqlite3.OperationalError: near "STRICT": syntax error +Your sqlite3 version is probably too old. Check with `sqlite3 --version`. `regina` requires 3.37 or higher. +Hotfix: Remove all `STRICT`s from `/site-packages/regina/sql/create_db.sql`. + # CHANGELOG ## 1.1 - Improved database format: diff --git a/regina/data_visualization/visualize.py b/regina/data_visualization/visualize.py index 6bc3974..4db1c31 100644 --- a/regina/data_visualization/visualize.py +++ b/regina/data_visualization/visualize.py @@ -417,7 +417,7 @@ def visualize(db: Database): html_variables_str = dict_str(html_variables).replace('\n', '\n\t') - pdebug(f"visualize: html_variables:\n\t{html_variables_str}", lvl=2) + pdebug(f"visualize: html_variables:\n\t{html_variables_str}", lvl=1) template_html: str|None = settings["html-generation"]["template_html"] html_out_path: str|None = settings["html-generation"]["html_out_path"] diff --git a/regina/utility/globals.py b/regina/utility/globals.py index 18bd941..b205ee7 100644 --- a/regina/utility/globals.py +++ b/regina/utility/globals.py @@ -270,7 +270,7 @@ Both are optional: you can provide, none or both ]) cfg.add_section("route-groups", desc="Group certain routes together using by matching them with a regular expression.\nThe route's request count will be added to all matching groups and the route will be removed from the ranking.", entries=[ comment("Home = /|(/home.html)|(/index.html)"), - comment(r"Images = .*\.((png)|(jpg)|(jpeg)|(gif)|(webp)|(svg))"), + comment(r"Images = .*\.((png)|(jpe?g)|(gif)|(webp)|(svg)|(ico))"), comment(r"Resources = /resources/.*"), ])