1. 如果你用JDK 1.5以上的版本,编译osms过程中会出错,问题在${openipmp_server_src}/osms/src/com/mutable/io/OlLogger.java这个文件中,enum这个变量名跟关键字冲突了,改个名字就好了。
2. 修改${openipmp_server_src}/OMADRMWS/admin_OMADRM.sh,将里面所有的"$CURR_DIR/../../Demo/data/"改为 "/tmp/",然后把证书文件复制到/tmp目录下。
cp ${openipmp_server_src}/../Demo/data/* /tmp
这样可避免安装过程中证书无法存入数据库的问题。
3. 修改 ${openipmp_server_src}/ejbca/deployJBoss4x.sh的第16行,
if (( $1 == keystore ))
改为
if [ "$1" = "keystore" ]
不然这个脚本复制p12文件时会出错。
4. 运行install.sh脚本安装,如果之前运行过了,先运行uninstall.sh
5. 安装正常结束后,记得一定要在bin目录下执行run.sh来启动JBoss服务器,不然会报错 (“找不到 openIPMP 目录” 、“找不到../conf/server.p12”等等)
升级到Ubuntu 8.10
花了一天多的时间将笔记本(IBM Thinkpad T43)升级到了Ubuntu新发布的8.10版本。
升级过程很顺利(就是时间比较长),其间遇到了Network Manager小程序不停地弹出消息对话框,说“找不到所需的资源,无法继续”,但不影响升级包的安装。
重启系统后,Network Manager小程序居然不能加载了,在launchpad里搜索到解决办法是只在/etc/network/interfaces文件里保留下面这两行。
auto lo
iface lo inet loopback
第二个问题是,升级后无线网卡不工作了,用dmesg | grep ipw2200查看,有如下类似的信息:
ipw2200-bss.fw request_firmware failed: Reason -2
ipw2200: Unable to load firmware: -2
ipw2200: failed to register network
google后知道是firmware加载的问题,检查/lib/firmware目录,没在当前使用中的内核目录(/lib/firmware/2.6.27-7-generic/)里找到这些firmware文件。从ipw2200的网站上下载后解压到这个目录后重启就解决了。(补充:使用原来的2.6.24内核启动系统无线网卡是正常的)
解决Maven Jetty Plugin在Windows下的“文件锁定”问题
使用Maven进行Java的web开发,Jetty Plugin是必不可缺的插件,可以极大的提到开发效率。但在Windows环境下会遇到静态文件(html、css、js)被锁定、无法即时更新的问题。要想更新这些文件,只能先停掉Jetty,保存修改,再启动Jetty,非常不方便。
解决办法是这样的:
1、从jetty.jar中解出webdefault.xml(位于org.mortbay.jetty.webapp包下)这个文件,把这个useFileMappedBuffer参数设为false
2、把修改后的webdefault.xml文件跟pom.xml放在一起
3、修改pom.xml里的Jetty Plugin的配置,加入
...
...
...
一个Python脚本,让OpenVPN使用postfix邮箱帐号进行身份认证
这几天配置OpenVPN,使用了用户名密码的身份认证方式,借助已有的postfix邮箱帐号,省去了再为每个人设置用户名密码的麻烦。
原理很简单,OpenVPN服务器配置里有这样一句:
auth-user-pass-verify /etc/openvpn/auth-postfix-mailbox.py via-env
就是说要用/etc/openvpn/auth-postfix-mailbox.py这个脚本来验证用户名和密码。用户名和密码如何传递给它呢?via-env,环境变量。
脚本如下:
#!/usr/bin/env python
import os
import sys
from MySQLdb import *
import md5crypt
def auth(username, password):
conn = connect (host = 'localhost',
user = 'dbuser',
passwd = 'dbpasswd',
db = 'postfix')
cursor = conn.cursor()
cursor.execute("""
select password from mailbox
where username=%s
and active=1
""", (username))
row = cursor.fetchone()
if row == None:
return 1
crypt = md5crypt.md5crypt(password, row[0])
cursor.execute("""
select * from mailbox
where username=%s
and password=%s
and active=1
""", (username,crypt))
row = cursor.fetchone()
cursor.close()
conn.close()
if row == None:
return 1
return 0
def main():
status = 0
try:
username = os.environ['username']
password = os.environ['password']
status = auth(username, password)
except:
sys.exit(1)
sys.exit(status)
if __name__ == "__main__":
main()
由于postfix使用md5认证,所以需要用md5crypt这个模块,从这里可以下载到。