2024-10-10
This commit is contained in:
80
docker/hustoj-cpp/Dockerfile
Normal file
80
docker/hustoj-cpp/Dockerfile
Normal file
@@ -0,0 +1,80 @@
|
||||
#FROM ubuntu:trusty-20171117 #638MB
|
||||
#COPY ./sources.list /etc/apt/sources.list
|
||||
|
||||
FROM debian:jessie-slim
|
||||
#COPY ./sources.debian.list /etc/apt/sources.list
|
||||
|
||||
COPY ./docker-entrypoint.sh /usr/local/bin/
|
||||
|
||||
RUN set -ex \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
git \
|
||||
make flex g++ libmysqlclient-dev libmysql++-dev \
|
||||
php5-fpm php5-mysql php5-gd \
|
||||
# php5-memcache memcached \
|
||||
nginx \
|
||||
# fp-compiler \
|
||||
# openjdk-7-jdk \
|
||||
# clang
|
||||
# mysql
|
||||
&& echo 'mysql-server-5.5 mysql-server/root_password password ""' | debconf-set-selections \
|
||||
&& echo 'mysql-server-5.5 mysql-server/root_password_again password ""' |debconf-set-selections \
|
||||
#&& apt-get update
|
||||
&& apt-get install -y mysql-server \
|
||||
# code
|
||||
&& /usr/sbin/useradd -m -u 1536 judge \
|
||||
&& cd / && git clone https://github.com/zhblue/hustoj.git \
|
||||
&& mv /hustoj/trunk /home/judge/src \
|
||||
# clear
|
||||
&& rm -R /hustoj \
|
||||
&& apt-get autoremove -y --purge git \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
#
|
||||
&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
||||
&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
||||
&& CPU=`grep "cpu cores" /proc/cpuinfo |head -1|awk '{print $4}'` \
|
||||
&& cd /home/judge/ \
|
||||
&& mkdir etc data log \
|
||||
&& cp src/install/java0.policy /home/judge/etc \
|
||||
&& cp src/install/judge.conf /home/judge/etc \
|
||||
&& mkdir run0 run1 run2 run3 \
|
||||
&& chown judge run0 run1 run2 run3 \
|
||||
&& sed -i "s/OJ_USER_NAME=root/OJ_USER_NAME=$USER/g" etc/judge.conf \
|
||||
&& sed -i "s/OJ_PASSWORD=root/OJ_PASSWORD=$PASSWORD/g" etc/judge.conf \
|
||||
&& sed -i "s/OJ_RUNNING=1/OJ_RUNNING=$CPU/g" etc/judge.conf \
|
||||
&& sed -i "s/DB_USER=\"root\"/DB_USER=\"$USER\"/g" src/web/include/db_info.inc.php \
|
||||
&& sed -i "s/DB_PASS=\"root\"/DB_PASS=\"$PASSWORD\"/g" src/web/include/db_info.inc.php \
|
||||
&& chown www-data src/web/upload data \
|
||||
&& sed -i "s/post_max_size = 8M/post_max_size = 80M/g" /etc/php5/fpm/php.ini \
|
||||
&& sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 80M/g" /etc/php5/fpm/php.ini \
|
||||
# judged
|
||||
&& cd /home/judge/src/core/judged \
|
||||
&& make \
|
||||
&& chmod +x judged \
|
||||
&& cp judged /usr/bin \
|
||||
&& cd ../judge_client \
|
||||
&& make \
|
||||
&& chmod +x judge_client \
|
||||
&& cp judge_client /usr/bin \
|
||||
&& cd /home/judge/ \
|
||||
# db
|
||||
&& chown -R mysql:mysql /var/lib/mysql \
|
||||
&& service mysql restart \
|
||||
&& service mysql status \
|
||||
#&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
||||
#&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
||||
&& mysql -h localhost -u$USER -p$PASSWORD< /home/judge/src/install/db.sql \
|
||||
&& echo "insert into jol.privilege values('admin','administrator','N');"|mysql -h localhost -u$USER -p$PASSWORD \
|
||||
#&& service mysql stop \
|
||||
&& chmod +x /usr/local/bin/docker-entrypoint.sh \
|
||||
&& ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/sites-available/default
|
||||
|
||||
WORKDIR /home/judge/
|
||||
EXPOSE 80
|
||||
VOLUME ["/data"]
|
||||
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
#CMD judged /home/judge debug && tail -f /dev/null
|
||||
5
docker/hustoj-cpp/build-clear.sh
Executable file
5
docker/hustoj-cpp/build-clear.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
docker rm $(docker ps -a -q)
|
||||
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
|
||||
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
|
||||
docker images|grep none|awk '{print $3 }'|xargs docker rmi
|
||||
echo done.
|
||||
10
docker/hustoj-cpp/build-dokcer.sh
Executable file
10
docker/hustoj-cpp/build-dokcer.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
|
||||
#docker rm -f -v /hustoj-dev
|
||||
#docker build -f Dockerfile -t hustoj-cpp ./
|
||||
|
||||
docker rm -f -v /hustoj-cpp
|
||||
#docker run -d -it --privileged --name hustoj-cpp -p 8080:80 hustoj-cpp
|
||||
docker rm -f /hustoj-cpp
|
||||
docker run -d -it --privileged --name hustoj-cpp -p 8080:80 -v /home/hustoj-cpp/:/data/ hustoj-cpp
|
||||
#docker exec -i -t hustoj-cpp /bin/bash
|
||||
|
||||
55
docker/hustoj-cpp/docker-entrypoint.sh
Normal file
55
docker/hustoj-cpp/docker-entrypoint.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIRECTORY="/data/data/"
|
||||
if [ ! -d $DIRECTORY ]; then
|
||||
mv /home/judge/data/ /data/
|
||||
else
|
||||
rm -R /home/judge/data/
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/data
|
||||
|
||||
DIRECTORY="/data/judge.conf"
|
||||
if [ ! -f $DIRECTORY ]; then
|
||||
mv /home/judge/etc/judge.conf /data/
|
||||
else
|
||||
rm /home/judge/etc/judge.conf
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/etc/judge.conf
|
||||
|
||||
DIRECTORY="/data/db_info.inc.php"
|
||||
if [ ! -f $DIRECTORY ]; then
|
||||
mv /home/judge/src/web/include/db_info.inc.php /data/
|
||||
else
|
||||
rm /home/judge/src/web/include/db_info.inc.php
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/src/web/include/db_info.inc.php
|
||||
|
||||
DIRECTORY="/data/mysql"
|
||||
if [ ! -d $DIRECTORY ]; then
|
||||
mv /var/lib/mysql /data
|
||||
else
|
||||
rm -R /var/lib/mysql
|
||||
fi
|
||||
ln -s $DIRECTORY /var/lib/mysql
|
||||
|
||||
chmod 775 -R /data/data
|
||||
chgrp -R www-data /data/data
|
||||
chmod 770 -R /data/upload
|
||||
chgrp -R www-data /data/upload
|
||||
chmod 770 -R /data/judge.conf
|
||||
chgrp -R www-data /data/judge.conf
|
||||
chmod 770 -R /data/db_info.inc.php
|
||||
chgrp -R www-data /data/db_info.inc.php
|
||||
|
||||
#chown -R mysql:mysql /var/lib/mysql
|
||||
chown -R mysql:mysql /data/mysql/
|
||||
|
||||
service mysql start
|
||||
/usr/bin/judged
|
||||
php5-fpm
|
||||
service nginx start
|
||||
|
||||
/bin/bash
|
||||
exit 0
|
||||
|
||||
|
||||
19
docker/hustoj-cpp/nginx/default.conf
Normal file
19
docker/hustoj-cpp/nginx/default.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
server {
|
||||
listen 80 default_server;
|
||||
root /home/judge/src/web;
|
||||
server_name _;
|
||||
index index.php;
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
client_max_body_size 100M;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SERVER_NAME $http_host;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
#fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||
}
|
||||
}
|
||||
4
docker/hustoj-cpp/sources.debian.list
Normal file
4
docker/hustoj-cpp/sources.debian.list
Normal file
@@ -0,0 +1,4 @@
|
||||
deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
|
||||
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
|
||||
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
|
||||
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
|
||||
21
docker/hustoj-cpp/sources.list
Normal file
21
docker/hustoj-cpp/sources.list
Normal file
@@ -0,0 +1,21 @@
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
97
docker/hustoj/Dockerfile
Normal file
97
docker/hustoj/Dockerfile
Normal file
@@ -0,0 +1,97 @@
|
||||
FROM ubuntu:trusty-20171117
|
||||
#COPY ./sources.list /etc/apt/sources.list
|
||||
#FROM debian:jessie-slim
|
||||
|
||||
RUN set -ex \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
git \
|
||||
make flex g++ libmysqlclient-dev libmysql++-dev \
|
||||
php5-fpm php5-mysql php5-gd \
|
||||
php5-memcache memcached \
|
||||
nginx \
|
||||
fp-compiler \
|
||||
openjdk-7-jdk \
|
||||
clang \
|
||||
#&& apt-get remove --purge git
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN set -ex \
|
||||
&& echo 'mysql-server-5.5 mysql-server/root_password password ""' | debconf-set-selections \
|
||||
&& echo 'mysql-server-5.5 mysql-server/root_password_again password ""' |debconf-set-selections \
|
||||
&& apt-get update && apt-get install -y mysql-server \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN set -ex \
|
||||
&& /usr/sbin/useradd -m -u 1536 judge \
|
||||
&& cd / && git clone https://github.com/zhblue/hustoj.git \
|
||||
&& mv /hustoj/trunk /home/judge/src \
|
||||
&& rm -R /hustoj
|
||||
|
||||
RUN set -ex \
|
||||
&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
||||
&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
||||
&& CPU=`grep "cpu cores" /proc/cpuinfo |head -1|awk '{print $4}'` \
|
||||
&& cd /home/judge/ \
|
||||
&& mkdir etc data log \
|
||||
&& cp src/install/java0.policy /home/judge/etc \
|
||||
&& cp src/install/judge.conf /home/judge/etc \
|
||||
&& mkdir run0 run1 run2 run3 \
|
||||
&& chown judge run0 run1 run2 run3 \
|
||||
&& sed -i "s/OJ_USER_NAME=root/OJ_USER_NAME=$USER/g" etc/judge.conf \
|
||||
&& sed -i "s/OJ_PASSWORD=root/OJ_PASSWORD=$PASSWORD/g" etc/judge.conf \
|
||||
&& sed -i "s/OJ_RUNNING=1/OJ_RUNNING=$CPU/g" etc/judge.conf \
|
||||
&& sed -i "s/DB_USER=\"root\"/DB_USER=\"$USER\"/g" src/web/include/db_info.inc.php \
|
||||
&& sed -i "s/DB_PASS=\"root\"/DB_PASS=\"$PASSWORD\"/g" src/web/include/db_info.inc.php \
|
||||
&& chown www-data src/web/upload data \
|
||||
&& sed -i "s:include /etc/nginx/mime.types;:client_max_body_size 80m;\n\tinclude /etc/nginx/mime.types;:g" /etc/nginx/nginx.conf \
|
||||
&& chown -R mysql:mysql /var/lib/mysql \
|
||||
&& sed -i "s:root /usr/share/nginx/html;:root /home/judge/src/web;:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:index index.html:index index.php:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:#location ~ \\\.php\\$:location ~ \\\.php\\$:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:#\tfastcgi_split_path_info:\tfastcgi_split_path_info:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:#\tfastcgi_pass unix:\tfastcgi_pass unix:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:#\tfastcgi_index:\tfastcgi_index:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s:#\tinclude fastcgi_params;:\tinclude fastcgi_params;\n\t}:g" /etc/nginx/sites-enabled/default \
|
||||
&& sed -i "s/post_max_size = 8M/post_max_size = 80M/g" /etc/php5/fpm/php.ini \
|
||||
&& sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 80M/g" /etc/php5/fpm/php.ini
|
||||
|
||||
RUN set -ex \
|
||||
&& cd /home/judge/src/core/judged \
|
||||
&& make \
|
||||
&& chmod +x judged \
|
||||
&& cp judged /usr/bin \
|
||||
&& cd ../judge_client \
|
||||
&& make \
|
||||
&& chmod +x judge_client \
|
||||
&& cp judge_client /usr/bin \
|
||||
&& cd /home/judge/
|
||||
|
||||
RUN set -ex \
|
||||
&& chown -R mysql:mysql /var/lib/mysql \
|
||||
&& service mysql restart \
|
||||
&& service mysql status \
|
||||
&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
||||
&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
||||
&& mysql -h localhost -u$USER -p$PASSWORD< /home/judge/src/install/db.sql \
|
||||
&& echo "insert into jol.privilege values('admin','administrator','N');"|mysql -h localhost -u$USER -p$PASSWORD \
|
||||
&& service mysql stop
|
||||
|
||||
|
||||
RUN chmod +x /home/judge/src/core/make.sh
|
||||
RUN cd /home/judge/src/core/ && ./make.sh
|
||||
RUN cd /usr/bin && rm awk && cp -s mawk awk
|
||||
|
||||
WORKDIR /home/judge/
|
||||
EXPOSE 80
|
||||
VOLUME ["/data"]
|
||||
|
||||
COPY ./docker-entrypoint.sh /usr/local/bin/
|
||||
RUN set -ex \
|
||||
&& chmod +x /usr/local/bin/docker-entrypoint.sh \
|
||||
&& ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
#CMD judged /home/judge debug &&
|
||||
#CMD tail -f /dev/null
|
||||
|
||||
13
docker/hustoj/build-dokcer.sh
Executable file
13
docker/hustoj/build-dokcer.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
|
||||
docker build -f Dockerfile -t hustoj-dev ./
|
||||
|
||||
docker rm -f /hustoj-dev
|
||||
|
||||
#rm -R /home/test/
|
||||
#mkdir -p /home/test
|
||||
#chmod -R 777 /home/test/
|
||||
|
||||
#docker run -d -it --privileged --name hustoj-dev -p 80:80 hustoj-dev
|
||||
docker run -d -it --privileged --name hustoj-dev -p 80:80 -v /home/test/:/data hustoj-dev
|
||||
#docker run -d -it --name hustoj-dev -p 80:80 hustoj-dev
|
||||
docker exec -i -t hustoj-dev /bin/bash
|
||||
55
docker/hustoj/docker-entrypoint.sh
Normal file
55
docker/hustoj/docker-entrypoint.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIRECTORY="/data/data/"
|
||||
if [ ! -d $DIRECTORY ]; then
|
||||
mv /home/judge/data/ /data/
|
||||
else
|
||||
rm -R /home/judge/data/
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/data
|
||||
|
||||
DIRECTORY="/data/judge.conf"
|
||||
if [ ! -f $DIRECTORY ]; then
|
||||
mv /home/judge/etc/judge.conf /data/
|
||||
else
|
||||
rm /home/judge/etc/judge.conf
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/etc/judge.conf
|
||||
|
||||
DIRECTORY="/data/db_info.inc.php"
|
||||
if [ ! -f $DIRECTORY ]; then
|
||||
mv /home/judge/src/web/include/db_info.inc.php /data/
|
||||
else
|
||||
rm /home/judge/src/web/include/db_info.inc.php
|
||||
fi
|
||||
ln -s $DIRECTORY /home/judge/src/web/include/db_info.inc.php
|
||||
|
||||
DIRECTORY="/data/mysql"
|
||||
if [ ! -d $DIRECTORY ]; then
|
||||
mv /var/lib/mysql /data
|
||||
else
|
||||
rm -R /var/lib/mysql
|
||||
fi
|
||||
ln -s $DIRECTORY /var/lib/mysql
|
||||
|
||||
chmod 775 -R /data/data
|
||||
chgrp -R www-data /data/data
|
||||
chmod 770 -R /data/upload
|
||||
chgrp -R www-data /data/upload
|
||||
chmod 770 -R /data/judge.conf
|
||||
chgrp -R www-data /data/judge.conf
|
||||
chmod 770 -R /data/db_info.inc.php
|
||||
chgrp -R www-data /data/db_info.inc.php
|
||||
|
||||
#chown -R mysql:mysql /var/lib/mysql
|
||||
chown -R mysql:mysql /data/mysql/
|
||||
|
||||
service mysql start
|
||||
/usr/bin/judged
|
||||
php5-fpm
|
||||
service nginx start
|
||||
|
||||
/bin/bash
|
||||
exit 0
|
||||
|
||||
|
||||
21
docker/hustoj/sources.list
Normal file
21
docker/hustoj/sources.list
Normal file
@@ -0,0 +1,21 @@
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
#deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
|
||||
#deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
|
||||
Reference in New Issue
Block a user