Thursday, January 12, 2017

Connect internet when using OpenVPN - Ubuntu 16.04

1. Setup OpenVPN using network manager

2. Open termainal, type
default_gateway=$(/sbin/ip route | awk '/default/ { print $3 }')
arr=(`echo ${default_gateway}`);
#echo "${arr[1]}"
sudo route add default gw "${arr[1]}"  wlp62s0
sudo route add -net 10.0.0.0 netmask 255.255.255.0 dev tun0

wlp620: main card connect internet (wifi or cable)
tun0: virtual interface of VPN connection
10.0.0.0 : base ip of VPN connection (ex: 10.0.0.3)


3. Save as changegateway
4. chmod +x changegateway
5. ./changegateway

Monday, September 26, 2016

Gluster on Debian

Remote all installation and config of gluster
apt-get purge --auto-remove glusterfs-server

Install gluster on servers, (server1, server2)
apt-get install glusterfs-server

On server1
gluster peer probe server2

On server2
gluster peer probe server1

On server1
gluster volume create gv0 replica 2 server1:/path/to/folderserver1 server2:/path/to/folderserver2

gluster volume start gv0 

On server2
mount -t glusterfs server2:/gv0 /path/to/sharedir 

sharedir is represent for broadcast to 2 folderserver1 and folderserver2, data store in sharedir is replicated to folderserver1 and folderserver2

Add column to all tables same schema

CREATE OR REPLACE FUNCTION add_version_column_to_all_tables()
RETURNS VOID
AS $$
DECLARE
 my_row RECORD;
BEGIN
 FOR my_row IN
 SELECT *
 FROM information_schema.tables
 WHERE table_schema = 'public' AND table_type='BASE TABLE'
 LOOP
 IF NOT EXISTS
 (
 SELECT attname FROM pg_attribute WHERE attrelid =
 (SELECT oid FROM pg_class WHERE relname = my_row.table_name )
 AND attname = 'subtenant'
 )
 THEN
     IF EXISTS
     (
         SELECT attname FROM pg_attribute WHERE attrelid =
         (SELECT oid FROM pg_class WHERE relname = my_row.table_name )
         AND attname = 'tenantid'
     )
     THEN
         EXECUTE('ALTER TABLE ' || my_row.table_name || ' ADD COLUMN subtenant text;');
         EXECUTE('UPDATE ' || my_row.table_name || ' SET subtenant = tenantid;');
     END IF;
 END IF;
 END LOOP;
END
$$
LANGUAGE plpgsql;

SELECT add_version_column_to_all_tables();

Wednesday, August 17, 2016

Test Ping

https://drive.google.com/open?id=0B30EeVPAcvhveHF6RDNaYkJGZGM

Usage:

java -jar TestNetword.jar ping domain1 domain2 domain3

<replace ping by "ping -t" on windows>

java -jar TestNetwork.jar report domain1.log filtervalue

<replace filtervalue by "timeout" or "15:01:" time point>

Sunday, July 10, 2016

Install iRedmail on Debian 8

1. Install iRedmail follow official guide onhttp://www.iredmail.org/docs/index.html#install-iredmail

2. Reinstall Clamav
apt-get remove clamav clamav-daemon
apt-get install clamav clamav-daemon
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart


 3. Register TLS cert on startssl.com

4. When STARTSSL.COM send email to webmaster@youmaildomain.com to verify domain, maybe it is listed in greylist and is denied by postfix, so you should add ip and account of starssl into whitelist (you can check using tail -f /var/log/mail.log for detect ip and email account of startssl)

cd /opt/iredapd/tools/
python wblist_admin.py --list --whitelist
python wblist_admin.py --add --whitelist 4.14.40.143 no-reply@startcomca.com
python wblist_admin.py --add --whitelist 4.14.40.142 no-reply@startcomca.com


5. When register TLS cert successfully, you will receive a zip (assum it is gbsofts.net.zip) file contains cert and other info, download it and put into /root/cert/
mkdir /root/cert
cd /root/cert
openssl req -newkey rsa:2048 -keyout gbsofts.net.key -out gbsofts.net.csr
openssl rsa -in gbsofts.net.key -out gbsofts.net.decrypt.key
wget --no-check-certificate https://www.startssl.com/certs/ca-bundle.pem -O startssl-ca-bundle.crt
unzip gbsofts.net.zip
unzip NginxServer.zip

cat 1_gbsofts.net_bundle.crt gbsofts.net.decrypt.key > gbsofts.net.pem

nano /etc/nginx/conf.d/00-default.conf
ssl_certificate /root/cert/1_gbsofts.net_bundle.crt;
ssl_certificate_key /root/cert/gbsofts.net.decrypt.key;
nano /etc/postfix/main.cf
smtpd_tls_key_file = /root/cert/gbsofts.net.decrypt.key
smtpd_tls_cert_file = /root/cert/1_gbsofts.net_bundle.crt
smtpd_tls_CAfile = /root/cert/startssl-ca-bundle.crt

nano /etc/dovecot/dovecot.conf
ssl_cert = </root/cert/1_gbsofts.net_bundle.crt
ssl_key = </root/cert/gbsofts.net.decrypt.key
service postfix restart
service dovecot restart
service nginx restart

6. Add TXT record to domain to set SPF
v=spf1 ip4:a.b.c.d ~all

for other domain, add TXT
v=spf1 include:otherdomain.com ip4:a.b.c.d ~all

Monday, July 4, 2016

Authen SSH using key


ssh-keygen -t rsa

ssh username@remoteserver mkdir -p .ssh

cat .ssh/id_rsa.pub | ssh username@remoteserver 'cat >> .ssh/authorized_keys' 

Sunday, July 3, 2016

Build Postgres from source

Install libs for compile source postgres

apt-get install build-essential libreadline-dev zlib1g-dev llvm-7 clang-7

if use Debian 11 or Ubuntu 22.04, change llvm and clang to current version

apt-get install build-essential libreadline-dev zlib1g-dev llvm clang libicu-dev pkg-config bison flex libssl-dev
 

Extract postgres source to postgres-source-dir (change lllvm-7 to current version llvm path)

mkdir -p /home/userpath/postgres/pgsql
cd postgres-source-dir

./configure --with-llvm LLVM_CONFIG="/usr/lib/llvm-7/bin/llvm-config" --prefix=/home/userpath/postgres/pgsql

make

make install

if you want to install postgres-contrib extension, you can compile it

cd contrib
make
make install



cd \

mkdir postgres

cd postgres

mkdir database

pgsql/bin/initdb --locale en_US.UTF-8 -D database


Now you can setup everything with new portable postgres include 2 folder: pgsql and database