mirror of
https://github.com/Py-KMS-Organization/py-kms.git
synced 2025-05-13 06:34:45 -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 ACTIVATION_INTERVAL 120
|
||||
ENV RENEWAL_INTERVAL 10080
|
||||
ENV HWID "RANDOM"
|
||||
ENV HWID RANDOM
|
||||
ENV LOGLEVEL INFO
|
||||
ENV LOGFILE /dev/stdout
|
||||
ENV LOGSIZE ""
|
||||
|
@ -37,4 +37,6 @@ WORKDIR /home/py-kms
|
|||
|
||||
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 ACTIVATION_INTERVAL 120
|
||||
ENV RENEWAL_INTERVAL 10080
|
||||
ENV SQLITE false
|
||||
ENV HWID "RANDOM"
|
||||
ENV SQLITE true
|
||||
ENV SQLITE_PORT 8080
|
||||
ENV HWID RANDOM
|
||||
ENV LOGLEVEL INFO
|
||||
ENV LOGFILE /dev/stdout
|
||||
ENV LOGSIZE ""
|
||||
|
||||
COPY docker/docker-py3-kms/start.sh /usr/bin/start.sh
|
||||
COPY ./py-kms /home/py-kms
|
||||
|
||||
RUN apk add --no-cache --update \
|
||||
|
@ -28,10 +28,12 @@ RUN apk add --no-cache --update \
|
|||
tzdata \
|
||||
build-base python3-dev && \
|
||||
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/ && \
|
||||
rm -rf /tmp/sqlite_web && \
|
||||
pip3 install peewee tzlocal pytz pysqlite3 && \
|
||||
chmod a+x /usr/bin/start.sh && \
|
||||
apk del git build-base python3-dev
|
||||
|
||||
# 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
|
||||
|
||||
EXPOSE ${SQLITE_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
|
||||
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
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
kms:
|
||||
image: pykmsorg/py-kms:latest
|
||||
image: pykmsorg/py-kms:python3
|
||||
ports:
|
||||
- 1688:1688
|
||||
- 8080:8080
|
||||
environment:
|
||||
- IP=0.0.0.0
|
||||
- SQLITE=true
|
||||
- HWID=RANDOM
|
||||
- LOGLEVEL=INFO
|
||||
- LOGSIZE=2
|
||||
- LOGFILE=/var/log/pykms_logserver.log
|
||||
- LOGFILE=/dev/stdout
|
||||
restart: always
|
||||
volumes:
|
||||
- ./db:/home/py-kms/db
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- ./logs:/var/log:rw
|
||||
```
|
||||
|
||||
#### Parameters
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue