This file is indexed.

/usr/lib/python2.7/dist-packages/wstools/MIMEAttachment.py is in python-wstools 0.4.3-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#TODO add the license
#I had to rewrite this class because the python MIME email.mime (version 2.5)
#are buggy, they use \n instead \r\n for new line which is not compliant
#to standard!
# http://bugs.python.org/issue5525

#TODO do not load all the message in memory stream it from the disk

import re
import random
import sys


#new line
NL = '\r\n'

_width = len(repr(sys.maxint - 1))
_fmt = '%%0%dd' % _width


class MIMEMessage:

    def __init__(self):
        self._files = []
        self._xmlMessage = ""
        self._startCID = ""
        self._boundary = ""

    def makeBoundary(self):
        #create the boundary
        msgparts = []
        msgparts.append(self._xmlMessage)
        for i in self._files:
            msgparts.append(i.read())
        #this sucks, all in memory
        alltext = NL.join(msgparts)
        self._boundary = _make_boundary(alltext)
        #maybe I can save some memory
        del alltext
        del msgparts
        self._startCID = "<" + (_fmt % random.randrange(sys.maxint)) + (_fmt % random.randrange(sys.maxint)) + ">"

    def toString(self):
        '''it return a string with the MIME message'''
        if len(self._boundary) == 0:
            #the makeBoundary hasn't been called yet
            self.makeBoundary()
        #ok we have everything let's start to spit the message out
        #first the XML
        returnstr = NL + "--" + self._boundary + NL
        returnstr += "Content-Type: text/xml; charset=\"us-ascii\"" + NL
        returnstr += "Content-Transfer-Encoding: 7bit" + NL
        returnstr += "Content-Id: " + self._startCID + NL + NL
        returnstr += self._xmlMessage + NL
        #then the files
        for file in self._files:
            returnstr += "--" + self._boundary + NL
            returnstr += "Content-Type: application/octet-stream" + NL
            returnstr += "Content-Transfer-Encoding: binary" + NL
            returnstr += "Content-Id: <" + str(id(file)) + ">" + NL + NL
            file.seek(0)
            returnstr += file.read() + NL
        #closing boundary
        returnstr += "--" + self._boundary + "--" + NL
        return returnstr

    def attachFile(self, file):
        '''
        it adds a file to this attachment
        '''
        self._files.append(file)

    def addXMLMessage(self, xmlMessage):
        '''
        it adds the XML message. we can have only one XML SOAP message
        '''
        self._xmlMessage = xmlMessage

    def getBoundary(self):
        '''
        this function returns the string used in the mime message as a
        boundary. First the write method as to be called
        '''
        return self._boundary

    def getStartCID(self):
        '''
        This function returns the CID of the XML message
        '''
        return self._startCID


def _make_boundary(text=None):
    #some code taken from python stdlib
    # Craft a random boundary.  If text is given, ensure that the chosen
    # boundary doesn't appear in the text.
    token = random.randrange(sys.maxint)
    boundary = ('=' * 10) + (_fmt % token) + '=='
    if text is None:
        return boundary
    b = boundary
    counter = 0
    while True:
        cre = re.compile('^--' + re.escape(b) + '(--)?$', re.MULTILINE)
        if not cre.search(text):
            break
        b = boundary + '.' + str(counter)
        counter += 1
    return b