VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/fcm/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/fcm/fcm_notification.php
<?php

use Google\Auth\Credentials\ServiceAccountCredentials;
use Google\Auth\HttpHandler\HttpHandlerFactory;

require "vendor/autoload.php";

class FCMNotification
{
    static function getFirebasePrivateKey()
    {
        return '{
        "type": "service_account",
        "project_id": "keeview-df67e",
        "private_key_id": "390eecfe0987771a7b291aeff091473a634d0c01",
        "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC88fx7QMqSE6tZ\n+av/IVhqHdAtGZiR5VyJD9QWHmTN/WXgmlxMcFG/Shn2hQKo3HgGqckLdgUZGvVh\n3q+xA2O5taIOIDZOMT1HDc63I4BdT0mXdXaf1zJu29ZGfHcZgBHBZXoU4QSy8kvs\nPlw/ygWzqsfasK1MTAqEZKY//6JW76sOMQK9Z9QOLxRa+jce4SAkGO2Ye7tWVuik\nVqJoKDJu/PHeXi8+iR05I7RLP28Ou1zGRK95u3IageyRZ63lmQBEuMC+y02mo5Ya\nFtIN370varcRamAfic+W4obldwrZiLw1sS1XEDrsIMRj3+piWz1deno/21FHzmXg\nFOtjT7zHAgMBAAECggEAUHVNWiDrggvdLkna26BT+ZAre2EIbqw4XOdAHZEgxPTw\nYpXo0uYLcYU5DBh02vpTJCc9xOMjZZ7suhntP9gdKdI2KYS/C0n9eZngGm2ENnfS\ncywicQte3wU/ODG9N78pEG1JcMWnThpOiVG+z60UA3+objBJA5Hn8pu3jc4qT5Ew\n/Z7GhmbeJfE+DRIenkKm/lAKOCuIho1KEFD3qXAh2KFA/f5tmB1x1CAJV7CN7JYD\naTBq89uPvWtxouqPw/VzpxuNjgkctzgIgGHDAfB6bBJ76mFoN2jY3xeqWfH0MMwt\n51zmgw8UsQt4JRel64sLoGwCgLCUzlRTvGBk7Py9zQKBgQDRCNuofhbnRjZP+DMo\n9fIXV+g8q/ZORXP0bhggsmpo682wj3lK1iITDh5Vl/XWv/TuPY/qm9HvSC+PiwY8\nyRkXdYKLFTtuQf8IQD2v/+16luI5bsTAXPGsRgrTCQaGH7Ap3BgRHNhj9v+6Yv3P\nLlU/xR3Lu3u4FNIjn4q2KJJp5QKBgQDnZaPWNjjO5+i7hY5YWCeZLKCZSrtZQqS6\nDGoNR8syGjhDFLbNBTxVp0JI22JiZn0Cg3qfphfk62ZDl/dPsFBgrd2MrZsX++IM\niHmo5xbFRYozoKTuO87P32gtAWQL2n6UxEijzXJOnsovk37D8Rd8onOGCLpFRSf8\nlay/J1KxOwKBgC203CLZfzSOu618veME9Cx6gkNR7odq1FHsCMaNfIr4lH84v/LH\nI6g6/BMHKTANxQaa228XJy5FAHFImtKLvjrM7QBwYhBXyeYJ9fMX6NtXRpv8RnUx\nXX6nyhIe9Rg6sZBVmcWUIxSom34ryweUP/uzpDI6CnFTzCcR6YivEmSpAoGBAON5\nbahlwU7VeFrwHlEGyFayImbPqoFDHICxN4g6raxhTjHTqSi/HuLs/CJ3WK53JilU\nazWKqC6oou2L9Nln8Hw6L3PeLntTaJL9juvV0PK5O/Uo1TpFnTeI3fZwSZPFhW5l\nzysICnjzbLt8eb/RwE8LvBlldwglxftugFWiKI6FAoGACrD5OceXr1T0uqzagM2J\nceUc61SGm8T5CCh7gJwmSCfY0dTOnF9Tj59jyBBb7XCpLA+SB2E1OKYR3t4/wim6\nrKKneA0FC9X8DoG6CzbE7lk/EVJusuwGhzvHokcRT0Ajqt/Rwe4ZMlHqiNYAWYEg\nd9zFsmiWJEjpi7DltYVvdkE=\n-----END PRIVATE KEY-----\n",
        "client_email": "firebase-adminsdk-b1r84@keeview-df67e.iam.gserviceaccount.com",
        "client_id": "107779151916574009316",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-b1r84%40keeview-df67e.iam.gserviceaccount.com",
        "universe_domain": "googleapis.com"
    }';
    }

    static function getFirebaseMessagingAccessToken()
    {
        $credential = new ServiceAccountCredentials(
            "https://www.googleapis.com/auth/firebase.messaging",
            json_decode(self::getFirebasePrivateKey(), true)
        );

        $token = $credential->fetchAuthToken(HttpHandlerFactory::build());
        return $token["access_token"];
    }

    public static function sendNotificationToTopic($params) {
         $topic = $params['topic'];
         $title = $params['title'];
         $body = $params['body'];
         $data = isset($params['data']) ? $params['data'] : null;
         $image = isset($params['image']) ? $params['image'] : null;
         $badge = isset($params['badge']) ? (int)$params['badge'] : -1;


        if ($image == null) {
            $image =
                "https://lab.daithangminh.vn/general_images/Logo_Keeview_H_50.png";
        }
        $accessToken = self::getFirebaseMessagingAccessToken();

        $ch = curl_init(
            "https://fcm.googleapis.com/v1/projects/keeview-df67e/messages:send"
        );
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Content-Type: application/json",
            "Authorization: Bearer " . $accessToken,
        ]);

        $post_content = [
            "message" => [
                "notification" => [
                    "title" => $title,
                    "body" => $body,
                    "image" => $image,
                ],

                "apns" => [
                    "payload" => [
                        "aps" => [
                            "content-available" => 1,
                        ],
                    ],
                ],
                "topic" => $topic,
            ],
        ];

        if ($badge >= 0) {
            $post_content["message"]["apns"]["payload"]["aps"][
                "badge"
            ] = $badge;
        }
        if ($data !== null) {
            $post_content["message"]["data"] = $data;
        }
        

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_content));
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "post");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        curl_close($ch);
        $res = json_decode($response, true);
        
        if (json_last_error() !== JSON_ERROR_NONE) {
            return [
                "success" => false,
                "error" => "JSON decode error: " . json_last_error_msg(),
            ];
        } else {
            return $res;
        }
    }

    public static function sendNotificationToDevice($params) {

         $userFCMToken = $params['userFCMToken'];
         $title = $params['title'];
         $body = $params['body'];
         $data = isset($params['data']) ? $params['data'] : null;
         $image = isset($params['image']) ? $params['image'] : null;
         $badge = isset($params['badge']) ? (int)$params['badge'] : -1;

        if ($image == null) {
            $image =
                "https://lab.daithangminh.vn/general_images/Logo_Keeview_H_50.png";
        }
        $accessToken = self::getFirebaseMessagingAccessToken();

        $ch = curl_init(
            "https://fcm.googleapis.com/v1/projects/keeview-df67e/messages:send"
        );
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Content-Type: application/json",
            "Authorization: Bearer " . $accessToken,
        ]);

        $post_content = [
            "message" => [
                "notification" => [
                    "title" => $title,
                    "body" => $body,
                    "image" => $image,
                ],

                "apns" => [
                    "payload" => [
                        "aps" => [
                            "content-available" => 1,
                        ],
                    ],
                ],
                "token" => $userFCMToken,
            ],
        ];

        if ($badge >= 0) {
            $post_content["message"]["apns"]["payload"]["aps"][
                "badge"
            ] = $badge;
        }

        if ($data !== null) {
            $post_content["message"]["data"] = $data;
        }



        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_content));
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "post");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
        $res = json_decode($response, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            return [
                "success" => false,
                "error" => "JSON decode error: " . json_last_error_msg(),
            ];
        } else {
            return $res;
        }
    }
}
?>

VaKeR 2022