summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorlogin2021-10-17 16:25:53 +0000
committerlogin2021-10-17 16:25:53 +0000
commitb0de38eafe7fe897f907066dc1ef923073690d5d (patch)
tree7abbf3ee84417762fadbc7493e0ff119aeba3e9d /utils
parentbd53b1ec0cf20e79828e8e95576a44f1eaf004db (diff)
pcoin_keys fixed
Thanks to ~jmjl, I was able to find that pcoin_keys didn't work. To fix it, tcoin uses sneaky magic but with stdin isntead of an argument, and a new library imported called popen2, that lets me send both stdin and receive stdout, to successfully get "ls <path to the pcoin_keys directory>" to work (it execl's another instance of the tcoin comand so that it runs under setuid instead of as the original user who ran it.
Diffstat (limited to 'utils')
-rwxr-xr-xutils/ftc6
-rwxr-xr-xutils/message-sum-tcoin-helper-supersummary.awk179
-rwxr-xr-xutils/message-sum-tcoin-helper.awk179
-rwxr-xr-xutils/message-tcoin-converter.awk193
-rwxr-xr-xutils/mst3
-rwxr-xr-xutils/mstss3
-rwxr-xr-xutils/mtc4
-rwxr-xr-xutils/tcc3
8 files changed, 570 insertions, 0 deletions
diff --git a/utils/ftc b/utils/ftc
new file mode 100755
index 0000000..132c41d
--- /dev/null
+++ b/utils/ftc
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+#ftc -> full tcoin check
+
+
+/usr/bin/diff <(/bin/ls /home/login/tcoin/*.txt | /usr/bin/xargs -n 1 /bin/cat) <(/bin/ls /home/login/tcoin/messages/* | /usr/bin/xargs -n 1 /home/login/bin/mstss)
diff --git a/utils/message-sum-tcoin-helper-supersummary.awk b/utils/message-sum-tcoin-helper-supersummary.awk
new file mode 100755
index 0000000..a5fb27f
--- /dev/null
+++ b/utils/message-sum-tcoin-helper-supersummary.awk
@@ -0,0 +1,179 @@
+#!/usr/bin/gawk -Mf
+
+#mst.awk -> message_sum_tcoin.awk
+
+BEGIN {
+ supersummary=1
+ summary=0
+ sum=0
+ sumplus=0
+ summinus=0
+ self_user=""
+ self_user_found=0
+ FS=""
+}
+
+(NR == 1) {
+ #Determining onlyo (only other-user) from first line (see /home/login/mst)
+ if($0 ~ /^[a-zA-Z0-9_.\-]+/) {
+ if(substr($0,NF-12) == "_messages.txt") {
+ onlyo=substr($0,1,NF-13)
+ }
+ else {
+ onlyo=$0
+ }
+ }
+}
+
+(NR != 1) {
+ term=0
+ other_user=""
+ other_user_found=0
+ if ($0 == "" || $1==" ") {
+ next
+ }
+
+ for (a=1;a!=NF;a++) {
+ # other-user determination
+ if ($a == ":" && a == 25) {
+ for (b=a+1;;b++) {
+ if ($b ~ /^[a-zA-Z0-9_\-]/) {
+ for(c=b;;c++) {
+ if ($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ other_user = ((other_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ other_user_found=1
+ }
+ # self-username determination
+ else if ($a == "<" && !self_user_found) {
+ for (b=a+1;;b++) {
+ if ($b == " ") {
+ for(c=b+1;;c++) {
+ if($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ if (!supersummary) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ else if ($a == ">" && !self_user_found) {
+ for (b=a+2;;b++) {
+ if($b ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($b))
+ }
+ }
+ if (!supersummary) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ }
+
+ if (onlyo && (onlyo != other_user)) {
+ #print other_user, "SKIPPED!"
+ next
+ }
+
+ if (self_user == other_user) {
+ #print "EQUAL USER!"
+ next
+ }
+
+ for (i=1;i!=NF;i++) {
+ if (i <= 26 && !summary && !supersummary) {
+ old_ors=ORS;ORS=""; if (!supersummary) { print $i; } ORS=old_ors
+ }
+ else if ($i == "<") {
+ for(j=i+4;;j++) {
+ if ($j == ".") {
+ l=10
+ for(k=j+1;;k++) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + $k/l
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ term = term*10 + $j
+ }
+ }
+ sum = sum - term;
+ summinus = summinus + term;
+ olistminus[other_user] += term;
+ olist[other_user] -= term;
+ if(!summary && !supersummary) { print -1*term, "O:", other_user }
+ next
+ }
+ else if($i == ">") {
+ multiplier=1
+ for(j=i-5;;j--) {
+ if ($j == ".") {
+ multiplier=1
+ l=1
+ for(k=j-1;;k--) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + ($k)*l;
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ multiplier = multiplier*10
+ term = (term + $j)/10
+ }
+ }
+ term = term * multiplier
+ sum = sum + term;
+ sumplus = sumplus + term;
+ olistplus[other_user] += term;
+ olist[other_user] += term;
+ if (!summary && !supersummary) { print 1*term, "O:", other_user }
+ next
+ }
+ }
+}
+
+END {
+ if (!supersummary)
+ {
+ print "--USERLIST-START--"
+ for (key in olist) {
+ print key, 1*olist[key], "Cr:", 1*olistplus[key], "Dr:", -1*olistminus[key]
+ }
+ print "---USERLIST-END---"
+ print "GRAND TOTAL:", 1*sum
+ print "CREDIT:", 1*sumplus
+ print "DEBIT:", -1*summinus
+ }
+ else
+ {
+ printf "%.0f\n", 100*sum
+ }
+}
diff --git a/utils/message-sum-tcoin-helper.awk b/utils/message-sum-tcoin-helper.awk
new file mode 100755
index 0000000..1f2ec4b
--- /dev/null
+++ b/utils/message-sum-tcoin-helper.awk
@@ -0,0 +1,179 @@
+#!/usr/bin/gawk -Mf
+
+#mst.awk -> message_sum_tcoin.awk
+
+BEGIN {
+ supersummary=0
+ summary=0
+ sum=0
+ sumplus=0
+ summinus=0
+ self_user=""
+ self_user_found=0
+ FS=""
+}
+
+(NR == 1) {
+ #Determining onlyo (only other-user) from first line (see /home/login/mst)
+ if($0 ~ /^[a-zA-Z0-9_.\-]+/) {
+ if(substr($0,NF-12) == "_messages.txt") {
+ onlyo=substr($0,1,NF-13)
+ }
+ else {
+ onlyo=$0
+ }
+ }
+}
+
+(NR != 1) {
+ term=0
+ other_user=""
+ other_user_found=0
+ if ($0 == "" || $1==" ") {
+ next
+ }
+
+ for (a=1;a!=NF;a++) {
+ # other-user determination
+ if ($a == ":" && a == 25) {
+ for (b=a+1;;b++) {
+ if ($b ~ /^[a-zA-Z0-9_\-]/) {
+ for(c=b;;c++) {
+ if ($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ other_user = ((other_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ other_user_found=1
+ }
+ # self-username determination
+ else if ($a == "<" && !self_user_found) {
+ for (b=a+1;;b++) {
+ if ($b == " ") {
+ for(c=b+1;;c++) {
+ if($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ if (!supersummary) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ else if ($a == ">" && !self_user_found) {
+ for (b=a+2;;b++) {
+ if($b ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($b))
+ }
+ }
+ if (!supersummary) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ }
+
+ if (onlyo && (onlyo != other_user)) {
+ #print other_user, "SKIPPED!"
+ next
+ }
+
+ if (self_user == other_user) {
+ #print "EQUAL USER!"
+ next
+ }
+
+ for (i=1;i!=NF;i++) {
+ if (i <= 26 && !summary && !supersummary) {
+ old_ors=ORS;ORS=""; if (!supersummary) { print $i; } ORS=old_ors
+ }
+ else if ($i == "<") {
+ for(j=i+4;;j++) {
+ if ($j == ".") {
+ l=10
+ for(k=j+1;;k++) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + $k/l
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ term = term*10 + $j
+ }
+ }
+ sum = sum - term;
+ summinus = summinus + term;
+ olistminus[other_user] += term;
+ olist[other_user] -= term;
+ if(!summary && !supersummary) { printf "%.2f %s %s\n", -1*term, "O:", other_user }
+ next
+ }
+ else if($i == ">") {
+ multiplier=1
+ for(j=i-5;;j--) {
+ if ($j == ".") {
+ multiplier=1
+ l=1
+ for(k=j-1;;k--) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + ($k)*l;
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ multiplier = multiplier*10
+ term = (term + $j)/10
+ }
+ }
+ term = term * multiplier
+ sum = sum + term;
+ sumplus = sumplus + term;
+ olistplus[other_user] += term;
+ olist[other_user] += term;
+ if (!summary && !supersummary) { printf "%.2f %s %s\n", 1*term, "O:", other_user }
+ next
+ }
+ }
+}
+
+END {
+ if (!supersummary)
+ {
+ print "--USERLIST-START--"
+ for (key in olist) {
+ printf "%s %.2f %s %.2f %s %s\n", key, 1*olist[key], "Cr:", 1*olistplus[key], "Dr:", -1*olistminus[key]
+ }
+ print "---USERLIST-END---"
+ printf "%s %.2f\n", "GRAND TOTAL:", 1*sum
+ printf "%s %.2f\n", "CREDIT:", 1*sumplus
+ printf "%s %.2f\n", "DEBIT:", -1*summinus
+ }
+ else
+ {
+ printf "%d\n", 100*sum
+ }
+}
diff --git a/utils/message-tcoin-converter.awk b/utils/message-tcoin-converter.awk
new file mode 100755
index 0000000..81ea0e4
--- /dev/null
+++ b/utils/message-tcoin-converter.awk
@@ -0,0 +1,193 @@
+#!/usr/bin/awk -f
+
+#mst.awk -> message_sum_tcoin.awk
+
+BEGIN {
+ tsv=1
+ summary=0
+ sum=0
+ sumplus=0
+ summinus=0
+ self_user=""
+ self_user_found=0
+ prev_self_txn=0
+ FS=""
+}
+
+(NR == 1) {
+ #Determining onlyo (only other-user) from first line (see /home/login/mst)
+ if($0 ~ /^[a-zA-Z0-9_.\-]+/) {
+ if(substr($0,NF-12) == "_messages.txt") {
+ onlyo=substr($0,1,NF-13)
+ }
+ else {
+ onlyo=$0
+ }
+ }
+}
+
+(NR != 1) {
+ term=0
+ other_user=""
+ other_user_found=0
+ if ($0 == "" || $1==" ") {
+ if($1==" " && !prev_self_txn) {
+ i=1;
+ while($i != ":") { ++i }
+ message_user = substr($0, 5, i-10); #position (i-5) - position (5) + 1 = length of message_user, where position (i-5) is the position of the last character of message_user
+ old_ofs=OFS;OFS="";print "\n", message_user, "\t", substr($0,i+2);OFS=old_ofs;
+ }
+ next
+ }
+
+ for (a=1;a!=NF;a++) {
+ # other-user determination
+ if ($a == ":" && a == 25) {
+ for (b=a+1;;b++) {
+ if ($b ~ /^[a-zA-Z0-9_\-]/) {
+ for(c=b;;c++) {
+ if ($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ other_user = ((other_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ other_user_found=1
+ }
+ # self-username determination
+ else if ($a == "<" && !self_user_found) {
+ for (b=a+1;;b++) {
+ if ($b == " ") {
+ for(c=b+1;;c++) {
+ if($c ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($c))
+ }
+ }
+ break
+ }
+ }
+ if (!tsv) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ else if ($a == ">" && !self_user_found) {
+ for (b=a+2;;b++) {
+ if($b ~ /^[^a-zA-Z0-9_\-]?$/) {
+ break
+ }
+ else {
+ self_user = ((self_user) ($b))
+ }
+ }
+ if (!tsv) { print "S:", self_user }
+ self_user_found = 1
+ break
+ }
+ }
+
+ if (onlyo && (onlyo != other_user)) {
+ #print other_user, "SKIPPED!"
+ next
+ }
+
+ if (self_user == other_user) {
+ prev_self_txn = 1
+ #print "EQUAL USER!"
+ next
+ }
+ else {
+ prev_self_txn = 0
+ }
+
+ for (i=1;i!=NF;i++) {
+ if (i <= 26 && !summary) {
+ if(tsv && i == 25) {
+ old_ors=ORS;ORS="";print "\t";ORS=old_ors
+ }
+ else if(tsv && i == 26) {
+ #do nothing, don't print the "space"
+ }
+ else {
+ old_ors=ORS;ORS="";print $i;ORS=old_ors
+ }
+ }
+ else if ($i == "<") {
+ for(j=i+4;;j++) {
+ if ($j == ".") {
+ l=10
+ for(k=j+1;;k++) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + $k/l
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ term = term*10 + $j
+ }
+ }
+ sum = sum - term;
+ summinus = summinus + term;
+ olistminus[other_user] += term;
+ olist[other_user] -= term;
+ if(!summary) { if(tsv){ old_ofs=OFS;OFS="\t"; print other_user, self_user, -1*term; OFS=old_ofs } else { print -1*term, "O:", other_user } }
+ next
+ }
+ else if($i == ">") {
+ multiplier=1
+ for(j=i-5;;j--) {
+ if ($j == ".") {
+ multiplier=1
+ l=1
+ for(k=j-1;;k--) {
+ if ($k ~ /^[^0-9]/) {
+ break
+ }
+ term = term + ($k)*l;
+ l=l*10
+ }
+ break
+ }
+ else if ($j ~ /^[^0-9]/) {
+ break
+ }
+ else {
+ multiplier = multiplier*10
+ term = (term + $j)/10
+ }
+ }
+ term = term * multiplier
+ sum = sum + term;
+ sumplus = sumplus + term;
+ olistplus[other_user] += term;
+ olist[other_user] += term;
+ if (!summary) { if(tsv){ old_ofs=OFS;OFS="\t"; print other_user, self_user, term; OFS=old_ofs } else{ print 1*term, "O:", other_user } }
+ next
+ }
+ }
+}
+
+END {
+ if(!tsv) {
+ print "--USERLIST-START--"
+ for (key in olist) {
+ print key, 1*olist[key], "Cr:", 1*olistplus[key], "Dr:", -1*olistminus[key]
+ }
+ print "---USERLIST-END---"
+ print "GRAND TOTAL:", 1*sum
+ print "CREDIT:", 1*sumplus
+ print "DEBIT:", -1*summinus
+ }
+}
diff --git a/utils/mst b/utils/mst
new file mode 100755
index 0000000..1524ac3
--- /dev/null
+++ b/utils/mst
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+(/bin/echo "$2"; /bin/cat "$1") | /home/login/bin/message-sum-tcoin-helper.awk -
diff --git a/utils/mstss b/utils/mstss
new file mode 100755
index 0000000..d66cccf
--- /dev/null
+++ b/utils/mstss
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+(/bin/echo "$2"; /bin/cat "$1") | /home/login/bin/message-sum-tcoin-helper-supersummary.awk -
diff --git a/utils/mtc b/utils/mtc
new file mode 100755
index 0000000..ba14d90
--- /dev/null
+++ b/utils/mtc
@@ -0,0 +1,4 @@
+#!/bin/bash
+#Message Tcoin Converter
+(/bin/echo;/bin/cat "$1") | /home/login/bin/message-tcoin-converter.awk - | /bin/sed -e 'H;${x;s/\n\n/\t/g;p;};d' | /usr/bin/awk -F'\t' -v OFS='\t' '$1 {cmd="/bin/date -d \""$1"\" +%s"; cmd | getline $1; close(cmd)} 1' -
+
diff --git a/utils/tcc b/utils/tcc
new file mode 100755
index 0000000..ac32743
--- /dev/null
+++ b/utils/tcc
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+/bin/cat /home/login/tcoin/*.txt | /usr/bin/paste -sd+ - | /usr/bin/bc