def __init__(self, config, formatter, feed): self.formatter=formatter self.feed=feed folder=config['folder'] if config['feeds-in-folders']: name = string.strip(self.feed.name).decode('utf-8') segments = name.split(u'·') folder=mailfolder_join( folder, *(safefilenames.makesafe(seg.encode('utf-8')) for seg in segments) ) log.chatty('Storing to Maildir', config['maildir'], folder and 'folder '+folder or 'default folder') dir = config['maildir'] if folder is not None: dir = os.path.join(dir, '.'+folder) self.dir = dir
def test_empty(self): self.failUnlessEqual(safefilenames.makesafe(''), '')
def test_attacks(self): self.failUnlessEqual(safefilenames.makesafe('../../etc/passwd'), 'etc_passwd')
def test_valid(self): self.failUnlessEqual(safefilenames.makesafe('abc0+42-99XYZ'), 'abc0+42-99XYZ')
def test_leadingUnderscoresNotRemoved(self): self.failUnlessEqual(safefilenames.makesafe('___foo'), '___foo')
def test_trailingUnderscoresNotRemoved(self): self.failUnlessEqual(safefilenames.makesafe('foo___'), 'foo___')
def test_trailingBadCharsRemoved(self): self.failUnlessEqual(safefilenames.makesafe('foo!!!'), 'foo')
def test_leadingBadCharsRemoved(self): self.failUnlessEqual(safefilenames.makesafe('!!!foo'), 'foo')
def test_intermixed(self): self.failUnlessEqual(safefilenames.makesafe('foo/Bar.baz'), 'foo_Bar_baz')
def test_knownBadWithUnderscoresHidden(self): self.failUnlessEqual(safefilenames.makesafe(' ./,\\_\n_\r!\0'), '___')
def test_knownBad(self): self.failUnlessEqual(safefilenames.makesafe(' ./,\\\n\r!\0'), '')