如何在 Golang 讀取/寫入檔案

這篇是在 stackoverflow 上看到的

覺得滿實用

在Golang要操作檔案有三種方法

第一種就是操作檔案的指標

跟php的fopen差不多

以下是第一段程式碼

… Read more
修改CentOS 7的hostname

Centos 7我發現多了很多指令

以往都要自己修改某個檔案的方式已經過去了

CentOS 7用指令取代腦袋(要記憶的路徑)

也許會說指令也需要記憶

但其實只需要記開頭就好了

… Read more
在CentOS7 上 安裝Nginx + ModSecurity建立免費WAF

WAF是Web Application Firewall的縮寫

其原理是將已知的攻擊手法,用匹配方式偵測並阻擋

所以可以預想得到

規則會列很多條

也不一定全面

只需要熟悉漏洞原理的人

照樣可以繞過

但有總比沒有好

至少可以過濾掉大部分的script kiddie

除了ModSecurity之外

還有一個專門for nginx的WAF叫做naxsi

這個有機會也可以試用看看

不過這次先用ModSecurity

要把nginx跟ModSecurity結合

必須要自己compile nginx和ModSecurity

以下用我寫的shell script一步一步做講解

Step 1. 安裝compile所需套件

… Read more
[Golang] 取得使用者的Home資料夾位置

golang 有提供 user的package

可以直接取得使用者的資訊

在文件裡面寫到

user.Current() 可以取得包含目前使用者資訊的User struct

struct結構長這樣

… Read more
[Golang] 產生檔案的MD5 hash - Generate file MD5 hash in golang

此篇文章是一個用Golang產生檔案MD5的function範例

func genMd5(Abspath string) string {
	path, err := filepath.Abs(Abspath)
	if err != nil {
		panic("Convert file absolute path error: " + path)
	}

	f, err := os.Open(Abspath)
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()

	h := md5.New()
	if _, err := io.Copy(h, f); err != nil {
		log.Fatal(err)
	}

	return hex.EncodeToString(h.Sum(nil))
}