From 2cb0c070a8bb41876ba496fd5956b8d0d5124e03 Mon Sep 17 00:00:00 2001
From: MrFry <mrfry@airmail.cc>
Date: Mon, 12 Oct 2020 18:01:54 +0200
Subject: [PATCH] Server stats improving to 3 days, login page fixes

---
 scripts/serverStats.sh            | 95 +++++++++++++++++++++++++------
 src/sharedViews/login.ejs         | 11 +++-
 submodules/moodle-test-userscript |  2 +-
 3 files changed, 89 insertions(+), 19 deletions(-)

diff --git a/scripts/serverStats.sh b/scripts/serverStats.sh
index c460e98..bba4798 100755
--- a/scripts/serverStats.sh
+++ b/scripts/serverStats.sh
@@ -16,16 +16,22 @@ G=''
 B=''
 P=''
 C=''
-sep="${P}--------------------------------------------------------------------------------<=$NC"
+sep="${P}----------------------------------------------------------------------------------------------------------------------------<=$NC"
 
 pcolumns () {
 	mlength=35
 	NUM=0;
 	l=$(echo $"$1" | wc -l)
 	sizeof2=$(echo $"$2" | wc -l)
+	sizeof3=$(echo $"$3" | wc -l)
+
 	if [ "$l" -lt "$sizeof2" ]; then
 		l=$(echo $"$2" | wc -l)
 	fi
+	if [ "$l" -lt "$sizeof3" ]; then
+		l=$(echo $"$3" | wc -l)
+	fi
+
 	for i in $( eval echo {0..$l} )
 	do
 		line=$(echo -ne $"$1" | cut -d$'\n' -f $(($NUM+1)))
@@ -35,9 +41,9 @@ pcolumns () {
 		diff=$(($mlength-$size))
 
         if [ "$sliced" == "null" ]; then
-          echo -n ''
+          echo -en "\t"
         else
-          echo -en "$sliced"
+          echo -en "\t$sliced"
         fi
 		if [ "$diff" -gt "0" ]; then
 			diff=$((diff+2))
@@ -51,6 +57,30 @@ pcolumns () {
 
 		sr=$(echo -ne $"$2" | cut -d$'\n' -f $(($NUM+1)))
         r=$"${sr:0:$mlength}"
+		last="${r: -3}"
+		size=${#r}
+		diff=$(($mlength-$size))
+        if [ "$r" == "null" ]; then
+          echo -ne ''
+        else
+          echo -ne "$r"
+        fi
+
+
+		if [ "$diff" -gt "0" ]; then
+			diff=$((diff+2))
+			for j in $( eval echo {0..$diff} )
+			do
+				echo -n " "
+			done
+		else
+			echo -en "$last"
+		fi
+
+
+		tr=$(echo -ne $"$3" | cut -d$'\n' -f $(($NUM+1)))
+        r=$"${tr:0:$mlength}"
+
         if [ "$r" == "null" ]; then
           echo ''
         else
@@ -63,16 +93,21 @@ pcolumns () {
 
 function jsonStats () {
   dateind=$(date '+%Y/%m/%d')
-  b=$(cat "$1" | jq ".[\"$dateind\"]" | grep -ve '^{' | grep -ve '}$' | grep -ve '^\s*}' | sort)
-  bc=$(cat "$1" | jq ".[\"$dateind\"] | length")
-  b="\t${bc}\n${b}"
-
-  dateind=$(date -d 'yesterday' '+%Y/%m/%d')
   a=$(cat "$1" | jq ".[\"$dateind\"]" | grep -ve '^{' | grep -ve '}$' | grep -ve '^\s*}' | sort)
   ac=$(cat "$1" | jq ".[\"$dateind\"] | length")
   a="\t${ac}\n${a}"
 
-  pcolumns $"$a" $"$b" | sed -E \
+  dateind=$(date -d '-1 day' '+%Y/%m/%d')
+  b=$(cat "$1" | jq ".[\"$dateind\"]" | grep -ve '^{' | grep -ve '}$' | grep -ve '^\s*}' | sort)
+  bc=$(cat "$1" | jq ".[\"$dateind\"] | length")
+  b="\t${bc}\n${b}"
+
+  dateind=$(date -d '-2 day' '+%Y/%m/%d')
+  c=$(cat "$1" | jq ".[\"$dateind\"]" | grep -ve '^{' | grep -ve '}$' | grep -ve '^\s*}' | sort)
+  cc=$(cat "$1" | jq ".[\"$dateind\"] | length")
+  c="\t${cc}\n${c}"
+
+  pcolumns $"$c" $"$b" $"$a" | sed -E \
     -e "s,/getVeteranPw,${C}&${NC},g" \
     -e "s,/getveteranpw,${C}&${NC},g" \
     -e "s,/pwRequest,${C}&${NC},g" \
@@ -110,25 +145,51 @@ function jsonStats () {
 
 function jsonStatsLength () {
   dateind=$(date '+%Y/%m/%d')
-  bc=$(cat "$1" | jq ".[\"$dateind\"] | length")
-  b="\t${bc}\n"
-
-  dateind=$(date -d 'yesterday' '+%Y/%m/%d')
   ac=$(cat "$1" | jq ".[\"$dateind\"] | length")
   a="\t${ac}\n"
 
-  pcolumns $"$a" $"$b"
+  dateind=$(date -d '-1 day' '+%Y/%m/%d')
+  bc=$(cat "$1" | jq ".[\"$dateind\"] | length")
+  b="\t${bc}\n"
+
+  dateind=$(date -d '-2 day' '+%Y/%m/%d')
+  cc=$(cat "$1" | jq ".[\"$dateind\"] | length")
+  c="\t${cc}\n"
+
+  pcolumns $"$c" $"$b" $"$a"
 }
 
-echo -e "${G}Site requests yesterday / today:$NC"
+echo -e "${G}Site requests before / yesterday / today:$NC"
 jsonStats "${1}/stats/vstats"
 
 echo -e "$sep"
-echo -e "${G}Client ID test solving count yesterday / today:$NC"
+echo -e "${G}User ID test solving count before / yesterday / today:$NC"
 jsonStatsLength "${1}/stats/idvstats"
 
 echo -e "$sep"
-echo -e "${G}User ID requests yesterday / today:$NC"
+echo -e "${G}User ID requests before / yesterday / today:$NC"
 jsonStatsLength "${1}/stats/uvstats"
 
 echo -e "$sep"
+echo -e "${G}User/data count day before / day before / yesterday + new ones yesterday:$NC"
+s=$(cat "${1}/stats/dailyDataCount" | tail -n 1 | jq '.subjectCount')
+q=$(cat "${1}/stats/dailyDataCount" | tail -n 1 | jq '.questionCount')
+u=$(cat "${1}/stats/dailyDataCount" | tail -n 1 | jq '.userCount')
+
+st=$(cat "${1}/stats/dailyDataCount" | tail -n 2 | head -n 1 | jq '.subjectCount')
+qt=$(cat "${1}/stats/dailyDataCount" | tail -n 2 | head -n 1 | jq '.questionCount')
+ut=$(cat "${1}/stats/dailyDataCount" | tail -n 2 | head -n 1 | jq '.userCount')
+
+sy=$(cat "${1}/stats/dailyDataCount" | tail -n 3 | head -n 1 | jq '.subjectCount')
+qy=$(cat "${1}/stats/dailyDataCount" | tail -n 3 | head -n 1 | jq '.questionCount')
+uy=$(cat "${1}/stats/dailyDataCount" | tail -n 3 | head -n 1 | jq '.userCount')
+
+sd=$((s-st))
+qd=$((q-qt))
+ud=$((u-ut))
+
+echo -e "Users:\t\t${G}${uy}${NC}\t\t\t\t\t${G}${ut}${NC}\t\t\t\t\t${G}${u}${NC}\t+${B}${ud}${NC}"
+echo -e "Subjects:\t${G}${sy}${NC}\t\t\t\t\t${G}${st}${NC}\t\t\t\t\t${G}${s}${NC}\t+${B}${sd}${NC}"
+echo -e "Questions:\t${G}${qy}${NC}\t\t\t\t\t${G}${qt}${NC}\t\t\t\t\t${G}${q}${NC}\t+${B}${qd}${NC}"
+
+echo -e "$sep"
diff --git a/src/sharedViews/login.ejs b/src/sharedViews/login.ejs
index 73750e6..e8bb548 100644
--- a/src/sharedViews/login.ejs
+++ b/src/sharedViews/login.ejs
@@ -65,6 +65,9 @@
           margin: 4px 2px;
           cursor: pointer;
         }
+        .disabledButton {
+          background-color: #999999;
+        }
         .ircLinkContainer {
           display: flex;
           justify-content: flex-end
@@ -90,6 +93,7 @@
       <div class='title'>
         Frylabs
       </div>
+      <div id='text' class='text'></div>
       <div id='feedback'>
         <textarea placeholder='Feedback' id='feedbackTextArea'></textarea>
         <div class='ircLinkContainer' >
@@ -162,17 +166,22 @@
       document.getElementById('text').innerText = 'Ha szeretnél választ kapni akkor kérdésed mellé írd be e-mailed, vagy kattints a lenti "IRC" linkre. Jelszót meglévő felhasználóktól kérj! E-mail esetén válasz spam-be is érkezhet!'
     }
     function HandleResp (resp) {
-      document.getElementById('sendButton').innerText = 'Login'
+      const button = document.getElementById('sendButton')
+      button.innerText = 'Login'
       const textNode = document.getElementById('text')
       if (resp.result === 'success') {
         location.reload()
         textNode.innerText = resp.msg
       } else {
         textNode.innerText = resp.msg
+        button.disabled = false
+        button.classList.remove('disabledButton')
       }
     }
     async function Login(button) {
       button.innerText = '...'
+      button.classList.add('disabledButton')
+      button.disabled = true
       const rawResponse = await fetch('<%= devel? 'http' : 'https' %>://api.frylabs.net/login', {
         method: 'POST',
         credentials: 'include',
diff --git a/submodules/moodle-test-userscript b/submodules/moodle-test-userscript
index f8d4bf2..4432038 160000
--- a/submodules/moodle-test-userscript
+++ b/submodules/moodle-test-userscript
@@ -1 +1 @@
-Subproject commit f8d4bf2a414d2973582c08bfa8b8b8f19389b2e9
+Subproject commit 443203848c09e20a812f0e1f664ba9519cf28708