亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connector.py

?? 尚學堂科技JAVA系列教程之JAVA系列BBS_2007的講解源代碼
?? PY
?? 第 1 頁 / 共 2 頁
字號:
#!/usr/bin/env python

"""
FCKeditor - The text editor for Internet - http://www.fckeditor.net
Copyright (C) 2003-2007 Frederico Caldeira Knabben

== BEGIN LICENSE ==

Licensed under the terms of any of the following licenses at your
choice:

 - GNU General Public License Version 2 or later (the "GPL")
   http://www.gnu.org/licenses/gpl.html

 - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
   http://www.gnu.org/licenses/lgpl.html

 - Mozilla Public License Version 1.1 or later (the "MPL")
   http://www.mozilla.org/MPL/MPL-1.1.html

== END LICENSE ==

Connector for Python.

Tested With:
Standard:
	Python 2.3.3
Zope:
	Zope Version: (Zope 2.8.1-final, python 2.3.5, linux2)
	Python Version: 2.3.5 (#4, Mar 10 2005, 01:40:25)
		[GCC 3.3.3 20040412 (Red Hat Linux 3.3.3-7)]
	System Platform: linux2
"""

"""
Author Notes (04 December 2005):
This module has gone through quite a few phases of change.  Obviously,
I am only supporting that part of the code that I use.  Initially
I had the upload directory as a part of zope (ie. uploading files
directly into Zope), before realising that there were too many
complex intricacies within Zope to deal with.  Zope is one ugly piece
of code.  So I decided to complement Zope by an Apache server (which
I had running anyway, and doing nothing).  So I mapped all uploads
from an arbitrary server directory to an arbitrary web directory.
All the FCKeditor uploading occurred this way, and I didn't have to
stuff around with fiddling with Zope objects and the like (which are
terribly complex and something you don't want to do - trust me).

Maybe a Zope expert can touch up the Zope components.  In the end,
I had FCKeditor loaded in Zope (probably a bad idea as well), and
I replaced the connector.py with an alias to a server module.
Right now, all Zope components will simple remain as is because
I've had enough of Zope.

See notes right at the end of this file for how I aliased out of Zope.

Anyway, most of you probably wont use Zope, so things are pretty
simple in that regard.

Typically, SERVER_DIR is the root of WEB_DIR (not necessarily).
Most definitely, SERVER_USERFILES_DIR points to WEB_USERFILES_DIR.
"""

import cgi
import re
import os
import string

"""
escape

Converts the special characters '<', '>', and '&'.

RFC 1866 specifies that these characters be represented
in HTML as &lt; &gt; and &amp; respectively. In Python
1.5 we use the new string.replace() function for speed.
"""
def escape(text, replace=string.replace):
    text = replace(text, '&', '&amp;') # must be done 1st
    text = replace(text, '<', '&lt;')
    text = replace(text, '>', '&gt;')
    text = replace(text, '"', '&quot;')
    return text

"""
getFCKeditorConnector

Creates a new instance of an FCKeditorConnector, and runs it
"""
def getFCKeditorConnector(context=None):
	# Called from Zope.  Passes the context through
	connector = FCKeditorConnector(context=context)
	return connector.run()


"""
FCKeditorRequest

A wrapper around the request object
Can handle normal CGI request, or a Zope request
Extend as required
"""
class FCKeditorRequest(object):
	def __init__(self, context=None):
		if (context is not None):
			r = context.REQUEST
		else:
			r = cgi.FieldStorage()
		self.context = context
		self.request = r

	def isZope(self):
		if (self.context is not None):
			return True
		return False

	def has_key(self, key):
		return self.request.has_key(key)

	def get(self, key, default=None):
		value = None
		if (self.isZope()):
			value = self.request.get(key, default)
		else:
			if key in self.request.keys():
				value = self.request[key].value
			else:
				value = default
		return value

"""
FCKeditorConnector

The connector class
"""
class FCKeditorConnector(object):
	# Configuration for FCKEditor
	# can point to another server here, if linked correctly
	#WEB_HOST = "http://127.0.0.1/"
	WEB_HOST = ""
	SERVER_DIR = "/var/www/html/"

	WEB_USERFILES_FOLDER = WEB_HOST + "upload/"
	SERVER_USERFILES_FOLDER = SERVER_DIR + "upload/"

	# Allow access (Zope)
	__allow_access_to_unprotected_subobjects__ = 1
	# Class Attributes
	parentFolderRe = re.compile("[\/][^\/]+[\/]?$")

	"""
	Constructor
	"""
	def __init__(self, context=None):
		# The given root path will NOT be shown to the user
		# Only the userFilesPath will be shown

		# Instance Attributes
		self.context = context
		self.request = FCKeditorRequest(context=context)
		self.rootPath = self.SERVER_DIR
		self.userFilesFolder = self.SERVER_USERFILES_FOLDER
		self.webUserFilesFolder = self.WEB_USERFILES_FOLDER

		# Enables / Disables the connector
		self.enabled = False # Set to True to enable this connector

		# These are instance variables
		self.zopeRootContext = None
		self.zopeUploadContext = None

		# Copied from php module =)
		self.allowedExtensions = {
				"File": None,
				"Image": None,
				"Flash": None,
				"Media": None
				}
		self.deniedExtensions = {
				"File": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
				"Image": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
				"Flash": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ],
				"Media": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ]
				}

	"""
	Zope specific functions
	"""
	def isZope(self):
		# The context object is the zope object
		if (self.context is not None):
			return True
		return False

	def getZopeRootContext(self):
		if self.zopeRootContext is None:
			self.zopeRootContext = self.context.getPhysicalRoot()
		return self.zopeRootContext

	def getZopeUploadContext(self):
		if self.zopeUploadContext is None:
			folderNames = self.userFilesFolder.split("/")
			c = self.getZopeRootContext()
			for folderName in folderNames:
				if (folderName <> ""):
					c = c[folderName]
			self.zopeUploadContext = c
		return self.zopeUploadContext

	"""
	Generic manipulation functions
	"""
	def getUserFilesFolder(self):
		return self.userFilesFolder

	def getWebUserFilesFolder(self):
		return self.webUserFilesFolder

	def getAllowedExtensions(self, resourceType):
		return self.allowedExtensions[resourceType]

	def getDeniedExtensions(self, resourceType):
		return self.deniedExtensions[resourceType]

	def removeFromStart(self, string, char):
		return string.lstrip(char)

	def removeFromEnd(self, string, char):
		return string.rstrip(char)

	def convertToXmlAttribute(self, value):
		if (value is None):
			value = ""
		return escape(value)

	def convertToPath(self, path):
		if (path[-1] <> "/"):
			return path + "/"
		else:
			return path

	def getUrlFromPath(self, resourceType, path):
		if (resourceType is None) or (resourceType == ''):
			url = "%s%s" % (
					self.removeFromEnd(self.getUserFilesFolder(), '/'),
					path
					)
		else:
			url = "%s%s%s" % (
					self.getUserFilesFolder(),
					resourceType,
					path
					)
		return url

	def getWebUrlFromPath(self, resourceType, path):
		if (resourceType is None) or (resourceType == ''):
			url = "%s%s" % (
					self.removeFromEnd(self.getWebUserFilesFolder(), '/'),
					path
					)
		else:
			url = "%s%s%s" % (
					self.getWebUserFilesFolder(),
					resourceType,
					path
					)
		return url

	def removeExtension(self, fileName):
		index = fileName.rindex(".")
		newFileName = fileName[0:index]
		return newFileName

	def getExtension(self, fileName):
		index = fileName.rindex(".") + 1
		fileExtension = fileName[index:]
		return fileExtension

	def getParentFolder(self, folderPath):
		parentFolderPath = self.parentFolderRe.sub('', folderPath)
		return parentFolderPath

	"""
	serverMapFolder

	Purpose: works out the folder map on the server
	"""
	def serverMapFolder(self, resourceType, folderPath):
		# Get the resource type directory
		resourceTypeFolder = "%s%s/" % (
				self.getUserFilesFolder(),
				resourceType
				)
		# Ensure that the directory exists
		self.createServerFolder(resourceTypeFolder)

		# Return the resource type directory combined with the
		# required path
		return "%s%s" % (
				resourceTypeFolder,
				self.removeFromStart(folderPath, '/')
				)

	"""
	createServerFolder

	Purpose: physically creates a folder on the server
	"""
	def createServerFolder(self, folderPath):
		# Check if the parent exists
		parentFolderPath = self.getParentFolder(folderPath)
		if not(os.path.exists(parentFolderPath)):
			errorMsg = self.createServerFolder(parentFolderPath)
			if errorMsg is not None:
				return errorMsg
		# Check if this exists
		if not(os.path.exists(folderPath)):
			os.mkdir(folderPath)
			os.chmod(folderPath, 0755)
			errorMsg = None
		else:
			if os.path.isdir(folderPath):
				errorMsg = None
			else:
				raise "createServerFolder: Non-folder of same name already exists"
		return errorMsg


	"""
	getRootPath

	Purpose: returns the root path on the server
	"""
	def getRootPath(self):
		return self.rootPath

	"""
	setXmlHeaders

	Purpose: to prepare the headers for the xml to return
	"""
	def setXmlHeaders(self):
		#now = self.context.BS_get_now()
		#yesterday = now - 1
		self.setHeader("Content-Type", "text/xml")
		#self.setHeader("Expires", yesterday)
		#self.setHeader("Last-Modified", now)
		#self.setHeader("Cache-Control", "no-store, no-cache, must-revalidate")
		self.printHeaders()
		return

	def setHeader(self, key, value):
		if (self.isZope()):
			self.context.REQUEST.RESPONSE.setHeader(key, value)
		else:
			print "%s: %s" % (key, value)
		return

	def printHeaders(self):
		# For non-Zope requests, we need to print an empty line
		# to denote the end of headers
		if (not(self.isZope())):
			print ""

	"""
	createXmlFooter

	Purpose: returns the xml header
	"""
	def createXmlHeader(self, command, resourceType, currentFolder):
		self.setXmlHeaders()
		s = ""
		# Create the XML document header
		s += """<?xml version="1.0" encoding="utf-8" ?>"""
		# Create the main connector node
		s += """<Connector command="%s" resourceType="%s">""" % (
				command,
				resourceType
				)
		# Add the current folder node
		s += """<CurrentFolder path="%s" url="%s" />""" % (
				self.convertToXmlAttribute(currentFolder),
				self.convertToXmlAttribute(
					self.getWebUrlFromPath(
						resourceType,
						currentFolder
						)
					),
				)
		return s

	"""

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久久久久久久老牛影院| 国产精品人妖ts系列视频| 亚洲精品一区二区在线观看| 中文字幕中文字幕在线一区| 捆绑调教美女网站视频一区| 一本大道综合伊人精品热热| 久久综合久久久久88| 亚洲国产中文字幕在线视频综合| 国产91精品一区二区| 欧美一区二区三区免费| 亚洲午夜av在线| a美女胸又www黄视频久久| 久久女同性恋中文字幕| 日韩在线a电影| 欧美日韩国产综合视频在线观看 | 免费人成黄页网站在线一区二区 | 国产精品自拍网站| 91精品国产91综合久久蜜臀| 亚洲精品五月天| av电影在线观看完整版一区二区| 精品国产制服丝袜高跟| 免费在线观看一区二区三区| 欧美妇女性影城| 亚洲444eee在线观看| 色先锋久久av资源部| 国产精品久久久久aaaa樱花 | 欧美区一区二区三区| 一区二区三区免费观看| 丁香激情综合国产| 欧美国产欧美综合| 成人午夜看片网址| 欧美激情资源网| 暴力调教一区二区三区| 国产精品久久久久婷婷| gogo大胆日本视频一区| 亚洲天堂成人在线观看| 欧美在线视频全部完| 亚洲午夜一区二区| 91精品国产欧美日韩| 久久精品国产99国产精品| 日韩精品中文字幕一区| 国产米奇在线777精品观看| 久久精子c满五个校花| 成人av午夜影院| 一区二区久久久| 3d动漫精品啪啪| 国产在线不卡一区| 国产精品毛片久久久久久久| 97精品超碰一区二区三区| 亚洲猫色日本管| 69堂成人精品免费视频| 国产裸体歌舞团一区二区| 国产免费观看久久| 在线观看视频一区| 久久精品国产免费| 国产精品不卡一区二区三区| 欧美三级资源在线| 国产麻豆欧美日韩一区| 中文字幕亚洲不卡| 欧美日本在线视频| 国产精品一区二区久久不卡| 亚洲黄色性网站| 精品美女在线观看| 色综合一区二区| 老司机精品视频线观看86| 中文字幕成人av| 在线不卡一区二区| 国产91丝袜在线播放| 亚洲va国产天堂va久久en| 欧美videossexotv100| 99久久精品国产一区二区三区| 亚洲成人动漫一区| 国产精品免费免费| 精品免费国产一区二区三区四区| 色综合天天综合网天天看片| 紧缚捆绑精品一区二区| 亚洲精品日产精品乱码不卡| 精品国产sm最大网站| 欧美午夜精品一区二区蜜桃| 国产一区三区三区| 亚洲国产aⅴ天堂久久| 国产午夜精品久久久久久久| 欧美日本在线观看| 99re6这里只有精品视频在线观看| 奇米精品一区二区三区四区| 亚洲欧美aⅴ...| 国产精品美女久久久久久久网站| 3d动漫精品啪啪一区二区竹菊| 91免费版在线看| 国产成人精品在线看| 蜜臀av一区二区在线免费观看| 亚洲精选一二三| 国产人久久人人人人爽| 日韩片之四级片| 欧美二区三区91| 欧美日韩在线播放一区| 99re这里只有精品视频首页| 国产**成人网毛片九色 | 国产一区二区精品久久99| 伊人开心综合网| 亚洲私人黄色宅男| 国产精品午夜在线| 久久久久久久性| 精品福利一区二区三区免费视频| 69堂精品视频| 欧美精品视频www在线观看| 欧美性生活影院| 色婷婷久久久综合中文字幕| 99久久久国产精品| 96av麻豆蜜桃一区二区| 成人黄色大片在线观看| 成a人片国产精品| 成人精品一区二区三区中文字幕| 国产精品一区久久久久| 国产一区二区影院| 国产盗摄精品一区二区三区在线| 国产精品123| 国产激情91久久精品导航 | 久久精品国产成人一区二区三区 | 一区二区国产盗摄色噜噜| 18涩涩午夜精品.www| 国产精品乱码人人做人人爱| 国产精品视频一二三| 国产精品嫩草影院com| 自拍偷拍亚洲欧美日韩| 亚洲一区二区三区影院| 亚洲成人午夜电影| 午夜精品影院在线观看| 免费成人在线影院| 国产精品原创巨作av| 高清在线成人网| 在线精品观看国产| 欧美放荡的少妇| 久久久高清一区二区三区| 国产精品久久久久久久午夜片| 亚洲欧美偷拍三级| 奇米影视一区二区三区| 激情综合色播五月| 99久久久国产精品免费蜜臀| 欧美色精品天天在线观看视频| 欧美一级一区二区| 亚洲国产精品激情在线观看| 国产精品无人区| 亚洲一二三区在线观看| 激情偷乱视频一区二区三区| 99视频精品在线| 日韩三级视频中文字幕| 国产精品午夜电影| 色综合久久中文综合久久牛| 精品制服美女久久| 国产成人av电影在线| 在线日韩国产精品| www激情久久| 亚洲一区二区三区在线播放| 国产在线不卡一卡二卡三卡四卡| 一本一道久久a久久精品| 91精品麻豆日日躁夜夜躁| 国产视频一区二区三区在线观看| 亚洲尤物在线视频观看| 国产成人在线看| 91精品国产aⅴ一区二区| 欧美日韩一级大片网址| 在线成人高清不卡| 亚洲人精品一区| 国产一区二三区好的| 欧美日韩五月天| 中文字幕一区日韩精品欧美| 九一九一国产精品| 91久久精品一区二区三区| 久久奇米777| 男女男精品视频网| 欧美亚洲综合久久| 国产精品久久久久久久久免费樱桃| 奇米精品一区二区三区四区| 欧美网站一区二区| 亚洲欧美成aⅴ人在线观看| 国产成人在线免费| 久久一区二区视频| 美洲天堂一区二卡三卡四卡视频 | 麻豆免费看一区二区三区| 91女神在线视频| 欧美国产成人精品| 国产精品一区二区黑丝| 91精品国产高清一区二区三区蜜臀| 一区二区在线免费观看| 99国产精品久| 成人欧美一区二区三区白人| 高清免费成人av| 国产欧美日韩在线视频| 国产一区免费电影| 久久久久99精品一区| 国模一区二区三区白浆| 日韩视频一区二区三区在线播放| 午夜精品福利视频网站| 欧美亚洲尤物久久| 亚洲18影院在线观看| 欧美精品第1页| 日韩福利视频导航| 日韩欧美高清一区| 国内外成人在线视频|