Last active
April 4, 2017 18:05
-
-
Save kalbasit/2007e2a6ad835d951a1b14e7d5736df3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "bytes" | |
| "flag" | |
| "io" | |
| "log" | |
| "net/http" | |
| "os" | |
| "os/signal" | |
| "syscall" | |
| "time" | |
| ) | |
| var ( | |
| port string | |
| filename string | |
| f io.WriteCloser | |
| logChan chan string | |
| buffer bytes.Buffer | |
| ) | |
| func init() { | |
| flag.StringVar(&port, "port", "8999", "The port of the server") | |
| flag.StringVar(&filename, "filename", "log.txt", "The filename to write to") | |
| } | |
| func openFile() { | |
| var err error | |
| f, err = os.Create(filename) | |
| if err != nil { | |
| log.Printf("error creating a new file %q: %s", filename, err) | |
| } | |
| } | |
| func main() { | |
| flag.Parse() | |
| if port == "" || filename == "" { | |
| flag.Usage() | |
| os.Exit(254) | |
| } | |
| // hooku the signal | |
| sigC := make(chan os.Signal, 1) | |
| signal.Notify(sigC, syscall.SIGINT, syscall.SIGTERM, os.Interrupt) | |
| // initialize the channel | |
| logChan = make(chan string, 100000) | |
| // start the gorouting for the background processing of the messages | |
| go func() { | |
| t := time.NewTicker(time.Second) | |
| for { | |
| select { | |
| case msg := <-logChan: | |
| if _, err := buffer.Write([]byte(msg)); err != nil { | |
| log.Printf("error writing bytes to the buffer: %s", err) | |
| } | |
| case <-t.C: | |
| if f == nil { | |
| continue | |
| } | |
| // write the buffer to file | |
| if _, err := f.Write(buffer.Bytes()); err != nil { | |
| log.Printf("error writing the buffer to disk") | |
| } | |
| // reset the buffer | |
| buffer.Reset() | |
| // flush the file to disk | |
| if fh, ok := f.(*os.File); ok { | |
| if err := fh.Sync(); err != nil { | |
| log.Printf("error flushing the file: %s", err) | |
| } | |
| } | |
| case <-sigC: | |
| if f != nil { | |
| f.Close() | |
| f = nil | |
| } | |
| os.Exit(0) | |
| } | |
| } | |
| }() | |
| http.HandleFunc("/clear.img", func(w http.ResponseWriter, r *http.Request) { | |
| if f != nil { | |
| f.Close() | |
| f = nil | |
| } | |
| buffer.Reset() | |
| openFile() | |
| }) | |
| http.HandleFunc("/log.img", func(w http.ResponseWriter, r *http.Request) { | |
| if f == nil { | |
| openFile() | |
| } | |
| logChan <- r.URL.Query().Get("type") + " " + r.URL.Query().Get("fn") + " " + r.URL.Query().Get("date") + "\n" | |
| }) | |
| log.Printf("starting the server on port :%s and writing to the file %q", port, filename) | |
| log.Fatal(http.ListenAndServeTLS(":"+port, "server.pem", "server.key", nil)) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -----BEGIN RSA PRIVATE KEY----- | |
| MIIEpQIBAAKCAQEA8NUPneZLyt+YvDx19u0ngzSgPbn0penYJ5JyNMMr4Bnnv451 | |
| zR9au+NqBAKDuF0WJBnYUHnhU2LjMWiyaVfBytQsm7/mLiMW0zjEFcK9Dnv2Rnfs | |
| PesRCS0LqgSxJXn05WgimKRO0SIsUL26KIKzQ/qka0MoMjzV2SZVrrMngSyts4au | |
| fXdtL4vL7NKPBVLo4DBMzwacOFM+gCRqXk7rxUpEV41nK332LM5jOqn9qmrjEMKU | |
| N3bMD5Q4qKQkrhSpF4q7/MvpLdWzTFNMdV74kQJ9+RK5YQXuy5UAL1Qvsoy/nke4 | |
| GuKsVsgZNNZny1VyHVzCYxskKArahlWZNGS9nwIDAQABAoIBAQC2QMb8u5eIBAZW | |
| DXtITtikFmNd0ygtlvYZnF4JR9ogUfproKfNf3juz38fYbfFAc0LrPNik5nNvPwq | |
| HA1IYz0o/cB0bZkIOU3AsyjRPvpLx8vsMDz77rSJuSkmlT5qGg0WvuPPmCh9Y9sd | |
| jzceCSsYuslK0xvMSPWcy8Hz32h5+5n2yS/vTb/doFSX6AeurSa+aPMW6RQppyE7 | |
| hFHYKykHuulKlo1xC9frRMVGAc1/BonOFJ/ODL5HZCk99v2YNMNBKG4rilR/92mm | |
| +IN4bp1abEdkAn61Mu5x5KG3Cda1dB5dauQiCZPsb/zfZ19YPHY8CVYgOgMD/cF5 | |
| xCm01aghAoGBAPlf3tNCGBtdlT4xoT+y1jp5d8VZ8QagqdlERkKSu/rykEIejR3v | |
| GQawHW49MLQ0eFHGGdeFAtV5IqsxcEKQMCsEp7mYpHxFXKpyzXjsnwRXpuR/5WTR | |
| jkuo1IjKE6i/NdPbtfP6TNODK3rMcvAPr8cmsQSUU7ofhUBq4MtjGGS7AoGBAPc7 | |
| FyD0JxpDRZlQGCS8B4DQuSQLKkxC7kdtRIPwgYd9IAo/HQa8DAZ4uTaCQh8G+H0o | |
| ZLzED9hW4Uo6hTvp+WkWMR6oKX1p6H+ZEqVNEdnKb0Q94+q0qhmVE/wdcdfpED9v | |
| Bp6BBJDXY/+Yc/3bV0zk4CHFh0n/7cc+YdpYVO5tAoGAao3XZUdxi4fiNE/6iYA9 | |
| 34B1d+MlhOJzkL2Gk/2kyuaIU2hAfhDjDaOE/8yvmeBtpOtTsW5JNrPq52FZiWeY | |
| 3VjA3iHl7p+op8AkIc5hZ/aX/jzT5M9R0OxT3BsUaV9CfcL8rUI/P4Vlt7PSTNc3 | |
| EY5rxvwmBnpfcpX4dY9jJe8CgYEAuBTCUuIX32EpiE7vuyJZv9spjyHVG7VWL863 | |
| DjpcZ6KN4bM+jI4lsgffeCuiyfFpwd76quadGasO0jMikwrSjyFb74SsZ9ocqC00 | |
| ieoJmY02LaybcF2Wrbenirft1SKO23xyhEByQtptdZlw/Bp+NR3RmLO32Sx7Qjg7 | |
| qdTNYD0CgYEAvVNVfQMLKHFE8rBg90rpyQJlF5VlXw0O4rSyStxxTaRFTpvUlLtw | |
| GGtVS75O57WdpDdN37dXWCEVbOm2+EUy7L0wPp3TjbBWPH4sO51s4/WggvYsI19U | |
| k65ZENrGfJO8M6OtYwaHIsGr1DCGvTB+nLsuU/ZTSu7msBeKCFcB9Z8= | |
| -----END RSA PRIVATE KEY----- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -----BEGIN CERTIFICATE----- | |
| MIIDcTCCAlmgAwIBAgIJAIRXQ0TefudlMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNV | |
| BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlQYWxvIEFsdG8x | |
| FzAVBgNVBAMMDmxvY2FsaG9zdDo4MDgwMB4XDTE2MDkyMzE4NDkwNloXDTI2MDky | |
| MTE4NDkwNlowTzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQ | |
| BgNVBAcMCVBhbG8gQWx0bzEXMBUGA1UEAwwObG9jYWxob3N0OjgwODAwggEiMA0G | |
| CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw1Q+d5kvK35i8PHX27SeDNKA9ufSl | |
| 6dgnknI0wyvgGee/jnXNH1q742oEAoO4XRYkGdhQeeFTYuMxaLJpV8HK1Cybv+Yu | |
| IxbTOMQVwr0Oe/ZGd+w96xEJLQuqBLElefTlaCKYpE7RIixQvboogrND+qRrQygy | |
| PNXZJlWusyeBLK2zhq59d20vi8vs0o8FUujgMEzPBpw4Uz6AJGpeTuvFSkRXjWcr | |
| ffYszmM6qf2qauMQwpQ3dswPlDiopCSuFKkXirv8y+kt1bNMU0x1XviRAn35Erlh | |
| Be7LlQAvVC+yjL+eR7ga4qxWyBk01mfLVXIdXMJjGyQoCtqGVZk0ZL2fAgMBAAGj | |
| UDBOMB0GA1UdDgQWBBQkHPaztjmJk73sSr0yppdGArpKgDAfBgNVHSMEGDAWgBQk | |
| HPaztjmJk73sSr0yppdGArpKgDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA | |
| A4IBAQDM/eTF214a4T1Zszq4RcPLDTzMua4wet7bN93ml6HnVm9cpmgtxV37AP1M | |
| BHc73O9bC7YuNZQMxyS4YUjJ150Ffs+5rPvMhMjCExiQ1eA4baKTQdTPw2x+tMat | |
| nsiduPKq/jw1hm6iMPXiBIZdQ2FzRUw/TfeEv4QidiI1jQ+25OsGQJpp3Ffzztf/ | |
| RIvqi7pM0HYV8pdYkzxsA4spJoVjcf3Axt19UXi7Gxorb1AFXlq1KFikCwVr/K2B | |
| 448X6Fe02EhqAZGNk9MbacBndF5glMcFuO+gAxDTW/UMy97mPtw5IdnHPLZXGde4 | |
| z1ws4KwYY6tUVIxaWBM66x8uuto1 | |
| -----END CERTIFICATE----- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment