2007年12月17日 星期一

Enable chinese input under English locale on Ubuntu

Set up input method for X Window

ubuntu 7.10

sudo im-switch -z en_US -s InputMethodName

ubuntu 8.04

im-switch -z en_US -s InputMethodName

2007年12月6日 星期四

Play mame on Debian

1. xmame is the arcade game machine emulator for UNIX/X. SDL means Simple DirectMedia Layer, is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.

sudo apt-get install xmame-sdl

2. run emulator with roms, there is two ways,
# -rp rompath
# -fullscreen
specify the name of game

xmame.SDL gamename

or

specify the filename

xmame.SDL *.zip

3. press Left Shift + PageUp / PageDown to increase/decrease scale

2007年11月27日 星期二

Listen internet radio on Ubuntu

1. the name of radio software is streamtuner. But it calls xmms to play streaming audio so both are necessary.

apt-get install streamtuner xmms

2. start streamtuner from Application -> Sound & Video -> streamtuner

3. Plugins and tabs are various radio collections.

2007年11月26日 星期一

Watch p2p TV on Ubuntu

1. Download and Install gsopcast

wget http://linuxdesktop.cn/downloads/gsopcast/gsopcast_0.3.1-1_i386.deb
sudo dpkg -i gsopcast_0.3.1-1_i386.deb # -i is equal to --install

2. start gsopcast from Application -> Sound & Video -> Gsopcast

3. Config tab allows user to modify settings, like Player, Outport

2007年11月25日 星期日

Use the integrated client , MLDonkey, to download files from different protocols simultaneously like bittorrent, edonkey, gnutella on Ubuntu

1.install mldonkey

sudo apt-get install mldonkey-server

2. MLDonkey will automatically create hidden necessary directory and files under the user's home when first run

# run silently in background
# mlnet &> /dev/null &
mlnet

3. with default setting, MLDonkey listens port 4000(telnet), 4001(gui), 4080(web) and allows only localhost so you may need to edit the list of IP address.

# if run mldonkey as root, the config files would be in /var/lib/mldonkey/
vi /home/user/.mldonkey/downloads.ini

.
.
allowed_ips = [
"127.0.0.1/0";] # mask 0 allows any ip
.
.
gui_port = 4001
http_port = 4080
telnet_port = 4000
.
.
max_hard_upload_rate = 10 # global speed limiting, KB/s
max_hard_download_rate = 0 # global speed limiting, KB/s
max_hard_upload_rate_2 = 5 # for bandwidth toggle
max_hard_download_rate_2 = 20 # for bandwidth toggle
.
.

4. if you wanna connect to mldonkey server via GUI interface, the best choice is sancho. Just download, then run.
http://sancho-gui.sourceforge.net/download.phtml#linux-gtk

5. Remember to change the password of admin by the mldonkey command

useradd admin password


6. you can also handle mldonkey server via telnet

telnet ip 4000

full mldonkey command
http://mldonkey.sourceforge.net/MLdonkeyCommandsExplained

2007年11月24日 星期六

Setup, Connect, Remove xrdp server on Linux

xrdp is an open source remote desktop protocol(rdp) server.

--To Install
1. download the source code from http://xrdp.sourceforge.net/
2. extract the tarball

tar -zxvf xrdp-0.4.0.tar.gz

3. switch to the folder then complie

make

4. as root, execute the installing script

sudo make install

5. remember to allow port 3389 in firewall
6. as root, run the service

sudo /usr/local/xrdp/xrdp_control.sh start

7. select Module "console" from menu then type the password you set for VNC while connecting to it

--To completely remove xrdp
remove directory /usr/local/xrdp
remove directory /etc/xrdp
remove file /var/run/xrdp.pid
remove file /var/run/sesman.pid
remove any startup links added to /etc/init.d or /etc/rcX.d

2007年11月19日 星期一

Use inadyn to update dyndns automatically on Ubuntu

1. install inadyn client

sudo apt-get install inadyn

2. create the configuration file

sudo vi /etc/inadyn.conf

--username username
--password password
--update_period 60000
--alias myhost.dyndns.org
--background

3. set automatic update on boot

sudo crontab -e


@reboot /usr/sbin/inadyn

SOCKS Forwarding With OpenSSH on Linux

Run ssh on linux

ssh -D port user@host

-D Specifies a local ``dynamic'' application-level port forwarding.
This works by allocating a socket to listen to port on the local side.
The SOCKS4/5 protocols are supported, and ssh will act as a SOCKS server.

Run putty on Windows

1. Connection -> SSH -> Tunnels
2. type port number into "Source port" then add to set up dynamic fowarding for a listening local port
3. leave Destination blank
4. select Dynamic and Auto
5. fill Hostname and Port of ssh eonnction then Open
6. if you wanna keep the session alive by sending null packets periodically, go to Connection then input seconds

2007年9月6日 星期四

Port scanner on Linux


nmap ip


-A: enable OS detection and version detection
-oN/oX filename: output scan in normal, XML format
-n: no reverse DNS resolution
-p[ports]: only scan specified ports
-f: fast mode, fewer ports
-sP: only ping scan
-sS/sT: TCP SYN/Connect() scans
-sU: UDP scan

Empty a file without deleting and recreating commands


echo > filename

2007年8月30日 星期四

Use ulogd to log iptables records into mysql db with web interface, nulog

1. download and install ulogd and ulogd-mysql TESTING rpms from http://rpm.razorsedge.org/centos-5/RE-test/repodata/index.html
2. mysql -u root -p

mysql> create database ulog;

3. vi /etc/ulogd.conf

..
plugin="/usr/lib/ulogd/ulogd_MYSQL.so" #uncomment it for use
..
[MYSQL]
table="ulog"
pass=""
user="root"
db="ulog"
host="localhost"
..

4. download and install NuLog from http://software.inl.fr/trac/trac.cgi/wiki/EdenWall/NuLog

wget http://software.inl.fr/releases/Nulog/nulog-1.2.14.tar.gz
tar zxvf nulog-1.2.14.tar.gz
cd nulog-1.2.14
make install

5. create tables from the script

# the two commands are totally same
cat /root/nulog-1.2.14/scripts/ulogd.mysqldump | mysql -u root -p ulog
mysql -u root -p ulog < /root/nulog-1.2.14/scripts/ulogd.mysqldump

6. /etc/init.d/ulogd start
7. cp /usr/share/edenwall-web/nulog/include/config.template.php /usr/share/edenwall-web/nulog/include/config.php
7. vi /usr/share/edenwall-web/nulog/include/config.php

..
if (!isset($lang))
$lang="en";
..
# database Host
$db_host="localhost";
# database name
$db_ulog="ulog";
# database user
$db_user="root";
# database password
$db_pwd="";
..



* create a password file for basic http authentication
htpasswd -c /var/www/apache.passwd username
* cp nulog_apache.conf /etc/httpd/conf.d/nulog.conf
* vi /etc/httpd/conf.d/nulog.conf

Alias /nulog/ "/usr/share/edenwall-web/nulog/" # path
..
# Authentification
# Create file /path/to/some/file with htpasswd
AuthType Basic
AuthName "Nulog access"
AuthUserFile /var/www/apache.passwd
Require user username

2007年8月29日 星期三

Install the web application, phpMyAdmin to mange MySQL via browser on CentOS

1. yum install phpmyadmin
2. vi /etc/httpd/conf.d/phpmyadmin.conf

<Directory "/usr/share/phpmyadmin">
Order Deny,Allow
# Deny from all
Allow from all # If you want to connect it from anywhere
</Directory>
..
..

3. vi /usr/share/phpmyadmin/config.inc.php

/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = 'RANDOMTEXT'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';

2007年8月20日 星期一

Update the time of CentOS with time server automatically

NTP = Network Time Protocol

1. /usr/sbin/ntpdate ip
time.stdtime.gov.tw
clock.stdtime.gov.tw
tick.stdtime.gov.tw
tock.stdtime.gov.tw
watch.stdtime.gov.tw

2. /usr/sbin/hwclock -w #write into bios
hwclock of ubuntu is in /sbin

3. put the above commands to /etc/cron.daily in order to have automatic update everyday

2007年8月14日 星期二

Connect through SSH tunnel on Windows

1. Download Plink (a command-line interface to the PuTTY back ends)
2. Execute it with parameters on a windows machine

# -C enable compression
# -N don't start a shell/command (SSH-2 only)
# -v show verbose messages
# -ssh force use of SSH protocol
# -L [listen-IP:]listen-port:host:port
# Forward local port to remote address
plink.exe -C -N -v -ssh -L local_port:remote_ip:remote_port -l ssh_username ssh_server_ip

3. Then you could have localhost:port forwarded to remote server with encryption

2007年8月12日 星期日

Set samba server on CentOS

1. vi /etc/samba/smb.conf

[global]

workgroup =
netbios name = # computer name
server string = Samba Server # description of this computer
security = user
hosts allow = 192.168.1. # restrict access
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log # %m = netbios name of clients
max log size = 50
dns proxy = no

[homes]
comment = Home Directories # description
browseable = no # is in the browse list
writable = yes
valid users = %S # %S = replace the text within []

[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes # is seen or not by anyone

[sample]
path = /home/sample
public = no
valid users = @users # @ = group
write list =

2. /usr/bin/testparm # check smb.conf configuration file for internal correctness
4. smbpasswd -a username # add user
5. /etc/init.d/smb start # start samba service
6. /sbin/chkconfig smb on # to start on boot

2007年8月10日 星期五

Set Antinat SOCK4 and SOCKS5 compliant server on CentOS

1. yum install antinat
2. vi /etc/antinat.xml
3. Allow only socks5 client from any ip to any destination

<?xml version='1.0'?>
<antinatconfig>
<!-- Any interface -->
<interface value='0.0.0.0'/>

<!-- Port to listen on -->
<port value='1080'/>

<!-- Allow users to be authenticated against UNIX usernames -->
<allowlocalusers/>

<!-- Time in seconds to listen for outside incoming connections when
applications request a BIND operation before timeout -->
<maxbindwait value='60'/>

<!-- demonstration user account -->
<!-- <user user='testuser' password='testpass'/> -->

<!-- What logs should we keep? -->
<log>
<addrdaylog value='/var/log/antinat/day_addr.log'/>
<userdaylog value='/var/log/antinat/day_user.log'/>
<connlog value='/var/log/antinat/connection.log'/>
</log>

<!-- What security methods do we offer clients? -->
<authchoice source_addrtype='ipv4'>
<select mechanism='chap'/>
<select mechanism='cleartext'/>
</authchoice>

<!-- Which connections should we accept or reject? -->
<filter>
<filter source_addrtype='ipv4' dest_addrtype='ipv4'>
<filter user='root'>
<reject/>
</filter>
<filter version='4'>
<reject/>
</filter>
</filter>
<accept/>
</filter>

</antinatconfig>

4. mkdir /var/log/antinat # for logging directory

2007年8月9日 星期四

mysql

change root password
mysqladmin -h mysql_server -u root -p password 12345

Account and Group config files on Linux

Account: /etc/passwd
name:password:UID:GID:description:directory:shell

Group: /etc/groups
name:password:GID:members

"ddclient dead but pid file exists" on CentOS

/etc/rc.d/init.d/ddclient status
ddclient dead but pid file exists

solution:

#-p, --parents, make parent directories as needed
mkdir -p /var/cache/ddclient

2007年8月8日 星期三

2007年8月7日 星期二

Add DAG into YUM on CentOS

Install the latest rpmforge-release package for Red Hat Enterprise Linux 5. This will automatically install the configuration and GPG keys that are for safely installing RPMforge packages.

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

2007年7月24日 星期二

Display Information and Parameters of Hard Disk Drives on CentOS


# smartmontools
# -a, -all: Prints all SMART information about the disk
/usr/sbin/smartctl -a /dev/<device>

# hdparm - get/set hard disk parameters
/sbin/hdparm /dev/<device>

pppoe[pid]: Bad TCP checksum someValue on CentOS

From /var/log/messages
The reason it happens is because you have short circuted the modem to the hub and the pppoe protocol or software have trouble keeping things in sync because of timeouts that were generated by the network collisions. The solution is to seperate the modem network from the home network so no collisions will happen. However, the CLAMPMSS=no could also help since it can reduce overheads and thus lower timeouts (if any)though i didn't check that. other things can help like increasing timeouts, hanging synchronization options but it would be cheaper by time/money to just buy another ethernet card and be done with it.

1. vi /etc/sysconfig/network-scripts/ifcfg-ppp0

..
CLAMPMSS=no
..

2. /sbin/iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

2007年7月23日 星期一

Setup NAT server on Linux

1. change the value of ip_forward from 0 to 1

CentOS

echo "1" > /proc/sys/net/ipv4/ip_forward


Ubuntu

sudo vi /etc/sysctl.conf
--
..
net.ipv4.ip_forward=1
..

sudo sysctl -p # load sysctl settings

2. load related modules

/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc

3. 192.168.1.1 ~ 192.168.1.254 route through ppp0

/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE

4. if you want the above things done every time you boot the machine, you can add these into /etc/rc.local

2007年7月16日 星期一

Setup aMule's Webserver on CentOS

Although there is a RPM of aMule for RHEL5 and CentOS, it has only aMule main program. If you would like to remote control your aMule server, you must have aMuleWeb installed. For CentOS users, you have to compile the sourcecode of aMule by yourself because aMuleWeb is compiled at the same time you compile aMule by using the --enable-amuleweb flag when you run configure.

1. Download sourcecode from http://www.amule.org/files/files.php?cat=34 and extract it
2. Install below packages for compiling environment
zlib-devel, wxGTK-devel, gettext-devel, gcc-c++
3. Check http://www.amule.org/wiki/index.php/Configure for all available parameters
./configure --prefix=/usr --enable-webserver --enable-amulecmd --enable-amule-daemon --enable-cas --enable-wxcas --enable-alc --enable-alcc
4.

make # It takes much long time
make install

5. Run aMule from desktop or shell
6. Go to "Preferences"
Enable "Accept External Connections"
Enter a password for External Connections. This is for external programs like amulecmd and amulegui
Enable "Run amuleweb on startup"
Type a password into "Full right" field. This is the password that you want to type when you login
7. Restart aMule in order to make the changes to take effect.
8. Remember to open 4711 port of the firewall so that you can open aMuleWeb in a browser by entering the URL, http://ip:4711

2007年7月15日 星期日

To handle RAR files on CentOS


yum install rar unrar

After installing the two packages, your default archive manager will support RAR format

2007年7月14日 星期六

Set an alarm at a specified time on CentOS


at 23:00 2005-09-15
at> /usr/local/bin/alarm
at> ..
at> # multiple commands can be executed at same time
at> ..
at> <EOT> # pressing CTRL + D means save and exit


atq #lists the user's pending jobs

2007年7月13日 星期五

ERROR 400: Bad Request while MoBlock try to wget level1.gz list

This is caused by the server for that list not working with wget's time-stamping option ( parameter -n )
A workaround is to update the list manually without time-stamping:

cd /var/spool/moblock/cache/dl/
wget http://www.bluetack.co.uk/config/level1.gz

then run the guardian.p2p rebuild process

Rebuild the blocklist of MoBlock on CentOS


# stop service first
/sbin/service moblock stop
#after updating /etc/moblock/lists or whitelist
/etc/cron.daily/moblock reload
#start MoBlock
/sbin/service moblock start

Add an ip or a range to the whitelist of MoBlock on CentOS

1. if there's an IP address you need to whitelist, find the entry in /etc/moblock/guarding.p2p, for example:

FooBar, inc:192.0.34.164-192.0.34.168

2. you need to make a basic regular expression for grep from this line and put it in /etc/moblock/whitelist. To match the exact line, you need to put a backslash (\) before every metacharacter (\, ., ^, $, [) and put a caret ^ at the beginning and a dollar sign $ at the end. In this example, a valid expression is:

^FooBar, inc:192\.0\.34\.164-192\.0\.34\.168$

see the manpages for grep for more information.

2007年7月12日 星期四

Install PeerGuardian Linux on CentOS

1. yum install libnfnetlink-devel
2. download latest libnetfilter_queue from http://www.netfilter.org/projects/libnetfilter_queue/downloads.html
3. tar -jxvf libnetfilter_queue-0.0.13.tar.bz2
4. change to the directory where you extracted the file then execute

./configure
make
make install

5. mv /usr/local/lib/libnetfilter_queue* /usr/lib
6. download MoBlock from http://moblock.berlios.de/
7. tar -jxvf MoBlock-0.8-i586.tar.bz2
8. in the directory where you extracted the files, build MoBlock with:

make
make install

9. mkdir /etc/moblock
10. vi /etc/moblock/lists

# find various blocklist from
# http://www.bluetack.co.uk/forums/index.php?act=dscriptca&CODE=viewcat&cat_id=4
http://www.bluetack.co.uk/config/level1.gz

11. touch /etc/moblock/whitelist
12. vi /etc/init.d/moblock ( edit the WHITE_... variables to whitelist certain ports. )

#!/bin/sh
#
# moblock This shellscript takes care of starting and stopping moblock.
#
# chkconfig: 345 30 70
# description: MoBlock is a application that enables you to block internet \
# traffic based on large lists of ip address ranges in order to \
# protect your privacy.
# processname: moblock
#

ACTIVATE_CHAINS=1
MODE="nfq"
WHITE_TCP_IN=""
WHITE_UDP_IN=""
WHITE_TCP_OUT="21 22 80 110 443"
WHITE_UDP_OUT="123"
WHITE_TCP_FORWARD=""
WHITE_UDP_FORWARD=""

PIDF="/var/run/moblock.pid"
LIST="/etc/moblock/guarding.p2p"
PRG="moblock"
LOG="/var/log/$PRG"
BIN="/usr/bin/$PRG"
CMD="$BIN -p $LIST $LOG >/dev/null &"


# Source function library.
. /etc/rc.d/init.d/functions


fail () {
failure "$2"
echo
[ -n "$1" ] && echo "$1"
}

iptables_init () {
if [ $MODE == "ipq" ]; then
modprobe ip_queue
TARGET="QUEUE"
elif [ $MODE == "nfq" ]; then
modprobe ipt_NFQUEUE
TARGET="NFQUEUE"
fi;
modprobe ipt_state
iptables -N MOBLOCK_IN
iptables -N MOBLOCK_OUT
iptables -N MOBLOCK_FW
if [ $ACTIVATE_CHAINS -eq 1 ]; then
iptables -I INPUT -p all -m state --state NEW -j MOBLOCK_IN
iptables -I OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT
iptables -I FORWARD -p all -m state --state NEW -j MOBLOCK_FW
fi;
iptables -I MOBLOCK_IN -p all -j $TARGET
iptables -I MOBLOCK_OUT -p all -j $TARGET
iptables -I MOBLOCK_FW -p all -j $TARGET

for PORT in $WHITE_TCP_OUT; do
iptables -I MOBLOCK_OUT -p tcp --dport $PORT -j ACCEPT
done
for PORT in $WHITE_UDP_OUT; do
iptables -I MOBLOCK_OUT -p udp --dport $PORT -j ACCEPT
done

for PORT in $WHITE_TCP_IN; do
iptables -I MOBLOCK_IN -p tcp --dport $PORT -j ACCEPT
done
for PORT in $WHITE_UDP_IN; do
iptables -I MOBLOCK_IN -p udp --dport $PORT -j ACCEPT
done

for PORT in $WHITE_TCP_FORWARD; do
iptables -I MOBLOCK_FW -p tcp --dport $PORT -j ACCEPT
done
for PORT in $WHITE_UDP_FORWARD; do
iptables -I MOBLOCK_FW -p udp --dport $PORT -j ACCEPT
done

# Loopback traffic fix
iptables -I INPUT -p all -i lo -j ACCEPT
iptables -I OUTPUT -p all -o lo -j ACCEPT
}

iptables_reset () {
if [ $ACTIVATE_CHAINS -eq 1 ]; then
iptables -D INPUT -p all -m state --state NEW -j MOBLOCK_IN
iptables -D OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT
iptables -D FORWARD -p all -m state --state NEW -j MOBLOCK_FW
fi;
iptables -D INPUT -p all -i lo -j ACCEPT
iptables -D OUTPUT -p all -o lo -j ACCEPT
iptables -F MOBLOCK_IN
iptables -X MOBLOCK_IN
iptables -F MOBLOCK_OUT
iptables -X MOBLOCK_OUT
iptables -F MOBLOCK_FW
iptables -X MOBLOCK_FW
}

start () {
echo -n $"Starting MoBlock: "
if ! [ -x $BIN ]; then
fail "Can't execute $BIN" "$PRG startup"
return 1
fi;
if ! [ -f $LIST ]; then
fail "Can't find $LIST" "$PRG startup"
return 1
fi;
if [ -f $PIDF ]; then
PID=`cat $PIDF`
if ps -p $PID >/dev/null; then
fail "$PIDF exists and $PRG is running." "$PRG startup"
return 1
fi;
fi;
iptables_init
daemon "$CMD"
RETVAL=$?
echo
return $RETVAL
}

stop () {
echo -n $"Stopping MoBlock: "
killproc -p "$PIDF" "$PRG"
RETVAL=$?
echo
if ! pidof "$PRG"; then
iptables_reset 2>/dev/null 1>&2
fi;
return $RETVAL
}

case "$1" in
start)
start
;;
stop)
stop
;;
reload)
if [ -f $PIDF ]; then
kill -HUP `cat $PIDF`
RETVAL=$?
fi
;;
restart)
stop
start
RETVAL=$?
;;
condrestart)
# restart only if already running
if [ -f $PIDF ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $PRG
RETVAL=$?
;;
top)
if [ -f $PIDF ]; then
a=""
for i in `pidof $PRG`; do
a="$a -p $i"
done
top $a
fi
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|condrestart|status|top}"
exit 1
esac

exit $RETVAL

13. chmod +x /etc/init.d/moblock
14. vi /etc/cron.daily/moblock

#!/bin/bash

LURLS="/etc/moblock/lists"
WLIST="/etc/moblock/whitelist"
LIST="/etc/moblock/guarding.p2p"

CACHE="/var/spool/moblock/cache"
FMD5=".md5sum"
DLDIR="dl"

RELOADCMD="/sbin/service moblock reload"

acat () {
while read -r -d $'\0' fn; do
if [ "$(head -c 2 "$fn")" = $'\x1f\x8b' ]; then
gunzip -c "$fn"
elif [ "$(head -c 4 "$fn")" = $'\x50\x4b\x03\x04' ]; then
unzip -p "$fn"
else
cat "$fn"
fi
done
}

download () {
MD5SUM=`md5sum "$LURLS" | cut -c -32`
if [ -f "./$FMD5" ]; then
if [ `cat "$FMD5"` != $MD5SUM ]; then
# The list source file has changed.
# Clean the dl directory.
rm "./$DLDIR"/*
fi;
elif [ `ls -A . | wc -l` -gt 0 ]; then
# There's no md5 file, but the directory is not empty.
# Something's wrong, bail out.
echo "$(pwd) is not empty." >/dev/stderr
exit 1
fi;
echo $MD5SUM >"./$FMD5"
wget -nv -N -t 3 -w 1 -T 120 -P "./$DLDIR" -i "$LURLS"
}

reload () {
find "./$DLDIR" -type f -print0 | acat | dos2unix | nice uniq | \
(nice grep -a -v -f "$WLIST" 2>/dev/null || cat) >"$LIST"
$RELOADCMD
}

if ! [ -f "$LURLS" ]; then
echo "Can't find $LURLS" >/dev/stderr
exit 1
fi;
mkdir -p "$CACHE"
pushd "$CACHE" >/dev/null || exit 1
case "$1" in
reload | nodownload)
reload
;;
'' | download)
download
reload
;;
*)
echo $"Usage: $0 [reload]"
exit 1
esac
popd >/dev/null

15. chmod +x /etc/cron.daily/moblock
16. before you can start the MoBlock service, you need to download the lists first

/etc/cron.daily/moblock

17. make MoBlock to start on boot

/sbin/chkconfig --add moblock

18. to control the MoBlock service, use service moblock command, where command is one of the following:
* start – start MoBlock.
* stop – stop MoBlock.
* reload – reload the blocklist, reset the stats and reopen the log file.
* restart – restart MoBlock. Note that this will start MoBlock even if it was not already running.
* condrestart – restart MoBlock if it is already running.
* status – show whether MoBlock is running or not.
* top – show MoBlock's CPU usage, memory usage, etc.

Add firewall rules for aMule in order to get a HighID on CentOS

1. Insert iptables rules:

/sbin/iptables -I RH-Firewall-1-INPUT -p tcp --dport 4662 -j ACCEPT
/sbin/iptables -I RH-Firewall-1-INPUT -p udp --dport 4665 -j ACCEPT
/sbin/iptables -I RH-Firewall-1-INPUT -p udp --dport 4672 -j ACCEPT

2. Get the rules saved to /etc/sysconfig/iptables using iptables-save

/sbin/service iptables save

3. Restart iptables

/etc/init.d/iptables restart

2007年7月11日 星期三

Use ddclient to update dyndns automatically on CentOS

vi /etc/ddclient/ddclient.conf
some parameters have to be uncommented and set


use=web # via web
login= # default login
password= # default password

##
## dyndns.org dynamic addresses
##
## (supports variables: wildcard,mx,backupmx)
##
server=members.dyndns.org, \
protocol=dyndns2 \
yours.dyndns.org

/etc/rc.d/init.d/ddclient {start|stop|restart|status}

Set up an mp3 alarm on CentOS

1. Make sure the user who will run the alarm is not in /etc/cron.deny
2. Log in as the user then type crontab -e for editing his cron entry
# dom = Day of Month
# dow = Day of Week
# m h dom mon dow command
42 07 * * 1-5 /usr/local/bin/alarm

3. vi /usr/local/bin/alarm


# run xterm to execute mplayer in another window
# with the parameter, display 0 you can quit playing easily,
# the parameter -loop 0 means repeat forever.
/usr/bin/xterm -display :0 -bg black -fg white \
-e /usr/local/mplayer -loop 0 filename.mp3



/usr/bin/mplayer -loop 0 filename.mp3

4. Remember to give permission of execution to alarm
chmod 7xx alarm

5. An easy way to stop playing, use the command pkill

pkill mplayer

2007年7月6日 星期五

Fonts of wine disappear on CentOS

Install Microsoft's TrueType core fonts

1. Make sure you have the following rpm-packages installed
# rpm-build
# wget
# ttmkfdir
# cabextract

2. Set up an rpm build environment in your home directory by adding the line %_topdir %(echo $HOME)/rpmbuild to your $HOME/.rpmmacros and create the directories $HOME/rpmbuild/BUILD and $HOME/rpmbuild/RPMS/noarch

3.
# Build the binary rpm
rpmbuild -bb msttcorefonts-2.0-1.spec
# Install the newly built rpm (you will need to be root):
rpm -ivh $HOME/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
# Reload the X font server
/sbin/service xfs reload

2007年7月5日 星期四

Set vncserver on CentOS

1. vi /etc/sysconfig/vncservers
uncomment # VNCSERVERS="2:myusername"
2. locally log in the user you want to connect via vnc then type vncpasswd
3. vi /home/$user/.vnc/xstartup
replace "twm &" with "exec gnome-session &"
4. allow the vnc tcp port of firewall, display 2 is equal to port 5902

2007年7月2日 星期一

( fc-cache ) failed to write cache

/usr/share/fonts: failed to write cache
/usr/share/fonts/encodings/large: failed to write cache
/usr/X11/share/fonts: failed to write cache
/usr/X11/share/fonts/encodings/large: failed to write


"touch" each folder to solve it

2007年6月27日 星期三

better chinese font on zenwalk

download http://edt1023.sayya.org/slackware/11.0/fireflysung-1.3.0p1-noarch-1.tgz
installpkg
vi /etc/fonts/conf.d/10-myfonts.conf
copy & paste
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<!-- conf.d/myfont.conf -->
<fontconfig>

<dir>/usr/share/fonts</dir>
<dir>/usr/share/fonts/local</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>
<!--加入點陣字體路徑-->
<dir>/usr/X11R6/lib/X11/fonts</dir>

<!--所有字型預設樣式-->
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
</match>

<!--打開中文粗體-->
<match target="font">
<test name="family" compare="contains">
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<test compare="more_eq" target="pattern" name="weight">
<int>180</int>
</test>
<edit mode="assign" name="embolden">
<bool>true</bool>
</edit>
</match>

<!-- 關閉小字AA -->
<match target="font">
<test name="pixelsize" compare="less">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>

<!-- 關閉宋體、明體小字AA -->
<match target="font">
<test name="family" compare="contains">
<string>Song</string>
<string>Sun</string>
<string>Ming</string>
</test>
<test name="pixelsize" compare="less_eq">
<double>20</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>

<!-- 解決中文字體英文間距過寬 -->
<match target="font">
<test target="pattern" name="lang" compare="contains">
<string>zh-tw</string>
<string>zh-cn</string>
<string>ja</string>
<string>ko</string>
</test>
<edit name="spacing">
<const>proportional</const>
</edit>
<edit name="globaladvance">
<bool>false</bool>
</edit>
</match>

<!--設定中文最小字號-->
<match target="font" >
<test name="family" compare="contains">
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<test name="pixelsize" compare="more_eq">
<double>8</double>
</test>
<test name="pixelsize" compare="less_eq">
<double>12</double>
</test>
<edit name="pixelsize" compare="eq">
<double>12</double>
</edit>
</match>

<!--適應中文用戶的用字習慣-->
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Bitstream Vera Serif</family>
<family>Times New Roman</family>
<family>Times</family>
<family>AR PL New Sung</family>
<family>AR PL ShanHeiSun Uni</family>
<family>Kochi Mincho</family>
<family>UnBatang</family>
<family>Baekmuk Batang</family>
</prefer>
</alias>

<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>Bitstream Vera Sans</family>
<family>Lucida Grande</family>
<family>Helvetica</family>
<family>Arial</family>
<family>Verdana</family>
<family>AR PL New Sung</family>
<family>AR PL ShanHeiSun Uni</family>
<family>Kochi Gothic</family>
<family>UnDotum</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>

<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>Bitstream Vera Sans Mono</family>
<family>Andale Mono</family>
<family>Courier New</family>
<family>Courier</family>
<family>AR PL New Sung Mono</family>
<family>AR PL New Sung</family>
<family>AR PL ShanHeiSun Uni</family>
<family>Kochi Gothic</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>

<alias>
<family>新細明體</family>
<prefer>
<family>AR PL New Sung</family>
<family>AR PL ShanHeiSun Uni</family>
</prefer>
</alias>

<alias>
<family>標楷體</family>
<prefer>
<family>AR PL New Kai</family>
<family>AR PL KaitiM Big5</family>
<family>AR PL KaitiM GB</family>
<family>AR PL ZenKai Uni</family>
</prefer>
</alias>

</fontconfig>

chinese input on zenwalk

1. download gcin from http://edt1023.sayya.org/slackware/11.0/
2. root# installpkg gcin-1.3.3-i686-1.tgz

amule in zenwalk

amule: error while loading shared libraries: libbfd-2.17.50.0.15.20070418.so: cannot open shared object file: No such file or directory

--
ln -s libbfd-2.17.50.0.16.20070511.so libbfd-2.17.50.0.15.20070418.so