diff --git a/Dockerfile b/Dockerfile index ab2ac3fda77f9b08df2578f8da9f050b50923c16..9753ac0673517dd157bb3bc148a9f411eaffbacb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -56,7 +56,7 @@ RUN cd ${SRC} \ && make clean RUN rm -r ${SRC} /SBCL_ARCH -RUN apt install -y gnuplot gettext-base +RUN apt-get install -y gnuplot gettext-base sudo psmisc RUN mkdir -p ${LIB} ${LOG} ${TMP} ${PLOT} ${ASSETS} ${BIN} @@ -72,12 +72,21 @@ RUN grep stackmaximaversion ${LIB}/stackmaxima.mac | grep -oP "\d+" >> /opt/maxi && cat ${ASSETS}/maximalocal.mac && cat ${ASSETS}/optimize.mac \ && cd ${ASSETS} \ && maxima -b optimize.mac \ - && mv maxima-optimised ${BIN}/maxima-optimised \ - && rm -r ${LIB} + && mv maxima-optimised ${BIN}/maxima-optimised RUN apt-get purge -y wget python3 make bzip2 texinfo +RUN useradd -M maxima-server && echo "Defaults lecture = always" > /etc/sudoers.d/maxima +RUN for i in $(seq 16); do \ + useradd -M "maxima-$i" \ + && echo "maxima-server ALL = (maxima-$i) NOPASSWD: ${BIN}/wrapper" >> /etc/sudoers.d/maxima \ + && echo "maxima-server ALL = (root) NOPASSWD: /usr/bin/killall -9 -u maxima-$i" >> /etc/sudoers.d/maxima; \ + done + # Add go webserver COPY ./bin/web ${BIN}/goweb -CMD ["/opt/maxima/bin/goweb"] +# Add wrapper +COPY ./bin/wrapper ${BIN}/wrapper + +CMD ["su", "-c", "/opt/maxima/bin/goweb", "maxima-server"] diff --git a/bin/web b/bin/web index 544e682349162950092867df0cc1e7e5ed18eef6..2d6a955cf2103a1cddec441998c1ee1cb8a08f77 100755 Binary files a/bin/web and b/bin/web differ diff --git a/maxima_version b/maxima_version index e4894dee36cc607944c390edcfdbdaa71cc1b3b6..e9c077fd0c32d010709b6740814f6bdcb4a4123a 100644 --- a/maxima_version +++ b/maxima_version @@ -1,9 +1 @@ 5.43.2 -5.43.1 -5.43.0 -5.42.2 -5.42.1 -5.42.0 -5.41.0 -5.40.0 -5.39.0 diff --git a/sbcl_version b/sbcl_version index a89a207b7fc05534a10bd0da29b1dd1a7b30b70a..e9307ca5751b252b31c533d41f61df140d3f7537 100644 --- a/sbcl_version +++ b/sbcl_version @@ -1,2 +1 @@ 2.0.2 -1.4.11