Example #1
0
def run_rapi():
    api_log.info('Starting up RCCN API manager')
    app = RESTResource(
        (SubscriberRESTService(), ResellerRESTService(), CreditRESTService(),
         StatisticsRESTService(), SMSRESTService(), ChatRESTService(),
         ConfigurationRESTService()))
    app.run(8085)
Example #2
0
 def put(self,
         request,
         msisdn='',
         name='',
         balance='',
         authorized='',
         subscription_status='',
         location='',
         equipment='',
         roaming='',
         package=''):
     api_log.info(
         '%s - [PUT] %s/%s Data: name:"%s" balance:"%s" authorized:"%s" '
         'subscription_status:"%s" location:"%s" equipment:"%s" roaming:"%s" package:"%s"',
         request.getHost().host, self.path, msisdn, name, balance,
         authorized, subscription_status, location, equipment, roaming,
         package)
     try:
         sub = Subscriber()
         if subscription_status != '':
             sub.subscription(msisdn, subscription_status)
         if authorized != '':
             sub.authorized(msisdn, authorized)
         if msisdn != '' and name != '' or balance != '':
             sub.edit(msisdn, name, balance, location, equipment, roaming,
                      package)
         data = {'status': 'success', 'error': ''}
     except SubscriberException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #3
0
 def offline(self, request, msisdn='', local='no'):
     api_log.info('%s - [PUT] %s/offline Data: msisdn: "%s"',
                  request.getClientIP(), self.path, msisdn)
     try:
         sub = Subscriber()
         sub.expire_lu(msisdn)
         data = {'status': 'success', 'error': ''}
     except SubscriberException as e:
         data = {'status': 'failed', 'error': str(e)}
         api_log.debug(data)
         return data
     # Take advantage to point this subscriber to the new location in our hlr
     # so we (at least) don't have to wait for the next hlr sync run
     try:
         if local == 'yes':
             current_bts = config['local_ip']
         else:
             current_bts = request.getClientIP()
         cur = db_conn.cursor()
         now = datetime.datetime.fromtimestamp(int(time.time()))
         cur.execute(
             'UPDATE hlr SET current_bts=%(current_bts)s, updated=%(updated)s WHERE msisdn=%(msisdn)s',
             {
                 'msisdn': msisdn,
                 'current_bts': current_bts,
                 'updated': now
             })
         db_conn.commit()
     except psycopg2.DatabaseError as e:
         data = {'status': 'failed', 'error': str(e)}
         api_log.debug(data)
         return data
     api_log.debug(data)
     return data
Example #4
0
 def calls_contexts_stats(self, request):
     api_log.info('%s - [GET] %s/calls/contexts',
                  request.getHost().host, self.path)
     try:
         stats = CallsStatistics()
         data = json.dumps(stats.get_contexts_stats(), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     return data
Example #5
0
 def search(self, request, search):
     api_log.info('%s - [GET] %s', request.getHost().host, self.path)
     try:
         sub = Subscriber()
         data = json.dumps(sub.get_msisdn_autocomplete(search))
     except SubscriberException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.debug(data)
     return data
Example #6
0
 def get(self, request):
     api_log.info('%s - [GET] %s/', request.getHost().host, self.path)
     try:
         credit = Credit()
         data = json.dumps(credit.get_all_credit_allocated(), cls=PGEncoder)
     except CreditException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.debug(data)
     return data
Example #7
0
    def getAll(self, request):
        api_log.info('%s - [GET] %s', request.getHost().host, self.path)
        try:
            reseller = Subscriber()
            data = json.dumps(reseller.get_all(), cls=PGEncoder)
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #8
0
 def get_sms_stat(self, request, year, month):
     api_log.info('%s - [GET] %s/calls/obm',
                  request.getHost().host, self.path)
     try:
         stats = CallsStatistics()
         data = json.dumps(stats.get_sms_stat(year, month), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.debug(data)
     return str(data)
Example #9
0
 def total_minutes(self, request):
     api_log.info('%s - [GET] %s/calls/total_minutes',
                  request.getHost().host, self.path)
     try:
         stats = CallsStatistics()
         data = stats.get_total_minutes()
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return str(data)
Example #10
0
 def records(self, request, year):
     api_log.info('%s - [GET] %s/records %s',
                  request.getHost().host, self.path, year)
     try:
         credit = Credit()
         data = json.dumps(credit.get_credit_records(year), cls=PGEncoder)
     except CreditException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.debug(data)
     return data
Example #11
0
 def top_destinations(self, request):
     api_log.info('%s - [GET] %s/top_destinations',
                  request.getHost().host, self.path)
     try:
         stats = CostsStatistics()
         data = json.dumps(stats.get_top_destinations(), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #12
0
 def average_call_duration(self, request):
     api_log.info('%s - [GET] %s/calls/average_call_duration',
                  request.getHost().host, self.path)
     try:
         stats = CallsStatistics()
         data = json.dumps(stats.get_average_call_duration(), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #13
0
 def credits_stats(self, request, period):
     api_log.info('%s - [POST] %s/costs/credits_stats Data: period:"%s"',
                  request.getHost().host, self.path, period)
     try:
         stats = CostsStatistics()
         data = json.dumps(stats.get_credits_stats(period), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #14
0
    def imei(self, request, partial_imei):
        api_log.info('%s - [GET] %s/%s',
                     request.getHost().host, self.path, partial_imei)
        try:
            sub = Subscriber()
            data = json.dumps(sub.get_imei_autocomplete(partial_imei))
        except SubscriberException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.debug(data)
        return data
Example #15
0
 def total_calls_by_context(self, request, context):
     api_log.info(
         '%s - [POST] %s/calls/total_calls_by_context Data: context:"%s"',
         request.getHost().host, self.path, context)
     try:
         stats = CallsStatistics()
         data = stats.get_total_calls_by_context(context)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #16
0
 def send_broadcast(self, request, text, btype, location):
     api_log.info(
         '%s - [POST] %s/send_broadcast Data: text:"%s" btype:[%s] location:"%s"',
         request.getHost().host, self.path, text, btype, location)
     try:
         sms = SMS()
         sms.send_broadcast(text, btype, location)
         data = {'status': 'success', 'error': ''}
     except SMSException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #17
0
    def month(self, request, year, month):
        api_log.info('%s - [POST] %s/month %s %s',
                     request.getHost().host, self.path, year, month)
        try:
            credit = Credit()
            data = json.dumps(credit.get_month_credit(year, month),
                              cls=PGEncoder)
        except CreditException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.debug(data)
        return data
Example #18
0
    def post(self, request, msisdn, pin, balance):
        api_log.info('%s - [POST] %s Data: msisdn:"%s" pin:"%s" balance:"%s"',
                     request.getHost().host, self.path, msisdn, pin, balance)
        try:
            reseller = Reseller()
            reseller.add(msisdn, pin, balance)
            data = {'status': 'success', 'error': ''}
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #19
0
    def delete(self, request, msisdn):
        api_log.info('%s - [DELETE] %s/%s',
                     request.getHost().host, self.path, msisdn)
        try:
            reseller = Reseller()
            reseller.delete(msisdn)
            data = {'status': 'success', 'error': ''}
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #20
0
    def reseller(self, request, msisdn, amount):
        api_log.info('%s - [POST] %s/reseller Data: msisdn:"%s" amount:"%s"',
                     request.getHost().host, self.path, msisdn, amount)
        try:
            credit = Credit()
            credit.add_to_reseller(msisdn, amount)
            data = {'status': 'success', 'error': ''}
        except CreditException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #21
0
    def put(self, request, msisdn='', pin='', balance=''):
        api_log.info('%s - [PUT] %s Data: msisdn:"%s" pin:"%s" balance:"%s"',
                     request.getHost().host, self.path, msisdn, pin, balance)
        try:
            reseller = Reseller()
            if msisdn != '' and pin != '' or balance != '':
                reseller.edit(msisdn, pin, balance)
            data = {'status': 'success', 'error': ''}
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #22
0
    def getAll(self, request):
        api_log.info('%s - [GET] %s', request.getHost().host, self.path)
        if (request.getHeader('Origin')
                and request.getHeader('Origin').find("8080") > -1):
            request.setHeader('Access-Control-Allow-Origin', '*')
        try:
            sub = Subscriber()
            data = json.dumps(sub.get_all(), cls=PGEncoder)
        except SubscriberException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #23
0
    def extension(self, request, imsi):
        api_log.info('%s - [GET] %s/%s',
                     request.getHost().host, self.path, imsi)
        if request.getHeader('Origin').find("8080") > -1:
            request.setHeader('Access-Control-Allow-Origin', '*')
        try:
            sub = Subscriber()
            data = json.dumps(sub.get_local_extension(imsi), cls=PGEncoder)
        except SubscriberException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.debug(data)
        return data
Example #24
0
    def get(self, request, msisdn):
        api_log.info('%s - [GET] %s/%s',
                     request.getHost().host, self.path, msisdn)
        try:
            reseller = Reseller()
            if msisdn == 'messages':
                data = json.dumps(reseller.get_messages(), cls=PGEncoder)
            else:
                data = json.dumps(reseller.get(msisdn), cls=PGEncoder)
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #25
0
 def get_sip_connected(self):
     try:
         _sip_connected = []
         con = ESLconnection("127.0.0.1", "8021", "ClueCon")
         e = con.api("show registrations")
         reg = e.getBody()
         lines = reg.split('\n')
         for line in lines[1:]:
             vals = line.split(',')
             if len(vals) < 10:
                 return _sip_connected
             _sip_connected.append([vals[0]])
     except Exception as ex:
         api_log.info('Exception: %s' % ex)
Example #26
0
    def put(self, request, mess1, mess2, mess3, mess4, mess5, mess6):
        api_log.info(
            '%s - [PUT] %s/edit_messages Data: mess1:"%s" mess2:"%s" mess3:"%s" mess4:"%s" mess5:"%s" mess6:"%s"',
            request.getHost().host, self.path, mess1, mess2, mess3, mess4,
            mess5, mess6)
        try:
            reseller = Reseller()
            reseller.edit_messages(mess1, mess2, mess3, mess4, mess5, mess6)
            data = {'status': 'success', 'error': ''}
        except ResellerException as e:
            data = {'status': 'failed', 'error': str(e)}

        api_log.info(data)
        return data
Example #27
0
 def receive(self, request, source, destination, charset, coding, text):
     try:
         sms = SMS()
         import threading
         thread = threading.Thread(target=sms.receive,
                                   args=(source, destination, text, charset,
                                         coding))
         thread.daemon = True
         api_log.info('Starting thread for chat message to %s via %s',
                      destination, request.getClientIP())
         thread.start()
         data = {'status': 'success', 'error': ''}
         api_log.debug(data)
         return data
     except Exception as e:
         api_log.error("Chat handler exception %s", e, exc_info=True)
Example #28
0
 def post(self, request, msisdn, name, balance, location, equipment,
          package):
     api_log.info(
         '%s - [POST] %s Data: msisdn:"%s" name:"%s" balance:"%s" location:"%s equipment:"%s" package: "%s"',
         request.getHost().host, self.path, msisdn, name, balance, location,
         equipment, package)
     try:
         sub = Subscriber()
         num = sub.add(msisdn, name, balance, location, equipment, package)
         if num != msisdn:
             data = {'status': 'success', 'error': num}
         else:
             data = {'status': 'success', 'error': ''}
     except SubscriberException as e:
         data = {'status': 'failed', 'error': str(e)}
     api_log.info(data)
     return data
Example #29
0
 def monitor_feed(self, request):
     api_log.info('%s - [GET] %s/feed', request.getHost().host, self.path)
     if request.getClientIP().find("10.23") > -1:
         request.setHeader('Access-Control-Allow-Origin', '*')
     else:
         return ''
     try:
         stats = LiveStatistics()
         data = json.dumps(stats.monitor_feed(), cls=PGEncoder)
     except StatisticException as e:
         data = {'status': 'failed', 'error': str(e)}
     except psycopg2.InterfaceError as e:
         if str(e) == "connection already closed":
             api_log.debug("Exiting due to DB Error: %s", e)
             os._exit(-1)
     api_log.debug(data)
     return data
Example #30
0
    def get(self, request, msisdn):
        api_log.info('%s - [GET] %s/%s',
                     request.getHost().host, self.path, msisdn)
        try:
            sub = Subscriber()
            if msisdn == 'all_connected':
                data = json.dumps(sub.get_all_connected(), cls=PGEncoder)
            elif msisdn == 'all_sip':
                data = json.dumps(sub.get_sip_connected())
            elif msisdn == 'unpaid_subscription':
                data = json.dumps(sub.get_unpaid_subscription(), cls=PGEncoder)
            elif msisdn == 'paid_subscription':
                data = json.dumps(sub.get_paid_subscription(), cls=PGEncoder)
            elif msisdn == 'unauthorized':
                data = json.dumps(sub.get_unauthorized(), cls=PGEncoder)
            elif msisdn == 'online':
                data = json.dumps(sub.get_online(), cls=PGEncoder)
            elif msisdn == 'offline':
                data = json.dumps(sub.get_offline(), cls=PGEncoder)
            elif msisdn == 'all_roaming':
                data = json.dumps(sub.get_roaming(), cls=PGEncoder)
            elif msisdn == 'all_foreign':
                if request.getClientIP().find("10.23") > -1:
                    request.setHeader('Access-Control-Allow-Origin', '*')
                data = json.dumps(sub.get_all_foreign(), cls=PGEncoder)
            else:
                data = json.dumps(sub.get(msisdn), cls=PGEncoder)
        except SubscriberException as e:
            data = {'status': 'failed', 'error': str(e)}

        if msisdn != 'all_connected':
            api_log.info(data)
        else:
            api_log.debug(data)

        return data