Web Development

How Can I Write Logs Directly to AWS S3 in Nodejs?

 Here is the code in which you can directly work with AWS S3 Logs.

// need to install "npm install aws-sdk" first if not exist
const AWS = require('aws-sdk')
const s3 = new AWS.S3({
    // your S3 accessKeyId and your S3 secretAccessKey
    accessKeyId: process.env.ACCESS_KEY_ID.trim(),
    secretAccessKey: process.env.SECRET_ACCESS_KEY.trim()
})
// params for getting the log file from s3
var getParams = {
    // your S3 bucket name and your S3 filename Key/path
    Bucket: process.env.BUCKET.trim(),
    Key: fileNameKey
};
// get file data from s3
await s3.getObject(getParams, function(err, data) {
    // Handle any error and exit. if 404 then skip. it will create new below.
    if (err && err.statusCode !== 404) {
        return console.log(err);
    }
   
    // create content
    let content = ''
    // if file exist and no err then prepend the data in the new content
    if (!err || (err && err.statusCode !== 404)) {
        // Use the encoding necessary
        let objectData = data.Body.toString('utf-8');
        content += objectData
    }
    var date = new Date()
    content += '['+ date +'] - your text for the logs';
    content += "\n\n"; // will leave 2 line breaks at the last

    // s3 upload file params
    const params = {
    Bucket: process.env.BUCKET.trim(), // your S3 bucket name
    Key: fileNameKey, // your S3 filename Key/path
    Body: content
    }
    s3.upload(params, (err2, data) => {
    if (err2) {
        return console.log(err2)
    }
    return console.log(err2);
    })
    return console.log(err);
});

Site improvement code.. have to put in htaccess

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>
<IfModule mod_expires.c>
    # Enable expirations
    ExpiresActive On
    # Default directive
    ExpiresDefault "access plus 1 month"
    # My favicon
    ExpiresByType image/x-icon "access plus 1 year"
    # Images
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    # CSS
    ExpiresByType text/css "access plus 1 month"
    # Javascript
    ExpiresByType application/javascript "access plus 1 year"
    </IfModule>
    # php -- BEGIN cPanel-generated handler, do not edit
    # Set the “ea-php71” package as the default “PHP” programming language.
    <IfModule mime_module>
      AddType application/x-httpd-ea-php71 .php .php7 .phtml
    </IfModule>
# php -- END cPanel-generated handler, do not edit
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$">
    Header set Cache-Control "public"
  </filesMatch>
  <filesMatch "\.(css)$">
    Header set Cache-Control "public"
  </filesMatch>
  <filesMatch "\.(js)$">
    Header set Cache-Control "private"
  </filesMatch>
  <filesMatch "\.(x?html?|php)$">
    Header set Cache-Control "private, must-revalidate"
  </filesMatch>
</ifModule>
# END Cache-Control Headers

set cookie value in javascript and displaying it with php

Set in javascript

document.cookie='fcookie='+tempo; 

Get in PHP

if (isset($_COOKIE["fcookie"])) 
echo $_COOKIE["fcookie"]; 
else 
echo "Cookie Not Set";

Change url parameters using javascript

var newUrl = your url
history.pushState({}, null, newUrl);

how to use in_array in smarty

in_array in smarty


{if $variable|in_array:[14, 15, 18]}

... Your code

{/if}


Or


in_array in smarty


{if $variable|in_array:$array}

... Your code

{/if}




Convert PDF to Text in PHP

<?php function pdf2string($sourcefile) { $fp = fopen($sourcefile, 'rb'); $content = fread($fp, filesize($sourcefile)); fclose($fp); $searchstart = 'stream'; $searchend = 'endstream'; $pdfText = ''; $pos = 0; $pos2 = 0; $startpos = 0; while ($pos !== false && $pos2 !== false) { $pos = strpos($content, $searchstart, $startpos); $pos2 = strpos($content, $searchend, $startpos + 1); if ($pos !== false && $pos2 !== false){ if ($content[$pos] == 0x0d && $content[$pos + 1] == 0x0a) { $pos += 2; } else if ($content[$pos] == 0x0a) { $pos++; } if ($content[$pos2 - 2] == 0x0d && $content[$pos2 - 1] == 0x0a) { $pos2 -= 2; } else if ($content[$pos2 - 1] == 0x0a) { $pos2--; } $textsection = substr( $content, $pos + strlen($searchstart) + 2, $pos2 - $pos - strlen($searchstart) - 1 ); $data = @gzuncompress($textsection); $pdfText .= pdfExtractText($data); $startpos = $pos2 + strlen($searchend) - 1; } } return preg_replace('/(\\s)+/', ' ', $pdfText); } function pdfExtractText($psData){ if (!is_string($psData)) { return ''; } $text = ''; // Handle brackets in the text stream that could be mistaken for // the end of a text field. I'm sure you can do this as part of the // regular expression, but my skills aren't good enough yet. $psData = str_replace('\\)', '##ENDBRACKET##', $psData); $psData = str_replace('\\]', '##ENDSBRACKET##', $psData); preg_match_all( '/(T[wdcm*])[\\s]*(\\[([^\\]]*)\\]|\\(([^\\)]*)\\))[\\s]*Tj/si', $psData, $matches ); for ($i = 0; $i < sizeof($matches[0]); $i++) { if ($matches[3][$i] != '') { // Run another match over the contents. preg_match_all('/\\(([^)]*)\\)/si', $matches[3][$i], $subMatches); foreach ($subMatches[1] as $subMatch) { $text .= $subMatch; } } else if ($matches[4][$i] != '') { $text .= ($matches[1][$i] == 'Tc' ? '' : '') . $matches[4][$i]; } } // Translate special characters and put back brackets. $trans = array( '...' => '…', '\\205' => '…', '\\221' => chr(145), '\\222' => chr(146), '\\223' => chr(147), '\\224' => chr(148), '\\226' => '-', '\\267' => '•', '\\(' => '(', '\\[' => '[', '##ENDBRACKET##' => ')', '##ENDSBRACKET##' => ']', chr(133) => '-', chr(141) => chr(147), chr(142) => chr(148), chr(143) => chr(145), chr(144) => chr(146), ); $text = strtr($text, $trans); return $text; } $sourcefile = '16.pdf'; $get = pdf2string($sourcefile); echo utf8_encode($get);

php curl request

function makeCURLRequest($url, $method="GET", $params = "") {
        if ($method == "GET" && strpos($url, '?')) {
            $urlParams = substr($url, strpos($url, '?')+1);
            $url = substr($url, 0, strpos($url, '?'));
            if (is_array($params)) {
                parse_str($urlParams, $urlParamsArray);
                $params = $urlParamsArray + $params;
            } else {
                $params = $urlParams.'&'.$params;
            }
        }
        if (is_array($params)) {
            $params = http_build_query($params,'','&');
        }
        $curl = curl_init($url . ($method == "GET" && $params != "" ? "?" . $params : ""));
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_HEADER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET"));
        curl_setopt($curl, CURLOPT_POST, ($method == "POST"));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        if ($method == "POST") {
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
        }
       
        $response = curl_exec($curl);
        return $response;
    }