# Path: beeswarm/drones/honeypot/capabilities/handlerbase.py
# class HandlerBase(object):
#     def __init__(self, options, workdir):
#         """
#         Base class that all capabilities must inherit from.
# 
#         :param sessions: a dictionary of Session objects.
#         :param options: a dictionary of configuration options.
#         :param workdir: the directory which contains files for this
#                         particular instance of Beeswarm
#         """
#         self.options = options
#         self.sessions = {}
#         if 'users' in options:
#             self.users = options['users']
#         else:
#             self.users = {}
#         # virtual file system shared by all capabilities
#         self.vfsystem = OSFS(os.path.join(workdir, 'data/vfs'))
#         # service port
#         self.port = int(options['port'])
# 
#     def create_session(self, address):
#         protocol = self.__class__.__name__.lower()
#         session = Session(address[0], address[1], protocol, self.users)
#         self.sessions[session.id] = session
#         session.destination_port = self.port
#         logger.debug(
#             'Accepted {0} session on port {1} from {2}:{3}. ({4})'.format(protocol, self.port, address[0],
#                                                                           address[1], str(session.id)))
#         logger.debug('Size of session list for {0}: {1}'.format(protocol, len(self.sessions)))
#         return session
# 
#     def close_session(self, session):
#         logger.debug('Closing sessions')
#         session.end_session()
#         if session.id in self.sessions:
#             del self.sessions[session.id]
#         else:
#             assert False
# 
#     def handle_session(self, socket, address):
#         raise Exception('Do no call base class!')


import socket
import logging
from beeswarm.drones.honeypot.capabilities.handlerbase import HandlerBase

        try:
            index = int(msg) - 1
        except ValueError:
            self.send_message(session, gsocket, '-ERR no such message')
        else:
            if index < 0 or len(user_mailspool) < index:
                self.send_message(session, gsocket, '-ERR no such message')
            else:
                msg = '+OK %i octets' % (len(user_mailspool[index]))
                self.send_message(session, gsocket, msg)
                self.send_data(session, gsocket, user_mailspool[index])
                self.send_message(session, gsocket, '')
                self.send_message(session, gsocket, '.')

    def cmd_dele(self, session, gsocket, msg):

        user_mailspool = session.vdata['MAILSPOOL']

        try:
            index = int(msg) - 1
        except ValueError:
            self.send_message(session, gsocket, '-ERR no such message')
        else:
            if index < 0 or len(user_mailspool) <= index:
                self.send_message(session, gsocket, '-ERR no such message')
            else:
                if index in session['deleted_index']:
                    reply = '-ERR message %s already deleted' % (msg)
                    self.send_message(session, gsocket, reply)

# Path: beeswarm/drones/honeypot/capabilities/handlerbase.py
# class HandlerBase(object):
#     def __init__(self, options, workdir):
#         """
#         Base class that all capabilities must inherit from.
# 
#         :param sessions: a dictionary of Session objects.
#         :param options: a dictionary of configuration options.
#         :param workdir: the directory which contains files for this
#                         particular instance of Beeswarm
#         """
#         self.options = options
#         self.sessions = {}
#         if 'users' in options:
#             self.users = options['users']
#         else:
#             self.users = {}
#         # virtual file system shared by all capabilities
#         self.vfsystem = OSFS(os.path.join(workdir, 'data/vfs'))
#         # service port
#         self.port = int(options['port'])
# 
#     def create_session(self, address):
#         protocol = self.__class__.__name__.lower()
#         session = Session(address[0], address[1], protocol, self.users)
#         self.sessions[session.id] = session
#         session.destination_port = self.port
#         logger.debug(
#             'Accepted {0} session on port {1} from {2}:{3}. ({4})'.format(protocol, self.port, address[0],
#                                                                           address[1], str(session.id)))
#         logger.debug('Size of session list for {0}: {1}'.format(protocol, len(self.sessions)))
#         return session
# 
#     def close_session(self, session):
#         logger.debug('Closing sessions')
#         session.end_session()
#         if session.id in self.sessions:
#             del self.sessions[session.id]
#         else:
#             assert False
# 
#     def handle_session(self, socket, address):
#         raise Exception('Do no call base class!')


# Path: beeswarm/drones/honeypot/capabilities/pop3.py
import socket
import logging
from beeswarm.drones.honeypot.capabilities.handlerbase import HandlerBase


        try:
            index = int(msg) - 1
        except ValueError:
            self.send_message(session, gsocket, '-ERR no such message')
        else:
            if index < 0 or len(user_mailspool) < index:
                self.send_message(session, gsocket, '-ERR no such message')
            else:
                msg = '+OK %i octets' % (len(user_mailspool[index]))
                self.send_message(session, gsocket, msg)
                self.send_data(session, gsocket, user_mailspool[index])
                self.send_message(session, gsocket, '')
                self.send_message(session, gsocket, '.')

    def cmd_dele(self, session, gsocket, msg):

        user_mailspool = session.vdata['MAILSPOOL']

        try:
            index = int(msg) - 1
        except ValueError:
            self.send_message(session, gsocket, '-ERR no such message')
        else:
            if index < 0 or len(user_mailspool) <= index:
                self.send_message(session, gsocket, '-ERR no such message')
            else:
                if index in session['deleted_index']:
                    reply = '-ERR message %s already deleted' % (msg)
                    self.send_message(session, gsocket, reply)

                else: