Thursday, October 21, 2010

Axapta : Execute SQL command

Axapta มีคำสั่ง SQL รวมอยู่ใน X++ อยู่แล้ว
แต่ถ้าอยากใช้คำสั่ง SQL อื่น ๆ เช่น ใช้ประโยชน์จาก NewID() ของ MS SQL Server เพื่อ random ก็ทำได้ ดังตัวอย่าง
static void Job3(Args _args)
{
LogInProperty Lp = new LogInProperty();
OdbcConnection myConnection;
Statement myStatement;
ResultSet myResult;
str sqlQuery;
;

sqlQuery = 'SELECT TOP 10 * FROM CustTable ORDER BY NewID()';

LP.setServer("Server");
LP.setDatabase("db");
Lp.setUsername("user");
Lp.setPassword("password");

try{
myConnection = new OdbcConnection(LP);
}
catch{
info("Check username/password.");
return;
}

myStatement = myConnection.createStatement();
myResult = myStatement.executeQuery(sqlQuery);

while (myResult.next()){
box::info(myResult.getString(1));
}
}

Axapta : Find user group of current userid

กันลืม
UserGroupList userGroupList;
;
WHILE SELECT userGroupList
WHERE userGroupList.userId == curuserid()
// && userGroupList.groupId == 'searchGroup';
{
print userGroupList.groupId;
}
pause;

Ubuntu : Shutter add-ons

อ้าว Shutter (โปรแกรมสำหรับ capture screen) ทำไม capture แล้ว edit ไม่ได้หว่า
search ดูถึงได้รู้ว่า ขาด add-ons บางอย่างไปนี่เอง ว่าแล้วก็ติดตั้งซะเลย
apt-get install libgoo-canvas-perl
apt-get install gnome-web-photo

อันแรกเอาไว้ capture แล้ว edit ได้
อันที่สองเอาไว้ capture หน้า web page ยาว ๆ มันจะ scroll ให้อัตโนมัติ

Ubuntu : Backup & Restore

คำสั่ง mt (Magnatic Tape) ปกติระบบจะ mount ไว้ให้ที่ /dev/st0
mt -f /dev/st0 status # ตรวจสอบสถานะ
mt -f /dev/st0 rewind # สั่งหมุน tape กลับ
mt -f /dev/st0 erase # ลบข้อมูล (นานมาก)
mt -f /dev/st0 offline #สั่งเด้ง tape ออก


Cleaning Cartridge # บางรุ่นอาจไม่เหมือนกัน
ใส่เข้าไป พอมัน load เข้าไปแล้วทำความสะอาดเสร็จจะเด้งออกมาเอง
(Cleaning Cartridge เป็นแบบใช้แล้วใช้เลย rewind กลับมาใช้อีกไม่ได้)

คำสั่ง Backup & Restore
Backup ใช้ -c
tar -cvf backup_filename data_to_backup
เช่น
tar -cvf backup.tar /home/nikom
กรณีต้องการให้บีบอัดไฟล์ด้วย เพิ่ม parameter -z
tar -cvzf backup.tar.gz /home/nikom

Restore เปลี่ยน -c เป็น -x (เข้าไปใน directory ที่จะ restore ก่อน เพราะสั่งตรงไหน restore มาตรงนั้น)
tar -xvf backup_filename
เช่น
tar -xvf backup.tar
restore ไฟล์ที่บีบไว้ ใช้ -z เหมือนกัน
tar -xvzf backup.tar.gz

Tape
backup ลง tape
tar -cvf /dev/st0 data_to_backup
ดูรายการใน tape
tar -tvf /dev/st0
restore จาก tape
tar -tvf /dev/st0 backup_filename
backup & restore กับ tape ก็ใช้ -z สำหรับการบีบอัดได้

backup แบบ incremental
การ backup เฉพาะส่วนที่เพิ่มขึ้น ทำได้โดยใช้ -g ตามด้วย ไฟล์ที่ใช้เก็บส่วนต่าง เช่น
tar -g /home/nikom/tar_inc_file.dat -cvf /dev/st0 /home/nikom

Ubuntu : Automount NTFS partition when login

ติดตั้ง ubuntu ใหม่ทีไร ลืมทุกที
1.แก้ fstab
1.1 mkdir /media/Data1 #สร้าง mount point
1.2 sudo apt-get install ntfs-3g
1.3 sudo nano /etc/fstab
1.4 เพิ่มบรรทัดดังนี้
/dev/sda1 /media/Data1 ntfs-3g defaults 0 0

2.ใช้ script
2.1 nano /etc/automount.sh
2.2 ดังนี้
#!/bin/bash
mount /dev/sda1 /media/Data -t ntfs -o rw
mount /dev/sda2 /media/Data2 -t ntfs -o rw

Thursday, July 22, 2010

Expanding the size of a virtual disk

เมื่อ OS ใน Virtual Box เต็ม จะทำอย่างไรกันดีเล่าพี่น้อง
ความจริงวิธีที่จะทำ มันไม่ตรงกับหัวข้อครับ เพราะมันไม่ใช่การขยาย แต่มันเป็นการสร้างใหม่
1.เลือก VDI Image เป้าหมายที่ต้องการขยาย

2.สร้าง VDI Image อันใหม่ให้มีขนาดที่ต้องการ
3.เพิ่ม Image อันใหม่เป็น Slave และ เพิ่ม linux Image เข้าไปใน CD สำหรับใช้ Boot ตามตัวอย่างใช้ Parted Magic

4.เปิด terminal พิมพ์ nano /proc/paritions เพื่อดูขนาด harddisk

5.ใช้คำสั่ง dd โดยสังเกตขนาดตามรูป จะโอนจาก 10G(hda) ไปเป็น 30G(hdb) ก็ใช้คำสั่ง
dd if=/dev/hda of=/dev/hdb
6.รอจนเสร็จแล้ว shutdown
7.สร้าง OS อันใหม่ แล้วเพิ่ม VDI Image อันใหม่ กับ image ของ Parted Magic boot อีกทีเพื่อ resize partition เพราะ image ใหม่มีขนาด 30 GB ก็จริง แต่ขนาด partition ยังเท่าเดิม

8.เสร็จแล้วก็ shutdown แล้วเอา image ของ Parted Magic ออกก็จะได้ OS ใหม่ใหญ่กว่าเดิมไว้ใช้งาน

Wednesday, May 19, 2010

Create Screenshot from movie

Ubuntu : Totem Movie Player
1.เปิดไฟล์
2.เข้าเมนู Edit -> Create Screenshot Gallery...

3.เลือกความกว้าง สูงสุดได้ 500 pixel
4.เลือกจำนวนภาพหรือทำเครื่องหมายเพื่อให้โปรแกรมคำนวณให้ก็ได้


Windows : Media Player Classic
1.เปิดไฟล์
2.เข้าเมนู View -> Options...
3.เลือก Output เป็น VMR9 (windowed)

4.เข้าเมนู File -> Save Thumbnails...
5.ตั้งชื่อไฟล์ ชนิด จำนวนแถว ขนาด ด้านล่าง

ขอบคุณภาพประกอบจาก www.thailandtorrent.com

Sunday, May 16, 2010

Ubuntu : Install OCS Inventory NG

OCS Inventory NG เป็น Asset Management Software แบบ Open Source สำหรับจัดการข้อมูล Hardware และ Software ในระบบเครือข่าย รองรับ Client ที่เป็น Windows, Linux, MacOS ฯลฯ

* Relevant inventory information.
* Powerful deployment system allowing to distribute software installation or scripts on computers without overloading the network.
* Web Administration Console.
* Multiple operating systems support, including Microsoft Windows, Linux, *BSD, Sun Solaris, IBM AIX, HP-UX, MacOS X.
* Lightweight bandwith usage: 5 KB for a full Windows inventory.
* High performance: about 1 000 000 of computers inventoried per day using a server bi-Xeon 3 GHz and 4 GB RAM.
* 3-Tier architecture using current standards, HTTP/HTTPS protocol and XML data formatting.
* Based on well known products such as Apache web server, MySQL database server, PHP and PERL scripting languages.
* Web service accessible through SOAP interface.
* Plugins support through API.
* ...

http://www.ocsinventory-ng.org

ขั้นตอนการติดตั้งสำหรับ Server ที่เป็น Ubuntu
1.ติดตั้ง Package ที่จำเป็น
#apache, php, mysql
apt-get install apache2
apt-get install php5 libapache2-mod-php5 php5-gd
apt-get install mysql-server
apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

apt-get install make
sudo aptitude install libc6-dev

#perl
sudo aptitude install perl libapache2-mod-perl2 libxml-simple-perl libcompress-zlib-perl libdbi-perl libapache-dbi-perl
sudo aptitude install libdbd-mysql-perl libapache-dbi-perl libnet-ip-perl libsoap-lite-perl libnet-ip-perl libsoap-lite-perl

cpan SOAP::Lite #optional for web service


2.ติดตั้ง OCS Inventory NG Server
wget http://launchpad.net/ocsinventory-server/stable-1.3/server-release-1.3.1/+download/OCSNG_UNIX_SERVER-1.3.1.tar.gz
tar -xvzf OCSNG_UNIX_SERVER-1.3.1.tar.gz
cd OCSNG_UNIX_SERVER-1.3.1
./setup.sh


Do you wish to continue ([y]/n)? y
Which host is running database server [localhost] ? [enter]
On which port is running database server [3306] ? [enter]
Where is Apache daemon binary [/usr/sbin/apache2] ? [enter]
Where is Apache main configuration file [/etc/apache2/apache2.conf] ? [enter]
Which user account is running Apache web server [www-data] ? [enter]
Which user group is running Apache web server [www-data] ? [enter]
Where is Apache Include configuration directory [//etc/apache2/conf.d/] ? [enter]
Where is PERL Intrepreter binary [/usr/bin/perl] ? [enter]
Do you wish to setup Communication server on this computer ([y]/n)? y

Where to put Communication server log directory [/var/log/ocsinventory-server] ? [enter]
To ensure Apache loads mod_perl before OCS Inventory NG Communication Server, Setup can name Communication Server Apache configuration file 'z-ocsinventory-server.conf' instead of 'ocsinventory-server.conf'. Do you allow Setup renaming Communication Server Apache configuration fileto 'z-ocsinventory-server.conf' ([y]/n) ? y
Do you wish to setup Administration Server (Web Administration Console) on this computer ([y]/n)? y
Do you wish to continue ([y]/n)? y

Where to copy Administration Server static files for PHP Web Console [/usr/share/ocsinventory-reports] ? [enter]
Where to create writable/cache directories for deployement packages and IPDiscover [/var/lib/ocsinventory-reports] ? [enter]

/etc/init.d/apache2 restart
nano /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php #set username & password of mysql


3.เรียกดูได้ที่ http://localhost/ocsreports
4.คลิก send เพื่อสร้าง database จะได้ database ชื่อ ocsweb
6.เข้าใช้งานที่ http://localhost/ocsreports โดยใช้ username=admin password=admin
7.ติดตั้ง Agent สำหรับ Windows โดยใช้ตัว setup จาก http://launchpad.net/ocsinventory-windows-agent/trunk/win32-agent-release-4061/+download/OCSNG_WINDOWS_AGENT_4061.1.zip (สามารถทำ silent install ได้ด้วย)

การติดตั้ง Agent สำหรับ Windows
1. แบบ manual ใช้ตัว setup จาก http://launchpad.net/ocsinventory-windows-agent/trunk/win32-agent-release-4061/+download/OCSNG_WINDOWS_AGENT_4061.1.zip
2. แบบ deploy ผ่าน Active Directory โดยทำผ่าน Group Policy ใส่ไว้ใน Computer Configuration -> Windows Settings -> Scripts -> Startup
2.1 คลิก Show files แล้ว rename OcsLogon.exe เป็น IP เครื่อง OCS Server เอามาวางไว้ในนั้น เช่น 192.168.0.252
2.2 Add Script โดยกด Browse หาไฟล์ในข้อ 2.1
2.3 ใส่ Parameters ดังนี้
/S = Silent
/DEBUG = สร้างไฟล์ log
/NP = No Proxy
/INSTALL = Install Service Agent
/DEPLOY:4061 = ติดตั้ง Agent รุ่น 4.0.6.1
/SERVER:192.168.0.252 = ติดต่อไปที่ Server 192.168.0.252


3. เมื่อเครื่อง Client Boot ขึ้นมาก็จะติดต่อไปที่ Server เพื่อทำการ Upgrade หรือติดตั้งตัว Agent โดยดูผลลัพธ์ได้ที่ C:\OCS-NG

Java on Ubuntu 10.04

Package sun-java6-jre is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
Package sun-java6-jre has no installation candidate

sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”
apt-get update
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

Wednesday, April 28, 2010

Set homepage by code

วันก่อนมีรุ่นน้องที่เคารพ โทรมาหาถามว่า
พี่ เซ็ต homepage ทำยังไงอ่ะ พอดีไปเผลอกดตอบรับเซ็ต homepage ของเว็บนึงเข้า


คิดในใจ "โห โง่ว่ะ" แต่ตอบไปว่า
เข้าไปที่ Tools -> Internet option ...


สวนกลับมาก่อนจะบอกจบว่า
ไม่ได้พี่ IT บล็อก


ค่อยเริ่มน่าสนใจหน่อย จะบอกให้ไปแก้จาก registry ก็คงจะโดนบล็อกอีก ก็เลยหาวิธีอื่นให้ สรุปได้ว่าใช้ code ข้างล่าง


Set homepage
















upload ให้ด้วยที่ http://tools.komkid.net/homepage.html เผื่อใครจะเจอสถานการณ์แบบนี้บ้าง (ใช้ได้เฉพาะ IE เท่านั้นเด้อ)

------------------------------------------
อันนี้แปะไว้กันลืม Registry สำหรับ IE
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page

Tuesday, April 27, 2010

Ubuntu : Install ClamAV

1.ติดตั้ง ClamAV และ Update
apt-get install clamav
apt-get install clamav-daemon
/etc/init.d/clamav-daemon restart
freshclam #update virus definitions
clamscan -r /location_of_files_or_folders


2.Schedule Scan
crontab -e
00 00 * * * clamscan -r location_of_files_or_folders



3.Log and Quarantine
mkdir /var/log/clamav/infected
nano /etc/clamav/clamscan_schedule.sh

ป้อน
#!/bin/sh
### fix log file if needed
LOG_FILE="/var/log/clamav/scan.log"
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
chmod 644 "$LOG_FILE"
chown clamav.clamav "$LOG_FILE"
fi

clamscan -r /public_data --quiet --log="$LOG_FILE" --verbose --move=/var/log/clamav/infected

chmod +x /etc/clamav/clamscan_schedule.sh

Ubuntu : Install FreeNX

FreeNX เป็นคนละตัวกับ NXServer ของ nomachine ครับ (ของ nomachine จำกัดแค่ 2 session เอง)
1.เพิ่ม repository
nano /etc/apt/sources.list
เพิ่ม
deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu VERSION main
deb-src http://ppa.launchpad.net/freenx-team/ppa/ubuntu VERSION main

เพิ่ม key แล้ว update
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2a8e3034d018a4ce
apt-get update


2.ติดตั้ง server
aptitude install freenx

3.ติดตั้ง client (ใช้ของ nomachine)
wget http://64.34.161.181/download/3.4.0/Linux/FE/nxserver_3.4.0-12_i386.deb
dpkg -i nxclient_3.4.0-5_i386.deb


4.กรณีต้องการเปลี่ยน SSH key
dpkg-reconfigure freenx-server
เลือก Create new custom keys
จะได้ key อยู่ที่ /var/lib/nxserver/home/custom_keys/client.id_dsa.key สำหรับเอาไป import เข้า nxclient
อาจ copy ไปโดยให้คำสั่ง
ที่ server cp /var/lib/nxserver/home/custom_keys/client.id_dsa.key ~/
ที่ client scp user@freenx-server:~/client.id_dsa.key ~/

Thursday, February 18, 2010

Ubuntu : Join Domain

Join domain ให้ Ubuntu เป็นสมาชิกของ domain
แก้ไขไฟล์ /etc/resolv.conf
sudo nano /etc/resolv.conf
ป้อนข้อมูลดังนี้

search sci.com
nameserver 192.168.0.254


แก้ไขไฟล์ /etc/hostname
sudo nano /etc/hostname
ป้อนข้อมูลดังนี้

ubuntu name.sci.com


Join domain โดยใช้คำสั่งดังนี้

sudo apt-get install likewise-open
sudo /etc/init.d/likewise-open restart
sudo domainjoin-cli join sci.com administrator
sudo update-rc.d likewise-open defaults

Ubuntu : Centralized Log Server & PHPSyslogViewer

ติดตั้ง Ubuntu 8.04 Server
1.Boot จากแผ่นติดตั้ง เลือกภาษาที่จะใช้ในการติดตั้ง : English
2.เลือกการติดตั้ง : Install Ubuntu Server
3.เลือกภาษาสำหรับระบบ : English
4.เลือกประเทศ : other -> Thailand
5.Detect keyboard layout : No -> Thailand -> Thailand
6.เลือกปุ่มเปลี่ยนภาษา : Alt+Shift
7.ตั้งชื่อ Server : Go Back (เพื่อกลับไปตั้งค่า IP)
8.ตั้งค่า Network : Configure network manually
8.1 IP Address : 192.168.0.251
8.2 Netmask : 255.255.255.0
8.3 Gateway : 192.168.0.3
8.4 Name server : 192.168.0.254
9.ตั้งชื่อ Server : Server1
10.Domain : sci.com
11.จัดการ Partition : Guided - use entire disk -> Yes
12.ตั้งชื่อ user : System Administrator -> sa
13.ตั้งรหัสผ่านและยืนยัน : *** -> ***
14.ตั้งค่า proxy :
15.เลือก Software ที่จะติดตั้ง : OpenSSH server
16.Restart (หลังจากนี้สามารถ ssh มาจากเครื่องอื่นได้)
17.Login ด้วย User ที่สร้าง
18.กรณีไม่ได้ตั้งค่า IP ในขั้นตอนที่ 8 ตั้งค่าได้โดยใช้คำสั่ง
sudo nano /etc/network/interfaces
แก้ไขให้เป็นดังนี้

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.251
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.3
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.254
dns-search sci.com

19.Update and Upgrade
sudo apt-get update
sudo apt-get upgrade
reboot


ติดตั้ง Time Server
sudo apt-get install ntp
sudo nano /etc/ntp.conf


แก้ไขให้เป็นดังนี้

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

#statistics loopstats peerstats clockstats
#filegen loopstats file loopstats type day enable
#filegen peerstats file peerstats type day enable
#filegen clockstats file clockstats type day enable

# You do need to talk to an NTP server or two (or three).
server 203.185.69.60 dynamic
server time.navy.mi.th dynamic
server time.nist.gov dynamic
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
broadcastdelay 0.008
keys /etc/ntp/keys

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don't allow configuration.
#restrict -4 default kod notrap nomodify nopeer noquery
restrict default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
#restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient

restart ntp service
sudo /etc/init.d/ntp restart

ตั้งค่า linux เครื่องอื่นให้มารับเวลาจากเครื่องนี้

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

#statistics loopstats peerstats clockstats
#filegen loopstats file loopstats type day enable
#filegen peerstats file peerstats type day enable
#filegen clockstats file clockstats type day enable

# You do need to talk to an NTP server or two (or three). (192.168.0.251 is Log Server)
server 192.168.0.251

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don't allow configuration.
#restrict -4 default kod notrap nomodify nopeer noquery
#restrict -6 default kod notrap nomodify nopeer noquery
restrict default ignore

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
#restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated. (192.168.0.251 is Log Server)
restrict 192.168.0.251 mask 255.255.255.255 nomodify notrap noquery

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient


ตั้งค่า Windows ให้มารับเวลาจากเครื่องนี้ โดยใช้ regedit.exe (save เป็นไฟล์นามสกุล .reg แล้ว double click)

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"AnnounceFlags"=dword:00000005
"MaxNegPhaseCorrection"=dword:00000e10
"MaxPosPhaseCorrection"=dword:00000e10

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"NtpServer"="192.168.0.251,0x1"
"Type"="NTP"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
"SpecialPollInterval"=dword:00000384

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000001


ติดตั้ง Syslog-NG และ PHP SYSLOGVIEWER
1.ติดตั้ง apache
sudo apt-get install apache2

2.ดาวน์โหลดและเตรียมติดตั้ง PHP SYSLOGVIEWER

wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2
tar xjvf phpsyslogviewer-7.2.1.tar.bz2
cd phpsyslogviewer-7.2.1

3.ติดตั้ง mysql-server
sudo apt-get install mysql-server

4.ติดตั้ง phpmyadmin ไว้ช่วยจัดการฐานข้อมูล
sudo apt-get install phpmyadmin

5.สร้างฐานข้อมูล

mysql -u root -p
mysql> create database syslogng;
mysql> exit;
mysql -u root -p syslogng < install/phpsyslogviewer.sql

6.ติดตั้ง php-cli
sudo apt-get install php5-cli

7.สร้างรายชื่อผู้ใช้
php install/newuser.sql.php
php install/newuser.sql.php | mysql -u root -p syslogng

8.สร้างหน้า web

cp -R htdocs /var/www/phpsyslogviewer
nano /var/www/phpsyslogviewer/config.php
chown root:www-data /var/www/phpsyslogviewer/config.php
chmod 440 /var/www/phpsyslogviewer/config.php

9.ลองเข้าดูได้ที่ http://192.168.0.251/phpsyslogviewer
10.เพิ่มความเร็วในการเก็บ log เข้า MySQL ด้วย speedupd

wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2
tar xjvf speedupd-7.3.2.tar.bz2
cd speedup-7.3.2/
apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot
apt-get install build-essential libmysqlclient15-dev
dpkg-buildpackage -rfakeroot
cd ..
dpkg -i speedupd_7.3.0_i386.deb
nano /etc/speedupd.conf
update-rc.d speedupd defaults
/etc/init.d/speedupd start


ติดตั้ง Syslog-NG
1.ติดตั้ง
sudo apt-get install syslog-ng

2.ตั้งค่า
nano /etc/syslog-ng/syslog-ng.conf
ป้อนข้อมูลดังนี้

options {
recv_time_zone (+07:00);
send_time_zone (+07:00);
sync (0);
time_reopen (100);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (yes);
chain_hostnames(yes);
keep_hostname (yes);
};

source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
#udp(ip(0.0.0.0) port(514));
#tcp(ip(0.0.0.0) port(514) keep-alive(yes));
};

destination d_mysql {
pipe("/var/log/mysql.pipe"
template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n")
template-escape(yes));
};

filter f_filter1 { facility (kern); };
filter f_filter2 { level(info..emerg) and not facility(mail,authpriv,cron); };
filter f_filter3 { facility(authpriv); };
filter f_filter4 { facility(mail); };
filter f_filter5 { level(emerg); };
filter f_filter6 { facility(uucp) or (facility(news) and level(crit..emerg)); };
filter f_filter7 { facility(local7); };
filter f_filter8 { facility(cron); };

log { source(s_sys); filter(f_filter1); destination(d_mysql); };
log { source(s_sys); filter(f_filter2); destination(d_mysql); };
log { source(s_sys); filter(f_filter3); destination(d_mysql); };
log { source(s_sys); filter(f_filter4); destination(d_mysql); };
log { source(s_sys); filter(f_filter5); destination(d_mysql); };
log { source(s_sys); filter(f_filter6); destination(d_mysql); };
log { source(s_sys); filter(f_filter7); destination(d_mysql); };
log { source(s_sys); filter(f_filter8); destination(d_mysql); };
#####################################################################

# Source from remote client
source s_client {
tcp(ip(0.0.0.0) port(514) keep-alive(yes) max-connections(300));
udp(ip(0.0.0.0) port(514));
};
log {source(s_client); destination(d_mysql); };

3.สร้างคำสั่งสำหรับเขียนลง mysql
nano /usr/local/bin/syslog2mysql.sh
ป้อนคำสั่งดังนี้

#!/bin/bash
if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
mysql -u root --password=*** syslogng < /var/log/mysql.pipe > /dev/null
done

ทำให้คำสั่ง execute ได้

chmod +x /usr/local/bin/syslog2mysql.sh


4.ทำให้ script run ทุกครั้งที่ boot
nano /etc/init.d/syslog2mysql
ป้อนคำสั่งดังนี้

#!/bin/sh
# run syslog2mysql.sh at boot

case "$1" in
'start')
sh /usr/local/bin/syslog2mysql.sh &
;;
'stop')
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

ทำให้ execute ได้แล้วเพิ่ม startup link ใน RC

sudo chmod +x /etc/init.d/syslog2mysql
sudo update-rc.d syslog2mysql defaults


run script แล้วก็ restart syslog-ng

/etc/init.d/syslog2mysql start
/etc/init.d/syslog-ng restart


5.ติดตั้ง Syslog-NG ที่ Linux Server เครื่องอื่นและตั้งค่าให้ส่ง log มาเก็บที่เครื่องนี้

options {
sync (0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (yes);
keep_hostname (yes);
};

source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
#udp(ip(0.0.0.0) port(514));
#tcp(ip(0.0.0.0) port(5149) keep-alive(yes));
};

destination logserver { tcp("192.168.0.251" port(514)); };

destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/log/messages"); };
destination d_auth { file("/var/log/secure"); };
destination d_mail { file("/var/log/maillog" sync(10)); };
destination d_spol { file("/var/log/spooler"); };
destination d_boot { file("/var/log/boot.log"); };
destination d_cron { file("/var/log/cron"); };
destination d_kern { file("/var/log/kern"); };
destination d_mlal { usertty("*"); };

filter f_filter1 { facility(kern); };
filter f_filter2 { level(info..emerg) and not (facility(mail) or facility(authpriv) or facility(cron)); };
filter f_filter3 { facility(authpriv); };
filter f_filter4 { facility(mail); };
filter f_filter5 { level(emerg); };
filter f_filter6 { facility(uucp) or (facility(news) and level(crit..emerg)); };
filter f_filter7 { facility(local7); };
filter f_filter8 { facility(cron); };
# Remove the 'squid' log entries from 'user' log facility
filter f_remove { not program("squid"); };

log { source(s_sys); filter(f_filter1); destination(d_cons); };
log { source(s_sys); filter(f_filter1); destination(d_kern); };
log { source(s_sys); filter(f_filter2); filter(f_remove); destination(d_mesg); };
log { source(s_sys); filter(f_filter3); destination(d_auth); };
log { source(s_sys); filter(f_filter4); destination(d_mail); };
log { source(s_sys); filter(f_filter5); destination(d_mlal); };
log { source(s_sys); filter(f_filter6); destination(d_spol); };
log { source(s_sys); filter(f_filter7); destination(d_boot); };
log { source(s_sys); filter(f_filter8); destination(d_cron); };

filter f_squid { program("squid") and facility(user); };

destination d_squid {
file("/var/log/$HOST/$YEAR/$MONTH/squid.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes) dir_perm(0775));
};
log { source(s_sys); filter(f_squid); destination(d_squid); };

log { source(s_sys); destination(logserver); };


6.ส่ง Log จาก Windows Server มาเครื่องนี้
6.1 Download Lasso (Windows Event Collector) จาก http://open.loglogic.com
6.2 ตั้งค่า hostlist.ini
localhost,*6
6.3 ตั้งค่า lasso.ini

SkipInitDLLScan,0
LogAppliance,192.168.0.251
RepositoryPath,C:\Program Files\Lasso\LassoRepository\
SpoolPath,C:\Program Files\Lasso\LassoRepository\Spool\
EventPollInterval,10
SpoolFileSize,1.0
WatermarkWriteInterval,100
MaxTraceFileSize,20
MaxNumWorkerThreads,4
DllLoadInterval,3600
HighWaterMarks,ON
#DefaultLassoShare,LassoShare=C:\LassoTemp
CheckHostListInterval,3600
NewHostSkipHistorical,0
EnableShareDlls,1
CheckRemHostAvail,0
EnableAdminSharesIfDisabled,0
DebugLevel,0
LogLevel,1
DebugHostFileSize,20
AccessReport,0

6.4 start service Lasso Windows Event Collector

Monday, February 15, 2010

ปาย เที่ยวมาแล้ว : โป่งเดือด

[gallery=16]

ปาย เที่ยวมาแล้ว : สะพานประวัติศาสตร์

[gallery=15]

ปาย เที่ยวมาแล้ว : ถ้ำลอด

[gallery=14]

ปาย เที่ยวมาแล้ว : ถ้ำปลา

[gallery=13]

ปาย เที่ยวมาแล้ว : Coffee in love

[gallery=12]

ปาย เที่ยวมาแล้ว : หมู่บ้านจีนยูนนาน

[gallery=11]

ปาย เที่ยวมาแล้ว : วัดน้ำฮู

[gallery=9]

ปาย เที่ยวมาแล้ว : ถนนคนเดิน

[gallery=8]

Friday, February 12, 2010

ปาย เที่ยวมาแล้ว : พระธาตุดอยกองมู

[gallery=4]

ปาย เที่ยวมาแล้ว : ถ้ำแก้วโกมล

[gallery=3]

ปาย เที่ยวมาแล้ว : สวนสน

[gallery=2]

ปาย เที่ยวมาแล้ว : ออบหลวง

[gallery=1]

Axapta : Posting journal by code


static void InventJournalCheckPost(Args _args)
{
InventJournalTable inventJournalTable;
InventJournalCheckPost journalCheckPost;
;
ttsbegin;
inventJournalTable = InventJournalTable::find("xxx",true);
//Remove Journal "xxx" has not been locked by system
inventJournalTable.SystemBlocked = true;
inventJournalTable.update();

journalCheckPost = InventJournalCheckPost::newJournalCheckPost (JournalCheckPostType::Post,inventJournalTable);
journalCheckPost.run();

inventJournalTable.SystemBlocked = false;
inventJournalTable.update();
ttscommit;
}

Friday, January 29, 2010

Squid : Custom error page

blocked
หน้าตาสำหรับแสดงผลกรณีมี error ของ squid เช่น กรณีถูกบล็อก(ERR_ACCESS_DENIED) แก้ไขได้ที่ /usr/share/squod/errors/
โดยสามารถใช้ Variable ได้ด้วย ดังนี้
%B URL with FTP %2f hack
%c Squid error code
%d seconds elapsed since request received (not yet implemented)
%e errno
%E strerror()
%f FTP request line
%F FTP reply line
%g FTP server message
%h cache hostname
%H server host name
%i client IP address
%I server IP address
%L contents of err_html_text config option
%M Request Method
%m Error message returned by external auth helper
%p URL port
%P Protocol
%R Full HTTP Request
%S squid default signature
%s caching proxy software with version
%t local time
%T UTC
%U URL without password
%u URL with password (Squid-2.5 and later only)
%w cachemgr email address
%z dns server error message


ตัวอย่าง ERR_ACCESS_DENIED



ERROR: The requested URL could not be retrieved









Access dinied


Web นี้ถูก block ในช่วงเวลา 8:00-12:00 น. และ 13:00-17:40 น. หากมีความจำเป็นต้องใช้งาน กรุณาแจ้ง งทส.

Squid : Custom error page

blocked
หน้าตาสำหรับแสดงผลกรณีมี error ของ squid เช่น กรณีถูกบล็อก(ERR_ACCESS_DENIED) แก้ไขได้ที่ /usr/share/squod/errors/
โดยสามารถใช้ Variable ได้ด้วย ดังนี้
%B URL with FTP %2f hack
%c Squid error code
%d seconds elapsed since request received (not yet implemented)
%e errno
%E strerror()
%f FTP request line
%F FTP reply line
%g FTP server message
%h cache hostname
%H server host name
%i client IP address
%I server IP address
%L contents of err_html_text config option
%M Request Method
%m Error message returned by external auth helper
%p URL port
%P Protocol
%R Full HTTP Request
%S squid default signature
%s caching proxy software with version
%t local time
%T UTC
%U URL without password
%u URL with password (Squid-2.5 and later only)
%w cachemgr email address
%z dns server error message


ตัวอย่าง ERR_ACCESS_DENIED



ERROR: The requested URL could not be retrieved



Access dinied


Web นี้ถูก block ในช่วงเวลา 8:00-12:00 น. และ 13:00-17:40 น. หากมีความจำเป็นต้องใช้งาน กรุณาแจ้ง งทส.

Thursday, January 28, 2010

JavaScript : 1 Form 2 Target









Logon Script : Map Network Drive


' MapNetworkDrive.vbs
' VBScript to map a network drive to a UNC Path.
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - September 2005
' -----------------------------------------------------------------'
Option Explicit
Dim objNetwork
Dim strDriveLetter, strRemotePath
strDriveLetter = "P:"
strRemotePath = "\\server2\public_data"

' Purpose of script to create a network object. (objNetwork)
' Then to apply the MapNetworkDrive method. Result J: drive
Set objNetwork = CreateObject("WScript.Network")

objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
WScript.Quit

' End of Example VBScript.

Wednesday, January 27, 2010

Service ports for firewall configuration

DHCP
*UDP 67, 2535

DNS
*UDP 53
*TCP 53,139, 445

Symantec Systen Center
*TCP 2967

Squid and Active Directory


acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

acl webblocked url_regex '/etc/squid/webblocked.txt'
acl day_am time 08:00-12:00
acl day_pm time 13:00-17:40
http_access deny webblocked day_am
http_access deny webblocked day_pm

#Block MSN
acl msn_users src '/etc/squid/msn_user_list.txt'
acl msn_server req_mime_type application/x-msn-messenger
acl msn_url url_regex -i gateway.dll

#Block MSN
http_access deny !msn_users msn_server day_am
http_access deny !msn_users msn_server day_pm
http_access deny !msn_users msn_url day_am
http_access deny !msn_users msn_url day_pm

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost

icp_access allow all

http_port 8080
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
#logformat combined
cache_access_log /var/log/squid/access.log
#cache_access_log syslog combined
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

extension_methods REPORT MERGE MKACTIVITY CHECKOUT

hosts_file /etc/hosts

coredump_dir /var/spool/squid

#http_access allow all

# Active Directory
####################################################################################################
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=sci,dc=com" -D "cn=Administrator,cn=Users,dc=sci,dc=com" -w "***" -f "sAMAccountName=%s" -h 192.168.0.1
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 5 minutes

external_acl_type InetGroup %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=sci,dc=com" -D "cn=Administrator,cn=Users,dc=sci,dc=com" -w "***" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=InternetUser,dc=sci,dc=com))" -h 192.168.0.1

acl localnet proxy_auth REQUIRED src 192.168.0.0/24
acl InetAccess external InetGroup InetAllow
http_access allow InetAccess
####################################################################################################
http_access deny all


ตัวอย่างนี้ Active Directory ของ domain sci.com อยู่บน Server 192.168.0.1
วิธีการก็คือ สร้าง Security Group (InetAllow) แล้ว add user ที่มีสิทธิใช้งาน internet ได้ให้เป็น member ของ group นี้

ในส่วนของ squid.conf
ตั้งค่าให้ใช้การ authen ผ่าน LDAP

auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=sci,dc=com" -D "cn=Administrator,cn=Users,dc=sci,dc=com" -w "***" -f "sAMAccountName=%s" -h 192.168.0.1


จากนั้นสร้าง external_acl_type ชื่อ InetGroup ให้ไปตรวจสอบจาก OU ที่ชื่อ InternetUser

external_acl_type InetGroup %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=sci,dc=com" -D "cn=Administrator,cn=Users,dc=sci,dc=com" -w "***" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=InternetUser,dc=sci,dc=com))" -h 192.168.0.1


แล้วก็สร้าง ACL ชื่อ InetAccess ให้ตรวจสอบกับ InetGroup โดยอนุญาตให้ Group InetAllow ผ่าน

acl InetAccess external InetGroup InetAllow


จากนั้นก็อนุญาตให้ User Group ที่ผ่าน acl ชื่อ InetAccess ใช้ internet ได้ นอกนั้นห้าม (โดยต้อง login ผ่าน proxy ด้วย)

acl InetAccess acl localnet proxy_auth REQUIRED src 192.168.0.0/24
acl InetAccess external InetGroup InetAllow
http_access allow InetAccess
http_access deny all

Axapta : Firewall config

เราสามารถตั้งค่า Axapta ให้ใช้งานผ่าน Windows Firewall ได้โดยตั้งค่า port ที่ AOS ดังรูป
axapta_aos_port

ในส่วนของ Client Config ก็ตั้งค่าในส่วนของ advance ดังรูป
axapta_client_port

แล้วก็ไป add port เพิ่มใน Windows Firewall
Windows_Firewall_Axapta_Port