aboutsummaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2021-05-20 02:49:09 +0200
committerLouis Burda <quent.burda@gmail.com>2021-05-20 02:49:09 +0200
commit1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e (patch)
tree6c88ce49e14669527ff7da96ebef44416dc928ff /service
parentea33a19c447df8cc3748a8b6dc8e45121fdc3570 (diff)
downloadenowars5-service-stldoctor-1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e.tar.gz
enowars5-service-stldoctor-1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e.zip
implemented rest of checker functionality
Diffstat (limited to 'service')
-rw-r--r--service/container/.gitignore1
-rw-r--r--service/container/Dockerfile2
-rw-r--r--service/container/cleaner.sh7
-rwxr-xr-xservice/container/entrypoint.sh4
-rw-r--r--service/data/.keep0
-rw-r--r--service/do.sh2
-rw-r--r--service/src/main.c14
-rw-r--r--service/tests/test.sh18
8 files changed, 37 insertions, 11 deletions
diff --git a/service/container/.gitignore b/service/container/.gitignore
index 8eba6c8..8156e3e 100644
--- a/service/container/.gitignore
+++ b/service/container/.gitignore
@@ -1 +1,2 @@
src/
+data/
diff --git a/service/container/Dockerfile b/service/container/Dockerfile
index e987831..ba6535f 100644
--- a/service/container/Dockerfile
+++ b/service/container/Dockerfile
@@ -19,6 +19,6 @@ WORKDIR /service/
RUN make clean && make
EXPOSE 9000
-ENV RESULTDIR=/data/scans
+ENV RESULTDIR=/data/uploads
ENTRYPOINT ["/entrypoint.sh"]
diff --git a/service/container/cleaner.sh b/service/container/cleaner.sh
index 2882608..bd67705 100644
--- a/service/container/cleaner.sh
+++ b/service/container/cleaner.sh
@@ -12,7 +12,12 @@ if [ -f "$timeref" ]; then
echo "$files" | while read path; do
rm -rf "$path"
done
- echo "[ $(date +%T) ] Removed $(echo -n "$files" | wc -l) old files!"
+ if [ -z "$files" ]; then
+ filecount=0
+ else
+ filecount=$(echo "$files" | wc -l)
+ fi
+ echo "[ $(date +%T) ] Removed $filecount old files!"
fi
touch "$timeref"
diff --git a/service/container/entrypoint.sh b/service/container/entrypoint.sh
index 956c747..4974a8f 100755
--- a/service/container/entrypoint.sh
+++ b/service/container/entrypoint.sh
@@ -6,9 +6,9 @@ mkdir -p "$RESULTDIR"
while [ 1 ]; do
/cleaner.sh
- sleep 180
+ sleep 200
done &
-servicecmd='socat -T30 -s TCP-LISTEN:9000,reuseaddr,fork EXEC:"/service/stldoctor",raw,pty,echo=0,stderr'
+servicecmd='socat -T30 -s TCP-LISTEN:9000,reuseaddr,fork EXEC:"/service/build/stldoctor",raw,pty,echo=0,stderr'
su -s /bin/sh -c "$servicecmd" service
diff --git a/service/data/.keep b/service/data/.keep
deleted file mode 100644
index e69de29..0000000
--- a/service/data/.keep
+++ /dev/null
diff --git a/service/do.sh b/service/do.sh
index 168d495..fd3b8b0 100644
--- a/service/do.sh
+++ b/service/do.sh
@@ -52,7 +52,7 @@ elif [ "$1" == "cleansrc" ]; then
fi
done
elif [ "$1" == "test" ]; then
- SRCDIR="$PWD/src" DATADIR="$PWD/data" bash "tests/test.sh" ${@:2}
+ SRCDIR="$PWD/src" DATADIR="$PWD/container/data" bash "tests/test.sh" ${@:2}
elif [ "$1" == "make" ]; then
# build a normal version
cd src
diff --git a/service/src/main.c b/service/src/main.c
index 959ef58..e79e04e 100644
--- a/service/src/main.c
+++ b/service/src/main.c
@@ -171,9 +171,9 @@ void
search_cmd(const char *arg)
{
char *end, *scandir = NULL, *infopath = NULL, *modelpath = NULL;
- const char *hash;
+ int i, which, dirstart, ishidden;
+ const char *hash, *name;
struct dirent *de;
- int i, which, dirstart;
DIR *d = NULL;
FILE *f = NULL;
size_t size;
@@ -190,9 +190,13 @@ search_cmd(const char *arg)
if (!(d = opendir(resultdir))) return;
+ printf("%s %s\n", resultdir, hash);
+
dirstart = telldir(d);
for (i = 0; (de = readdir(d));) {
- if (!strpfcmp(hash, de->d_name) && *de->d_name != '.') {
+ name = de->d_name;
+ if (loggedin && *name == '.' && !strpfcmp(hash, name + 1)
+ || !loggedin && *name != '.' && !strpfcmp(hash, name)) {
printf("%i : %s\n", i, de->d_name);
i++;
}
@@ -211,7 +215,9 @@ search_cmd(const char *arg)
seekdir(d, dirstart);
for (i = 0; (de = readdir(d));) {
- if (!strpfcmp(hash, de->d_name) && *de->d_name != '.') {
+ name = de->d_name;
+ if (loggedin && *name == '.' && !strpfcmp(hash, name + 1)
+ || !loggedin && *name != '.' && !strpfcmp(hash, name)) {
if (i == which) {
scandir = aprintf("%s/%s", resultdir, de->d_name);
break;
diff --git a/service/tests/test.sh b/service/tests/test.sh
index ddefa03..1edd979 100644
--- a/service/tests/test.sh
+++ b/service/tests/test.sh
@@ -47,10 +47,13 @@ connect() {
fi
}
-[ ! -z "$RESULTDIR" ] && rm -rf "$RESULTDIR"
-mkdir -p "$RESULTDIR"
+cleanuploads() {
+ [ ! -z "$RESULTDIR" ] && rm -rf "$RESULTDIR"
+ mkdir -p "$RESULTDIR"
+}
if [ "$1" == "stl" ]; then
+ cleanuploads
announce "Testing ASCII STL Parsing"
(
@@ -71,6 +74,7 @@ if [ "$1" == "stl" ]; then
) | checkleaks
elif [ "$1" == "vuln1" ]; then
+ cleanuploads
announce "Testing Flagstore 1"
@@ -121,6 +125,7 @@ elif [ "$1" == "vuln1" ]; then
) | connect
elif [ "$1" == "vuln2" ]; then
+ cleanuploads
announce "Testing Flagstore 2"
@@ -145,6 +150,8 @@ elif [ "$1" == "vuln2" ]; then
) | connect
elif [ "$1" == "authupload" ]; then
+ cleanuploads
+
(
echo "echo"
@@ -153,7 +160,14 @@ elif [ "$1" == "authupload" ]; then
cat "$TESTDATA/sample-ascii.stl" | wc -c
cat "$TESTDATA/sample-ascii.stl"
echo "testname"
+ ) | connect
+
+ (
+ echo "echo"
+
+ echo "auth test"
echo "list"
+ echo "search testname"
) | connect
else
connect