!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/   drwxr-xr-x
Free 13.12 GB of 57.97 GB (22.64%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     AblyBroadcaster.php (5.19 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Illuminate\Broadcasting\Broadcasters;

use 
Ably\AblyRest;
use 
Illuminate\Support\Str;
use 
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;

/**
 * @author Matthew Hall (matthall28@gmail.com)
 * @author Taylor Otwell (taylor@laravel.com)
 */
class AblyBroadcaster extends Broadcaster
{
    
/**
     * The AblyRest SDK instance.
     *
     * @var \Ably\AblyRest
     */
    
protected $ably;

    
/**
     * Create a new broadcaster instance.
     *
     * @param  \Ably\AblyRest  $ably
     * @return void
     */
    
public function __construct(AblyRest $ably)
    {
        
$this->ably $ably;
    }

    
/**
     * Authenticate the incoming request for a given channel.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     *
     * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
     */
    
public function auth($request)
    {
        
$channelName $this->normalizeChannelName($request->channel_name);

        if (empty(
$request->channel_name) ||
            (
$this->isGuardedChannel($request->channel_name) &&
            ! 
$this->retrieveUser($request$channelName))) {
            throw new 
AccessDeniedHttpException;
        }

        return 
parent::verifyUserCanAccessChannel(
            
$request$channelName
        
);
    }

    
/**
     * Return the valid authentication response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $result
     * @return mixed
     */
    
public function validAuthenticationResponse($request$result)
    {
        if (
Str::startsWith($request->channel_name'private')) {
            
$signature $this->generateAblySignature(
                
$request->channel_name$request->socket_id
            
);

            return [
'auth' => $this->getPublicToken().':'.$signature];
        }

        
$channelName $this->normalizeChannelName($request->channel_name);

        
$signature $this->generateAblySignature(
            
$request->channel_name,
            
$request->socket_id,
            
$userData array_filter([
                
'user_id' => $this->retrieveUser($request$channelName)->getAuthIdentifier(),
                
'user_info' => $result,
            ])
        );

        return [
            
'auth' => $this->getPublicToken().':'.$signature,
            
'channel_data' => json_encode($userData),
        ];
    }

    
/**
     * Generate the signature needed for Ably authentication headers.
     *
     * @param  string  $channelName
     * @param  string  $socketId
     * @param  array|null  $userData
     * @return string
     */
    
public function generateAblySignature($channelName$socketId$userData null)
    {
        return 
hash_hmac(
            
'sha256',
            
sprintf('%s:%s%s'$socketId$channelName$userData ':'.json_encode($userData) : ''),
            
$this->getPrivateToken(),
        );
    }

    
/**
     * Broadcast the given event.
     *
     * @param  array  $channels
     * @param  string  $event
     * @param  array  $payload
     * @return void
     */
    
public function broadcast(array $channels$event, array $payload = [])
    {
        foreach (
$this->formatChannels($channels) as $channel) {
            
$this->ably->channels->get($channel)->publish($event$payload);
        }
    }

    
/**
     * Return true if the channel is protected by authentication.
     *
     * @param  string  $channel
     * @return bool
     */
    
public function isGuardedChannel($channel)
    {
        return 
Str::startsWith($channel, ['private-''presence-']);
    }

    
/**
     * Remove prefix from channel name.
     *
     * @param  string  $channel
     * @return string
     */
    
public function normalizeChannelName($channel)
    {
        if (
$this->isGuardedChannel($channel)) {
            return 
Str::startsWith($channel'private-')
                        ? 
Str::replaceFirst('private-'''$channel)
                        : 
Str::replaceFirst('presence-'''$channel);
        }

        return 
$channel;
    }

    
/**
     * Format the channel array into an array of strings.
     *
     * @param  array  $channels
     * @return array
     */
    
protected function formatChannels(array $channels)
    {
        return 
array_map(function ($channel) {
            
$channel = (string) $channel;

            if (
Str::startsWith($channel, ['private-''presence-'])) {
                return 
Str::startsWith($channel'private-')
                    ? 
Str::replaceFirst('private-''private:'$channel)
                    : 
Str::replaceFirst('presence-''presence:'$channel);
            }

            return 
'public:'.$channel;
        }, 
$channels);
    }

    
/**
     * Get the public token value from the Ably key.
     *
     * @return mixed
     */
    
protected function getPublicToken()
    {
        return 
Str::before($this->ably->options->key':');
    }

    
/**
     * Get the private token value from the Ably key.
     *
     * @return mixed
     */
    
protected function getPrivateToken()
    {
        return 
Str::after($this->ably->options->key':');
    }

    
/**
     * Get the underlying Ably SDK instance.
     *
     * @return \Ably\AblyRest
     */
    
public function getAbly()
    {
        return 
$this->ably;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0053 ]--