Implemented Daemon Logger
This commit is contained in:
parent
f884a7b674
commit
a448921a8c
6 changed files with 236 additions and 104 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,6 +6,7 @@
|
|||
.DS_Store
|
||||
|
||||
tmp/*
|
||||
logs/*
|
||||
|
||||
!*.gitkeep
|
||||
|
||||
|
|
|
@ -9,10 +9,18 @@ class LBRY_Daemon
|
|||
{
|
||||
private $address = 'localhost:5279';
|
||||
|
||||
private $logger = null;
|
||||
|
||||
/**
|
||||
* LBRY Daemon Object constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->logger = new LBRY_Daemon_Logger();
|
||||
$this->init();
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -23,8 +31,14 @@ class LBRY_Daemon
|
|||
*/
|
||||
public function wallet_unused_address()
|
||||
{
|
||||
$result = $this->request('wallet_unused_address');
|
||||
return $result->result;
|
||||
try {
|
||||
$result = $this->request('wallet_unused_address');
|
||||
return $result->result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('wallet_unused_address error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue getting unused wallet address.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,8 +49,14 @@ class LBRY_Daemon
|
|||
*/
|
||||
public function wallet_balance()
|
||||
{
|
||||
$result = $this->request('wallet_balance');
|
||||
return $result->result;
|
||||
try {
|
||||
$result = $this->request('wallet_balance');
|
||||
return $result->result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('wallet_balance error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue getting wallet address.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -45,8 +65,14 @@ class LBRY_Daemon
|
|||
*/
|
||||
public function channel_list()
|
||||
{
|
||||
$result = $this->request('channel_list')->result;
|
||||
return empty($result) ? null : $result;
|
||||
try {
|
||||
$result = $this->request('channel_list')->result;
|
||||
return empty($result) ? null : $result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('channel_list error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue retrieving channel list.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -69,15 +95,20 @@ class LBRY_Daemon
|
|||
|
||||
$channel_name = '@' . $channel_name;
|
||||
|
||||
$result = $this->request(
|
||||
'channel_new',
|
||||
array(
|
||||
'channel_name' => $channel_name,
|
||||
'amount' => floatval($bid_amount)
|
||||
)
|
||||
);
|
||||
$this->check_for_errors($result);
|
||||
return $result->result;
|
||||
try {
|
||||
$result = $this->request(
|
||||
'channel_new',
|
||||
array(
|
||||
'channel_name' => $channel_name,
|
||||
'amount' => floatval($bid_amount)
|
||||
)
|
||||
);
|
||||
return $result->result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('channel_new error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue creating new channel.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,15 +138,19 @@ class LBRY_Daemon
|
|||
}
|
||||
|
||||
// TODO: Bring thumbnails into the mix
|
||||
$result = $this->request(
|
||||
'publish',
|
||||
$args
|
||||
);
|
||||
|
||||
$this->check_for_errors($result);
|
||||
return $result;
|
||||
try {
|
||||
$result = $this->request(
|
||||
'publish',
|
||||
$args
|
||||
);
|
||||
return $result->result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('wallet_unused_address error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue publishing / updating post to LBRY Network.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sends a cURL request to the LBRY Daemon
|
||||
* @param string $method The method to call on the LBRY API
|
||||
|
@ -143,8 +178,18 @@ class LBRY_Daemon
|
|||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
$response_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
|
||||
curl_close($ch);
|
||||
return json_decode($result);
|
||||
|
||||
if ($response_code != '200') {
|
||||
$this->logger->log("Damon Connection Issue", "Daemon connection returned response code $response_code");
|
||||
throw new LBRYDaemonException("Daemon Connection Issue", $response_code);
|
||||
}
|
||||
|
||||
|
||||
$result = json_decode($result);
|
||||
$this->check_for_errors($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -154,7 +199,10 @@ class LBRY_Daemon
|
|||
private function check_for_errors($response)
|
||||
{
|
||||
if (property_exists($response, 'error')) {
|
||||
throw new \Exception($response->error->message, $response->error->code);
|
||||
$message = $response->error->message;
|
||||
$code = $response->error->code;
|
||||
$this->logger->log("Daemon error code $code", $message);
|
||||
throw new LBRYDaemonException($message, $code);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -162,31 +210,39 @@ class LBRY_Daemon
|
|||
* Temporary placeholder function for daemon. Not currently in use.
|
||||
* @return [type] [description]
|
||||
*/
|
||||
private function download_daemon()
|
||||
// private function download_daemon()
|
||||
// {
|
||||
// $output_filename = "lbrydaemon";
|
||||
//
|
||||
// // HACK: Shouldn't just directly download, need to know OS, etc
|
||||
// // TODO: Make sure we are only installing if not there or corrupted
|
||||
// $host = "http://build.lbry.io/daemon/build-6788_commit-5099e19_branch-lbryum-refactor/mac/lbrynet";
|
||||
// $fp = fopen(LBRY_URI . '/' . $output_filename, 'w+');
|
||||
// $ch = curl_init();
|
||||
// curl_setopt($ch, CURLOPT_URL, $host);
|
||||
// curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||||
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
// curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
// curl_setopt($ch, CURLOPT_AUTOREFERER, false);
|
||||
// curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
// curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
//
|
||||
// $result = curl_exec($ch);
|
||||
// curl_close($ch);
|
||||
// fclose($fp);
|
||||
//
|
||||
// $filepath = LBRY_URI . '/' . $output_filename;
|
||||
//
|
||||
// `chmod +x {$filepath}`;
|
||||
// error_log(`{$filepath} status`);
|
||||
// `{$filepath} start &`;
|
||||
// }
|
||||
}
|
||||
|
||||
class LBRYDaemonException extends Exception
|
||||
{
|
||||
public function __contstruct($message = '', $code = 0, Exception $previous = null)
|
||||
{
|
||||
$output_filename = "lbrydaemon";
|
||||
|
||||
// HACK: Shouldn't just directly download, need to know OS, etc
|
||||
// TODO: Make sure we are only installing if not there or corrupted
|
||||
$host = "http://build.lbry.io/daemon/build-6788_commit-5099e19_branch-lbryum-refactor/mac/lbrynet";
|
||||
$fp = fopen(LBRY_URI . '/' . $output_filename, 'w+');
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $host);
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
fclose($fp);
|
||||
|
||||
$filepath = LBRY_URI . '/' . $output_filename;
|
||||
|
||||
`chmod +x {$filepath}`;
|
||||
error_log(`{$filepath} status`);
|
||||
`{$filepath} start &`;
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,82 @@
|
|||
class LBRY_Daemon_Logger
|
||||
{
|
||||
/**
|
||||
* [__construct description]
|
||||
* The directory to log to
|
||||
* @var string
|
||||
*/
|
||||
public function __construct()
|
||||
private $dir = LBRY_ABSPATH . 'logs/';
|
||||
|
||||
/**
|
||||
* The filename to log to
|
||||
* @var string
|
||||
*/
|
||||
private $filename;
|
||||
|
||||
/**
|
||||
* The file ext
|
||||
* @var string
|
||||
*/
|
||||
private $ext = '.log';
|
||||
|
||||
/**
|
||||
* Max size of the file before rotating
|
||||
* @var int
|
||||
*/
|
||||
private $maxsize = 15728640; // 15MB;
|
||||
|
||||
/**
|
||||
* @param string $filename unique name for this logger to log to
|
||||
*/
|
||||
public function __construct($filename = 'daemon')
|
||||
{
|
||||
$this->filename = $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log to a file, with file size maximum. Adds hashs to old files
|
||||
*
|
||||
* @param string $event
|
||||
* @param string $text
|
||||
*/
|
||||
public function log($event, $message = null)
|
||||
{
|
||||
$filepath = $this->dir . $this->filename . $this->ext;
|
||||
|
||||
// If our file is past our size limit, stash it
|
||||
if (file_exists($filepath) && filesize($filepath) > $this->maxsize) {
|
||||
rename($filepath, $this->dir . $this->filename . time() . $this->ext);
|
||||
|
||||
$logfiles = scandir($this->dir);
|
||||
|
||||
// If we have to many files, delete the oldest one
|
||||
if (count($logfiles) > 7) {
|
||||
$oldest = PHP_INT_MAX;
|
||||
foreach ($logfiles as $file) {
|
||||
if (!strstr($file, $this->filename)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$stamp = substr($file, strlen($this->filename));
|
||||
$stamp = str_replace($this->ext, '', $stamp);
|
||||
if ($stamp && $stamp < $oldest) {
|
||||
$oldest = $stamp;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($logfiles as $file) {
|
||||
if (strstr($file, $this->filename) && strstr($file, $oldest)) {
|
||||
unlink($this->dir . $file);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
$space = str_repeat(' ', strlen($date) + 1);
|
||||
$data = date('Y-m-d H:i:s') . " ";
|
||||
$data .= "EVENT: " . $event . PHP_EOL;
|
||||
$data .= $space . "MESSAGE: " . $message . PHP_EOL;
|
||||
file_put_contents($filepath, $data, FILE_APPEND);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ class LBRY_Speech
|
|||
return;
|
||||
}
|
||||
|
||||
// error_log('======================== START =====================');
|
||||
error_log('======================== START =====================');
|
||||
|
||||
$speech_url = get_option(LBRY_SETTINGS)[LBRY_SPEECH];
|
||||
|
||||
|
@ -132,8 +132,8 @@ class LBRY_Speech
|
|||
$images = empty($images[0]) ? array() : $images[0];
|
||||
$videos = empty($videos[0]) ? array() : $videos[0];
|
||||
|
||||
// error_log(print_r($images, true));
|
||||
// error_log(print_r($videos, true));
|
||||
error_log(print_r($images, true));
|
||||
error_log(print_r($videos, true));
|
||||
|
||||
// TODO: only create media objects if hasn't been uploaded. IE check meta here
|
||||
// Throw each image into a media object
|
||||
|
@ -142,16 +142,18 @@ class LBRY_Speech
|
|||
// Looks for wp image class first, if not, pull id from source
|
||||
if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
|
||||
$attachment_id = absint($class_id[1]);
|
||||
// error_log('found with wp-image: ' . $attachment_id);
|
||||
error_log('found with wp-image: ' . $attachment_id);
|
||||
} elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
|
||||
$attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
|
||||
// error_log('found with url: ' . $attachment_id);
|
||||
error_log('found with url: ' . $attachment_id);
|
||||
}
|
||||
|
||||
if ($attachment_id) {
|
||||
// Create main image media object
|
||||
$meta = wp_get_attachment_metadata($attachment_id);
|
||||
|
||||
error_log(print_r($meta, true));
|
||||
|
||||
// If we don't have meta, get out because none of this will work
|
||||
if (!$meta) {
|
||||
break;
|
||||
|
|
|
@ -26,6 +26,8 @@ class LBRY_Speech_Parser
|
|||
$new_sources = $sources;
|
||||
$sizes = $image_meta['sizes'];
|
||||
|
||||
error_log(print_r($image_meta, true));
|
||||
|
||||
foreach ($sources as $width => $source) {
|
||||
$speech_url = $this->find_speech_url($sizes, $width);
|
||||
|
||||
|
@ -43,51 +45,51 @@ class LBRY_Speech_Parser
|
|||
|
||||
public function replace_urls_with_speech($content)
|
||||
{
|
||||
// Find all images
|
||||
preg_match_all('/<img [^>]+>/', $content, $images);
|
||||
|
||||
// Check to make sure we have results
|
||||
$images = empty($images[0]) ? array() : $images[0];
|
||||
|
||||
foreach ($images as $image) {
|
||||
$attachment_id = null;
|
||||
// Looks for wp image class first, if not, pull id from source
|
||||
if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
|
||||
$attachment_id = absint($class_id[1]);
|
||||
} elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
|
||||
$attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
|
||||
}
|
||||
|
||||
// Look for size class
|
||||
if (!preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
|
||||
}
|
||||
if ($attachment_id) {
|
||||
// Create main image media object
|
||||
$meta = wp_get_attachment_metadata($attachment_id);
|
||||
|
||||
// If we don't have meta, get out because none of this will work
|
||||
if (!$meta) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (!$this->is_published($meta)) {
|
||||
$all_media[] = new LBRY_Speech_Media($attachment_id);
|
||||
}
|
||||
|
||||
// COMBAK: find a way to make this more efficient?
|
||||
// Create a media object for each image size
|
||||
// Get images sizes for this attachment, as not all image sizes implemented
|
||||
$image_sizes = wp_get_attachment_metadata($attachment_id)['sizes'];
|
||||
|
||||
foreach ($image_sizes as $size => $meta) {
|
||||
if (!$this->is_published($meta)) {
|
||||
$all_media[] = new LBRY_Speech_Media($attachment_id, array('image_size' => $size));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
error_log(print_r($content, true));
|
||||
// // Find all images
|
||||
// preg_match_all('/<img [^>]+>/', $content, $images);
|
||||
//
|
||||
// // Check to make sure we have results
|
||||
// $images = empty($images[0]) ? array() : $images[0];
|
||||
//
|
||||
// foreach ($images as $image) {
|
||||
// $attachment_id = null;
|
||||
// // Looks for wp image class first, if not, pull id from source
|
||||
// if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
|
||||
// $attachment_id = absint($class_id[1]);
|
||||
// } elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
|
||||
// $attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
|
||||
// }
|
||||
//
|
||||
// // Look for size class
|
||||
// if (!preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
|
||||
// }
|
||||
//
|
||||
// if ($attachment_id) {
|
||||
// // Create main image media object
|
||||
// $meta = wp_get_attachment_metadata($attachment_id);
|
||||
//
|
||||
// // If we don't have meta, get out because none of this will work
|
||||
// if (!$meta) {
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (!$this->is_published($meta)) {
|
||||
// $all_media[] = new LBRY_Speech_Media($attachment_id);
|
||||
// }
|
||||
//
|
||||
// // COMBAK: find a way to make this more efficient?
|
||||
// // Create a media object for each image size
|
||||
// // Get images sizes for this attachment, as not all image sizes implemented
|
||||
// $image_sizes = wp_get_attachment_metadata($attachment_id)['sizes'];
|
||||
//
|
||||
// foreach ($image_sizes as $size => $meta) {
|
||||
// if (!$this->is_published($meta)) {
|
||||
// $all_media[] = new LBRY_Speech_Media($attachment_id, array('image_size' => $size));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// error_log(print_r($content, true));
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
@ -109,8 +111,6 @@ class LBRY_Speech_Parser
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function microtime_float()
|
||||
{
|
||||
list($usec, $sec) = explode(" ", microtime());
|
||||
|
|
0
logs/.gitkeep
Normal file
0
logs/.gitkeep
Normal file
Loading…
Reference in a new issue