• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

ruby>>
package main

import (
"net"
"sync"
"crypto/rand"
"crypto/tls"
"log"
"encoding/json"
)

func
main() {

cert, err := tls.LoadX509KeyPair( "OreOre.pem", "OreOre.pem" )
if err != nil { log.Fatalf( "LoadX509KeyPair:%v", err ) }
config := &tls.Config{
	Certificates: []tls.Certificate{ cert }, 
	ClientAuth: tls.VerifyClientCertIfGiven, 
	ServerName: "example.com",
	Rand:	rand.Reader,
}

connections := map[ net.Conn ] interface{} {}
mutex := sync.RWMutex{}

broadcaster := make( chan interface{} )
go func() {
	for {
		data, _ := json.Marshal( <- broadcaster )
		mutex.RLock()
		conns := connections
		mutex.RUnlock()
		for conn, _ := range conns { conn.Write( data ) }
	}
}()

listener, _ := tls.Listen( "tcp", ":6666", config )
defer listener.Close()
for {
	conn, _ := listener.Accept()
	mutex.Lock()
	connections[ conn ] = ""
	mutex.Unlock()
	go func() {
		decoder := json.NewDecoder( conn )
		for {
			var	w interface{}
			err := decoder.Decode( &w )
			if err != nil { break }
			broadcaster <- w 
		}
		mutex.Lock()
		delete( connections, conn )
		mutex.Unlock()
		conn.Close()
	}()
}

}
<<--

証明書がオレオレなので openssl で検証。

openssl s_client -tls1 -connect localhost:6666

posted by Saturn Saturn on Wed 24 Dec 2014 at 22:09 with 0 comments
Contents rssrss
Value Transformer
AES & Blowfish in swift (CBC)
OreOre.pem の作り方
JSON Chat Server Skelton in GoLang TLS Ver.
JSON Chat Server Skelton in GoLang
UITextView と、UITextField でキーボードが出た時の Notification の順番が違う
Making window which covers iPhone's Status Bar
UIImagePickerController の編集領域
UIView の tag property
UILocationManager
Services from s21g
YOMU Web小説リーダー
小説投稿サイトの公式ページを開き、WebView表示と読み上げ向け表示を切り替えて、移動中や作業中にもWeb小説の続きを聴きやすくするiPhoneアプリです。
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン