diff options
| author | Louis Burda <quent.burda@gmail.com> | 2021-05-20 02:49:09 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2021-05-20 02:49:09 +0200 |
| commit | 1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e (patch) | |
| tree | 6c88ce49e14669527ff7da96ebef44416dc928ff /service | |
| parent | ea33a19c447df8cc3748a8b6dc8e45121fdc3570 (diff) | |
| download | enowars5-service-stldoctor-1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e.tar.gz enowars5-service-stldoctor-1109a88447e1c5cefe6ed93eccc8dcf8cd595d0e.zip | |
implemented rest of checker functionality
Diffstat (limited to 'service')
| -rw-r--r-- | service/container/.gitignore | 1 | ||||
| -rw-r--r-- | service/container/Dockerfile | 2 | ||||
| -rw-r--r-- | service/container/cleaner.sh | 7 | ||||
| -rwxr-xr-x | service/container/entrypoint.sh | 4 | ||||
| -rw-r--r-- | service/data/.keep | 0 | ||||
| -rw-r--r-- | service/do.sh | 2 | ||||
| -rw-r--r-- | service/src/main.c | 14 | ||||
| -rw-r--r-- | service/tests/test.sh | 18 |
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 |
