Thu, 26 Mar 2015 6:13 pm
Pusing sama tanggal am & pm, otak ane perlu loading sebentar untuk paham #fyuuh
230 views
Thu, 26 Mar 2015 6:02 pm
Login system sms-admin juga ready, base juga dipisahkan,jadi 4 base; sms-admin_base, sms-admin_base_noauth, sms-user_base, sms-user_base_noauth #project
217 views
Thu, 26 Mar 2015 5:57 pm
#aim lwn #ayang lg bjalanan ... #rawasari
261 views
Thu, 26 Mar 2015 12:48 am
sms-server.go
package main

  import (
      "fmt"
      "github.com/gorilla/mux"
      "github.com/gorilla/sessions"
      // "github.com/fzzy/radix/redis"
      // "github.com/fatih/structs"
      "net"
      "net/http"
      "html/template"
      "gopkg.in/mgo.v2"         
      "gopkg.in/mgo.v2/bson"
      "regexp"
      "strings"
      "crypto/rand"
      "time"
      "strconv"
      // "encoding/json"
      // "reflect"
  )

  var (
      // MongoDB
      mongoConfig       = "mongodb://localhost:27017/admin"
      MongoSession, err = mgo.Dial(mongoConfig)
      MDB               = MongoSession.DB("admin")
      BlogCol           = MDB.C("blog")
      UserCol           = MDB.C("user")

      // Session
      store             = sessions.NewCookieStore([]byte("something-very-secret"))

      // Blog
      skipHome          = 0
      limit             = 10
      rowsNum           = 10

      // Tag Factory
      tagPattern        = "#([a-z]|[A-Z]|[_])+"

      // Path
      templatePath      = "D:\\PROJECTS\\GO-APP\\webkoe\\templates\\"
      publicPath        = "D:\\PROJECTS\\GO-APP\\webkoe\\public\\"
  )

  func cekKodeJabatan(r *http.Request) string {
      session,_       := store.Get(r, "session-name")
      kode_jabatan    := fmt.Sprintf("%s", session.Values["kode_jabatan"])
      return kode_jabatan  
  }

  func SmsHomeHandler(w http.ResponseWriter, r *http.Request) {

      if cekKodeJabatan(r) == "" {
          http.Redirect(w, r, "/login", 301)
          fmt.Println(cekKodeJabatan(r))
          fmt.Println("*** @home -> No Data ")
      }else{
          templates := template.Must(template.New("").ParseFiles(templatePath + "sms-base.html", templatePath + "sms-home.html"))
          err := templates.ExecuteTemplate(w, "base", cekKodeJabatan(r))
          if err != nil {
              http.Error(w, err.Error(), http.StatusInternalServerError)
          }        
      }
  }

  func SmsLoginFormHandler(w http.ResponseWriter, r *http.Request) {

      if cekKodeJabatan(r) == "" {
          templates := template.Must(template.New("").ParseFiles(templatePath + "sms-base.html", templatePath + "sms-loginform.html"))
          err := templates.ExecuteTemplate(w, "base", nil)
          if err != nil {
              http.Error(w, err.Error(), http.StatusInternalServerError)
          }
      }else{
          http.Redirect(w, r, "/", 301)
      }
  }  

  func SmsPostLoginHandler(w http.ResponseWriter, r *http.Request) {
      
      if cekKodeJabatan(r) == "" {
          username          := r.FormValue("username")
          password          := r.FormValue("password")

          var results map[string]interface{}
          err = UserCol.Find(bson.M{"username": username, "password" : password}).One(&results)
          if err != nil {
              http.Redirect(w, r, "/#error", 301)
          }else{
              kode_jabatan, _ := results["kode_jabatan"]
              session, _                     := store.Get(r, "session-name")
              session.Values["kode_jabatan"]  = kode_jabatan
              session.Save(r, w)
              http.Redirect(w, r, "/", 301)
          }
      }else{
          http.Redirect(w, r, "/", 301)
      }
  }

  func SmsLogoutHandler(w http.ResponseWriter, r *http.Request) {
      
      session, _                     := store.Get(r, "session-name")
      session.Values["kode_jabatan"]  = ""
      session.Save(r, w)

      http.Redirect(w, r, "/", 301)
  }

  func safehtml(text string) template.HTML { 

      text = text + " "
      text = strings.Replace(text, "<", "<", -1)   
      text = strings.Replace(text, ">", ">", -1) 
        
      text = strings.Replace(text, "", "
", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "", "", -1) text = strings.Replace(text, "=", "=", -1) text = strings.Replace(text, "<a href=", "", "", -1) text = strings.Replace(text, "<img src=", "", ">", -1) regexPagar, _ := regexp.Compile(tagPattern) tags := regexPagar.FindAllString(text, -1) for _ , value := range tags { tagAscii := strings.Replace(value, "#", "#", 1) tagOnly := strings.Replace(value, "#", "", 1) text = strings.Replace(text, value, "" + tagAscii + "", 1) } return template.HTML(text) } func timeFormatter(text string) template.HTML { text = strings.Replace(text, " ", "-", -1) text = strings.Replace(text, ":", "-", -1) split := strings.Split(text, "-") tahun, _ := strconv.Atoi(split[0]) bulan, _ := strconv.Atoi(split[1]) tanggal, _ := strconv.Atoi(split[2]) jam, _ := strconv.Atoi(split[3]) menit, _ := strconv.Atoi(split[4]) detik, _ := strconv.Atoi(split[5]) var _bulan time.Month if bulan == 1 { _bulan = time.January }else if bulan == 2 { _bulan = time.February }else if bulan == 3{ _bulan = time.March }else if bulan == 4{ _bulan = time.April }else if bulan == 5{ _bulan = time.May }else if bulan == 6{ _bulan = time.June }else if bulan == 7{ _bulan = time.July }else if bulan == 8{ _bulan = time.August }else if bulan == 9{ _bulan = time.September }else if bulan == 10{ _bulan = time.October }else if bulan == 11{ _bulan = time.November }else if bulan == 12{ _bulan = time.December } // const layout = "Mon Jan 2, 2006 at 3:04pm (MST)" (MST) --> WITA const layout = "Mon, 2 Jan 2006 3:04 pm" t := time.Date(tahun, _bulan, tanggal, jam, menit, detik, 0, time.Local) return template.HTML(t.Format(layout)) } func randStr(strSize int, randType string) string { var dictionary string if randType == "alphanum" { dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" } if randType == "alpha" { dictionary = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" } if randType == "number" { dictionary = "0123456789" } var bytes = make([]byte, strSize) rand.Read(bytes) for k, v := range bytes { bytes[k] = dictionary[v%byte(len(dictionary))] } return string(bytes) } func GetIP(r *http.Request) string { if ipProxy := r.Header.Get("X-FORWARDED-FOR"); len(ipProxy) > 0 { return ipProxy } ip, _, _ := net.SplitHostPort(r.RemoteAddr) return ip } func main() { mx := mux.NewRouter() // *** home *** mx.HandleFunc("/", SmsHomeHandler) // *** login *** mx.HandleFunc("/login", SmsLoginFormHandler).Methods("GET") mx.HandleFunc("/login", SmsPostLoginHandler).Methods("POST") // *** logout *** mx.HandleFunc("/logout", SmsLogoutHandler).Methods("GET") // *** static server *** mx.PathPrefix("/").Handler(http.FileServer(http.Dir( publicPath ))) http.ListenAndServe(":80", mx) } #go #script
445 views
Thu, 26 Mar 2015 12:44 am
It's time to #zzz
244 views
Thu, 26 Mar 2015 12:44 am
Login system SMS versi GO ready :) #project
235 views
Wed, 25 Mar 2015 8:30 pm
Go Pros
Was it worth it?

Yes, a million times, yes. The speed boost is just too good to pass up. Also, and this counts for something I think, Go is a trendy language right now, so when it comes to recruiting, I think having Go as a critical part of Repustate’s tech stack will help.
#go
233 views
Wed, 25 Mar 2015 7:58 pm
#warung_padang nya berubah layout,pintu masuk pindah ke kanan (kalo dr dalam) #rawasari
241 views
Wed, 25 Mar 2015 7:40 pm
@warung-padang langganan #rawasari
206 views
Wed, 25 Mar 2015 7:18 pm
Ngantar laptop ke ulin, #ayang mau bikin skp, laptop mama yang sudah d bawa ga ada office 2007 nya. Ini lg nunggu #ayang turun
202 views
Wed, 25 Mar 2015 6:07 pm
add /page/{page} #webkoe #go
272 views
Wed, 25 Mar 2015 4:38 pm
Sedekah juga bisa diniatkan untuk kesembuhan sakit #ngaji
257 views
Wed, 25 Mar 2015 4:31 pm
Saat sakit dianjurkan juga untuk bekam, bekam yang dianjurkan dengan goresan bukan tusukan. Dianjurkan juga untuk makan kurma Ajwa (kurma Nabi) #ngaji
227 views
Wed, 25 Mar 2015 4:28 pm
Org sakit sunnah rasulnya berobat, dan sebaik baik obat adalah jintan hitam dan madu (hadits Rasul) #ngaji
234 views
Wed, 25 Mar 2015 4:24 pm
Org sakit dilarang berputus asa karena sakitnya #ngaji
226 views
Wed, 25 Mar 2015 4:20 pm
Org sakit boleh jamak, dan tidak boleh qasar #ngaji
215 views
Wed, 25 Mar 2015 4:16 pm
Shalat wajib dilakukan selama masih ada kesadaran, walaupun dalam keadaan sakit #ngaji
216 views
Wed, 25 Mar 2015 4:12 pm
Sabar dan puasa punya makna yang mirip, sabar = menggenggam dgn erat, puasa = menahan #ngaji
220 views
Wed, 25 Mar 2015 4:09 pm
Sakit yang disikapi dengan ridho akan menjadi penghapus dosa baginya #ngaji
218 views
Wed, 25 Mar 2015 4:05 pm
@masjid-kantor lagi ada pengajian ... membahas tentang sakit. Sakit adalah ketetapan dari Allah. Jika kita tidak melakukan dosa dan sakit, maka insya Allah sakit tersebut bukan bagian dari adzab Allah #ngaji
233 views
Wed, 25 Mar 2015 3:27 pm
Eselon III dan II lagi pada sedang ke menuju Ujung Pandang #kantor
222 views
Wed, 25 Mar 2015 11:26 am
Kinerja Per KPP, Pertumbuhan & Pencapaian Per Bulan; Menu E,G,H #done #portalkanwil #kantor
278 views
Wed, 25 Mar 2015 8:45 am
Berita gembira, di android, javascript bakal punya banyak kemampuan layaknya native #nice
236 views
Tue, 24 Mar 2015 4:07 pm
Sedang heboh "vitamin DJP" ... Kalo benar yang berlaku adalah "perpres itu" ... vitamin buat para eselon doank. Mmm ... intinya bukan tentang tidak mensyukuri dengan yang ada, ini tentang keadilan (cieee) #kantor
225 views
Tue, 24 Mar 2015 10:25 am
Rencana PBB per kabupaten 2015 & Revisi PBB per kabupaten 2014 cfm. KEP #done #kantor #todo
311 views
Tue, 24 Mar 2015 9:25 am
Prepare PBB 2015 #portalkanwil #kantor
268 views
Mon, 23 Mar 2015 7:28 pm
Tadi hbis jalan-jalan sama #aim n #ayang, beli roti bou, bubur ayam tanpa vetsin di amd n buah di depan rawasari #jalanjalan
267 views
Mon, 23 Mar 2015 5:25 pm
Saatnya pulang, dihadangi #aim naik buum buum
210 views
Mon, 23 Mar 2015 5:14 pm
Italic #test
227 views
Mon, 23 Mar 2015 5:14 pm
- Underline Tag Added Underline
- Italic Tag Added Italic
- Bold Tag Added Bold
- Link Added Link
#webkoe
315 views
Mon, 23 Mar 2015 5:07 pm
= #test
203 views
Mon, 23 Mar 2015 5:02 pm
296 views
Mon, 23 Mar 2015 4:56 pm
208 views