⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imapschecker.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
字号:
# -*- coding: ISO8859-1 -*-## Copyright 2003, 2004 Norwegian University of Science and Technology## This file is part of Network Administration Visualized (NAV)## NAV is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## NAV 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 NAV; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA### $Id: ImapsChecker.py 3315 2005-07-27 12:12:47Z mortenv $# Authors: Magnus Nordseth <magnun@itea.ntnu.no>#from nav.statemon.abstractChecker import AbstractCheckerfrom nav.statemon.event import  Eventfrom nav.statemon import  Socketimport imaplibimport socket#class IMAPConnection(imaplib.IMAP4):#	def __init__(self, timeout, host, port):#		self.timeout=timeout#		imaplib.IMAP4.__init__(self, host, port)###	def open(self, host, port):#		"""#		Overload imaplib's method to connect to the server#		"""#		self.sock=Socket.Socket(self.timeout)#		self.sock.connect((self.host, self.port))#		self.file = self.sock.makefile("rb")class IMAPSConnection(imaplib.IMAP4):    """IMAP4 client class over SSL connection    Instantiate with: IMAP4_SSL([host[, port[, keyfile[, certfile]]]])            host - host's name (default: localhost);            port - port number (default: standard IMAP4 SSL port).            keyfile - PEM formatted file that contains your private key (default: None);            certfile - PEM formatted certificate chain file (default: None);    for more documentation see the docstring of the parent class IMAP4.    """    def __init__(self, timeout, host = '', port = 993, keyfile = None, certfile = None):        self.keyfile = keyfile        self.certfile = certfile        self.timeout = timeout        imaplib.IMAP4.__init__(self, host, port)        # self.ctx = SSL.Context(SSL.SSLv23_METHOD)    def open(self, host, port ):        """Setup connection to remote server on "host:port".            (default: localhost:standard IMAP4 SSL port).        This connection will be used by the routines:            read, readline, send, shutdown.        """        self.host = host        self.port = port        # try with 2.3 socket        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        self.sock.connect((host, port))        self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile)        # som old things...        #self.sock = Socket.Socket(self.timeout)        #self.sslobj = SSL.Connection(self.ctx, self.sock)        #self.sslobj = Socket.ssl(self.host, self.port, self.timeout)        #self.sslobj.connect((host, port))        #self.sock.connect((host, port))        #self.sslobj = socket.ssl(self.sock.s, self.keyfile, self.certfile)        #self.sslobj = Socket.ssl(self.sock.s, self.timeout, self.keyfile, self.certfile)    def read(self, size):        """Read 'size' bytes from remote."""        # sslobj.read() sometimes returns < size bytes        data = self.sslobj.read(size)        while len(data) < size:            data += self.sslobj.read(size-len(data))        return data    def readline(self):        """Read line from remote."""        # NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method.        line = ""        while 1:            char = self.sslobj.read(1)            line += char            if char == "\n": return line    def send(self, data):        """Send data to remote."""        # NB: socket.ssl needs a "sendall" method to match socket objects.        bytes = len(data)        while bytes > 0:            sent = self.sslobj.write(data)            if sent == bytes:                break    # avoid copy            data = data[sent:]            bytes = bytes - sent    def shutdown(self):        """Close I/O established in "open"."""        self.sock.close()    def socket(self):        """Return socket instance used to connect to IMAP4 server.        socket = <instance>.socket()        """        return self.sock    def ssl(self):        """Return SSLObject instance used to communicate with the IMAP4 server.        ssl = <instance>.socket.ssl()        """        return self.sslobjclass ImapsChecker(AbstractChecker):	"""	Valid arguments:	port	username	password	"""	def __init__(self,service, **kwargs):		AbstractChecker.__init__(self, "imaps", service, port=993, **kwargs)	def execute(self):		args = self.getArgs()		user = args.get("username","")		ip, port = self.getAddress()		passwd = args.get("password","")		m = IMAPSConnection(self.getTimeout(), ip, port)		ver = m.welcome		if user:			m.login(user, passwd)			m.logout()		version=''		ver=ver.split(' ')		if len(ver) >= 2:			for i in ver[2:]:				if i != "at":					version += "%s " % i				else:					break		self.setVersion(version)				return Event.UP, versiondef getRequiredArgs():	"""	Returns a list of required arguments	"""	requiredArgs = ['username', 'password']	return requiredArgs			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -