Skip to content

3.0.9 must have configuration

Vahid Hedayati edited this page Feb 17, 2016 · 4 revisions

Release 3.0.13 of wschat+ comes with wss

Additional configuration that would be different to below config:

 wschat.wsProtocol='wss'
 wschat.siteProtocol='https'
 wschat.hostname='localhost:8443'
 wschat.enable_AI=false  // enable Aritificial Intelligence ? refer to ChatAI.groovy for example and understanding
 wschat.enable_Chat_Bot='false'
 wschat.enable_Chat_BadWords=false
 wschat.KEYSTORE="/home/user/server.jks"
 wschat.KEYPASSWORD="changeme"

I had to disable the bot as above and could not resolve the issue hit:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Further read on stuff attempted can be found here:

https://github.com/vahidhedayati/grails-wschat-plugin/wiki/ssl-stuff .

###For grails 3.1.1 and Spring security 3.0.3 change the static rules below to the following:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
      [pattern: '/', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/error', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/index', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/index.gsp', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/shutdown', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/assets/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/**/js/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/**/css/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/**/images/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/**/favicon.ico', access:['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChat/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChatAdmin/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsCamEndpoint/**', access:  ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChatEndpoint/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChatFileEndpoint/**', access:  ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/TicTacToeServer/**', access:  ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsCamEndpoint', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChatEndpoint', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/wsChatFileEndpoint', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/TicTacToeServer', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/dbconsole/**', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/ChatClientEndpoint/**', access:  ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/WsChatClientEndpoint/**', access:['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/ChatClientEndpoint', access: ['IS_AUTHENTICATED_ANONYMOUSLY']],
      [pattern: '/WsChatClientEndpoint', access:   ['IS_AUTHENTICATED_ANONYMOUSLY']]
]

For Grails 3 version 3.0.9+ uses spring security so you must add the following to your grails-app/conf/application.groovy

wschat.enableSecurity='true'
// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'grails.plugin.wschat.ChatAuth'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'grails.plugin.wschat.ChatAuthChatRole'
grails.plugin.springsecurity.authority.className = 'grails.plugin.wschat.ChatRole'
//grails.plugin.springsecurity.securityConfigType = "Annotation"
grails.plugins.springsecurity.securityConfigType = 'InterceptUrlMap'
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/wschat'
grails.plugin.springsecurity.successHandler.alwaysUseDefault = true
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
        '/error':           ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/index':           ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/index.gsp':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/shutdown':        ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/assets/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/**/js/**':        ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/**/css/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/**/images/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/**/favicon.ico':  ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChat/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChatAdmin/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsCamEndpoint/**':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChatEndpoint/**':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChatFileEndpoint/**':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/TicTacToeServer/**':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsCamEndpoint':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChatEndpoint':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/wsChatFileEndpoint':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/TicTacToeServer':		['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/dbconsole/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/test/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/ChatClientEndpoint/**':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/WsChatClientEndpoint/**':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/ChatClientEndpoint':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/WsChatClientEndpoint':	['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/**':        ['IS_AUTHENTICATED_ANONYMOUSLY']
]


wschat.defaultperm='admin'
wschat.rooms = ['fred','smith','room3']
wschat.showtitle="no"
wschat.hostname='localhost:8080'
wschat.hostname = 'localhost:8080'
wschat.appName = 'no'
//wschat.hostname='192.168.1.196:8080'
stunServers { iceServers=[ [url: 'stun:stun.l.google.com:19302'] ] }
wschat.send.leftroom='yes'
wschat.send.joinroom='yes'
wschat.frontenduser='_frontend'
wschat.storeForFrontEnd=true
wschat.dbstore=true
wschat.dbsupport='yes'
wschat.dbstore_pm_messages=true
wschat.dbstore_room_messages=true
wschat.debug='true'

wschat.dbstore_user_messages=true


wschat.liveChatAssistant='assistant' // the chat client assistant name.. so if userx requests chat .. userx_assistant = this what this is .
wschat.liveChatPerm='admin'  // this is the group of users that livechat belongs to and if those uses have an email address in profile they will also be emailed
wschat.liveContactEmail='youremail@gmail.com' // this is the hard coded live chat email
wschat.liveChatUsername='masterv'  // this is the nickname upon them joining a live request
wschat.liveContactName='Mr V'  // this is the person that email title is set to
wschat.emailFrom="me@domain.com"  //this is for sending emails
wschat.store_live_messages=true  // store records of offline messaging
wschat.enable_AI=true  // enable Aritificial Intelligence ? refer to ChatAI.groovy for example and understanding
wschat.liveChatTitle="My Live chat"


//wschat.dbstore_user_messages=true
wschat.addFile='false'
wschat.addGame='false'

wschat.liveChatAskName='true'
wschat.liveChatAskEmail='true'
wschat.enable_Chat_Bot=true
wschat.enable_Chat_AI=true
wschat.enable_Chat_BadWords=true

For Grails 3 version 3.0.9+ uses spring security so you must add the following to your grails-app/init/Bootstrap.groovy

import grails.plugin.wschat.*
import grails.plugin.springsecurity.SecurityFilterPosition
import grails.plugin.springsecurity.SpringSecurityUtils


class BootStrap {

    def init = { servletContext ->
		//testing variation for most relevance picking
		ChatAI.findOrSaveWhere(input:'contact number', output: '0800 123456' )
		ChatAI.findOrSaveWhere(input:'opening hours', output: 'Opening hours are 9 - 5' )
		ChatAI.findOrSaveWhere(input:'opening days', output: 'Opening days are Mon-Fri' )
		ChatAI.findOrSaveWhere(input:'opening person', output: 'Opening person is Sam' )
		ChatAI.findOrSaveWhere(input:'opening person drives', output: 'Some car' )
		ChatAI.findOrSaveWhere(input:'opening hours on a sunday', output: 'Not open on sunday' )
		ChatAI.findOrSaveWhere(input:'weekdays', output: 'Do you mean which days are week days? This would be Monday to Friday' )
		
	//	ChatAI.findOrSaveWhere(input:'kickbot', output: 'close_connection' )
		
		ChatBadWords.findOrSaveWhere(input:'poo', output: '/kickuser' )
		//minutes months hours years days
		ChatBadWords.findOrSaveWhere(input:'pants', output: '/banuser', duration: 1  ,period: 'minutes')
		ChatBadWords.findOrSaveWhere(input:'bastard', output: '/banuser', duration: 1  ,period: 'months')

		//Spring security configuration to add me as a user and admin role
		def adminRole = new ChatRole('ROLE_ADMIN').save()
		def userRole = new ChatRole('ROLE_USER').save()
		def anonymouse = new ChatRole('ROLE_ANONYMOUS').save()

		def testUser = new ChatAuth('me', 'password').save()

		ChatAuthChatRole.create testUser, adminRole, true
		ChatAuthChatRole.create testUser, userRole, true
		ChatAuthChatRole.create testUser, anonymouse, true

		def adminUser = new ChatAuth(username: 'admin', password: 'admin').save()
		ChatAuthChatRole.create adminUser, adminRole, true

		addUser('me','test@test.com')
		addUser('admin1','test1@test.com')
		addUser('admin2','test2@test.com')


	}
    def destroy = {
    }
	void addUser(String username,String email) {
		ChatUser user
		ChatPermissions perm
		String defaultPermission = 'admin'
		if (defaultPermission) {
			perm = ChatPermissions.findByName(defaultPermission)
			perm = perm ? perm : new ChatPermissions(name: defaultPermission).save(flush: true)
			user = ChatUser.findByUsername(username)
			if (!user) {
				def addlog = addLog()
				user = new ChatUser(username: username, permissions: perm, log: addlog, offlog: addlog).save(flush:true)
			}
			ChatUserProfile.findOrSaveWhere(chatuser:user, email:"${email}").save(flush:true)
		}

	}

	private ChatLog addLog() {
		ChatLog logInstance = new ChatLog(messages: [])
		if (!logInstance.save()) {
			log.debug "${logInstance.errors}"
		}
		return logInstance
	}
}

Clone this wiki locally