Feat: Message length verification

pull/21/head
zijiren233 2 years ago
parent 15663582b0
commit 72d0191c98

@ -16,6 +16,7 @@ import (
var (
ErrRoomIDEmpty = errors.New("roomid is empty")
ErrRoomIDTooLong = errors.New("roomid is too long")
ErrAdminPassWordEmpty = errors.New("admin password is empty")
)
@ -65,6 +66,8 @@ func WithRootUser(u *User) RoomConf {
func NewRoom(RoomID string, Password string, rtmps *rtmps.Server, conf ...RoomConf) (*Room, error) {
if RoomID == "" {
return nil, ErrRoomIDEmpty
} else if len(RoomID) > 32 {
return nil, ErrRoomIDTooLong
}
now := time.Now().UnixMilli()
r := &Room{

@ -22,8 +22,10 @@ type User struct {
}
var (
ErrUsernameEmpty = errors.New("user name is empty")
ErrUserPasswordEmpty = errors.New("user password is empty")
ErrUsernameEmpty = errors.New("user name is empty")
ErrUsernameTooLong = errors.New("user name is too long")
ErrUserPasswordEmpty = errors.New("user password is empty")
ErrUserPasswordTooLong = errors.New("user password is too long")
)
type UserConf func(*User)
@ -43,9 +45,13 @@ func WithUserAdmin(admin bool) UserConf {
func NewUser(id string, password string, room *Room, conf ...UserConf) (*User, error) {
if id == "" {
return nil, ErrUsernameEmpty
} else if len(id) > 32 {
return nil, ErrUsernameTooLong
}
if password == "" {
return nil, ErrUserPasswordEmpty
} else if len(password) > 32 {
return nil, ErrUserPasswordTooLong
}
hashedPassword, err := bcrypt.GenerateFromPassword(stream.StringToBytes(password), bcrypt.DefaultCost)
if err != nil {

@ -122,6 +122,13 @@ func handleReaderMessage(c *room.Client) error {
}
switch msg.Type {
case room.ChatMessage:
if len(msg.Message) > 4096 {
c.Send(&room.ElementMessage{
Type: room.Error,
Message: "message too long",
})
continue
}
c.Broadcast(&room.ElementMessage{
Type: room.ChatMessage,
Sender: c.Username(),

Loading…
Cancel
Save