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

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

?? connector.py

?? 如果你想從事asterisk方面的話可以看看CRM
?? PY
?? 第 1 頁 / 共 2 頁
字號:
#!/usr/bin/env python

"""
FCKeditor - The text editor for internet
Copyright (C) 2003-2005 Frederico Caldeira Knabben

Licensed under the terms of the GNU Lesser General Public License:
		http://www.opensource.org/licenses/lgpl-license.php

For further information visit:
		http://www.fckeditor.net/

"Support Open Source software. What about a donation today?"

File Name: connector.py
	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 

File Authors:
		Andrew Liu (andrew@liuholdings.com)
"""

"""
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": [ "php", "php3", "php5", "phtml", "asp", "aspx", "ascx", "jsp", "cfm", "cfc", "pl", "bat", "exe", "dll", "reg", "cgi" ],
				"Image": [ "php", "php3", "php5", "phtml", "asp", "aspx", "ascx", "jsp", "cfm", "cfc", "pl", "bat", "exe", "dll", "reg", "cgi" ],
				"Flash": [ "php", "php3", "php5", "phtml", "asp", "aspx", "ascx", "jsp", "cfm", "cfc", "pl", "bat", "exe", "dll", "reg", "cgi" ],
				"Media": [ "php", "php3", "php5", "phtml", "asp", "aspx", "ascx", "jsp", "cfm", "cfc", "pl", "bat", "exe", "dll", "reg", "cgi" ]
				}

	"""
	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

	"""
	createXmlFooter

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情在线免费观看| 久久av资源网| 美女性感视频久久| 丰满亚洲少妇av| 7777精品伊人久久久大香线蕉完整版 | 日韩理论片一区二区| 丝袜亚洲另类欧美| 91在线免费视频观看| 精品国产sm最大网站| 香蕉影视欧美成人| 色一情一乱一乱一91av| 国产色91在线| 精品一区在线看| 欧美精品久久一区| 亚洲一二三四在线观看| 成人av片在线观看| 久久综合久久久久88| 日韩国产欧美在线播放| 日本精品视频一区二区三区| 亚洲国产成人午夜在线一区| 精品一区二区三区免费播放| 91精品国产综合久久小美女| 亚洲永久精品国产| 一本到一区二区三区| 亚洲天堂福利av| av亚洲精华国产精华精华| 国产三级精品视频| 国产电影一区在线| 国产视频视频一区| 国产宾馆实践打屁股91| 久久精品水蜜桃av综合天堂| 韩国女主播一区| 久久精品人人爽人人爽| 国产经典欧美精品| 中文av一区二区| 成人av电影在线播放| 国产精品免费视频网站| 99re在线精品| 依依成人精品视频| 欧美性高清videossexo| 偷窥少妇高潮呻吟av久久免费| 欧美日韩国产高清一区| 三级精品在线观看| 日韩丝袜情趣美女图片| 欧美国产日产图区| 成人永久看片免费视频天堂| 国产精品福利一区二区| 日本精品裸体写真集在线观看| 亚洲va欧美va人人爽午夜| 欧美日韩精品一二三区| 久久不见久久见免费视频1| 久久亚洲精华国产精华液| 国产成人免费视频| 亚洲欧美日韩一区二区| 在线不卡的av| 国产精品99久久久| 最新成人av在线| 欧美午夜寂寞影院| 久久99蜜桃精品| 国产精品大尺度| 欧美色国产精品| 国产馆精品极品| 亚洲午夜三级在线| 久久综合五月天婷婷伊人| av电影天堂一区二区在线| 亚洲国产精品麻豆| 久久综合狠狠综合久久综合88| av电影一区二区| 玖玖九九国产精品| 一区二区三区蜜桃| 久久综合精品国产一区二区三区| 色婷婷国产精品久久包臀| 九一久久久久久| 亚洲欧美区自拍先锋| 日韩三级中文字幕| 97精品电影院| 国产精品一级在线| 丝袜亚洲另类丝袜在线| 亚洲欧洲美洲综合色网| 欧美成人乱码一区二区三区| 91色乱码一区二区三区| 国产一区二区三区在线看麻豆| 亚洲免费观看高清| 国产欧美精品一区二区色综合朱莉| 欧美在线短视频| 成人精品gif动图一区| 麻豆精品一二三| 亚洲一区自拍偷拍| 国产精品午夜久久| 欧美精品一区二区久久久| 欧美日韩在线免费视频| 成人avav影音| 国产福利一区二区| 精品一区二区三区视频 | 欧美私人免费视频| 成人精品一区二区三区四区| 久久精品国产成人一区二区三区| 亚洲国产精品欧美一二99| 中文字幕一区二区三区在线观看 | 一区二区三区四区不卡视频 | 欧美变态tickle挠乳网站| 7777精品伊人久久久大香线蕉| 不卡在线视频中文字幕| 岛国精品一区二区| 成人听书哪个软件好| 麻豆一区二区在线| 日韩精品成人一区二区在线| 亚洲午夜激情网页| 亚洲麻豆国产自偷在线| 自拍av一区二区三区| 国产精品色婷婷久久58| 国产欧美日韩久久| 欧美激情一区二区三区在线| 国产三级欧美三级| 久久久久久一级片| 国产午夜精品一区二区三区嫩草| 欧美成人女星排行榜| 精品国免费一区二区三区| 欧美精品一区二区精品网| 欧美大片在线观看| 26uuu国产在线精品一区二区| 欧美精品一区二区三区高清aⅴ | 成人精品一区二区三区四区| 成人免费不卡视频| 99综合电影在线视频| 99久久婷婷国产综合精品| 91亚洲永久精品| 色屁屁一区二区| 欧美日韩日日摸| 欧美一区二区久久久| 欧美不卡视频一区| 国产调教视频一区| 中文字幕日韩精品一区| 亚洲激情自拍视频| 视频在线观看一区| 国内精品在线播放| av网站一区二区三区| 91极品美女在线| 欧美放荡的少妇| 久久精品一区蜜桃臀影院| 成人欧美一区二区三区小说| 亚洲影视在线播放| 久久精品国产77777蜜臀| 成人高清伦理免费影院在线观看| 欧美又粗又大又爽| 精品久久人人做人人爽| 成人免费一区二区三区在线观看| 一区二区三区在线免费观看| 久草这里只有精品视频| 97久久超碰国产精品| 欧美日本在线观看| 国产日韩欧美a| 日韩av一区二| 成人爽a毛片一区二区免费| 欧美网站大全在线观看| 久久久噜噜噜久久人人看 | 国产精品短视频| 青青国产91久久久久久| 波波电影院一区二区三区| 51精品国自产在线| 国产精品三级在线观看| 美女视频一区二区| 色婷婷av一区| 国产日本欧洲亚洲| 日本成人超碰在线观看| 一本久久综合亚洲鲁鲁五月天 | 国内成+人亚洲+欧美+综合在线| gogogo免费视频观看亚洲一| 精品日本一线二线三线不卡| 亚洲一区在线观看视频| 国产成人在线影院| 日韩色视频在线观看| 亚洲国产视频a| 99久久久久免费精品国产| 久久先锋资源网| 美女一区二区视频| 欧美日韩免费高清一区色橹橹 | 国产欧美日韩不卡免费| 日韩精品五月天| 欧美四级电影在线观看| 1000部国产精品成人观看| 国产露脸91国语对白| 日韩一级黄色大片| 日产精品久久久久久久性色| 91精彩视频在线观看| 最新日韩在线视频| 成人免费福利片| 久久久五月婷婷| 国产伦精品一区二区三区免费| 欧美一区二区三区播放老司机| 五月天视频一区| 欧美日本国产视频| 一区二区三区精品在线观看| 91在线精品一区二区三区| 国产精品视频九色porn| 成人美女视频在线看| 国产精品福利在线播放| 99久久国产综合精品色伊| 日韩一区日韩二区| 在线观看区一区二|