2009年12月14日 星期一

上班時間種田是沒薪水的~By Squid 定時規則

上班時間為09:00~18:00,午休時間12:00~13:00開放自由上網

1.在squid.conf裡加入幾條規則
 vim /etc/squid/squid.conf

◎設定休息時間
acl RestTime time 12:00-13:00

◎設定上班時間
acl WorkTime time MTWHF 9:00-18:00

◎設定禁止連線的網域(參考用)
acl Deny_Domain dstdomain .1001ya.com.tw .17funtv.com .51mole.com.tw .6-10.com.tw .6npc.com .6waves.com .941wan.com.tw .Plurk.com .aido.com.tw .battleknight.tw .bitefight.tw .buboo.tw .chinesegamer.net .cmwebgame.com .e72play.com .elex-tech.us .facebook.com .gamelet.com .gamez.com.tw .gindis.com .gladiatus.tw .godgame.com.tw .goldsky.com.tw .hugashaga.com.tw .ikariam.tw .joyct.com .katsuro.tw .kingsage.tw .meropar.tw .miniworld.com.tw .myspace.com .nindou.com.tw .ogame.tw .oldtu.com .playfish.com .po.msn.com.tw .roida.no-ip.org .serverhk.net .shuaing.com .tanoth.tw .timeheros.com .travian.tw .truehero.com.tw .twitter.com .wayi.com.tw .web3go.com.tw .webgame.pchome.com.tw .wlb.com.tw .wowuc.cn .ya7.com.tw .zynga.com

◎設定禁止連線的IP(參考用)
acl Deny_IP dst 114.80.75.220/32 122.116.31.92/32 122.146.203.228/32 123.110.200.35/32 123.55.248.26/32 125.67.235.199/32 168.143.162.64/26 174.120.26.218/32 174.37.227.82/32 199.71.212.91/32 202.153.175.126/32 203.73.22.132/32 204.74.66.132/32 204.74.67.132/32 207.46.61.31/32 210.17.20.96/27 210.242.32.192/26 210.242.34.22/32 210.59.145.150/32 210.59.230.184/32 211.72.255.76/32 211.76.177.154/32 216.178.38.116/32 216.86.150.58/32 216.97.228.247/32 217.160.6.64/32 219.84.193.1/32 219.90.126.148/32 220.130.112.187/32 220.228.196.240/29 24.143.195.43/32 59.120.84.206/32 60.199.197.177/32 61.188.178.51/32 61.31.192.1/32 61.31.192.56/29 61.31.192.80/30 61.31.224.110/32 61.61.132.34/32 61.63.43.97/32 61.63.52.81/32 61.67.128.128/30 61.67.168.150/32 61.67.212.224/27 66.151.151.149/32 69.63.176.101/32 69.63.176.8/30 69.63.181.8/29 69.63.184.142/32 69.63.185.11/32 69.63.186.0/26 69.63.187.0/27 69.63.191.219/32 69.63.191.91/32 69.65.42.218/32 72.249.23.165/32 72.44.35.31/32 74.208.147.52/32 74.208.155.165/32 74.208.167.108/32 74.208.44.207/32 74.208.79.164/32 74.208.98.38/32 87.106.71.99/32


◎先設定午休時間允許的規則
http_access allow Deny_Domain RestTime
http_access allow Deny_IP RestTime

◎再設定上班時間拒絕的規則
http_access deny Deny_Domain WorkTime
http_access deny Deny_IP WorkTime

※squid的規則是越前面的規則優先順序越高。
※http_access allow 跟 deny後規則的邏輯是AND,兩個條件皆成立時才會作用。

2.套用規則
/usr/sbin/squid -k reconfigure

2009年11月3日 星期二

[PHP]指定範圍字串擷取、字串(數字)範圍判斷

因為某些特殊原因,所以做了這兩個FUNCTION.....

◎可以在字串中取出兩特定關鍵字內的字串

function CatchStr($Str, $StaKey, $EndKey){
 $StaPos = strpos($Str, $StaKey);
 $EndPos = strpos($Str, $EndKey);
 $StaLen = strlen($StaKey);
 $EndLen = strlen($EndKey);

 $CatchKey = substr($Str, $StaPos + $StaLen , $EndPos - $StaPos - $EndLen);
 $OtherKeyA = substr($Str, 0, $StaPos);
 $OtherKeyB = substr($Str, $EndPos + $EndLen);

 return array($CatchKey, $OtherKeyA, $OtherKeyB);
}


CatchStr(字串, 開頭關鍵字, 結尾關鍵字)

例:
$Str = "ABCDE{1234567890}FGHIJK";
$StrArray = CatchStr($Str, "{", "}");
結果:
$StrArray[0] = 1234567890
$StrArray[1] = ABCDE
$StrArray[2] = FGHIJK



◎可以判斷把字串中數字做範圍比較


function SearchNum($Str, $Target, $CountSym = ",", $ToSym = "-"){
 $StrArray = explode($CountSym, $Str);

 foreach ($StrArray as &$value) {
  if (strpos($value, $ToSym)) {
   $VarArray = explode($ToSym, $value);
   if ($VarArray[0] <= $Target && $Target <= $VarArray[1]){
    $Touch = "true";
   }else{
    $Touch = "false";
   }
  }else{
   if ($value == $Target){
    $Touch = "true";
   }else{
    $Touch = "false";
   }
  }
 }
 return $Touch;
}

SearchNum(字串, 欲尋找的目標數值, 每筆資料的分隔符號(預設 , ), 連續資料的連接符號(預設 - ))

例:
$Str = "1,2,3,4,5,6-10,11,12,13";
$StrAns = SearchNum($Str, 8);
結果:
$StrAns = "true"


例:
$Str = "1,2,3,4,5,6,10,11,12,13";
$StrAns = SearchNum($Str, 8);
結果:
$StrAns = "false"



其實這兩個Function還沒有很完美,
CatchStr()還不能判斷字串中有多個關鍵符號,目前只能取第一次出現的關鍵符號。
SearchNum()還不能判斷連續數字的大小順序,只能由小到大判斷。

以後有空在改版~ :P

2009年10月29日 星期四

網路開機 Wake on Lan

◎在Windows下,使用命令列網路開機
1.從Depicus下載WoL Command Line程式
2.解壓縮後得到WolCmd.exe
3.從命令列執行或是寫成批次擋執行
EX.
d:\wolcmd 001122334455 200.210.230.240 255.255.255.240
d:\wolcmd 00aabbccddee 10.0.0.254 255.255.255.0

Depicus官網: http://www.depicus.com/wake-on-lan/

Depicus下載: http://www.depicus.com/download.aspx?product=commandline


◎在Linux下,使用命令列網路開機
1.使用RPM安裝
rpm -ivh http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/wakeonlan-0.41-0.fdr.1.noarch.rpm
2.執行 wakeonlan
EX.
一般喚醒
wakeonlan 00:11:22:33:44:99
指定IP跟PORT
wakeonlan -i 192.168.1.1 -p 7 00:11:22:33:44:99

官網: http://gsd.di.uminho.pt/jpo/software/wakeonlan/

2009年10月22日 星期四

使用tc進行限流(QOS)

系統使用CentOS 5.1
使用內建的tc指令進行限流

1.編輯tc規則
◎此例是與iptables規則檔放在一起,也可另外存放執行

vim /etc/iptables.rule

#設定網卡參數

WAN_IF="eth0"

LAN_IF="eth1"

#下載限流規則(針對內部網卡)
##清除規則
/sbin/tc qdisc del dev $LAN_IF root 2>/dev/null
##設定預設群組
/sbin/tc qdisc add dev $LAN_IF root handle 10: htb default 30
##設定群組總流量,rate保障頻寬、ceil限制頻寬
/sbin/tc class add dev $LAN_IF parent 10: classid 10:1 htb rate 256kbps ceil 256kbps
##設定各群組限流,prio為分配頻寬的優先順序
/sbin/tc class add dev $LAN_IF parent 10:1 classid 10:10 htb rate 64kbps ceil 256kbps prio 1
/sbin/tc class add dev $LAN_IF parent 10:1 classid 10:20 htb rate 64kbps ceil 128kbps prio 1
/sbin/tc class add dev $LAN_IF parent 10:1 classid 10:30 htb rate 32kbps ceil 64kbps prio 2
/sbin/tc qdisc add dev $LAN_IF parent 10:10 handle 101: pfifo
/sbin/tc qdisc add dev $LAN_IF parent 10:20 handle 102: pfifo
/sbin/tc qdisc add dev $LAN_IF parent 10:30 handle 103: pfifo
/sbin/tc filter add dev $LAN_IF parent 10: protocol ip prio 100 handle 10 fw classid 10:10
/sbin/tc filter add dev $LAN_IF parent 10: protocol ip prio 100 handle 20 fw classid 10:20
/sbin/tc filter add dev $LAN_IF parent 10: protocol ip prio 100 handle 30 fw classid 10:30

#上傳限流規則(針對外部網卡)
/sbin/tc qdisc del dev $WAN_IF root 2>/dev/null
/sbin/tc qdisc add dev $WAN_IF root handle 10: htb default 30
/sbin/tc class add dev $WAN_IF parent 10: classid 10:1 htb rate 256kbps ceil 256kbps
/sbin/tc class add dev $WAN_IF parent 10:1 classid 10:10 htb rate 64kbps ceil 256kbps prio 1
/sbin/tc class add dev $WAN_IF parent 10:1 classid 10:20 htb rate 64kbps ceil 128kbps prio 1
/sbin/tc class add dev $WAN_IF parent 10:1 classid 10:30 htb rate 32kbps ceil 64kbps prio 2
/sbin/tc qdisc add dev $WAN_IF parent 10:10 handle 101: pfifo
/sbin/tc qdisc add dev $WAN_IF parent 10:20 handle 102: pfifo
/sbin/tc qdisc add dev $WAN_IF parent 10:30 handle 103: pfifo
/sbin/tc filter add dev $WAN_IF parent 10: protocol ip prio 100 handle 10 fw classid 10:10
/sbin/tc filter add dev $WAN_IF parent 10: protocol ip prio 100 handle 20 fw classid 10:20
/sbin/tc filter add dev $WAN_IF parent 10: protocol ip prio 100 handle 30 fw classid 10:30

2.設定iptables規則,針對IP將封包加上標記
◎如果美各IP需分別設定上傳跟下載的規則,用戶多時會造成規則暴增,所以我改用陣列方式執行規則

#建立QOSa陣列,將分組10用戶IP加入
QOSa=(192.168.1.1 192.168.1.2 192.168.1.3)

#針對QOSa陣列,標記為群組10
for IPa in ${QOSa[@]}; do
/sbin/iptables -t mangle -A POSTROUTING -d $IPa -j MARK --set-mark 10
/sbin/iptables -t mangle -A PREROUTING -s $IPa -j MARK --set-mark 10
done

#建立QOSa陣列,將分組20用戶IP加入
QOSb=(192.168.1.10 192.168.1.11 192.168.1.12)

#針對QOSb陣列,標記為群組20
for IPb in ${QOSb[@]}; do
/sbin/iptables -t mangle -A POSTROUTING -d $IPb -j MARK --set-mark 20
/sbin/iptables -t mangle -A PREROUTING -s $IPb -j MARK --set-mark 20
done

3.執行規則
如果規則都是放在iptables.rule的話,只要執行iptables.rule即可
sh /etc/iptables.rule
或是執行自建的規則檔

2009年10月8日 星期四

SIP的圖形管理介面:asterisk-gui

使用CentOS系統,已安裝asterisk 1.4

1.安裝svn
yum install subversion

2.使用svn下載asterisk-gui
svn co http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui

3.安裝
asterisk-gui
cd asterisk-gui sh configure && make && make install

4.設定網頁環境
vim /etc/asterisk/http.conf
http.conf:

[general]
enabled=yes
bindaddr=0.0.0.0 #指定使用IP
bindport=8088 #指定使用PORT
prefix=asterisk
enablestatic=yes

5.設定登入帳號
vim /etc/asterisk/manager.conf
manager.conf:

[general]
enabled=yes
webenabled=yes
port=5038
bindaddr=0.0.0.0

[admin] #登入ID
secret=admin123 #登入密碼
deny=0.0.0.0/0.0.0.0 #拒絕來源的IP
permit=127.0.0.1/255.255.255.0 #允許來源的IP
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user


  • 執行make checkconfig 可以檢查是否有設定錯誤

2009年9月13日 星期日

Linux 指令歷程紀錄

想要查詢之前執行過的指令,除了按↑一條條指令往前回溯外,也可以直接開啟 .bash_history 檔,直接瀏覽所有的歷程紀錄。
.bash_history 的路徑位於每個帳號的家目錄下

EX.

/home/User/.bash_history User的紀錄位置

/root/.bash_history root的紀錄位置

◎要使指令不進行紀錄,只需要修改profile

vim /etc/profile

HISTSIZE=0

◎若只想部分指令不紀錄,可修改.bashrc

1.編輯.bashrc,加入指令
vim .bashrc

export HISTCONTROL=ignorespace

2.重新載入.bashrc

source .bashrc
或重新登入

※也可以直接執行HISTCONTROL=ignorespace

這樣只要在執行指令前加一個空格,指令就不會被記錄了~

2009年8月12日 星期三

清除DNS Cache

※清除DNS Cache

◎Window系列


ipconfig /flushdns


◎Linux系列


service nscd restart


◎Mac系列


lookupd -flushcache


2009年8月4日 星期二

ASP使用AD的LDAP做登入驗證

以下插入<head>

<%
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString <> "" Then MM_LoginAction = MM_LoginAction + "?" + Server.HTMLEncode(Request.QueryString)
'#驗證的帳號表單
MM_valUsername = CStr(Request.Form("userid"))
If MM_valUsername <> "" Then
Dim MM_fldUserAuthorization
Dim MM_redirectLoginSuccess
Dim MM_redirectLoginFailed
dim strpassword,domainname
dim objDomain,objADsPath,objConnection,objCommand,objRS

MM_fldUserAuthorization = ""
'#驗證成功後前往的頁面
MM_redirectLoginSuccess = "LoginSuccess.asp"
'#驗證失敗後前往的頁面
MM_redirectLoginFailed = "LoginFailed.asp"
'#驗證的密碼表單名稱
strpassword=Request.Form("passwd")
'#驗證網域名稱,EX:domain.com,填入domain即可
domainname="domain"

on error resume next

Set objDomain = GetObject ("GC://rootDSE")
objADsPath = objDomain.Get("defaultNamingContext")
Set objDomain = Nothing
Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.provider ="ADsDSOObject"
objConnection.Properties("User ID") = domainname+"\"+MM_valUsername
objConnection.Properties("Password") = strpassword
objConnection.open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText ="select cn FROM 'GC://"+objADsPath+"' where sAMAccountname='"+MM_valUsername+"'"
Set objRS = objCommand.Execute

If Err.Number = 0 Then
'#驗證成功後產生帳號的Session
Session("MM_Username") = MM_valUsername
Response.Redirect(MM_redirectLoginSuccess)
else
Response.Redirect(MM_redirectLoginFailed)
End if
End if
%>

</head>


以下插入<body>

<form id="form2" name="form1" method="POST" action="<%=MM_LoginAction%>">
<p align="center">帳號:
<label>
<input name="userid" type="text" id="userid" />
</label>
</p>
<p align="center">密碼:
<label>
<input type="password" name="passwd" id="passwd" />
</label>
</p>
<p align="center">
<label>
<input type="submit" name="login" id="login" value="送出" />
</label>
<label>
<input type="reset" name="clean" id="clean" value="重設" />
</label>
</p>
</form>


</body>

2009年7月29日 星期三

Postfix的郵件"備份"方式

Postfix也可以使用BCC的方式來備份收發的信件

vim /etc/postfix/main.cf

有三種模式可以使用,直接在main.cf加入即可
1.以收件者判斷
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
加入後編輯規則檔
vim /etc/postfix/recipient_bcc
User@mail.com.tw bcc@mail.com.tw
存檔後產生DB
/usr/sbin/postmap /etc/postfix/recipient_bcc

2.以寄件者判斷
sender_bcc_maps = hash:/etc/postfix/sender_bcc
加入後編輯規則檔
vim /etc/postfix/sender_bcc
Sender@mail.com.tw bcc@mail.com.tw
存檔後產生DB
/usr/sbin/postmap /etc/postfix/sender_bcc


3.全部備份
always_bcc = Admin@mail.com.tw
直接加入要轉寄的帳號即可

※關鍵字範例

1."user@mail.tw":指定帳號
2."user*@mail.tw":指定帳號含萬用字元
3."user":指定本機帳號
4."user*":指定本機帳號含萬用字元
5."@mail.tw":指定網域

2009年7月28日 星期二

邪惡的Archive Mail備份郵件(By MailScanner)

MailScanner有一個邪惡又好用的功能:『Archive Mail』
這個比Forward還要厲害的功能,當你想要存留(備份)用戶收、的信件時,用這就就對了~

1.啟動Archive功能
vim /etc/MailScanner/MailScanner.conf
Archive Mail = /etc/MailScanner/archive.rule

2.編輯Archive規則
vim /etc/MailScanner/archive.rule
基本規則如下:
FromOrTo: User@mail.com* yes forward Admin@mail.com.tw
(收件者或寄件者) (關鍵字,可配合萬用字元) (yes,啟用規則) (forward,動作) (Forward的目標)

※Archive Mail不但可以過濾到本機網域的帳號,也可以以外部帳號作為關鍵字,只要有經過MailScanner掃描的都可以做處理。
※以上只是簡單的例子,Archive Mail還有許多變化跟應用

Lnux 校時設定

◎直接修改時間
date MMDDhhmmYYYY
Ex.
date 072802042009

◎安裝NTP自動校時
1.安裝ntpdate
yum install ntpdate
2.執行網路校時
/usr/sbin/ntpdate tock.stdtime.gov.tw (或當地的NTP伺服器)
3.將時間寫入BIOS
hwclock -w
4.排程自動校正
(Ex.每天5:10校時)
vim /etc/crontab
10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock -w

2009年7月27日 星期一

使用PHP網頁發送Mail(By PHPMailer)

先下載PHPMailer ( 官方下載網址 ) ,解壓縮至網頁資料夾。

建立PHP網頁,下例為MailSend.php

以下插入<head>中

<?php
if ($_POST[MailTitle]){
//載入PHPMailer
require_once("phpmailer/class.phpmailer.php");

$SendTo = "";
$SendTo = $_POST["MailTo"];
$SendNum = "公告已送出!共送出 " . substr_count($SendTo, '@') . " 封";

//建立Mail
$mail = new PHPMailer();

//設定發送
//$mail->IsSMTP();
$mail->Mailer = "mail";
//寄件人
$mail->From = "send@mail.com.tw";
//寄件人名稱
$mail->FromName = "SENDER";
//密件副本收件者
$mail->AddBCC($SendTo);
//回信Email及名稱
$mail->AddReplyTo("send@mail.com.tw", "SENDER");
//設定編碼
$mail->CharSet="utf-8";
//設定信件編碼
$mail->Encoding = "base64";
//設置郵件格式為HTML
$mail->IsHTML(true);
//每50字換行
$mail->WordWrap = 50;

if (is_uploaded_file($_FILES['AttFile']['tmp_name']))
{
$AtF = $_FILES['AttFile']['name'];
}else {
}
//傳送附檔
$mail->AddAttachment($_FILES['AttFile']['tmp_name'], $AtF);
//郵件標題
$mail->Subject= $_POST["SendClass"] . $_POST["MailTitle"];
//郵件內容
$mail->Body ="
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
</head>
<body>
" . ereg_replace("\n", "<BR>\n", $_POST["MailBody"]) . "
</body>
</html>
";

//附加內容
$mail->AltBody = $_POST["MailBody"];

//寄送郵件
if(!$mail->Send())
{
echo "郵件無法順利寄出!";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
if ($_FILES['AttFile']['tmp_name'])
{
unlink($_FILES['AttFile']['tmp_name']);
}
?>
<script labguage="javascript">
alert("<?php echo $SendNum; ?>");
</script>
<?php
}else{
}
?>


以下插入<body>中

<form action="MailSend.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100" height="50" nowrap="nowrap">
<strong>收件者:</strong>
</td>
<td width="300" nowrap="nowrap">
<label>
<input name="MailTo" type="text" id="MailTo" size="47" />
</label>
</td>
</tr>
<tr>
<td width="100" height="50" nowrap="nowrap">
<strong>標題:</strong>
</td>
<td width="300" nowrap="nowrap">
<label>
<select name="SendClass" id="SendClass">
<option value="[公告]">[公告]</option>
<option value="[通知]">[通知]</option>
<option value="">自訂</option>
</select>
</label>
<label>
<input name="MailTitle" type="text" id="MailTitle" size="47" />
</label>
</td>
</tr>
<tr>
<td width="100" nowrap="nowrap">
<strong>內文:</strong>
</td>
<td width="300">
<label>
<textarea name="MailBody" id="MailBody" cols="50" rows="5"></textarea>
</label>
</td>
</tr>
<tr>
<td nowrap="nowrap">
<strong>附件:</strong>
</td>
<td width="300"><label>
<input type="file" name="AttFile" id="AttFile" />
</label>
</td>
</tr>
</table>
<label>
<input type="submit" name="MailSend" id="MailSend" value="送出" />
</label>
</form>

2009年5月6日 星期三

SARG 2.2.5 中文化及常用設定

◎中文化
1.下載中文化檔 ( 下載 )
2.複製至SARG的languages目錄下,如:/usr/local/sarg/languages/
3.修改sarg.conf
vim /usr/local/sarg/sarg.conf

language TW

sarg.conf常用設定
● language TW ※設定語言檔,預設值為English
● access_log /var/log/squid/access.log ※設定squid紀錄的位置
● font_face 新細明體,Tahoma,Verdana,Arial ※設定網頁字體
● font_size 12px ※設定一般字型大小
● header_font_size 12px ※設定欄位字型大小
● title_font_size 14px ※設定標題字型大小
● output_dir /var/www/html/sarg ※設定網頁輸出位置
● resolve_ip yes ※解析為電腦名稱,預設值為no(使用IP)
● overwrite_report yes ※覆蓋同日期的記錄檔,預設為no(同日期檔名後 .n+1)
● charset UTF-8 ※設定圖表語系,目前測試對中文無效....

2009年3月25日 星期三

Linux進入單人模式

遇到root密碼忘記、被竄改,或是無法順利開機到多人模式登入,就可以嘗試進入單人模式修復。

1.在Linux開機畫面按ESC。
2.在GRUB選單選擇欲開機核心,按e進入編輯。

3.選擇到kernel那一行,按e進入編輯。

4.在指令最後加上 -s後按Enter確認。

5.按b開機
6.在sh-3.1#下,可進行密碼變更或其他操作

7.執行exit繼續開機

2009年3月4日 星期三

修改開機預設的run level

修改開機預設進入圖形介面或是文字模式
vim /etc/inittab
修改
id:5:initdefault: (圖形介面)
或是
id:3:initdefault: (文字模式)

2009年2月2日 星期一

Karma守護者:Karma Keeper (By PHP)

警告:請慎用Karma守護者!過度濫用易導致眾叛親離。
 噗浪健康局關心您!
適用環境:Linux,Windows也可使用,只要可以執行PHP跟排程即可

◎執行用批次檔:plurk(下載)
◎主程式:plurk.php(下載)
◎訊息檔(00點):night(下載 )(可自行修改)
◎訊息檔(06點):morring(下載)(可自行修改)
◎訊息檔(12點):lunch(下載 )(可自行修改)
◎訊息檔(18點):dinner(下載 )(可自行修改)
◎訊息檔(隨機):rndmess(下載 )(可自行修改)

1.下載XMPPHP(下載 )
http://code.google.com/p/xmpphp/
2.解壓縮後第一層有許多範例檔及一個XMPHP範例檔
3.程式放在第一層
4.批次檔plurk內修改程式放至的路徑(EX:/usr/local/src/xmpphp/)
5.主程式plurk.php內修改Gtalk的帳號密碼
EX:
$GID = "GtalkID";
$GPW = "GtalkPW";
6.設定系統排程執行plurk批次檔即可運作

※如出現mbstring錯誤請安裝php-mbstring
yum install php-mbstring

運作說明:
預設規劃為一個小時執行一次,每逢0點、6點、12點、18點會從各自的訊息檔隨機抽選一行訊息發送,其他整點時間程式會以亂數決定是否發送訊息(大約十分之一的機率)

主程式:
<?php
$GID = "GtalkID";
$GPW = "GtalkPW";

function Modifying ($FileName, $Line, $LineStr = "\n")
{
$ReadStream = @fopen ($FileName, "r") or die ("無法建立讀取資料串流");
$Datas = @fread ($ReadStream, filesize ($FileName)) or die ("讀取檔案失敗");
fclose ($ReadStream);

$Body = explode ($LineStr, $Datas);
$Rnd = $Line%(count ($Body)-1);

return $Body[$Rnd];
}

function RndNum()
{
$password_len = 6;
$password = '';

$word = '123456789';
$len = strlen($word);

for ($i = 0; $i < $password_len; $i++) {
$password .= $word[rand() % $len];
}

return $password;
}

include 'XMPPHP/XMPP.php';

$ctime = "";
$ctime = date("H");

if ($ctime == "18")
{
$Mess = "dinner";
}
elseif ($ctime == "12")
{
$Mess = "lunch";
}
elseif ($ctime == "6")
{
$Mess = "morring";
}
elseif ($ctime == "0")
{
$Mess = "night";
}
elseif (rand(0, 9) == "5")
{
$Mess = "rndmess";
}
else
{
$Mess = "";
}


if ($Mess <> "")
{
$conn = new XMPPHP_XMPP('talk.google.com', 5222, $GID, $GPW, 'xmpphp', 'gmail.com', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);

try {
$conn->connect();
$conn->processUntil('session_start');
$conn->presence();
$conn->message('bot@plurk.com', Modifying ($Mess, RndNum()));
$conn->disconnect();
} catch(XMPPHP_Exception $e) {
die($e->getMessage());
}
}

?>

2009年1月21日 星期三

突破XP連線限制 By EventID 4226 & Apache Reverse Proxy

好長的名字.....

◎修改TCP/IP限制
1.http://www.lvllord.de/ 下載EventID 4226 Patcher
2.於命令提示字元執行

EvID4226Patch /L=100
(100可修改)
3.按Y確認

◎使用工具修改TCP/IP
1.http://briian.com/?p=5389 不來恩的介紹說明(重灌狂人)
下載tcpip-patcher.exe 修改


◎修改IIS連線(?)
1.http://download.microsoft.com/download/iis50/Utility/5.0/NT45/EN-US/MtaEdt22.exe
下載mtaedt22.exe 修改
2.左邊選擇LM\W3SVC
3.右邊那一堆東西中找到 MaxConnections
4.修改data值,最大限制是2000000000


◎安裝Apache Reverse Proxy

1.下載Apache2.2
2.安裝Apache Server
3.設定httpd.conf

Listen 80
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
ProxyPass / http://127.0.0.1:888/
ProxyPassReverse / http://127.0.0.1:888/

(依IIS修改後的PORT)

2009年1月8日 星期四

流量監控--- Bandwidthd

系統使用CentOS 5.2




1.安裝apache2並啟動
yum install httpd mod_ssl
chkconfig httpd on
service httpd start

2.安裝相關元件
yum install gcc gcc-c++ libpng libpng-devel gd gd-devel elinks libpcap-devel gnuplot


3.下載bandwidthd原始碼
cd /usr/local/src
elinks bandwidthd.sourceforge.net
下載bandwidthd-2.0.1.tgz

4.解壓縮bandwidthd
tar -xzvf bandwidthd-2.0.1.tgz

5.修改bandwidthd上限(預設為20,修改為100)
cd /usr/local/src/bandwidthd-2.0.1
vim graph.c

Top20修改為Top100 (有三個)

Counter < 21修改為Counter < 101 (有兩個)

6.安裝bandwidthd
cd /usr/local/src/bandwidthd-2.0.1
./configure
make install

◎如有發生libpcap錯誤,請安裝libpcap
rpm -i http://isoredirect.centos.org/centos/5/os/i386/CentOS/libpcap-devel-0.9.4-8.1.i386.rpm
rpm -i http://isoredirect.centos.org/centos/5.1/os/i386/CentOS/libpcap-devel-0.9.4-11.el5.i386.rpm

7.修改bandwidthd設定檔
vim /usr/local/bandwidthd/etc/bandwidthd.conf

subnet 192.168.1.0/24
dev "eth0"

8.建立bandwidthd連結
cd /var/www/html
ln -s /usr/local/bandwidthd/htdocs bandwidthd

9.建立bandwidthd啟動
vim /etc/rc.local
加入/usr/local/bandwidthd/bandwidthd

10.網頁
http://主機IP/bandwidthd






##EasyReadMore##