mirror of
https://github.com/11notes/docker-kms-gui.git
synced 2025-10-28 10:23:32 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6f69b4860 | ||
|
|
ed3ea34868 | ||
|
|
11cf777dbd | ||
|
|
70680a384b | ||
|
|
4b3005630d | ||
|
|
6bd0fcdd8a | ||
|
|
14fd52cc83 | ||
|
|
58e32a5d1a |
@@ -1,5 +1,5 @@
|
||||
.git*
|
||||
*.md
|
||||
LICENSE
|
||||
img/
|
||||
maintain/
|
||||
project*
|
||||
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
@@ -77,6 +77,7 @@ jobs:
|
||||
APP_ROOT=${{ env.json_root }}
|
||||
APP_UID=${{ env.IMAGE_UID }}
|
||||
APP_GID=${{ env.IMAGE_GID }}
|
||||
NO_CACHE=$(date +%s)
|
||||
tags: |
|
||||
${{ env.json_image }}:grype
|
||||
|
||||
@@ -122,6 +123,7 @@ jobs:
|
||||
APP_ROOT=${{ env.json_root }}
|
||||
APP_UID=${{ env.IMAGE_UID }}
|
||||
APP_GID=${{ env.IMAGE_GID }}
|
||||
NO_CACHE=$(date +%s)
|
||||
tags: |
|
||||
${{ env.IMAGE_TAGS }}
|
||||
|
||||
|
||||
2
.json
2
.json
@@ -6,5 +6,5 @@
|
||||
"root":"/kms",
|
||||
|
||||
"stable":"646f476",
|
||||
"parent":"11notes/alpine:stable"
|
||||
"parent":"11notes/kms:646f476"
|
||||
}
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 11notes
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
**Activate any version of Windows and Office, forever**
|
||||
|
||||

|
||||

|
||||
|
||||
# SYNOPSIS 📖
|
||||
**What can I do with this?** This image will run a web GUI for your [11notes/kms](https://hub.docker.com/r/11notes/kms) server.
|
||||
@@ -48,7 +48,7 @@ volumes:
|
||||
* [11notes/kms-gui](https://github.com/11notes/docker-kms-gui)
|
||||
|
||||
# PARENT IMAGE 🏛️
|
||||
* [11notes/alpine:stable](https://hub.docker.com/r/11notes/alpine)
|
||||
* [11notes/kms:646f476](https://hub.docker.com/r/11notes/kms)
|
||||
|
||||
# BUILT WITH 🧰
|
||||
* [py-kms](https://github.com/Py-KMS-Organization/py-kms)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
### 🪄 Features
|
||||
* switch to new github workflow and build process
|
||||
* remove truncation from clients.html
|
||||
@@ -1,31 +1,7 @@
|
||||
# :: Util
|
||||
FROM alpine AS util
|
||||
|
||||
RUN set -ex; \
|
||||
apk --no-cache --update add \
|
||||
git; \
|
||||
git clone https://github.com/11notes/docker-util.git;
|
||||
|
||||
# :: Build / redis
|
||||
FROM python:3.12-alpine AS build
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG APP_VERSION
|
||||
|
||||
USER root
|
||||
|
||||
RUN set -ex; \
|
||||
apk --update --no-cache add \
|
||||
git; \
|
||||
mkdir -p /opt/py-kms-gui; \
|
||||
git clone https://github.com/Py-KMS-Organization/py-kms.git; \
|
||||
cd /py-kms/py-kms; \
|
||||
git checkout ${APP_VERSION}; \
|
||||
cp -R /py-kms/py-kms/* /opt/py-kms-gui; \
|
||||
cp -R /py-kms/docker/docker-py3-kms/requirements.txt /opt/py-kms-gui;
|
||||
ARG APP_VERSION=stable
|
||||
|
||||
# :: Header
|
||||
FROM 11notes/alpine:stable
|
||||
FROM 11notes/kms:${APP_VERSION}
|
||||
|
||||
# :: arguments
|
||||
ARG TARGETARCH
|
||||
@@ -41,26 +17,27 @@
|
||||
ENV APP_ROOT=${APP_ROOT}
|
||||
|
||||
ENV PYKMS_SQLITE_DB_PATH=/kms/var/kms.db
|
||||
ENV PYKMS_LICENSE_PATH=/opt/py-kms/LICENSE
|
||||
ENV PYKMS_VERSION_PATH=/opt/py-kms/VERSION
|
||||
ENV PORT=8080
|
||||
|
||||
# :: multi-stage
|
||||
COPY --from=util /docker-util/src/ /usr/local/bin
|
||||
COPY --from=build /opt/py-kms-gui/ /opt/py-kms-gui
|
||||
COPY ./LICENSE /opt/py-kms
|
||||
|
||||
# :: Run
|
||||
USER root
|
||||
|
||||
# :: install application
|
||||
RUN set -ex; \
|
||||
apk --no-cache --update add \
|
||||
python3=3.12.8-r1; \
|
||||
apk --no-cache --update --virtual .build add \
|
||||
py3-pip;
|
||||
|
||||
RUN set -ex; \
|
||||
mkdir -p ${APP_ROOT}/var; \
|
||||
cd /opt/py-kms-gui; \
|
||||
pip3 install --no-cache-dir -r /opt/py-kms-gui/requirements.txt --break-system-packages; \
|
||||
cd /opt/py-kms; \
|
||||
echo "${APP_VERSION}" > VERSION; \
|
||||
echo "master" >> VERSION; \
|
||||
pip3 install --no-cache-dir -r /opt/py-kms/requirements.gui.txt --break-system-packages; \
|
||||
apk del --no-network .build;
|
||||
|
||||
# :: copy filesystem changes and set correct permissions
|
||||
@@ -70,11 +47,8 @@
|
||||
chown -R 1000:1000 \
|
||||
${APP_ROOT};
|
||||
|
||||
# :: Volumes
|
||||
VOLUME ["${APP_ROOT}/var"]
|
||||
|
||||
# :: Monitor
|
||||
HEALTHCHECK --interval=5s --timeout=2s CMD curl -X GET -kILs --fail http://localhost:${PORT} || exit 1
|
||||
HEALTHCHECK --interval=5s --timeout=2s CMD curl -X GET -kILs --fail http://localhost:${PORT}/livez || exit 1
|
||||
|
||||
# :: Start
|
||||
USER docker
|
||||
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
91
rootfs/opt/py-kms/templates/clients.html
Normal file
91
rootfs/opt/py-kms/templates/clients.html
Normal file
@@ -0,0 +1,91 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}clients{% endblock %}
|
||||
|
||||
{% block style %}
|
||||
th {
|
||||
white-space: nowrap;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if error %}
|
||||
<article class="message is-danger">
|
||||
<div class="message-header">
|
||||
Whoops! Something went wrong...
|
||||
</div>
|
||||
<div class="message-body">
|
||||
{{ error }}
|
||||
</div>
|
||||
</article>
|
||||
{% else %}
|
||||
<nav class="level">
|
||||
<div class="level-item has-text-centered">
|
||||
<div>
|
||||
<p class="heading">Clients</p>
|
||||
<p class="title">{{ count_clients }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-item has-text-centered">
|
||||
<div>
|
||||
<p class="heading">Windows</p>
|
||||
<p class="title">{{ count_clients_windows }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-item has-text-centered">
|
||||
<div>
|
||||
<p class="heading">Office</p>
|
||||
<p class="title">{{ count_clients_office }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-item has-text-centered">
|
||||
<div>
|
||||
<p class="heading">Products</p>
|
||||
<p class="title"><a href="/products">{{ count_projects }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<hr>
|
||||
|
||||
{% if clients %}
|
||||
<table class="table is-striped is-hoverable is-fullwidth">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Client ID</th>
|
||||
<th>Machine Name</th>
|
||||
<th>Application ID</th>
|
||||
<th><abbr title="Stock Keeping Unit">SKU</abbr> ID</th>
|
||||
<th>License Status</th>
|
||||
<th>Last Seen</th>
|
||||
<th>KMS <abbr title="Enhanced Privacy ID">EPID</abbr></th>
|
||||
<th>Seen Count</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for client in clients %}
|
||||
<tr>
|
||||
<th><pre class="clientMachineId">{{ client.clientMachineId }}</pre></th>
|
||||
<td class="machineName">{{ client.machineName }}</td>
|
||||
<td>{{ client.applicationId }}</td>
|
||||
<td>{{ client.skuId }}</td>
|
||||
<td>{{ client.licenseStatus }}</td>
|
||||
<td class="convert_timestamp">{{ client.lastRequestTime }}</td>
|
||||
<td>{{ client.kmsEpid }}</td>
|
||||
<td>{{ client.requestCount }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<article class="message is-warning">
|
||||
<div class="message-header">
|
||||
<p>Whoops?</p>
|
||||
</div>
|
||||
<div class="message-body">
|
||||
This page seems to be empty, because no clients are available. Try to use the server with a compartible client to add it to the database.
|
||||
</div>
|
||||
</article>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/bin/ash
|
||||
if [ -z "${1}" ]; then
|
||||
cd /opt/py-kms-gui
|
||||
ls -lah
|
||||
cd /opt/py-kms
|
||||
set -- "gunicorn" \
|
||||
--log-level INFO \
|
||||
pykms_WebUI:app
|
||||
|
||||
eleven log start
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user