controller.wsServer.on( 'request', function( request ) {

        //console.log( "Websocket: new request!" );
        
        var allowRequest = false;

        switch ( true ) {

            // CLIENT TO API UPLOAD REQUEST
            case request.resourceURL.path == '/api/' && additionalPaths.indexOf( '/api/' ) >= 0:
            
                allowRequest = SocketUtils.firewall4( SocketUtils.getFirewallList( 'client' ), request.socket.remoteAddress );

                if ( !allowRequest ) {
                    console.log( "Firewall ( client ): Request rejected for " + request.socket.remoteAddress + " on 'ws://api/'" );
                    request.reject();
                    return;
                }
            
                requestTypes.clientToApi.handleRequest( request, controller, httpServer, dataDir, additionalPaths );
                break;

            // PUT FILE REQUEST
            case request.resourceURL.path == '/put/':

                allowRequest = SocketUtils.firewall4( SocketUtils.getFirewallList( controller.isA ), request.socket.remoteAddress );

                if ( !allowRequest ) {
                    console.log( "Firewall ( " + controller.isA + " ): Request rejected for " + request.socket.remoteAddress + " on 'ws://put/'" );
                    request.reject();
                    return;
                }

                requestTypes.putRequest.handleRequest( request, controller, httpServer, dataDir, additionalPaths );
                break; // END WEBSOCKET PUT

            // GET FILE REQUEST
            case request.resourceURL.path == '/get/':

                allowRequest = SocketUtils.firewall4( SocketUtils.getFirewallList( controller.isA ), request.socket.remoteAddress );

                if ( !allowRequest ) {
                    console.log( "Firewall ( " + controller.isA + " ): Request rejected for " + request.socket.remoteAddress + " on 'ws://get/'" );
                    request.reject();
                    return;
                }

                requestTypes.getRequest.handleRequest( request, controller, httpServer, dataDir, additionalPaths );
                break;

            default:
                console.log( "Websocket: invalid websocket path " + request.resourceURL.path );
                request.reject();
                break;

        } // END WEBSOCKET PROTOCOL ROUTING


    } );
Beispiel #2
0
exports.handle = function( response, request, urlInfo, controller ) {

    /* Firewall */
    var allowRequest = SocketUtils.firewall4( SocketUtils.getFirewallList( controller.isA ), request.socket.remoteAddress );

    if ( !allowRequest ) {

        console.log( "Firewall (" + controller.isA + "): Request rejected for " + request.socket.remoteAddress + " on resource: '/put/'" );

        response.write( 'forbidden' );
        response.end();
        return;

    }

    response.write(
        fs.readFileSync( __dirname + "/index.html" )
    );
    
    

}
Beispiel #3
0
exports.handle = function( response, request, urlInfo, controller ) {

    var errorSent = false;

    response.sendError = function( reason ) {
        if ( errorSent )
            return;
            
        try {
            response.write( JSON.stringify({
                "error": true,
                "reason": ( reason + "" ) || "unknown reason"
            }) );
            response.end();
        } catch ( e ) {
            console.log( "ERROR sending response back to event: " + e );
        }
        errorSent = true;
    }

    /* Firewall */

    var allowRequest = SocketUtils.firewall4( SocketUtils.getFirewallList( controller.isA ), request.socket.remoteAddress );

    if ( !allowRequest ) {

        console.log( "Firewall (" + controller.isA + "): Request rejected for " + request.socket.remoteAddress + " on resource: '/event/'" );

        response.sendError( 'forbidden' );
        return;

    }

    /* End of firewall */
    
    var eventName = urlInfo.event || null;
    
    if ( !eventName ) {
        
        response.sendError( 'which event?' );
        
        return;
        
    } else {
        
        var data = urlInfo.data || "{}";
        
        try {
            data = JSON.parse( data );
        } catch ( e ) {
            response.sendError( "Unserializeable request data" );
            return;
        }
        
        try {
            data.request = request;
            data.response= response;
            data.eventName = eventName;
            
            controller.on( eventName, data );
        } catch ( e ) {
            response.sendError( e + '' );
        }
    }
    
}