Example #1
0
 def __init__(self, filename=DB_FILE):
     if self.initialized:
         return
     log.info('Bank DB initialized...')
     self.initialized = True
     super(Bank, self).__init__(filename=filename)
     self.accounts = dict()
     self.accounts['*****@*****.**'] = Account(ADMIN_NAME, ADMIN_EMAIL,
                                              ADMIN_PASSWORD, 'Employee')
     self.init()
     self.logged_ins = dict()
     self.printLedger()
Example #2
0
 def __init__(self, filename=DB_FILE):
     if self.initialized:
         return
     log.info('Bank DB initialized...')
     self.initialized = True
     super(Bank, self).__init__(filename=filename)
     self.accounts = dict()
     self.accounts['*****@*****.**'] = Account(ADMIN_NAME, ADMIN_EMAIL,
                                              ADMIN_PASSWORD, 'Employee')
     self.init()
     self.logged_ins = dict()
     self.printLedger()
Example #3
0
 def start(self, conn, addr):
     self.respond(conn, "connecting...", str("type=valid"))
     log.info('Session started with %s' % addr)
     login_params = None
     debug = None
     try:
         while True:
             request_message, request_params = self.receive(conn, addr)
             # Get response message and parameters
             response_params = None
             response_msg = None
             debug = False
             log.info('Request from %s -  %s' % (addr, request_message))
             if request_message == "authenticate":
                 login_params = request_params
                 response_msg, account_type = Bank().login(
                     request_params['email'], request_params['password'])
                 response_params = str("type=" + account_type)
             elif request_message == "logout":
                 response_msg = "Logout Successful"
                 del Bank().logged_ins[login_params['email']]
             else:
                 response_msg, response_params, debug = self.bank_operation(
                     request_message, request_params)
             # Respond to client
             self.respond(conn, response_msg, response_params)
             if debug:
                 log.debug('Response to %s - %s' % (addr, response_msg))
                 log.info('Passbook sent to %s' % (addr))
             else:
                 log.info('Response to %s - %s' % (addr, response_msg))
             # Close connection if authentication failed or logout
             if ("Login Unsuccessful" in response_msg
                     or response_msg == "Logout Successful"):
                 conn.close()
                 break
     except Exception as e:
         if login_params['email'] in Bank().logged_ins:
             del Bank().logged_ins[login_params['email']]
         log.error(e)
         log.error('Error after menu ' + str(addr))
     finally:
         self.count -= 1
         conn.close()
Example #4
0
 def listen(self):
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     # Following line prevents this: socket.error:
     # [Errno 48] Address already in use
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     sock.bind((TCP_IP, TCP_PORT))
     sock.listen(1)
     log.info('Listening for connections...')
     while 1:
         # Accept connection from client.
         conn, addr = sock.accept()
         address = '%s:%s' % addr
         log.info('Connection request from %s' % address)
         if self.count == MAX_CONNECTIONS:
             log.info('Max connections reached, request denied...')
             conn.send("Server Busy,Try again Later~type=invalid")
             conn.close()
         else:
             log.info('Request accepted, connecting...')
             self.count += 1
             thread.start_new_thread(self.start, (conn, address))
     sock.close()
Example #5
0
 def listen(self):
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     # Following line prevents this: socket.error:
     # [Errno 48] Address already in use
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     sock.bind((TCP_IP, TCP_PORT))
     sock.listen(1)
     log.info('Listening for connections...')
     while 1:
         # Accept connection from client.
         conn, addr = sock.accept()
         address = '%s:%s' % addr
         log.info('Connection request from %s' % address)
         if self.count == MAX_CONNECTIONS:
             log.info('Max connections reached, request denied...')
             conn.send("Server Busy,Try again Later~type=invalid")
             conn.close()
         else:
             log.info('Request accepted, connecting...')
             self.count += 1
             thread.start_new_thread(self.start, (conn, address))
     sock.close()
Example #6
0
        response_params = None
        debug = False
        if request_message == "addAccount":
            response_msg = Bank().addAccount(
                Account(request_params['name'], request_params['email'],
                        request_params['password'], request_params['type']))
        elif request_message == "deleteAccount":
            response_msg = Bank().deleteAccount(request_params['email'])
        elif request_message == "changePassword":
            response_msg = Bank().changePassword(request_params['email'],
                                                 request_params['password'])
        elif request_message == "withdraw":
            log.debug('withDraw: %s' % str(request_params))
            response_msg = Bank().withDraw(request_params['email'],
                                           request_params['amount'])
        elif request_message == "deposit":
            response_msg = Bank().deposit(request_params['email'],
                                          request_params['amount'])
        elif request_message == "getPassbook":
            response_msg = Bank().getPassbook(request_params['email'])
            debug = True
        return response_msg, response_params, debug


if __name__ == '__main__':
    server_app = BcsServer()
    try:
        server_app.listen()
    except KeyboardInterrupt:
        log.info('Keyboard Interupt, Shutting down the server')