mizumanju

package module
v0.0.0-...-0c0c9c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2015 License: MIT Imports: 27 Imported by: 0

README

Mizumanju Server

Mizumanju は一定時間ごとに webcam の画像をメンバー間で共有するシステムです。 これはそのサーバです。

Try Mizumanju

$ docker run --name mizumanju-db -e MYSQL_DATABASE=mizumanju -e MYSQL_ROOT_PASSWORD=password -d mysql:5.6
$ docker run --name mizumanju-ap --link mizumanju-db:db -d marcie001/mizumanju
$ docker run --name mizumanju-web --link mizumanju-ap:ap -d -P marcie001/mizumanju-angular

ブラウザでアクセスしてください。ログイン画面が表示されるので、下のいずれかのユーザでログインしてください。

username password
admin password
user01 password
user02 password

DB Migrate

$ go get github.com/marice001/mizumanju-server

MySQL のデータベースとユーザを作ってください。 開発環境は root でもいいでしょう。 ここでは docker で MySQL をインストールします。root のパスワードは -e MYSQL_ROOT_PASSWORD= で指定します。ここでは password としています。

$ docker run -P -e MYSQL_ROOT_PASSWORD=password -d mysql:5.6
$ mysqlport=$(docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{(index $conf 0).HostPort}}{{end}}' $(docker ps -ql))
$ mysql --host=127.0.0.1 --port=$mysqlport -u root -ppassword
mysql> create database mizumanju character set utf8mb4 collate utf8mb4_unicode_ci;

Migration ツールである Goose をインストールします。 https://bitbucket.org/liamstask/goose

$ go get bitbucket.org/liamstask/goose/cmd/goose

プロジェクトのルートディレクトリで次のコマンドを実行します。

$ DATABASE_URL_GOOSE="tcp:127.0.0.1:$mysqlport*mizumanju/root/password" goose up

データベースにテーブルとデータが入っていることを確認してください。

Documentation

Overview

パッケージ mizumanju は web server が行う処理。

Index

Constants

View Source
const (

	// ユーザに表示する全体的なメッセージであることを表すキー
	GlobalMsg = "global"
)

Variables

View Source
var (
	// ErrNotFound はデータがないことを表すエラー
	ErrNotFound error = errors.New("Data not found")
	// ErrUnauthorized は認証されていないことを表すエラー
	ErrUnauthorized error = errors.New("Unauthorized")
)
View Source
var (

	// ErrBadRequest は HTTP Status Code 401 に相応しいエラー
	ErrBadRequest error = errors.New("Bad Request.")
	// ライセンス情報
	Licenses = []License{
		License{
			Title:      "User shape",
			Source:     "http://www.flaticon.com/free-icon/user-shape_25634",
			Author:     "Dave Gandy",
			AuthorURL:  "http://www.flaticon.com/authors/dave-gandy",
			License:    "CC BY 3.0",
			LicenseURL: "http://creativecommons.org/licenses/by/3.0/",
		},
	}
)
View Source
var ErrValidation error = errors.New("Bad Request")

ErrValidation は入力チェックエラーであることを表す

Functions

func CreateRecovery

func CreateRecovery(r *http.Request, email string) (err error)

CreateRecovery はパスワードリカバリキーを生成し、メールでユーザに通知する関数

func CreateTemplate

func CreateTemplate() *template.Template

CreateTemplate は Template インスタンスを作成する関数。

func DelUser

func DelUser(r *http.Request, userId int32) (err error)

DelUser はユーザを削除する関数

func GetImage

func GetImage(r *http.Request, userId int32) ([]byte, error)

GetImage はユーザ画像をメモリ上から取得する関数。

func SaveImage

func SaveImage(r *http.Request, userId int32, image string) error

SaveImage はユーザ画像をメモリ上に保存する関数。

func SendInvitation

func SendInvitation(r *http.Request, toName string, toAddress string, recoveryKey string) error

SendInvitation は招待メールを送信する関数

func SendRecovery

func SendRecovery(r *http.Request, toName string, toAddress string, recoveryKey string) error

SendRecovery は招待メールを送信する関数

func SetDB

func SetDB(r *http.Request, db *sql.DB)

SetDB は DB インスタンスを context に保存する関数。

func SetMailTmpl

func SetMailTmpl(r *http.Request, tmpl *template.Template)

SetMailTmpl は Template インスタンスを context に保存する関数。

func SetSmtpConf

func SetSmtpConf(r *http.Request, smtpConf *SmtpConf)

SetSmtpConf は SmtpConf インスタンスを context に保存する関数。

func SetSystemConf

func SetSystemConf(r *http.Request, cnf *SystemConf)

SetSystemName はシステム名を context に保存する関数。

func Start

func Start(host string, port int32, dsn string, smtpHost string, smtpPort int, startTls bool, smtpUserName string, smtpPassword string, systemName string, systemUrl string, systemMailAddress string)

starg はデータベースへの接続、テンプレート準備、ルーティングの定義、サーバ起動を行う。

func UpdatePasswordByAuthId

func UpdatePasswordByAuthId(r *http.Request, authId string, curPasswd string, newPasswd string) (err error)

UpdatePasswordByAuthId はパスワードを変更する関数

func UpdatePasswordByRecoveryKey

func UpdatePasswordByRecoveryKey(r *http.Request, key string, passwd string) (err error)

UpdatePasswordByRecoveryKey はパスワードを変更する関数

func UpdateUserStatus

func UpdateUserStatus(r *http.Request, userId int32, status string) error

UpdateUserStatus はユーザステータスを更新する関数

func UpsertDisplaySetting

func UpsertDisplaySetting(r *http.Request, tx *sql.Tx, userId int32, targetUserId int32, orderNo int32, hide bool) (err error)

UpsertDisplaySetting は表示設定を更新または挿入する関数

func UpsertDisplaySettings

func UpsertDisplaySettings(r *http.Request, userId int32, users []User) (err error)

UpsertDisplaySettings は複数表示設定を更新または挿入する関数

Types

type InvitationData

type InvitationData struct {
	SystemName, SystemURL, FromName, ToName, RecoveryURL string
}

type License

type License struct {
	Title      string `json:"title"`
	Source     string `json:"source"`
	Author     string `json:"author"`
	AuthorURL  string `json:"authorURL"`
	License    string `json:"license"`
	LicenseURL string `json:"licenseURL"`
}

License はライセンス情報を表す構造体

type RecoveryData

type RecoveryData struct {
	SystemName, SystemURL, RecoveryURL string
}

type Response

type Response struct {
	Msgs map[string][]string `json:"msgs"`
	Data interface{}         `json:"data"`
}

Response はレスポンス用の構造体

func NewResponse

func NewResponse(msgs interface{}, data interface{}) *Response

NewResponse は Response 構造体を生成する関数

type SmtpConf

type SmtpConf struct {
	Host, Sender, User, Password string
	Port                         int
	TLS                          bool
}

func (*SmtpConf) Addr

func (scnf *SmtpConf) Addr() string

type SystemConf

type SystemConf struct {
	Name string
	URL  *url.URL
	Mail *mail.Address
}

type User

type User struct {
	Id          int32     `json:"id"`
	Name        string    `json:"name"`
	VoiceChatID string    `json:"voiceChatId"`
	Hide        bool      `json:"hide"`
	Image       string    `json:"image"`
	Role        string    `json:"role"`
	AuthId      string    `json:"authId"`
	DeleteFlag  bool      `json:"deleteFlag"`
	Email       string    `json:"email"`
	OrderNo     int32     `json:"orderNo"`
	Created     time.Time `json:"created"`
}

func Authenticate

func Authenticate(r *http.Request, inId, inPasswd string) (User, error)

Authenticate はデータベースに問い合わせ認証を行う関数。 認証成功時、該当ユーザの情報を返す。

func FindAllUsers

func FindAllUsers(r *http.Request) (users []User, err error)

FindAllUsers は全ユーザをデータベースから取得する関数

func FindDisplaySettings

func FindDisplaySettings(r *http.Request, userId int32) (users []User, err error)

FindDisplaySettings は userId のユーザ表示設定を取得する関数。

func FindUserById

func FindUserById(r *http.Request, id int32) (u User, err error)

FindUserById は id でユーザ情報を取得する関数

func InsertUser

func InsertUser(r *http.Request, user User) (u User, err error)

InsertUser はユーザ情報をデータベースに挿入し、メールで通知する関数

func UpdateUser

func UpdateUser(r *http.Request, user User) (User, error)

UpdateUser はユーザ情報を更新する関数

type UserStatus

type UserStatus struct {
	UserId  int32     `json:"userId"`
	Status  string    `json:"status"`
	Updated time.Time `json:"updated"`
}

func FindUserStatusByUserId

func FindUserStatusByUserId(r *http.Request, userId int32) (u UserStatus, err error)

FindUserStatusByUserId は userId でユーザステータスを取得する関数

Directories

Path Synopsis
cmd
mizumanju
パッケージ mizumanju は webcam の画像を一定時間ごとに共有するシステム。
パッケージ mizumanju は webcam の画像を一定時間ごとに共有するシステム。
パッケージ imgmap はユーザ画像の管理を行うパッケージ。
パッケージ imgmap はユーザ画像の管理を行うパッケージ。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL