Category Archives: Software

sed: if then else

Chúng ta cần dò trong tập tin một từ khóa, tạm gọi là SEARCH, nếu tìm thấy thì thay bằng REPLACE, còn không thì thêm REPLACE vào cuối file. Tình huống tương tự vậy gặp nhiều trong thực tế và có các ứng dụng chuyên dùng như postconf với tập tin main.cf, nhưng postconf chậm nên chúng ta thử dùng sed.

sed '/SEARCH/{h;s/SEARCH/REPLACE/};${x;/^$/{s//REPLACE/;H};x}' -i file
  1. Đọc vào 1 dòng
  2. Tìm từ khóa SEARCH
  3. Nếu tìm thấy copy vào hold space (lệnh h). Ở pattern space thay thế SEARCH với REPLACE (lệnh s)
  4. Trở lại 1 nếu chưa phải dòng cuối ($)
  5. Nếu là dòng cuối rồi, hoán đổi nội dung của hold space và pattern space (lệnh x). Nếu cho đến lúc này không tìm thấy SEARCH thì nội dung hold space trống gây nên pattern space trống. Thay thế nội dung trống bằng REPLACE (lệnh s) rồi nối vào hold space (lệnh H). Bấy giờ ở hold space là dòng cuối, dấu xuống dòng và REPLACE. Cuối cùng chúng ta hoán đổi nội dung của hold space và pattern space (lệnh x) để lấy về nội dung của hold space
Continue reading

Comments Off on sed: if then else

Filed under Software

Script cài đặt Postfix chỉ gởi email

Giả sử chúng ta có website/Ứng dụng web cần gởi email cho user (thí dụ như thông báo mật khẩu). Trong hầu hết trường hợp, user không cần trả lời cho email họ nhận được. Trong trường hợp này, chúng ta có thể cài đặt một SMTP server chỉ gởi mail trên web server bằng cách dùng Postfix, mặc dù cũng có những MTA khác như msmtp, smtp… Chúng ta dùng SMTP relayhost như GMail để đơn giản quá trình cài đặt.

Chuẩn bị

  1. RPi đã cài đặt OS Debian/Ubuntu
  2. Internet domain hay subdomain hay tên miền động. Email sẽ có dạng user@domain.com
  3. User/Password của một tài khoản email thuộc một mail server nào đó làm SMTP relayhost
  4. DNS quản lý domain phải cho tạo ít nhất 4 record
  5. Mở port 25 cho RPi (option)
Continue reading

Comments Off on Script cài đặt Postfix chỉ gởi email

Filed under Software

diff so sánh file theo dòng

diff thay cho difference (sự sai khác). Lệnh này hiển thị sự sai khác của các file bằng cách so sánh theo dòng. Không giống như các lệnh tương tự như cmp và comm, nó cho thấy dòng nào của file khác với file đối chiếu.

Cú pháp:

diff [options] File1 File2 
Continue reading

Comments Off on diff so sánh file theo dòng

Filed under Software

Nâng cấp PHP 7.3 lên PHP 7.4 /8.0

Nếu đang dùng PHP 7.x thì nên nâng cấp đến phiên bản cuối là 7.4 hay nâng cấp lên 8.0. Quá trình này phải thực hiện thủ công theo nhu cầu người dùng vì lý do tương thích với ứng dụng web. Thí dụ như WordPress hiện chỉ tương thích với PHP 7.4, có thể phải chờ đến giữa năm 2022 mới có thể làm việc với PHP 8.0

Một đặc điểm của PHP là phiên bản sau nhanh hơn phiên bản trước.

Continue reading

Comments Off on Nâng cấp PHP 7.3 lên PHP 7.4 /8.0

Filed under Software

reCaptcha v3

reCaptcha v3 không yêu cầu người dùng “xem hình đoán chữ” hay làm gì đó để giúp phân biệt người và robot. Nó tự động thu thập các thao tác chuột, phím và nhiều thứ khác rồi chấm điểm. Điểm gần 0 thiên về robot, điểm gần 1 thiên về người.

reCaptcha v3 gắn một logo ở góc dưới bên phải của trang web có sử dụng dịch vụ này.

Trang web muốn dùng reCaptcha của Google phải có tài khoản gmail để đăng ký. Đăng ký xong sẽ có client_key và server_key để kết nối với reCaptcha của Google, ngoài ra còn phải chỉ rõ website nào dùng reCaptcha trong phần Settings.

  • client_key dùng ở client, trong thẻ html và đoạn mã javascript
  • server_key dùng ở server để lấy điểm của người dùng từ dịch vụ reCaptcha.

Đoạn mã reCaptcha dùng ở client khác nhau ở v2 và v3, trong khi đoạn mã dùng ở server không thay đổi.

Continue reading

Comments Off on reCaptcha v3

Filed under Software

cfip.sh v.20210408

Cập nhật IP cho domain, subdomain quản lý bới cloudflare.com

Cú pháp: cfip [-f] [ip] [domain [@|*|sub[,…]]]
    -f : thử cập nhật dù theo ghi chép ip chưa thay đổi
    ip : cập nhật theo ip này
   sub : thay cho sub.domain
     @ : thay cho domain
     * : tất cả subdomain, trừ @

Các giá trị mặc định khi chỉ gọi tắt cfip domain @,\* trong đó domain được trích ra rừ $(hostname) hoặc @,\* nếu có chỉ định domain như cfip domain

Script cài đặt jq nếu chưa có, jq là con dao Thụy Sĩ để xử lý các đối tượng Json.

Script này cũng cập nhật/tạo mới record SPF (nếu tìm được MX record) và PTR cũng như cập nhật /etc/hosts. Tuy nhiên phần này bị cắt đi do chỉ phục vụ cho mail server.

Continue reading

Comments Off on cfip.sh v.20210408

Filed under Software

Dovecot: master user để đăng nhập vào mọi tài khoản mail

Master user phải là user không tồn tại, thậm chí có thể không có phần @domain.org

Giả sử master user là tui

  1. Sửa cấu hình dovecot

nano /etc/dovecot/conf.d/auth-master.conf.ext

# Authentication for master users. Included from 10-auth.conf.
# Need to tell dovecot the separator to use
auth_master_user_separator = *
passdb {
  driver = passwd-file
  master = yes
  args = /etc/dovecot/master-users
  # Original line, pass=yes didn't work. Use this instead
  result_success = continue
}
Continue reading

Comments Off on Dovecot: master user để đăng nhập vào mọi tài khoản mail

Filed under Software

Mảng Bash và Json

Mảng Bash có dạng

bash_arr=('a', 'b', 'c')

Trong khi mảng Json có dạng

json_arr=["a", "b", "c"]

# biểu diễn dạng chuỗi
json_arr='["a", "b", "c"]'

Vì json_arr thường biểu diễn dưới dạng chuỗi nên cần dùng echo để chuyển cho jq phân tích.

Continue reading

Comments Off on Mảng Bash và Json

Filed under Software

5 cách chạy ứng dụng khi RPi khởi động

  1. rc.local
  2. .bashrc
  3. init.d tab
  4. systemd
  5. crontab
Continue reading

Comments Off on 5 cách chạy ứng dụng khi RPi khởi động

Filed under Software

DNS và local DNS cho mail server

Với domain example.com, chúng ta tạo mail server cho email dạng user@example.com, sau đó có thể gởi nhờ nhiều domain khác cho mail server để có các email dạng user@other.domain.

Chúng ta cần các DNS record:

  1. A mail.example.com: trỏ đến IP mail server
  2. MX example.com: trỏ đến mail.example.com
  3. CNAME smtp.example.com: trỏ đến mail.example.com
  4. CNAME imap.example.com: trỏ đến mail.example.com
  5. CNAME autoconfig.example.com: trỏ đến mail.example.com
  6. CNAME autodiscover.example.com: trỏ đến mail.example.com
  7. SRV _autodiscover._tcp.example.com: trỏ đến mail.example.com

Ngoài ra còn một số record phục vụ cho “đối ngoại” của mail server, không cần phân tích ở đây.

Continue reading

Comments Off on DNS và local DNS cho mail server

Filed under Software