def getentry(self): entry = gopherentry.GopherEntry(self.getselector(), self.config) entry.settype('0') entry.setname(os.path.basename(self.getselector())) entry.setmimetype('text/plain') entry.setgopherpsupport(0) return entry
def getentry(self): if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) self.entry.populatefromfs(self.getselector(), self.statresult, vfs=self.vfs) return self.entry
def getentry(self): if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) self.entry.name = self.selector self.entry.mimetype = "text/html" self.entry.type = "h" return self.entry
def getentry(self): if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) if (self.statresult and S_ISREG(self.statresult[ST_MODE]) and \ self.getselector().endswith(".gophermap")): self.entry.populatefromvfs(self.vfs, self.getselector()) else: self.entry.populatefromfs(self.getselector(), self.statresult, vfs = self.vfs) return self.entry
def getentry(self): ## Return my own entry. if not self.entry: self.entry = gopherentry.GopherEntry(self.getselector(), self.config) self.entry.settype('1') self.entry.setname(os.path.basename(self.getselector())) self.entry.setmimetype('application/gopher-menu') self.entry.setgopherpsupport(0) return self.entry
def prepare(self): self.selectorbase = self.selector if self.selectorbase == "/": self.selectorbase = "" # Avoid dup slashes if (self.getselector().endswith(".gophermap") and self.statresult and stat.S_ISREG(self.statresult[stat.ST_MODE])): selector = self.getselector() else: selector = self.selectorbase + "/gophermap" self.entries = [] selectorbase = self.selectorbase with self.vfs.open(selector, "rb") as rfile: while True: line = rfile.readline().decode(errors="surrogateescape") if not line: break if re.search("\t", line): # gophermap link args = [arg.strip() for arg in line.split("\t")] if len(args) < 2 or not len(args[1]): args[1] = args[0][ 1:] # Copy display string to selector selector = args[1] if selector[0] != "/" and selector[ 0:4] != "URL:": # Relative link selector = selectorbase + "/" + selector entry = gopherentry.GopherEntry(selector, self.config) entry.type = args[0][0] entry.name = args[0][1:] if len(args) >= 3 and len(args[2]): entry.host = args[2] if len(args) >= 4 and len(args[3]): entry.port = int(args[3]) if entry.gethost() is None and entry.getport() is None: # If we're using links on THIS server, try to fill # it in for gopher+. if self.vfs.exists(selector): entry.populatefromvfs(self.vfs, selector) self.entries.append(entry) else: # Info line line = line.strip() self.entries.append( gopherentry.getinfoentry(line, self.config))
def prepare(self): self.selectorbase = self.selector if self.selectorbase == '/': self.selectorbase = '' # Avoid dup slashes if self.getselector().endswith(".gophermap") and \ self.statresult and S_ISREG(self.statresult[ST_MODE]): self.rfile = self.vfs.open(self.getselector(), 'rb') else: self.rfile = self.vfs.open(self.selectorbase + '/gophermap', 'rb') self.entries = [] selectorbase = self.selectorbase while 1: line = self.rfile.readline() if not line: break if re.search("\t", line): # gophermap link args = [arg.strip() for arg in line.split("\t")] if len(args) < 2 or not len(args[1]): args[1] = args[0][1:] # Copy display string to selector selector = args[1] if selector[0] != '/' and selector[ 0:4] != "URL:": # Relative link selector = selectorbase + '/' + selector entry = gopherentry.GopherEntry(selector, self.config) entry.type = args[0][0] entry.name = args[0][1:] if len(args) >= 3 and len(args[2]): entry.host = args[2] if len(args) >= 4 and len(args[3]): entry.port = int(args[3]) if entry.gethost() == None and entry.getport() == None: # If we're using links on THIS server, try to fill # it in for gopher+. if self.vfs.exists(selector): entry.populatefromvfs(self.vfs, selector) self.entries.append(entry) else: # Info line line = line.strip() self.entries.append(gopherentry.getinfoentry( line, self.config))
def getentry(self): if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) self.entry.populatefromfs(self.getselector(), self.statresult, vfs=self.vfs) assert self.entry.getencoding() == "tal.TALFileHandler" # Remove the TAL encoding and revert to default. self.entry.mimetype = self.entry.getencodedmimetype() self.entry.encodedmimetype = None self.entry.realencoding = self.entry.encoding self.entry.encoding = None self.entry.type = self.entry.guesstype() return self.entry
def getentry(self, message=None): """Set the message if called from, eg, the dir handler. Saves having to rescan the file. If not set, will figure it out.""" if not message: message = self.getmessage() if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) self.entry.settype('0') self.entry.setmimetype('text/plain') self.entry.setgopherpsupport(0) subject = message.getheader('Subject', '<no subject>') # Sanitize, esp. for continuations. subject = re.sub('\s+', ' ', subject) if subject: self.entry.setname(subject) else: self.entry.setname('<no subject>') return self.entry
def getentry(self, message=None): """Set the message if called from, eg, the dir handler. Saves having to rescan the file. If not set, will figure it out.""" if not message: message = self.getmessage() if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) self.entry.settype("0") self.entry.setmimetype("text/plain") self.entry.setgopherpsupport(0) subject = message.get("Subject", "<no subject>") if isinstance(subject, Header): subject = str(subject) # Sanitize, esp. for continuations. subject = re.sub(r"\s+", " ", subject) if subject: self.entry.setname(subject) else: self.entry.setname("<no subject>") return self.entry
def getentry(self): """Returns an entry object for this request.""" if not self.entry: self.entry = gopherentry.GopherEntry(self.selector, self.config) return self.entry