|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- The MIT License (MIT)
-
- Copyright (c) 2014 DutchCoders [https://github.com/dutchcoders/]
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- */
-
- package main
-
- import (
- "github.com/goamz/goamz/aws"
- "github.com/goamz/goamz/s3"
- "net/http"
- "net/mail"
- "strings"
- "time"
- )
-
- func getBucket() (*s3.Bucket, error) {
- auth, err := aws.GetAuth(config.AWS_ACCESS_KEY, config.AWS_SECRET_KEY, "", time.Time{})
- if err != nil {
- return nil, err
- }
-
- conn := s3.New(auth, aws.Regions["eu-west-1"])
- b := conn.Bucket(config.BUCKET)
- return b, nil
- }
-
- // Request.RemoteAddress contains port, which we want to remove i.e.:
- // "[::1]:58292" => "[::1]"
- func ipAddrFromRemoteAddr(s string) string {
- idx := strings.LastIndex(s, ":")
- if idx == -1 {
- return s
- }
- return s[:idx]
- }
-
- func getIpAddress(r *http.Request) string {
- hdr := r.Header
- hdrRealIp := hdr.Get("X-Real-Ip")
- hdrForwardedFor := hdr.Get("X-Forwarded-For")
- if hdrRealIp == "" && hdrForwardedFor == "" {
- return ipAddrFromRemoteAddr(r.RemoteAddr)
- }
- if hdrForwardedFor != "" {
- // X-Forwarded-For is potentially a list of addresses separated with ","
- parts := strings.Split(hdrForwardedFor, ",")
- for i, p := range parts {
- parts[i] = strings.TrimSpace(p)
- }
- // TODO: should return first non-local address
- return parts[0]
- }
- return hdrRealIp
- }
-
- func encodeRFC2047(String string) string {
- // use mail's rfc2047 to encode any string
- addr := mail.Address{String, ""}
- return strings.Trim(addr.String(), " <>")
- }
|