CKFinder2.x 入门 二

破解

 

CKFinder是收费的,可是我们都比较穷,用不起那么昂贵的东西,所以只能即无奈又无耻的去破解了。在http://www.imobile365.com/acticles/reviews-and-news/12-others/4551-ckeditor33ckfinder20ckf.html看到个破解办法,试了一下,果然好用,不过作为一名程序员,感情很矛盾啊,国人的破解技术还是一流啊。

 

打开ckfinder.js文件

一、找到<h4 class='message_content'></h4>,改为<h4 style='display:none;'  class='message_content'></h4>

二、找到

var p="\x3c\144\x69\x76\040\x63\154\x61\163\x73\x3d\x27\x76\151\145\167\040\x74\157\x6f\x6c\137\x70\141\156\145\154\047\040\163\x74\171\154\x65\075\x27\144\151\x73\160\154\141\171\x3a\x20\x62\154\x6f\143\x6b\x20\x21\151\155\x70\157\x72\164\141\x6e\x74\x3b\040\x70\x6f\163\x69\x74\151\157\x6e\072\x20\x73\x74\141\x74\x69\x63\040\041\151\x6d\160\157\x72\x74\141\156\164\073\040\x63\157\154\157\x72\072\x20\142\x6c\x61\x63\153\x20\x21\x69\x6d\160\157\162\164\141\x6e\164\073\040\x62\141\143\x6b\147\162\x6f\x75\156\144\x2d\143\x6f\x6c\x6f\x72\x3a\x20\x77\150\151\164\145\040\x21\151\155\x70\x6f\162\164\141\156\164\073\047\x3e\x54\x68\151\163\x20\151\x73\x20\164\150\x65\x20\x44\x45\115\x4f\040\166\x65\162\163\151\x6f\156\040\x6f\146\x20\x43\113\106\151\156\x64\x65\162\x2e\040\x50\154\145\141\x73\145\x20\166\x69\x73\151\164\x20\164\x68\x65\040\x3c\141\040\150\x72\x65\x66\075\x27\x68\x74\164\x70\x3a\x2f\057\x63\153\146\x69\156\x64\145\162\x2e\x63\157\155\047\040\164\141\x72\x67\145\x74\075\047\x5f\x62\154\141\x6e\153\047\076\x43\113\106\x69\x6e\144\x65\x72\040\x77\145\x62\x20\163\151\x74\145\074\x2f\x61\076\x20\x74\157\040\157\x62\164\x61\x69\156\040\141\x20\x76\x61\x6c\151\x64\040\x6c\x69\143\145\x6e\163\145\056\074\x2f\144\151\166\076";

这个串因为大家的版本不同可能不太一样,总之就是很长一段八进制和十六进制的字符串,将其改为var p=" ";

三、找到“\x54\150\151\x73\x20\x66\x75\x6e\143\164\x69\157\156\x20\x69\163\x20\144\151\163\x61\142\154\x65\x64\040\x69\x6e\040\x74\x68\145\x20\x64\x65\155\157\x20\166\145\x72\163\151\x6f\x6e\x20\x6f\x66\x20\103\x4b\106\x69\156\144\145\x72\056\074\142\162\040\x2f\x3e\x50\154\x65\x61\x73\x65\040\166\151\x73\151\x74\x20\x74\x68\145\x20\x3c\x61\040\x68\162\145\x66\x3d\x27\x68\x74\164\160\x3a\x2f\x2f\x63\x6b\146\x69\x6e\x64\145\x72\x2e\143\x6f\155\x27\x3e\x43\x4b\106\151\156\144\x65\162\040\167\x65\x62\040\x73\x69\x74\145\074\x2f\x61\x3e\x20\164\157\040\x6f\142\164\x61\x69\156\x20\141\040\x76\141\154\151\144\040\154\151\x63\145\156\x73\x65\056”

将他前面 if 中的语句删掉,

if(a.bF&&1==a.bs.indexOf(a.bF.substr(1,1))%5&&I.toLowerCase().replace(a.jG,'')!=a.ed.replace(a.jG,'')||a.bF&&a.bF.substr(3,1)!=a.bs.substr((a.bs.indexOf(a.bF.substr(0,1))+a.bs.indexOf(a.bF.substr(2,1)))*9%(a.bs.length-1),1))

改成 if(false),这样可以解决一些方法不能使用的问题,比如拖拽文件到另一个文件夹。

 

ckfinder.js 中有很多这种转成16进制的字符,如果再遇到什么提示可以

document.write("\x65\144\x2e\x20");

这样就能看到要提示的是什么东西了,可以酌情修改了。

 

改完之后发现没效果可以清一下缓存,这样破解之后可以屏蔽掉“This is the demo version of CKFinder. Click here to visit our web site ”提示信息,也可以解决拖拽文件到另一个文件夹等功能不能使用的问题。暂时还没发现其他关于license的问题,不过要是想用个完整的 CKFinder,还是花店钞票吧。

 

配置

 

baseURL、baseDir

 

baseURL 是CKFinder发布后URL基本路径;baseDir是服务器上文件存放地址的绝对路径,且必须是全路径。这两个地址指向必须是相同的,CKFinder 还要求路径中必须有最后一个斜线,如:

 

<baseDir>D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CKEditor_test\files\</baseDir>
<baseURL>/CKEditor_test/files/</baseURL>

 

或者也可以不写 baseDir 属性,让CKFinder 根据baseURL自己去判断文件存放路径:

 

<baseDir></baseDir>
 

如果想了解更多关于baseURL和baseDir的信息,可以浏览 baseURL and baseDir Parameters Explained

 

图片相关(Images)

 

accessControls

 

accessControls 用于为 CKFinder 中文件及文件夹对于不同用户的不同操作权限。默认情况是为所有用户开放所有文件及文件夹的所有操作权限:

 

<accessControls>
	<accessControl>
		<role>*</role>
		<resourceType>*</resourceType>
		<folder>/</folder>
		<folderView>true</folderView>
		<folderCreate>true</folderCreate>
		<folderRename>true</folderRename>
		<folderDelete>true</folderDelete>
		<fileView>true</fileView>
		<fileUpload>true</fileUpload>
		<fileRename>true</fileRename>
		<fileDelete>true</fileDelete>
	</accessControl>
</accessControls>
 

role - 角色名称,默认是所有用户(*)。

resourceType - 资源类型,如Images, Flash, Files。默认为当前配置对所有类型(*)有效。

folder - 要进行限制的文件夹。

folder* and file* - 所有以folder和file开头的配置,都是一个布尔值,看名称就知道是干什么的了。

 

可以在 accessControls 下配置多个 accessControl 节点。所有的子文件夹或文件默认继承它们父文件夹的权限配置。

 

userRoleSessionVar

 

userRoleSessionVar 是一个 session 级的变量的名称,CKFinder 用这个变量来获取当前用户的角色。

 

<userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar>

 

要切换至不同的角色,可以在 session 中这样控制:

 

HttpSession session = request.getSession(true);
session.setAttribute("CKFinder_UserRole", "admin");
 

其中,admin 为角色的名称,也就是上面 accessControl 中 role 配置的名称。

 

thumbs

 

CKFinder 允许为上传的图片创建缩略图,缩略图的配置在 thumbs 节点中,如:

 

<thumbs>
	<enabled>true</enabled>
	<url>%BASE_URL%_thumbs/</url>
	<directory>%BASE_DIR%_thumbs</directory>
	<directAccess>false</directAccess>
	<maxHeight>100</maxHeight>
	<maxWidth>100</maxWidth>
	<quality>80</quality>
</thumbs>
 

 

maxWidth 和 maxHeight –设置缩略图的宽度和高度,单位为像素。

quality - 缩略图的品质,1至100之间。可以接受的品质的值最小为45左右,最常用的值为80左右。

directAccess - 这个配置可以提高 CKFinder 的整体性能。默认情况下,CKFinder 连接至 server connector 以获取缩略图。通常情况下,connector 会发送HTTP/304 Not Modified header以减轻服务器端压力,如果directAccess被置为true,CKFinder 直接从服务器获取缩略图。

 

imgWidth

imgHeight

imgQuality

 

这三个属性分别用于设置上传图片的最大宽度、最大高度以及图片品质。如果上传的图片大小超过预设的值,CKFinder 将按比例对其进行缩放。

 

资源类型相关(Resource Types

 

CKFinder 内置了3种文件类型:files , images , Flash 。它们在config.xml 中的默认配置如下:

 

<types>
	<type name="Files">
		<url>%BASE_URL%files/</url>
		<directory>%BASE_DIR%files</directory>
		<maxSize>0</maxSize>
		<allowedExtensions>7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip
		</allowedExtensions>
		<deniedExtensions></deniedExtensions>
	</type>
	<type name="Images">
		<url>%BASE_URL%images/</url>
		<directory>%BASE_DIR%images</directory>
		<maxSize>0</maxSize>
		<allowedExtensions>bmp,gif,jpeg,jpg,png</allowedExtensions>
		<deniedExtensions></deniedExtensions>
	</type>
	<type name="Flash">
		<url>%BASE_URL%flash/</url>
		<directory>%BASE_DIR%flash</directory>
		<maxSize>0</maxSize>
		<allowedExtensions>swf,flv</allowedExtensions>
		<deniedExtensions></deniedExtensions>
	</type>
</types>

 

url 和 directory – 这种类型的文件上传的 url 和 dir。

maxSize – 文件最大限制,默认以 bytes 为单位。此处也可以使用 G , M , K 为单位, 1M 为 1048576 bytes (1 Megabyte), 1K 为 1024 bytes (1 Kilobyte), 1G 为 1 Gigabyte。

allowedExtensions - 允许上传的文件类型。

deniedExtensions - 不允许上传的文件类型。

 

建议使用allowedExtensions。

 

也可以扩展自定义的文件类型,如:

<types>
	<type name="MSdocs">
		<url>%BASE_URL%MSdocs/</url>
		<directory>%BASE_DIR%MSdocs</directory>
		<maxSize>2M</maxSize>
		<allowedExtensions>doc,ppt,xls</allowedExtensions>
		<deniedExtensions></deniedExtensions>
	</type>
</types>

 

安全性相关(security)

 

checkDoubleExtension - 接受一个布尔值,对允许上传列表中扩展名的校验规则。如果置为 true,每个“.”后的单词均被视为文件的扩展名进行校验,否则,只将最后一个“.”后的单词视为扩展名并进行校验。

 

secureImageUploads - 是否对上传的图片类型的文件进行格式校验。

 

htmlExtensions - 通知 CKFinder 将何种类型的文件视为 HTML 代码上传。

 

hideFolders - 当一些文件夹不想被用户看到时,如cvs、svn的文件夹不想让用户浏览,可以在这里配置其对用户隐藏。

 

hideFiles - 当一些文件不想被用户看到时,可以在这里配置其对用户隐藏。

 

 

扩展配置(Extending CKFinder Configuration)

 

    我们可以通过继承 com.ckfinder.connector.configuration.Configuration 类来扩展 CKFinder 配置,或者更改 config.xml 中的配置。比如,前面我们为了使得 CKFinder 可用,将 <enabled>true</enabled> 置为 true,这并不是CKFinder推荐的做法,CKFinder 建议我们重写 checkAuthentication 方法,那么现在,这个任务就可以在这里完成了。

 

首先,需要建立一个自定义的类,继承于“com.ckfinder.connector.configuration.Configuration”,基本结构如下:

 

public class MyConfiguration extends Configuration {

	public MyConfiguration(ServletConfig servletConfig) {
		super(servletConfig);
	}

	@Override
	protected Configuration createConfigurationInstance() {
		return new MyConfiguration(this.servletConf);
	}
}
 

 

然后,需要在 web.xml 中加入如下配置(假定上面的类全路径为com.ckfinder.connector.configuration.MyConfiguration):

 

<init-param>
	<param-name>configuration</param-name>
	<param-value>com.ckfinder.connector.configuration.MyConfiguration</param-value>
</init-param>
 

完成了上面的步骤,我们就可以对 CKFinder 进行扩展了。

 

重写 init 方法

 

通过重写 init 方法,我们对 xml 文件中的所有配置进行更改。下面的例子展示了如何更改baseURL 及将 zip 类型的文件加入到 allowedExtensions 配置中。

 

@Override
public void init() throws Exception {
	super.init();
	this.baseURL = "/CKEditor_test/files/";
	ResourceType resourceType = this.types.get("Files");
	resourceType.setAllowedExtensions(
	resourceType.getAllowedExtensions().concat(",zip,7z"));   
}
 

重写 checkAuthentication 方法

 

CKFinder 建议通过重写 checkAuthentication 方法来控制用户操作权限,如下面的例子中,如果用户已经登陆,session 有名为“loggedIn ”的属性时,才允许用户具有 CKFinder 的操作权限:

 

@Override
public boolean checkAuthentication(final HttpServletRequest request) {
	return request.getSession().getAttribute("loggedIn") != null;
}
 

更多内容还是看 CKFinder 的使用手册吧 http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java

 

 

 

 

你可能感兴趣的:(JavaScript,html,Web,Ajax)