This file is indexed.

/usr/lib/python2.7/dist-packages/exotel/exotel.py is in python-exotel 0.1.5-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
# -*- coding: utf-8 -*-


import datetime
import requests

from ._compat import urljoin


class Exotel:
    def __init__(self,sid,token, baseurl='https://twilix.exotel.in/'):
        self.sid =  sid
        self.token = token
        self.baseurl = urljoin(baseurl, 'v1/Accounts/{sid}/'.format(sid=sid))

    def sms(self, from_number, to, body,encoding_type = "plain", priority = "normal", status_callback = None ):
        """
        sms - sends sms using exotel api
        """
        return requests.post(urljoin(self.baseurl, 'Sms/send.json'),
            auth = (self.sid, self.token),
            data = {
                'From': from_number,
                'To': to,
                'Body': body,
                'EncodingType':encoding_type,
                'Priority' : priority,
                'StatusCallback' : status_callback
             })

    def call_flow(self,from_number,caller_id,flow_id,timelimit = 14400,timeout = 30,status_callback=None,custom_data = None):
       """
       call_flow -creates a call to from_number and flow_id with the exophone(caller_id)
       """
       return requests.post(urljoin(self.baseurl, 'Calls/connect.json'),
        auth=(self.sid, self.token),
        data={
            'From': from_number,
            'CallerId': caller_id,
            'Url': "http://my.exotel.in/exoml/start/{flow_id}".format(flow_id=flow_id),
            'TimeLimit': timelimit,
            'CallType': "trans",
            'TimeOut' : timeout,
            'StatusCallback' : status_callback,
            'CustomField' : custom_data

        })

    def call_number(self, from_number, caller_id, to,timelimit = 14400,timeout = 30,status_callback=None,custom_data = None):
       """
       call_number -creates a call to from_number and then to with the exophone(caller_id)
       """
       return requests.post(urljoin(self.baseurl, 'Calls/connect.json'),
        auth=(self.sid, self.token),
        data={
            'From': from_number,
            'CallerId': caller_id,
            'To': to,
            'TimeLimit': timelimit,
            'CallType': "trans",
            'TimeOut' : timeout,
            'CustomField' : custom_data,
            'StatusCallback' : status_callback
        })

    def call_details(self, call_sid):
      """
       call_details - returns call details object as a response object
      """
      return requests.get(urljoin(self.baseurl, 'Calls/{}.json'.format(call_sid)), auth=(self.sid, self.token))

    def sms_details(self, sms_sid):
      """
       sms_details - returns sms details object as a response object provided the sms sid
      """
      return requests.get(urljoin(self.baseurl, 'Sms/Messages/{}.json'.format(sms_sid)), auth=(self.sid, self.token))