Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python3 /
dist-packages /
twisted /
mail /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2026-06-05 06:15
scripts
[ DIR ]
drwxr-xr-x
2026-06-05 06:15
test
[ DIR ]
drwxr-xr-x
2026-06-05 06:15
__init__.py
142
B
-rw-r--r--
2022-02-07 22:12
_cred.py
2.68
KB
-rw-r--r--
2022-02-07 22:12
_except.py
8.52
KB
-rw-r--r--
2022-02-07 22:12
_pop3client.py
45.64
KB
-rw-r--r--
2022-02-07 22:12
alias.py
23.43
KB
-rw-r--r--
2022-02-07 22:12
bounce.py
3.1
KB
-rw-r--r--
2022-02-07 22:12
imap4.py
206.58
KB
-rw-r--r--
2022-02-07 22:12
interfaces.py
31.32
KB
-rw-r--r--
2022-02-07 22:12
mail.py
20.09
KB
-rw-r--r--
2022-02-07 22:12
maildir.py
27.08
KB
-rw-r--r--
2022-02-07 22:12
pb.py
3.62
KB
-rw-r--r--
2022-02-07 22:12
pop3.py
53.6
KB
-rw-r--r--
2022-02-07 22:12
pop3client.py
487
B
-rw-r--r--
2022-02-07 22:12
protocols.py
12.04
KB
-rw-r--r--
2022-02-07 22:12
relay.py
5.14
KB
-rw-r--r--
2022-02-07 22:12
relaymanager.py
37.6
KB
-rw-r--r--
2022-02-07 22:12
smtp.py
70.61
KB
-rw-r--r--
2022-02-07 22:12
tap.py
12.5
KB
-rw-r--r--
2022-02-07 22:12
Save
Rename
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. import os from twisted.spread import pb class Maildir(pb.Referenceable): def __init__(self, directory, rootDirectory): self.virtualDirectory = directory self.rootDirectory = rootDirectory self.directory = os.path.join(rootDirectory, directory) def getFolderMessage(self, folder, name): if "/" in name: raise OSError("can only open files in '%s' directory'" % folder) with open(os.path.join(self.directory, "new", name)) as fp: return fp.read() def deleteFolderMessage(self, folder, name): if "/" in name: raise OSError("can only delete files in '%s' directory'" % folder) os.rename( os.path.join(self.directory, folder, name), os.path.join(self.rootDirectory, ".Trash", folder, name), ) def deleteNewMessage(self, name): return self.deleteFolderMessage("new", name) remote_deleteNewMessage = deleteNewMessage def deleteCurMessage(self, name): return self.deleteFolderMessage("cur", name) remote_deleteCurMessage = deleteCurMessage def getNewMessages(self): return os.listdir(os.path.join(self.directory, "new")) remote_getNewMessages = getNewMessages def getCurMessages(self): return os.listdir(os.path.join(self.directory, "cur")) remote_getCurMessages = getCurMessages def getNewMessage(self, name): return self.getFolderMessage("new", name) remote_getNewMessage = getNewMessage def getCurMessage(self, name): return self.getFolderMessage("cur", name) remote_getCurMessage = getCurMessage def getSubFolder(self, name): if name[0] == ".": raise OSError("subfolder name cannot begin with a '.'") name = name.replace("/", ":") if self.virtualDirectoy == ".": name = "." + name else: name = self.virtualDirectory + ":" + name if not self._isSubFolder(name): raise OSError("not a subfolder") return Maildir(name, self.rootDirectory) remote_getSubFolder = getSubFolder def _isSubFolder(self, name): return not os.path.isdir( os.path.join(self.rootDirectory, name) ) or not os.path.isfile(os.path.join(self.rootDirectory, name, "maildirfolder")) class MaildirCollection(pb.Referenceable): def __init__(self, root): self.root = root def getSubFolders(self): return os.listdir(self.getRoot()) remote_getSubFolders = getSubFolders def getSubFolder(self, name): if "/" in name or name[0] == ".": raise OSError("invalid name") return Maildir(".", os.path.join(self.getRoot(), name)) remote_getSubFolder = getSubFolder class MaildirBroker(pb.Broker): def proto_getCollection(self, requestID, name, domain, password): collection = self._getCollection() if collection is None: self.sendError(requestID, "permission denied") else: self.sendAnswer(requestID, collection) def getCollection(self, name, domain, password): if domain not in self.domains: return domain = self.domains[domain] if name in domain.dbm and domain.dbm[name] == password: return MaildirCollection(domain.userDirectory(name)) class MaildirClient(pb.Broker): def getCollection(self, name, domain, password, callback, errback): requestID = self.newRequestID() self.waitingForAnswers[requestID] = callback, errback self.sendCall("getCollection", requestID, name, domain, password)