You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
73 lines
1.8 KiB
3 years ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"os"
|
||
|
"net/http"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
func get(resp http.ResponseWriter, req *http.Request){
|
||
|
hostname, err := os.Hostname()
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("get hostname error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
addrs, err := net.InterfaceAddrs()
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("get ip address error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
addrString := ""
|
||
|
for _, addr := range addrs{
|
||
|
addrString += " " + addr.String()
|
||
|
}
|
||
|
resp.Write([]byte(fmt.Sprintf("response from host: %s, ip is:%s", hostname, addrString)))
|
||
|
}
|
||
|
|
||
|
//read the file which path is "/data/test.txt"
|
||
|
func readFile(resp http.ResponseWriter, req *http.Request){
|
||
|
file, err := os.Open("/data/test.txt")
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("open /data/test.txt error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
defer file.Close()
|
||
|
data := make([]byte, 1024)
|
||
|
n, err := file.Read(data)
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("read /data/test.txt error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
resp.Write(data[0:n])
|
||
|
}
|
||
|
|
||
|
//write a string to the file
|
||
|
func writeFile(resp http.ResponseWriter, req *http.Request){
|
||
|
file, err := os.OpenFile("/data/test.txt", os.O_RDWR|os.O_APPEND, os.ModePerm)
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("open /data/test.txt error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
defer file.Close()
|
||
|
hostname, _ := os.Hostname()
|
||
|
_, err = file.Write([]byte(fmt.Sprintf("write by pod %s", hostname)))
|
||
|
if err != nil {
|
||
|
resp.Write([]byte(fmt.Sprintf("write /data/test.txt error:%v", err)))
|
||
|
return
|
||
|
}
|
||
|
resp.Write([]byte("write file successed."))
|
||
|
}
|
||
|
|
||
|
func main (){
|
||
|
router := http.DefaultServeMux
|
||
|
router.HandleFunc("/", get)
|
||
|
router.HandleFunc("/read", readFile)
|
||
|
router.HandleFunc("/write", writeFile)
|
||
|
log.Println("listen on 0.0.0.0:8080")
|
||
|
err := http.ListenAndServe("0.0.0.0:8080", nil)
|
||
|
if err != nil {
|
||
|
log.Fatalln(err)
|
||
|
}
|
||
|
}
|