ó (KXc@sSddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddl mZe jeƒZe jZe jZe jZd Zd d gZd d gZdgZd ZdZddddddddgZdZdgZd„Zd„Zde fd„ƒYZ!d„Z"dd„Z$dS(iÿÿÿÿN(tMIMEBase(t MIMEMultipart(tMIMENonMultipart(tMIMEText(thandlers(tlog(tutils Content-Types text/plainstext/x-not-multipartstext/x-include-urlstext/x-include-once-urlstext/cloud-config-archivestext/cloud-configsapplication/gzipsapplication/gzip-compressedsapplication/gzippedsapplication/x-compresssapplication/x-compressedsapplication/x-gunzipsapplication/x-gzipsapplication/x-gzip-compressedsNumber-AttachmentscCs||=|||           c CsÄtj|dgdttfƒ}xœ|D]”}t|ttfƒrSi|d6}nt|tƒshq(n|jddƒ}|jdƒ}|s¤t j |t ƒ}n|j ddƒ\}}|dkrÝt |d |ƒ} nt||ƒ} | j|ƒd |krt| |d ƒnd |krB| jd t|d ƒƒnxgt|jƒƒD]S} | jƒdd dd d tjƒtjƒfkr”qUn| j| || ƒqUW|j|| ƒq(WdS(NtdefaulttallowedRktttypeR#ittextt_subtypeR s launch-indexs Launch-Indexscontent-disposition(RRIRtsetRRt basestringtdictRGRRtARCHIVE_UNDEF_TYPER3RRR4RR tkeysRatATTACHMENT_FIELDR6R;( RtarchiveR=tentriestentRktmtypeRCRDRtheader((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyR:ús8!        cCs‘t|krd|tt|tt|ƒƒnd}yt|jtƒƒ}Wn-ttfk rŒt|tt|ƒƒnX|S(s Return the number of attachments to this MIMEMultipart by looking at its 'Number-Attachments' header. t0iN(R~R&R RRJRGRKRL(Rt outer_msgt new_countt fetched_count((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyt_multi_part_count%s   cCsH|j|ƒ}|j||dƒ|j|ƒ|j||dƒdS(s¸ Attach a message to an outer message. outermsg must be a MIMEMultipart. Modifies a header in the outer message to keep track of number of attachments. iN(RˆR]tattach(RR…R>t part_count((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyR;7s N( t__name__t __module__RRRRORZR]R8R:R&RˆR;(((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyRTs  H    . + cCs,|jƒpd}|jƒdkr(tStS(NRut multipart(tget_content_maintypeRaR)R*(R>t part_maintype((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyR%Csc CsÒ|sd}n|si}ntj|ƒ}d|dd!jƒkr…tj|ƒ}xv|jƒD]\}}t|||ƒqbWnI|jtt ƒ}|j ddƒ\}}t |||Œ}|j |ƒ|S(NRus mime-version:iiR#i( RR,Ratemailtmessage_from_stringt iteritemsR RGR6tNOT_MULTIPART_TYPER3RR4( traw_datatheadersRQRRtvalR‚RCRD((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pyRLs   (%RTRtemail.mime.baseRtemail.mime.multipartRtemail.mime.nonmultipartRtemail.mime.textRt cloudinitRRtloggingRt getLoggerR‹R.R“R[t OCTET_TYPER6R2R7R9R1R|R+R~RHR RtobjectRR%R&R(((s@/opt/freeware/lib/python2.7/site-packages/cloudinit/user_data.pytsB            ï