-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathii_functions.py
executable file
·96 lines (77 loc) · 2.24 KB
/
ii_functions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
import os, base64, datetime, hashlib
cwd = os.getcwd()
indexdir_name="echo/"
msgdir_name="msg/"
indexdir=os.path.join(cwd, indexdir_name)
msgdir=os.path.join(cwd, msgdir_name)
def read_file(filename):
with open(filename, "rb") as p:
return p.read().decode("utf8")
def getMsg(msgid, from_string=None):
global msgdir
try:
if from_string == None:
msg=read_file(msgdir+msgid).splitlines()
else:
msg=from_string.splitlines()
if not msgid:
msgid=None
tags=parseTags(msg[0])
if 'repto' in tags:
rpt=tags['repto']
else:
rpt=False
message="\n".join(msg[8:])
meta=dict(repto=rpt,tags=tags,echo=msg[1],time=msg[2],sender=msg[3],addr=msg[4],to=msg[5],subj=msg[6],msg=message,id=msgid)
except:
meta=dict(repto=False,tags="",echo="",time=0,sender="",addr="",to="",subj="",msg="no message",id=msgid)
return meta
def b64c(string):
return base64.b64encode(string.encode("utf8")).decode("utf8")
def b64d(str):
return base64.b64decode(str).decode("utf8")
def hsh(str):
return base64.urlsafe_b64encode( hashlib.sha256(bytes(str, "utf8")).digest() ).decode("utf8").replace('-','A').replace('_','z')[:20]
def touch(fname):
if os.path.exists(fname):
os.utime(fname, None)
else:
open(fname, 'a').close()
def savemsg(hash, echo, message):
global indexdir, msgdir
touch(msgdir+hash)
touch(indexdir+echo)
open(msgdir+hash, "wb").write(message.encode("utf8"))
open(indexdir+echo, "a").write(hash+"\n")
def getMsgList(echo):
global indexdir
if os.path.exists(indexdir+echo):
return read_file(indexdir+echo).splitlines()
else:
return []
def formatDate(time):
return datetime.datetime.fromtimestamp(int(time)).strftime("%Y-%m-%d (%A), %H:%M")
def parseTags(str):
arr=str.split("/")
tags={}
for i in range(0,len(arr),2):
if arr[i+1]:
tags[arr[i]]=arr[i+1]
return tags
def check_dirs():
global indexdir, msgdir
for directory in [indexdir, msgdir]:
if not os.path.exists(directory):
os.makedirs(directory)
def delete(filename, verbose=True):
if not os.path.exists(filename):
if verbose:
print("Файл "+filename+" не существует!")
return
try:
print("rm "+filename)
os.remove(filename)
except:
if verbose:
print("Ошибка удаления, проверьте права")