-
Notifications
You must be signed in to change notification settings - Fork 10
3.0.9 must have configuration
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
}
}