mirror of
https://github.com/Py-KMS-Organization/py-kms.git
synced 2025-05-13 14:44:50 -04:00
Switch to whole new entrypoint system
This commit is contained in:
parent
cb8a95e6d6
commit
0630b22611
7 changed files with 92 additions and 98 deletions
|
@ -9,7 +9,7 @@ ENV LCID 1033
|
||||||
ENV CLIENT_COUNT 26
|
ENV CLIENT_COUNT 26
|
||||||
ENV ACTIVATION_INTERVAL 120
|
ENV ACTIVATION_INTERVAL 120
|
||||||
ENV RENEWAL_INTERVAL 10080
|
ENV RENEWAL_INTERVAL 10080
|
||||||
ENV HWID "RANDOM"
|
ENV HWID RANDOM
|
||||||
ENV LOGLEVEL INFO
|
ENV LOGLEVEL INFO
|
||||||
ENV LOGFILE /dev/stdout
|
ENV LOGFILE /dev/stdout
|
||||||
ENV LOGSIZE ""
|
ENV LOGSIZE ""
|
||||||
|
@ -37,4 +37,6 @@ WORKDIR /home/py-kms
|
||||||
|
|
||||||
EXPOSE ${PORT}/tcp
|
EXPOSE ${PORT}/tcp
|
||||||
|
|
||||||
ENTRYPOINT /usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
|
COPY docker/entrypoint.py /usr/bin/entrypoint.py
|
||||||
|
RUN chmod a+x /usr/bin/entrypoint.py
|
||||||
|
ENTRYPOINT ['/usr/bin/python3', '/usr/bin/entrypoint.py']
|
||||||
|
|
|
@ -7,13 +7,13 @@ ENV LCID 1033
|
||||||
ENV CLIENT_COUNT 26
|
ENV CLIENT_COUNT 26
|
||||||
ENV ACTIVATION_INTERVAL 120
|
ENV ACTIVATION_INTERVAL 120
|
||||||
ENV RENEWAL_INTERVAL 10080
|
ENV RENEWAL_INTERVAL 10080
|
||||||
ENV SQLITE false
|
ENV SQLITE true
|
||||||
ENV HWID "RANDOM"
|
ENV SQLITE_PORT 8080
|
||||||
|
ENV HWID RANDOM
|
||||||
ENV LOGLEVEL INFO
|
ENV LOGLEVEL INFO
|
||||||
ENV LOGFILE /dev/stdout
|
ENV LOGFILE /dev/stdout
|
||||||
ENV LOGSIZE ""
|
ENV LOGSIZE ""
|
||||||
|
|
||||||
COPY docker/docker-py3-kms/start.sh /usr/bin/start.sh
|
|
||||||
COPY ./py-kms /home/py-kms
|
COPY ./py-kms /home/py-kms
|
||||||
|
|
||||||
RUN apk add --no-cache --update \
|
RUN apk add --no-cache --update \
|
||||||
|
@ -28,10 +28,12 @@ RUN apk add --no-cache --update \
|
||||||
tzdata \
|
tzdata \
|
||||||
build-base python3-dev && \
|
build-base python3-dev && \
|
||||||
git clone https://github.com/coleifer/sqlite-web.git /tmp/sqlite_web && \
|
git clone https://github.com/coleifer/sqlite-web.git /tmp/sqlite_web && \
|
||||||
|
cd /tmp/sqlite_web && \
|
||||||
|
git checkout 2e7c85da3d37f80074ed3ae39b5851069b4f301c && \
|
||||||
|
cd / && \
|
||||||
mv /tmp/sqlite_web/sqlite_web /home/ && \
|
mv /tmp/sqlite_web/sqlite_web /home/ && \
|
||||||
rm -rf /tmp/sqlite_web && \
|
rm -rf /tmp/sqlite_web && \
|
||||||
pip3 install peewee tzlocal pytz pysqlite3 && \
|
pip3 install peewee tzlocal pytz pysqlite3 && \
|
||||||
chmod a+x /usr/bin/start.sh && \
|
|
||||||
apk del git build-base python3-dev
|
apk del git build-base python3-dev
|
||||||
|
|
||||||
# Fix undefined timezone, in case the user did not mount the /etc/localtime
|
# Fix undefined timezone, in case the user did not mount the /etc/localtime
|
||||||
|
@ -39,6 +41,9 @@ RUN cp /usr/share/zoneinfo/UTC /etc/localtime
|
||||||
|
|
||||||
WORKDIR /home/py-kms
|
WORKDIR /home/py-kms
|
||||||
|
|
||||||
|
EXPOSE ${SQLITE_PORT}/tcp
|
||||||
EXPOSE ${PORT}/tcp
|
EXPOSE ${PORT}/tcp
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/bin/start.sh"]
|
COPY docker/entrypoint.py /usr/bin/entrypoint.py
|
||||||
|
RUN chmod a+x /usr/bin/entrypoint.py
|
||||||
|
ENTRYPOINT ['/usr/bin/python3', '/usr/bin/entrypoint.py']
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
docker build -t pykms/pykms:py3-kms ../../ --file ./Dockerfile
|
|
|
@ -1,16 +0,0 @@
|
||||||
docker stop py3-kms
|
|
||||||
docker rm py3-kms
|
|
||||||
docker run -d --name py3-kms \
|
|
||||||
-t \
|
|
||||||
-p 8080:8080 \
|
|
||||||
-p 1688:1688 \
|
|
||||||
-e IP=0.0.0.0 \
|
|
||||||
-e PORT=1688 \
|
|
||||||
-e SQLITE=true \
|
|
||||||
-e HWID=RANDOM \
|
|
||||||
-e LOGLEVEL=INFO \
|
|
||||||
-e LOGFILE=/var/log/pykms_logserver.log \
|
|
||||||
-e LOGSIZE=2 \
|
|
||||||
-v /etc/localtime:/etc/localtime:ro \
|
|
||||||
-v /var/log:/var/log:rw \
|
|
||||||
--restart unless-stopped pykms/pykms:py3-kms
|
|
|
@ -1,50 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
cd /home/py-kms
|
|
||||||
if [ "$SQLITE" == false ];
|
|
||||||
then
|
|
||||||
if [ "$EPID" == "" ];
|
|
||||||
then
|
|
||||||
if [ "$LOGSIZE" == "" ];
|
|
||||||
then
|
|
||||||
/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
|
|
||||||
else
|
|
||||||
/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} -S ${LOGSIZE}
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$LOGSIZE" == "" ];
|
|
||||||
then
|
|
||||||
/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -e ${EPID} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE}
|
|
||||||
else
|
|
||||||
/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -e ${EPID} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} -S ${LOGSIZE}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$EPID" == "" ];
|
|
||||||
then
|
|
||||||
if [ "$LOGSIZE" == "" ];
|
|
||||||
then
|
|
||||||
/bin/bash -c "/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -s ${PWD}/pykms_database.db -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} &"
|
|
||||||
sleep 5
|
|
||||||
/usr/bin/python3 pykms_Client.py ${IP} ${PORT} -m Windows10 &
|
|
||||||
/usr/bin/python3 /home/sqlite_web/sqlite_web.py -H ${IP} -x ${PWD}/pykms_database.db --read-only
|
|
||||||
else
|
|
||||||
/bin/bash -c "/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -s ${PWD}/pykms_database.db -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} -S ${LOGSIZE} &"
|
|
||||||
sleep 5
|
|
||||||
/usr/bin/python3 pykms_Client.py ${IP} ${PORT} -m Windows10 &
|
|
||||||
/usr/bin/python3 /home/sqlite_web/sqlite_web.py -H ${IP} -x ${PWD}/pykms_database.db --read-only
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$LOGSIZE" == "" ];
|
|
||||||
then
|
|
||||||
/bin/bash -c "/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -e ${EPID} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -s ${PWD}/pykms_database.db -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} &"
|
|
||||||
sleep 5
|
|
||||||
/usr/bin/python3 pykms_Client.py ${IP} ${PORT} -m Windows10 &
|
|
||||||
/usr/bin/python3 /home/sqlite_web/sqlite_web.py -H ${IP} -x ${PWD}/pykms_database.db --read-only
|
|
||||||
else
|
|
||||||
/bin/sh -c "/usr/bin/python3 pykms_Server.py ${IP} ${PORT} -e ${EPID} -l ${LCID} -c ${CLIENT_COUNT} -a ${ACTIVATION_INTERVAL} -r ${RENEWAL_INTERVAL} -s ${PWD}/pykms_database.db -w ${HWID} -V ${LOGLEVEL} -F ${LOGFILE} -S ${LOGSIZE} &"
|
|
||||||
sleep 5
|
|
||||||
/usr/bin/python3 pykms_Client.py ${IP} ${PORT} -m Windows10 &
|
|
||||||
/usr/bin/python3 /home/sqlite_web/sqlite_web.py -H ${IP} -x ${PWD}/pykms_database.db --read-only
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
53
docker/entrypoint.py
Executable file
53
docker/entrypoint.py
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# This replaces the old start.sh and ensures all arguments are bound correctly from the environment variables...
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
argumentVariableMapping = {
|
||||||
|
'-l': 'LCID',
|
||||||
|
'-c': 'CLIENT_COUNT',
|
||||||
|
'-a': 'ACTIVATION_INTERVAL',
|
||||||
|
'-r': 'RENEWAL_INTERVAL',
|
||||||
|
'-w': 'HWID',
|
||||||
|
'-V': 'LOGLEVEL',
|
||||||
|
'-F': 'LOGFILE',
|
||||||
|
'-S': 'LOGSIZE',
|
||||||
|
'-e': 'EPID'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build the command to execute
|
||||||
|
command = ['/usr/bin/python3', 'pykms_Server.py', os.environ.get('IP'), os.environ.get('PORT')]
|
||||||
|
for (arg, env) in argumentVariableMapping.items():
|
||||||
|
if env in os.environ and os.environ.get(env) != '':
|
||||||
|
command.append(arg)
|
||||||
|
command.append(os.environ.get(env))
|
||||||
|
|
||||||
|
enableSQLITE = os.environ.get('SQLITE').lower() == 'true'
|
||||||
|
os.makedirs('db', exist_ok=True)
|
||||||
|
dbPath = os.path.join(os.environ.get('PWD'), 'db', 'pykms_database.db')
|
||||||
|
if enableSQLITE:
|
||||||
|
command.append('-s')
|
||||||
|
command.append(dbPath)
|
||||||
|
|
||||||
|
pykmsProcess = subprocess.Popen(command)
|
||||||
|
|
||||||
|
# In case SQLITE is defined: Start the web interface
|
||||||
|
if enableSQLITE:
|
||||||
|
time.sleep(5) # The server may take a while to start
|
||||||
|
if not os.path.isfile(dbPath):
|
||||||
|
# Start a dummy activation to ensure the database file is created
|
||||||
|
subprocess.run(['/usr/bin/python3', 'pykms_Client.py', os.environ.get('IP'), os.environ.get('PORT'), '-m', 'Windows10', '-n', 'DummyClient', '-c', 'ae3a27d1-b73a-4734-9878-70c949815218'])
|
||||||
|
sqliteProcess = subprocess.Popen(['/usr/bin/python3', '/home/sqlite_web/sqlite_web.py', '-H', os.environ.get('IP'), '--read-only', '-x', dbPath, '-p', os.environ.get('SQLITE_PORT')])
|
||||||
|
|
||||||
|
try:
|
||||||
|
pykmsProcess.wait()
|
||||||
|
except:
|
||||||
|
# In case of any error - just shut down
|
||||||
|
pass
|
||||||
|
|
||||||
|
if enableSQLITE:
|
||||||
|
sqliteProcess.terminate()
|
||||||
|
pykmsProcess.terminate()
|
|
@ -37,25 +37,26 @@ _Please note that any architecture other than the classic `amd64` is slightly bi
|
||||||
|
|
||||||
#### Docker Compose
|
#### Docker Compose
|
||||||
You can use `docker-compose` instead of building and running the Dockerfile, so you do not need to respecify your settings again and again. The following Docker Compose file will deploy the `latest` image with the log into your local directory.
|
You can use `docker-compose` instead of building and running the Dockerfile, so you do not need to respecify your settings again and again. The following Docker Compose file will deploy the `latest` image with the log into your local directory.
|
||||||
|
Make sure to take a look into the `entrypoint.py` script to see all supported variable mappings!
|
||||||
```yaml
|
```yaml
|
||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
kms:
|
kms:
|
||||||
image: pykmsorg/py-kms:latest
|
image: pykmsorg/py-kms:python3
|
||||||
ports:
|
ports:
|
||||||
- 1688:1688
|
- 1688:1688
|
||||||
|
- 8080:8080
|
||||||
environment:
|
environment:
|
||||||
- IP=0.0.0.0
|
- IP=0.0.0.0
|
||||||
- SQLITE=true
|
- SQLITE=true
|
||||||
- HWID=RANDOM
|
- HWID=RANDOM
|
||||||
- LOGLEVEL=INFO
|
- LOGLEVEL=INFO
|
||||||
- LOGSIZE=2
|
- LOGFILE=/dev/stdout
|
||||||
- LOGFILE=/var/log/pykms_logserver.log
|
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
- ./db:/home/py-kms/db
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
- ./logs:/var/log:rw
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue