Compare commits

..

9 Commits

Author SHA1 Message Date
zyphlar
6dc3036fcf htmldir
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2026-01-01 06:08:10 +01:00
zyphlar
36a65945ba remove branch and unused vars
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2026-01-01 00:01:28 +01:00
zyphlar
5c53a3cad6 actually use cities.txt
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-31 22:50:15 +01:00
zyphlar
3bea0b32a2 change arguments
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-31 08:23:53 +01:00
zyphlar
925ce544bc use test branch
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-31 06:57:52 +01:00
zyphlar
599b3b81ec typo
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-30 15:27:04 -08:00
zyphlar
2d981cde05 clone main repo too
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-30 15:27:04 -08:00
zyphlar
8670cb7b43 update pbf
Either move to o5m for subways or remove from here

Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-30 15:27:04 -08:00
zyphlar
a73ffe96c5 fix cicd
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-12-30 15:27:04 -08:00
16 changed files with 116 additions and 118 deletions

View File

@@ -3,11 +3,11 @@ on:
workflow_dispatch: # Manual trigger
env:
PLANET: /home/planet/planet/planet.o5m
TMPDIR: /tmp
HTML_DIR: "/mnt/4tbexternal/osm-planet/subway/validator"
DUMP: "$HTML_DIR"
SKIP_PLANET_UPDATE: "1"
#PLANET: /home/planet/planet/planet-latest.pbf
#TMPDIR: /tmp
#HTML_DIR: "/mnt/4tbexternal/osm-planet/subway/validator"
#DUMP: "$HTML_DIR"
#SKIP_PLANET_UPDATE: "1"
DEBIAN_FRONTEND: nonnteractive
TZ: Etc/UTC
@@ -28,14 +28,62 @@ jobs:
- uses: actions/cache@v4
with:
path: "~"
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
- name: Checkout subways repo
key: cache-${{ github.run_id }}-${{ github.run_attempt }}}
- name: Checkout main repo
shell: bash
run: |
echo "Cloning $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY branch $FORGEJO_REF_NAME"
cd ~
git clone --depth 1 --recurse-submodules --shallow-submodules -b $FORGEJO_REF_NAME --single-branch $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY.git comaps
- name: Checkout subways repo (TODO zy-fix-validation)
shell: bash
run: |
cd ~
git clone --depth 1 --single-branch https://codeberg.org/comaps/subways.git
update-planet-pbf:
name: Update PBF Planet
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:f6d53d54f794
volumes:
- /mnt/4tbexternal/:/mnt/4tbexternal/
- /mnt/4tbexternal/osm-planet:/home/planet
concurrency:
group: ${{ github.workflow }}-process-subways-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Download Planet File if Absent
shell: bash
# TODO: replace wget2 with curl -Z
run: |
if [ ! -d /home/planet/planet/ ]; then
mkdir -p /home/planet/planet/
fi
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
cd /home/planet/planet/
wget2 --verbose --progress=bar --continue https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
else
echo "planet-latest.osm.pbf was found, raw download not required."
fi
- name: Update PBF Planet
shell: bash
run: |
cd /home/planet/planet/
rm -f planet-latest-new.osm.pbf
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -v --size 16384
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
- name: Notify Zulip
run: |
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
--data-urlencode type=stream \
--data-urlencode 'to="DevOps"' \
--data-urlencode topic=codeberg-bot \
--data-urlencode 'content=PBF planet update is done!'
update-planet-o5m:
if: false
name: Update O5M Planet
runs-on: mapfilemaker
container:
@@ -83,7 +131,6 @@ jobs:
--data-urlencode 'content=O5M planet update is done!'
update-subways:
if: inputs.run-subways
name: Update Subways
runs-on: mapfilemaker
needs:
@@ -94,7 +141,7 @@ jobs:
- /mnt/4tbexternal/:/mnt/4tbexternal/
- /mnt/4tbexternal/osm-planet:/home/planet
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
group: ${{ github.workflow }}-processs-subways-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- uses: actions/cache@v4
@@ -111,12 +158,13 @@ jobs:
shell: bash
run: |
cd ~/subways
if [ -f "$HTML_DIR/index.html" ]; then
export HTML_DIR=/mnt/4tbexternal/osm-planet/subway/validator
if [ -f "$HTML_DIR/cities.txt" ]; then
echo "Comparing local validation with VK's validation..."
python3 ./scripts/compare_html_validation.py "$HTML_DIR/index.html" \
--vk-url "https://maps.vk.com/osm/tools/subways/latest/index.html"
python3 ./scripts/compare_html_validation.py "$HTML_DIR/cities.txt" \
--remote-url "https://maps.vk.com/osm/tools/subways/latest/cities.txt"
else
echo "Local index.html not found at $HTML_DIR/index.html"
echo "Local cities.txt not found at $HTML_DIR/cities.txt"
exit 1
fi
- name: Notify Zulip

View File

@@ -116,6 +116,20 @@ endif()
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
if (PLATFORM_LINUX OR PLATFORM_ANDROID)
find_program(LLD_FOUND ld.lld)
if (LLD_FOUND)
message(STATUS "Using ld.lld linker")
set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld")
else()
find_program(GOLD_FOUND ld.gold)
if (GOLD_FOUND)
message(STATUS "Using ld.gold")
set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=gold")
endif()
endif()
endif()
if (NOT SKIP_TESTS)
enable_testing()
# Enables ctest -T memcheck with valgrind

2
NOTICE
View File

@@ -1,6 +1,6 @@
Copyright 2020 My.com B.V. (Mail.Ru Group)
Copyright 2025 Organic Maps Contributors
Copyright 2026 CoMaps Contributors
Copyright 2025 CoMaps Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@@ -351,7 +351,6 @@ dependencies {
implementation libs.androidx.recyclerview
implementation libs.androidx.work.runtime
implementation libs.androidx.lifecycle.process
implementation libs.androidx.documentfile
implementation libs.android.material
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
// https://github.com/organicmaps/organicmaps/issues/6106

View File

@@ -27,7 +27,7 @@
android:layout_marginTop="@dimen/margin_base">
<RadioButton
style="@style/MwmTextAppearance.Subtitle1"
style="@style/TextAppearance.Subtitle1"
android:id="@+id/sort_by_default"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -924,6 +924,6 @@
<string name="advanced">Avancé</string>
<string name="download_resources_custom_url_summary_none">Non défini</string>
<string name="download_resources_custom_url_title">Serveur de cartes personnalisé</string>
<string name="download_resources_custom_url_error_scheme">Veuillez saisir une URL complète commençant par http:// ou https://</string>
<string name="download_resources_custom_url_error_scheme">Veuillez saisir une URL complète débutant par https:// et se terminant par /</string>
<string name="download_resources_custom_url_message">Serveur pour télécharger les cartes. Laissez vide pour utiliser le serveur par défaut CoMaps.</string>
</resources>

View File

@@ -972,5 +972,5 @@
<string name="download_resources_custom_url_title">Custom Map Server</string>
<string name="download_resources_custom_url_message">Override the default map download server used for map downloads. Leave empty to use CoMaps default server.</string>
<string name="download_resources_custom_url_summary_none">Not set</string>
<string name="download_resources_custom_url_error_scheme">Please enter a URL starting with http:// or https://</string>
<string name="download_resources_custom_url_error_scheme">Please enter a full URL starting with https:// and ending with /</string>
</resources>

View File

@@ -2,6 +2,8 @@
<resources>
<style name="MwmTextAppearance" parent="android:TextAppearance.Material">
<item name="android:fontFamily">@string/robotoRegular</item>
<!-- Force normal textStyle. Some devices (eg Lenovo P70), uses non-normal textStyle by default. -->
<item name="android:textStyle">normal</item>
</style>
<style name="MwmTextAppearance.Title">

View File

@@ -1,15 +1,15 @@
[versions]
androidGradlePlugin = "8.13.2"
androidGradlePlugin = "8.11.2"
androidxCarApp = "1.7.0"
[libraries]
android-tools = { module = "com.android.tools.build:gradle", version.ref = "androidGradlePlugin" }
triplet-play-publisher = { module = "com.github.triplet.gradle:play-publisher", version = "3.13.0" }
triplet-play-publisher = { module = "com.github.triplet.gradle:play-publisher", version = "3.12.1" }
huawei-publish = { module = "ru.cian:huawei-publish-gradle-plugin", version = "1.4.2" }
android-tools-desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.5" }
microg-services-location = { module = "org.microg.gms:play-services-location", version = "0.3.6.244735" }
androidx-core = { module = "androidx.core:core", version = "1.17.0" }
jetbrains-kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version = "2.2.21" }
jetbrains-kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version = "2.2.20" }
androidx-annotation = { module = "androidx.annotation:annotation", version = "1.9.1" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version = "1.7.1" }
androidx-car-app = { module = "androidx.car.app:app", version.ref = "androidxCarApp" }
@@ -21,13 +21,12 @@ androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version
androidx-work-runtime = { module = "androidx.work:work-runtime", version = "2.10.5" }
androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version = "2.9.4" }
androidx-media = { module = "androidx.media:media", version = "1.7.1" }
androidx-documentfile= { module = "androidx.documentfile:documentfile", version ="1.1.0" }
android-material = { module = "com.google.android.material:material", version = "1.12.0" }
google-guava = { module = "com.google.guava:guava", version = "33.5.0-android" }
google-guava = { module = "com.google.guava:guava", version = "33.4.8-android" }
appdevnext-androidchart = { module = "com.github.AppDevNext:AndroidChart", version = "3.1.0.31" }
androidx-test-junit = { module = "androidx.test.ext:junit", version = "1.3.0" }
junit = { module = "junit:junit", version = "4.13.2" }
mockito-core = { module = "org.mockito:mockito-core", version = "5.21.0" }
mockito-core = { module = "org.mockito:mockito-core", version = "5.20.0" }
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }

View File

@@ -126,7 +126,6 @@ dependencies {
implementation libs.androidx.recyclerview
implementation libs.androidx.preference
implementation libs.android.material
implementation libs.androidx.documentfile
testImplementation libs.junit
}

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="26" height="33" version="1.1" viewBox="0 0 26 33" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="linearGradient1" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#e8514e" offset="0"/>
<stop stop-color="#cc3633" offset="1"/>
</linearGradient>
<filter id="filter1" x="-.0882" y="-.441" width="1.1764" height="1.882" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.55125"/>
</filter>
</defs>
<ellipse cx="13" cy="30.177" rx="7.5" ry="1.5" filter="url(#filter1)" opacity=".1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m13 1c-6.3513 0-11.5 5.1487-11.5 11.5 2.4e-4 4.6124 2.7473 8.7238 6.8871 10.534 0.76685 0.33537 1.7261 1.1233 2.097 1.8742l2.5159 5.0935 2.5159-5.0935c0.37091-0.75091 1.3301-1.5388 2.0969-1.8742 4.1398-1.8104 6.8869-5.9219 6.8871-10.534 0-6.3513-5.1487-11.5-11.5-11.5z" fill="url(#linearGradient1)" stroke="#fff" stroke-linejoin="round" stroke-width="2"/>
<path d="m11.91 13.481-0.31705-4.7458q-0.08917-1.3871-0.08917-1.9915 0-0.82234 0.42603-1.2781 0.43594-0.46566 1.1394-0.46566 0.85206 0 1.1394 0.59446 0.28732 0.58456 0.28732 1.6942 0 0.65391-0.06935 1.3276l-0.42603 4.8845q-0.06935 0.87188-0.29723 1.3375-0.22788 0.46566-0.75299 0.46566-0.53502 0-0.74308-0.44585-0.20806-0.45576-0.29724-1.3772zm1.0998 6.5193q-0.60437 0-1.0601-0.3864-0.44585-0.39631-0.44585-1.0998 0-0.61428 0.42603-1.0403 0.43594-0.43594 1.0601-0.43594t1.0601 0.43594q0.44585 0.42603 0.44585 1.0403 0 0.69354-0.44585 1.0898-0.44585 0.39631-1.0403 0.39631z" fill="#fff" aria-label="!" data-font-family="Arial Rounded MT Bold"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,25 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="26" height="33" viewBox="0 0 26 33">
<defs>
<linearGradient id="a" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#e8514e"/>
<stop offset="1" stop-color="#cc3633"/>
</linearGradient>
<linearGradient xlink:href="#a" id="d" x1="13" x2="13" y1="1" y2="30" gradientTransform="translate(.122 .703)" gradientUnits="userSpaceOnUse"/>
<filter id="b" width="1.176" height="1.882" x="-.088" y="-.441" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation=".551"/>
</filter>
<filter id="c" width="1.176" height="1.882" x="-.088" y="-.441" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation=".551"/>
</filter>
</defs>
<ellipse cx="13.122" cy="30.88" filter="url(#b)" opacity=".1" rx="7.5" ry="1.5" style="filter:url(#c)"/>
<path fill="url(#a)" stroke="#000" stroke-linejoin="round" stroke-width="2" d="M13.122 1.703c-6.352 0-11.5 5.149-11.5 11.5a11.5 11.5 0 0 0 6.887 10.534c.766.335 1.726 1.123 2.097 1.874l2.516 5.094 2.515-5.094c.371-.75 1.33-1.539 2.097-1.874a11.5 11.5 0 0 0 6.887-10.534c0-6.351-5.148-11.5-11.5-11.5z" style="fill:url(#d)"/>
<path d="M17.228 10.192v3.071h1.198v-3.071ZM17.228 7.424v1.721h1.198V7.423ZM7.088 10.192v3.071h1.198v-3.071ZM7.088 7.424v1.721h1.198V7.423Z" style="fill:#000;stroke-width:1.19817;stroke-linecap:square;stroke-linejoin:round" transform="translate(.365 -.337)"/>
<path d="m34.133 11.683-2.257-.84.1-2.405 2.32-.648 1.332 2.006z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(38.951 8.225 -4.95)scale(.63342)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(38.951 16.064 -7.581)scale(.80453)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(-33.724 21.526 30.482)scale(.76175)"/>
<path d="M7.088 14.395v3.071h1.198v-3.071zM7.088 18.514v1.723h1.198v-1.723zM17.228 14.395v3.071h1.198v-3.071zM17.228 18.514v1.723h1.198v-1.723z" style="fill:#000;stroke-width:1.19817;stroke-linecap:square;stroke-linejoin:round" transform="translate(.365 -.337)"/>
<path d="m34.133 11.683-2.257-.84.1-2.405 2.32-.648 1.332 2.006z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(218.951 18.726 11.626)scale(.63342)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(218.951 22.916 15.042)scale(.80453)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#000;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(146.276 17.093 9.794)scale(.76175)"/>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="26" height="33" version="1.1" viewBox="0 0 26 33" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="linearGradient1" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#e8514e" offset="0"/>
<stop stop-color="#cc3633" offset="1"/>
</linearGradient>
<filter id="filter1" x="-.0882" y="-.441" width="1.1764" height="1.882" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.55125"/>
</filter>
</defs>
<ellipse cx="13" cy="30.177" rx="7.5" ry="1.5" filter="url(#filter1)" opacity=".1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m13 1c-6.3513 0-11.5 5.1487-11.5 11.5 2.4e-4 4.6124 2.7473 8.7238 6.8871 10.534 0.76685 0.33537 1.7261 1.1233 2.097 1.8742l2.5159 5.0935 2.5159-5.0935c0.37091-0.75091 1.3301-1.5388 2.0969-1.8742 4.1398-1.8104 6.8869-5.9219 6.8871-10.534 0-6.3513-5.1487-11.5-11.5-11.5z" fill="url(#linearGradient1)" stroke="#fff" stroke-linejoin="round" stroke-width="2"/>
<path d="m11.91 13.481-0.31705-4.7458q-0.08917-1.3871-0.08917-1.9915 0-0.82234 0.42603-1.2781 0.43594-0.46566 1.1394-0.46566 0.85206 0 1.1394 0.59446 0.28732 0.58456 0.28732 1.6942 0 0.65391-0.06935 1.3276l-0.42603 4.8845q-0.06935 0.87188-0.29723 1.3375-0.22788 0.46566-0.75299 0.46566-0.53502 0-0.74308-0.44585-0.20806-0.45576-0.29724-1.3772zm1.0998 6.5193q-0.60437 0-1.0601-0.3864-0.44585-0.39631-0.44585-1.0998 0-0.61428 0.42603-1.0403 0.43594-0.43594 1.0601-0.43594t1.0601 0.43594q0.44585 0.42603 0.44585 1.0403 0 0.69354-0.44585 1.0898-0.44585 0.39631-1.0403 0.39631z" fill="#fff" aria-label="!" data-font-family="Arial Rounded MT Bold"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="26" height="33" version="1.1" viewBox="0 0 26 33" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="linearGradient1" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#e8514e" offset="0"/>
<stop stop-color="#cc3633" offset="1"/>
</linearGradient>
<filter id="filter1" x="-.0882" y="-.441" width="1.1764" height="1.882" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.55125"/>
</filter>
</defs>
<ellipse cx="13" cy="30.177" rx="7.5" ry="1.5" filter="url(#filter1)" opacity=".1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m13 1c-6.3513 0-11.5 5.1487-11.5 11.5 2.4e-4 4.6124 2.7473 8.7238 6.8871 10.534 0.76685 0.33537 1.7261 1.1233 2.097 1.8742l2.5159 5.0935 2.5159-5.0935c0.37091-0.75091 1.3301-1.5388 2.0969-1.8742 4.1398-1.8104 6.8869-5.9219 6.8871-10.534 0-6.3513-5.1487-11.5-11.5-11.5z" fill="url(#linearGradient1)" stroke="#fff" stroke-linejoin="round" stroke-width="2"/>
<path d="m11.91 13.481-0.31705-4.7458q-0.08917-1.3871-0.08917-1.9915 0-0.82234 0.42603-1.2781 0.43594-0.46566 1.1394-0.46566 0.85206 0 1.1394 0.59446 0.28732 0.58456 0.28732 1.6942 0 0.65391-0.06935 1.3276l-0.42603 4.8845q-0.06935 0.87188-0.29723 1.3375-0.22788 0.46566-0.75299 0.46566-0.53502 0-0.74308-0.44585-0.20806-0.45576-0.29724-1.3772zm1.0998 6.5193q-0.60437 0-1.0601-0.3864-0.44585-0.39631-0.44585-1.0998 0-0.61428 0.42603-1.0403 0.43594-0.43594 1.0601-0.43594t1.0601 0.43594q0.44585 0.42603 0.44585 1.0403 0 0.69354-0.44585 1.0898-0.44585 0.39631-1.0403 0.39631z" fill="#fff" aria-label="!" data-font-family="Arial Rounded MT Bold"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,25 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="26" height="33" viewBox="0 0 26 33">
<defs>
<linearGradient id="a" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#e8514e"/>
<stop offset="1" stop-color="#cc3633"/>
</linearGradient>
<linearGradient xlink:href="#a" id="d" x1="13" x2="13" y1="1" y2="30" gradientTransform="translate(.122 .703)" gradientUnits="userSpaceOnUse"/>
<filter id="b" width="1.176" height="1.882" x="-.088" y="-.441" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation=".551"/>
</filter>
<filter id="c" width="1.176" height="1.882" x="-.088" y="-.441" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation=".551"/>
</filter>
</defs>
<ellipse cx="13.122" cy="30.88" filter="url(#b)" opacity=".1" rx="7.5" ry="1.5" style="filter:url(#c)"/>
<path fill="url(#a)" stroke="#fff" stroke-linejoin="round" stroke-width="2" d="M13.122 1.703c-6.352 0-11.5 5.149-11.5 11.5a11.5 11.5 0 0 0 6.887 10.534c.766.335 1.726 1.123 2.097 1.874l2.516 5.094 2.515-5.094c.371-.75 1.33-1.539 2.097-1.874a11.5 11.5 0 0 0 6.887-10.534c0-6.351-5.148-11.5-11.5-11.5z" style="fill:url(#d)"/>
<path d="M17.228 10.192v3.071h1.198v-3.071ZM17.228 7.424v1.721h1.198V7.423ZM7.088 10.192v3.071h1.198v-3.071ZM7.088 7.424v1.721h1.198V7.423Z" style="fill:#fff;stroke-width:1.19817;stroke-linecap:square;stroke-linejoin:round" transform="translate(.365 -.337)"/>
<path d="m34.133 11.683-2.257-.84.1-2.405 2.32-.648 1.332 2.006z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(38.951 8.225 -4.95)scale(.63342)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(38.951 16.064 -7.581)scale(.80453)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(-33.724 21.526 30.482)scale(.76175)"/>
<path d="M7.088 14.395v3.071h1.198v-3.071zM7.088 18.514v1.723h1.198v-1.723zM17.228 14.395v3.071h1.198v-3.071zM17.228 18.514v1.723h1.198v-1.723z" style="fill:#fff;stroke-width:1.19817;stroke-linecap:square;stroke-linejoin:round" transform="translate(.365 -.337)"/>
<path d="m34.133 11.683-2.257-.84.1-2.405 2.32-.648 1.332 2.006z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(218.951 18.726 11.626)scale(.63342)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(218.951 22.916 15.042)scale(.80453)"/>
<path d="M34.79 11.804 31.165 9.71l3.627-2.094Z" style="fill:#fff;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-linejoin:round" transform="rotate(146.276 17.093 9.794)scale(.76175)"/>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="26" height="33" version="1.1" viewBox="0 0 26 33" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="linearGradient1" x1="13" x2="13" y1="1" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#e8514e" offset="0"/>
<stop stop-color="#cc3633" offset="1"/>
</linearGradient>
<filter id="filter1" x="-.0882" y="-.441" width="1.1764" height="1.882" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.55125"/>
</filter>
</defs>
<ellipse cx="13" cy="30.177" rx="7.5" ry="1.5" filter="url(#filter1)" opacity=".1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m13 1c-6.3513 0-11.5 5.1487-11.5 11.5 2.4e-4 4.6124 2.7473 8.7238 6.8871 10.534 0.76685 0.33537 1.7261 1.1233 2.097 1.8742l2.5159 5.0935 2.5159-5.0935c0.37091-0.75091 1.3301-1.5388 2.0969-1.8742 4.1398-1.8104 6.8869-5.9219 6.8871-10.534 0-6.3513-5.1487-11.5-11.5-11.5z" fill="url(#linearGradient1)" stroke="#fff" stroke-linejoin="round" stroke-width="2"/>
<path d="m11.91 13.481-0.31705-4.7458q-0.08917-1.3871-0.08917-1.9915 0-0.82234 0.42603-1.2781 0.43594-0.46566 1.1394-0.46566 0.85206 0 1.1394 0.59446 0.28732 0.58456 0.28732 1.6942 0 0.65391-0.06935 1.3276l-0.42603 4.8845q-0.06935 0.87188-0.29723 1.3375-0.22788 0.46566-0.75299 0.46566-0.53502 0-0.74308-0.44585-0.20806-0.45576-0.29724-1.3772zm1.0998 6.5193q-0.60437 0-1.0601-0.3864-0.44585-0.39631-0.44585-1.0998 0-0.61428 0.42603-1.0403 0.43594-0.43594 1.0601-0.43594t1.0601 0.43594q0.44585 0.42603 0.44585 1.0403 0 0.69354-0.44585 1.0898-0.44585 0.39631-1.0403 0.39631z" fill="#fff" aria-label="!" data-font-family="Arial Rounded MT Bold"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1 +1 @@
© 2026 CoMaps Contributors
© 2025 CoMaps Contributors

View File

@@ -22,26 +22,13 @@ vim /etc/nginx/nginx.conf
access_log /var/log/nginx/access.log comaps;
```
if using Apache, try this:
```
LogFormat "0.0.0.0 %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" comaps
CustomLog ${APACHE_LOG_DIR}/access.log comaps
```
### set up monitoring:
apt install goaccess
edit /etc/goaccess/goaccess.conf and uncomment:
- time-format %H:%M:%S
- date-format %d/%b/%Y
- log-format COMBINED
edit /etc/goaccess/goaccess.conf and uncomment time-format %H:%M:%S, date-format %Y-%m-%d, log-format COMBINED
vim /etc/crontab
`*/5 * * * * root /usr/bin/goaccess /var/log/nginx/access.log -o /var/www/html/monitor.html`
or Apache: `*/5 * * * * root /usr/bin/goaccess /var/log/apache2/access.log -o /var/www/html/monitor.html`
### set up basic http pages/responses:
cd /var/www/html/
mkdir maps