- 浏览: 473987 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
zjxkeven:
放在自己工程上不报错,已放在服务器上就报错
java获得CPU使用率,系统内存,虚拟机内存等情况 -
wang1990cool:
能运行?我报错啊、
java获得CPU使用率,系统内存,虚拟机内存等情况 -
yue_ch:
yue_ch 写道getTotalPhysicalMemory ...
java获得CPU使用率,系统内存,虚拟机内存等情况 -
yue_ch:
getTotalPhysicalMemorySize()get ...
java获得CPU使用率,系统内存,虚拟机内存等情况 -
kjmmlzq19851226:
private RealSubject realSubject ...
代理模式,静态代理与动态代理
晚上找到了jetty的日志,终于找到为何jetty没启动成功的原因。(原因是在做文字替换时,把类文件也给替换了,导致服务无法启动)
zimbra系统已经重新跑起来,登陆页面暂时的解决方案:
添加LogLogin.jsp页面。
skyBook在页面中打开:http://172.17.1.14/zimbra/public/LogLogin.jsp ,便能使用邮件系统。
今后通过传递用户名与密码,如:http://172.17.1.14/zimbra/public/LogLogin.jsp?name=12345&psw=abcd ,进行登陆,密码最好通过加密后传输。
并且在skyBook注册用户时,往zimbra数据库添加用户记录,已达到两个系统的用户一致。
另外把zimbra这两天的修改的内容记录下,今后修改可以参考:
1.zimbra不紧紧是一个web应用,是一个直接可运行的系统。在14机器结构如下:
/opt/zimbra:
bin/启动zimbra的文件
jetty:zimbra的Web服务器
java:zimbra的Java环境
memcache:缓存
httpd:apache httpd服务器
mysql:数据库
等。
启动zimbra命令:
/opt/zimbra/bin/zmcontrol stop
/opt/zimbra/bin/zmcontrol start
邮件系统的启动:
/opt/zimbra/bin/zmmailboxdctl stop
/opt/zimbra/bin/zmmailboxdctl start
/opt/zimbra/bin/zmmailboxdctl restart
2.zimbra修改内容
2.1 jsp文件:目录为/opt/zimbra/jetty/webapps/zimbra/public/
如修改login.jsp,将图片和商标的html去掉。
其他jsp文件暂时还没细读。
2.2 修改国际化中文编码
编码文件路径:zimbra/WEB-INF/classes/messages/*_zh_CN.properties
操作,先将unicode编码的文件转为中文,然后修改后再进行编码
native2ascii -reverse ZaMsg_zh_CN.properties a.txt
修改完a.txt后:
native2ascii a.txt ZaMsg_zh_CN.properties
2.3 linux下修改全部文件内容(此文件会替换全部文件夹下的文字。不能在类文件夹上使用,会把class文件的内容也替换掉。导致类文件检验出错):
将http://www.zimbra.com 替换为http://www.logerp.com :
find -type f | xargs perl -i -pe s%http://www.zimbra.com%http://www.logerp.com%g
2.4 skin的修改:
对应skin文件夹下,图标在skin/yahoo/logos,(其中yahoo为你选择的页面样式),每个样式下都有logos文件夹,可以进行替换图片。
3.源码
源码需要到网上下载,但是文件比较多,还没有进行编译和调试。
对代码阅读了一下,
3.1 skin对应请求为SkinResource.java(servlet),接受css/*,html/*的请求
然后读取后台skin文件夹的配置文件:skin/yahoo/base:
mainfest.xml,skin.css,skin.html,skin.properties
在请求资源时,根据配置文件对内容进行替换。
3.2 properties2javascript
国际化通过Props2JsServlet.java实现。
4.由于把/webapps/zimbra修改为/webapps/logerp后,需要改动很多文件,故出现了一些问题。导致应用无法启动。
经过排查。是在linux下执行替换文件时,把class文件,jar包里面的文字也改掉了,导致无法无法启动。
通过替换备份的文件。现在已经启动成功。
如果需要修改,请先备份,再做修改。
5.请求处理流程
a.进入/zimbra/进入SetHeadFilter,并转发到/service/user或/service/home请求
b./service/home对应UserServlet
c.UserServlet处理完毕后,调用不同的formater,对应网站就是HtmlFormater,跳转/zimbra/h/rest路径下
d./zimbra/h/rest不是jsp页面,内容是大量jstl,包括自定义jstl,这块代码难以阅读。
e.jstl处理完后返回html,css,js,其中js,css会通过SkinFilter进行替换,支持不同样式与中文
6.zimbra 前端视图
zimbra页面大量使用jstl生成页面:
1.jsp页面:部分页面使用jsp页面与标签库,在public/*.jsp,如login.jsp页面
2.jstl,自定义标签库。如h/search,search使用app标签,app:view,app:convListView,app:overView
3.js……
今天着重对zimbra的首页进行研究,普通版首页路径:/zimbra/h/search,结合图片说明:
a./h/search代码:
< c:when test="${context.isConversationSearch}">
< app:convListView context="${context}"/ >
< / c:when >
以上使用app:convListView显示页面
b.app:convListView对应tag为/WEB-INF/tag/conv/convListView.tag
代码:< app:view mailbox="${mailbox}"
通过app:view显示
c.app:view为/WEB-INF/tag/infra/view.tag
view.tag代码使用
app:overView为左侧
d.中间内容为:< app:view mailbox="${mailbox}">< / app:view >内部标签
7.admin用户登陆:https://localhost:7071/zimbraAdmin/
zimbra创建新用户流程:
.service/admin/soap/CreateAccountRequest
//创建账户
证书导入:
1.keytool -import -file myca.cert -keystore %JAVA_HOME%\jre\lib\security\cacerts -file myca.cert -alias tomcat
2.此时命令行会提示你输入cacerts证书库的密码,你敲入changeit就行了,这是java中cacerts证书库的默认密码,
8.获得未读邮件数代码
public int getInbox(String name, String password) throws Exception { // 构造请求参数 HashMap<String, String> map = new HashMap<String, String>(); map.put("client", "adsf");// 此处不能设置mobile,原因未明 map.put("loginOp", "login"); map.put("password", password); map.put("username", name); StringBuffer bf = new StringBuffer(); for (Map.Entry<String, String> entry : map.entrySet()) { bf.append("&" + entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), "UTF-8")); } String query = bf.toString().substring(1); // 创建url连接 URL url = new URL("http://172.17.1.14/zimbra/"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestProperty("Host", "172.17.1.14"); connection .setRequestProperty( "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTBDFff GTB7.0"); connection .setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); connection.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.5"); connection.setRequestProperty("Accept-Encoding", "deflate"); connection.setRequestProperty("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7"); connection.setRequestProperty("Keep-Alive", "300"); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestProperty("Referer", "http://172.17.1.14/zimbra/?loginOp=logout&client=mobile"); connection.setRequestProperty("Cookie", "ZM_TEST=true"); connection.setRequestMethod("POST"); // 输出数据 DataOutputStream output = new DataOutputStream(connection .getOutputStream()); output.write(query.getBytes("UTF-8")); output.flush(); output.close(); // 读取信息 InputStream in = connection.getInputStream(); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(in)); StringBuffer temp = new StringBuffer(); String line = bufferedReader.readLine(); while (line != null) { temp.append(line).append("\r\n"); line = bufferedReader.readLine(); } bufferedReader.close(); String ecod = connection.getContentEncoding(); if (ecod == null) ecod = "UTF-8"; // 设置cookie String cookie = ""; Map<String, List<String>> headerFields = connection.getHeaderFields(); for (Map.Entry<String, List<String>> entry : headerFields.entrySet()) { if ("Set-Cookie".equals(entry.getKey())) { for (String s : entry.getValue()) { cookie = s.substring(0, s.indexOf(";")); break; } } } // 请求mobile页面 URL url2 = new URL("http://172.17.1.14/zimbra/m/mofolders"); HttpURLConnection connection2 = (HttpURLConnection) url2 .openConnection(); connection2.setDoInput(true); connection2.setDoOutput(true); connection2.setRequestProperty("Cookie", "ZM_TEST=true;" + cookie); connection2.setRequestMethod("GET"); // read in each character until end-of-stream is detected InputStream in2 = connection2.getInputStream(); BufferedReader bufferedReader2 = new BufferedReader( new InputStreamReader(in2)); StringBuffer temp2 = new StringBuffer(); String line2 = bufferedReader2.readLine(); String info = ""; while (line2 != null) { if (!"".equals(line2.trim())) { line2 = new String(line2.trim().getBytes(), ecod); // 截取收件箱行 if (line2.trim().startsWith("收件")) info = line2; temp2.append(line2).append("\r\n"); } line2 = bufferedReader2.readLine(); } bufferedReader2.close(); // info = 收件箱(1) // 其中1为收件箱未读数 if (info.indexOf("(") > 0) { String num = info.substring(info.indexOf("(") + 1, info .indexOf(")")); return Integer.parseInt(num); } else return 0; }
发表评论
-
member系统
2013-08-05 16:18 0member 系统源码 -
hibernate generate tool
2012-09-06 11:33 0hibernate generate tool -
funcation spec and technical spec of vanceinfo
2012-08-02 11:21 0asdfasdf -
Web大数据量页面优化实践
2012-07-02 15:18 980pdf见附件 -
Eclipse Shortcuts
2012-02-29 16:31 894http://www.allapplabs.com/eclip ... -
协议的定制
2011-04-19 17:42 0哀伤的发生的发送方的 wireshark 截取发送消 ... -
uc面试
2011-04-14 18:03 0一、综合测试 1、有7 ... -
velocity输出csv的一种做法
2010-10-12 16:36 2405使用spring mvc + velocity做项目时, ... -
java平台启动脚本
2012-07-27 16:37 4156window平台java启动脚本 @e ... -
flex相关资料
2010-04-24 22:05 0http://www.adobe.com/devnet/fle ... -
开放平台的一些思考
2010-03-22 17:22 0开放平台开发人员编写rpc请求,还是直接进行服务代 ... -
web开发中的中文问题
2014-02-22 21:44 869web开发中的中文 ... -
Evaluation_strategy:java call by sharing赋值策略参数传递
2010-02-14 06:25 187关于java call by value or call by ... -
osgi的企业级开发的一些经验
2010-02-05 17:01 2119前面看了论坛里面关 ... -
spring 3.0 应用springmvc 构造RESTful URL 示例
2010-02-04 12:22 0转载自:http://niyong.iteye.com/blo ... -
声明式缓存,View层缓存讨论
2010-02-03 23:19 1129背景:由于理财专区二期的基金数据一天更新一次。并且都是非操作型 ... -
mysql guide
2010-01-31 17:07 0mysql最大能存多少 InnoDB存储引擎将Inno ... -
面试题系列一:exception未被捕获,但有finally,请问打印结果
2010-01-23 23:33 294看代码,猜结果: package jyy.exceti ... -
hello maven
2010-01-23 23:30 2415创建项目 mvn archetype:create - ... -
有趣的实验报告
2009-12-25 12:51 236淘宝一位同事上大学时 ...
相关推荐
* 需要修改系统防火墙配置,以确保zimbra的正确安装和运行。 相关概念: * CentOS:一个基于Red Hat Linux的开源操作系统。 * SELINUX:Security-Enhanced Linux,一个Linux内核安全模块。 * zimbra:一款流行的...
2. **日历管理**:提供个人及共享日历,支持事件的创建、修改、删除、重复规则设定等。 3. **联系人管理**:支持导入导出VCard格式,实现联系人的分类、搜索、共享等功能。 4. **文档共享**:允许用户上传、下载、...
- **日志**:记录邮件服务器的操作日志,用于监控和故障排查。 #### Zimbra Directory Service Zimbra Directory Service基于OpenLDAP实现,提供了用户认证、授权和目录查询等功能。 - **目录服务概览**:负责...
- 对于每个定义的区域,都需要创建相应的区域文件,用于存储DNS记录。 ```bash # 配置正向区域文件 vim /var/named/zimbra.com $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry ...
9. **许可证和法律条款**:`LICENSE.txt`和`LEGALNOTICE.txt`通常包含软件的许可信息和法律条款,它们规定了如何合法地使用、分发和修改Zimbra的代码。 总的来说,Zimbra工具提供了一整套的企业级邮件和协作解决...
6) 重启Zimbra服务以应用更改: ```bash zmcontrol restart ``` 完成以上步骤后,应检查Zimbra服务是否已全部启动,并尝试在客户端上重新收发邮件,以确认问题是否已得到解决。 总之,处理Zimbra证书过期问题时,...
- **DNS设置**:确保域名解析正确无误,特别是MX记录和SPF记录。 - **SSL证书**:配置SSL/TLS证书,以保障通信安全。 ##### Zimbra LDAP服务器配置选项 - **LDAP端口**:默认监听389端口。 - **LDAP加密**:启用...
2. **修改Zimbra配置**: - 在Zimbra服务器上,需要对`/opt/zimbra/etc/zimbra.properties`文件进行编辑,添加对CAS服务器的配置项,如CAS服务器的URL、服务验证端点等。 - 更新Zimbra的LDAP配置,确保用户信息...
- **Log**:记录Mailbox Server操作的日志文件,对于故障排查非常重要。 #### Zimbra LDAP Service Zimbra LDAP Service提供了目录服务,用于存储用户账户、邮件地址、组和其他相关信息。LDAP(Lightweight ...
[Packt Publishing] Zimbra Server 核心技术 学习教程 (英文版) [Packt Publishing] Learning Zimbra Server Essentials (E-Book) ☆ 图书概要:☆ Learn to use the robust Zimbra server like a pro using this...
Zimbra邮件系统远程代码执行漏洞GetShell 漏洞描述: 漏洞是利用XXE和ProxyServlet SSRF 漏洞拿到 admin authtoken 后,通过文件上传在服务端执行任意代码,威胁程度极高。当Zimbra服务端打来Memcached缓存服务是...
为了使Zimbra能够通过域名访问,需要配置DNS服务器来解析相关的域名记录。 ##### 1. 安装BIND BIND是广泛使用的DNS服务器软件之一,可以通过以下命令进行安装。 ```bash sudo yum -y install bind bind-utils ``` ...
《Zimbra管理员手册》是针对Zimbra协作服务器(ZCS)的全面管理指南,主要面向Zimbra系统的管理员,旨在提供系统架构、组件功能、邮件路由、LDAP服务、邮件传输代理及代理服务器等方面的深入解析。以下是根据给定...
这个文档写得比较细,基本上可以帮助你移植zimbra上的所有数据,仅供参考。
letsencrypt-zimbra, 将letsencrypt证书部署到Zimbra的文件 letsencrypt-zimbra将letsencrypt证书部署到Zimbra的文件。当你想将自己签署的Zimbra证书转移到letsencrypt签名的证书并自动续订证书时,你可能会发现这些...
"Linux系统安装配置Zimbra邮件服务器图文教程" 本文将详细介绍 Linux 系统安装配置 Zimbra 邮件服务器的步骤,并解决在安装过程中可能出现的网卡驱动问题。 安装 CentOS 5.5 首先,我们需要安装 CentOS 5.5 操作...
在zimbra中批量新建用户,以相同密码和不同密码两种方式创建用户