This file is indexed.

/usr/share/pyshared/phoupl/happyfoto.py is in photo-uploader 0.11-1.

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
# -*- coding: UTF-8 -*-
# vim: expandtab sw=4 ts=4 sts=4:
'''
Helper class for happyfoto based services.
'''
__author__ = 'Michal Čihař'
__email__ = 'michal@cihar.com'
__license__ = '''
Copyright © 2007 - 2010 Michal Čihař

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 as published by
the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
'''

import pycurl
try:
    import configparser
except ImportError:
    import ConfigParser as configparser
import re

import phoupl.core

MATCHER_SESSION = re.compile('window.location.href = \'album\?xsl=standard&action=album&id=([0-9A-Z]*)\'')

class HappyFoto:
    """
    Helper class for ilikephoto based services.
    """
    def __init__(self, domain, mnd, baseurl = None):
        if baseurl is None:
            self._baseurl = 'http://digi.%s/' % domain
        self._domain = domain
        self._mnd = mnd
        try:
            self._user = self._config.get(domain, 'user')
        except configparser.NoSectionError:
            raise phoupl.core.NotConfigured('Please set user and password in section [%s] in config file!' % domain)
        except configparser.NoOptionError:
            raise phoupl.core.NotConfigured('Please set user in section [%s] in config file!' % domain)
        try:
            self._password = self._config.get(domain, 'password')
        except configparser.NoSectionError:
            raise phoupl.core.NotConfigured('Please set user and password in section [%s] in config file!' % domain)
        except configparser.NoOptionError:
            raise phoupl.core.NotConfigured('Please set password in section [%s] in config file!' % domain)

    def _connect(self):
        # Init session...
        self.msg('Initialising session...')
        self.post('%s/album?xsl=login_success&action=login&mnd=%d' % (self._baseurl, self._mnd), [
            ('mnd', '%s' % self._mnd),
            ('txtName', self._user),
            ('txtPassword', self._password),
            ])
        data = self._buffer.getvalue()
        m = MATCHER_SESSION.search(data)
        self._session = m.group(1)

    def _upload(self, image):
        self.post('%s/album?xsl=cart&action=upload&id=%s' % (self._baseurl, self._session), [
                    ('Filedata_01', (pycurl.FORM_FILE, image)),
                    ('session', self._session),
                    ('cut', 'fit'),
                    ('total_files', '1'),
                ])
        data = self._buffer.getvalue()
        if data.find('order_confirm') == -1:
            raise phoupl.core.UploadFailed('Error while uploading file, check uploaded photos at %s.' % self.get_review_url())

    def get_review_url(self):
        return self._baseurl