Ejemplo n.º 1
10
function file_write($path, $data, $simple = false, $skip_purge = false)
{
    global $config, $debug;
    if (preg_match('/^remote:\\/\\/(.+)\\:(.+)$/', $path, $m)) {
        if (isset($config['remote'][$m[1]])) {
            require_once 'inc/remote.php';
            $remote = new Remote($config['remote'][$m[1]]);
            $remote->write($data, $m[2]);
            return;
        } else {
            error('Invalid remote server: ' . $m[1]);
        }
    }
    if (!function_exists("dio_truncate")) {
        if (!($fp = fopen($path, $simple ? 'w' : 'c'))) {
            error('Unable to open file for writing: ' . $path);
        }
        // File locking
        if (!$simple && !flock($fp, LOCK_EX)) {
            error('Unable to lock file: ' . $path);
        }
        // Truncate file
        if (!$simple && !ftruncate($fp, 0)) {
            error('Unable to truncate file: ' . $path);
        }
        // Write data
        if (($bytes = fwrite($fp, $data)) === false) {
            error('Unable to write to file: ' . $path);
        }
        // Unlock
        if (!$simple) {
            flock($fp, LOCK_UN);
        }
        // Close
        if (!fclose($fp)) {
            error('Unable to close file: ' . $path);
        }
    } else {
        if (!($fp = dio_open($path, O_WRONLY | O_CREAT, 0644))) {
            error('Unable to open file for writing: ' . $path);
        }
        // File locking
        if (dio_fcntl($fp, F_SETLKW, array('type' => F_WRLCK)) === -1) {
            error('Unable to lock file: ' . $path);
        }
        // Truncate file
        if (!dio_truncate($fp, 0)) {
            error('Unable to truncate file: ' . $path);
        }
        // Write data
        if (($bytes = dio_write($fp, $data)) === false) {
            error('Unable to write to file: ' . $path);
        }
        // Unlock
        dio_fcntl($fp, F_SETLK, array('type' => F_UNLCK));
        // Close
        dio_close($fp);
    }
    /**
     * Create gzipped file.
     *
     * When writing into a file foo.bar and the size is larger or equal to 1
     * KiB, this also produces the gzipped version foo.bar.gz
     *
     * This is useful with nginx with gzip_static on.
     */
    if ($config['gzip_static']) {
        $gzpath = "{$path}.gz";
        if ($bytes & ~0x3ff) {
            // if ($bytes >= 1024)
            if (file_put_contents($gzpath, gzencode($data), $simple ? 0 : LOCK_EX) === false) {
                error("Unable to write to file: {$gzpath}");
            }
            if (!touch($gzpath, filemtime($path), fileatime($path))) {
                error("Unable to touch file: {$gzpath}");
            }
        } else {
            @unlink($gzpath);
        }
    }
    if (!$skip_purge && isset($config['purge'])) {
        // Purge cache
        if (basename($path) == $config['file_index']) {
            // Index file (/index.html); purge "/" as well
            $uri = dirname($path);
            // root
            if ($uri == '.') {
                $uri = '';
            } else {
                $uri .= '/';
            }
            purge($uri);
        }
        purge($path);
    }
    if ($config['debug']) {
        $debug['write'][] = $path . ': ' . $bytes . ' bytes';
    }
    event('write', $path);
}
Ejemplo n.º 2
0
    if (!$bbSerialPort) {
        echoFlush("Could not open Serial port {$portName} ");
        exit;
    }
    // send data
    $dataToSend = "4 ";
    echoFlush("Writing to serial port data: \"{$dataToSend}\"");
    $bytesSent = dio_write($bbSerialPort, $dataToSend);
    echoFlush("Sent: {$bytesSent} bytes");
    /*
    //date_default_timezone_set ("Europe/London");
    
    $runForSeconds = new DateInterval("PT10S"); //10 seconds
    $endTime = (new DateTime())->add($runForSeconds);
    
    echoFlush(  "Waiting for {$runForSeconds->format('%S')} seconds to recieve data on serial port" );
    
    while (new DateTime() < $endTime) {
    
    	$data = dio_read($bbSerialPort, 256); //this is a blocking call
    	if ($data) {
    		echoFlush(  "Data Recieved: ". $data );
    	}
    }
    */
    echoFlush("Closing Port");
    dio_close($bbSerialPort);
} catch (Exception $e) {
    echoFlush($e->getMessage());
    exit(1);
}
Ejemplo n.º 3
0
 function bbc_write_entry()
 {
     global $BBC_CACHE_PATH;
     $file = $this->filename;
     $base = basename($file);
     if (!is_readable($file)) {
         return array($base, "r");
     }
     if (!is_writable($file)) {
         return array($base, "w");
     }
     $fp = defined("_BBC_DIO") ? dio_open($file, O_RDWR | O_APPEND) : fopen($file, "ab+");
     if (defined("_BBC_DIO") && dio_fcntl($fp, F_SETLK, 1) !== -1) {
         dio_write($fp, $this->string);
         dio_fcntl($fp, F_SETLK, 0);
         $ok = 1;
     } else {
         if (defined("_BBC_SEM") ? $id = bbc_semlock($file) : flock($fp, LOCK_EX)) {
             fputs($fp, $this->string);
             fflush($fp);
             defined("_BBC_SEM") ? sem_release($id) : flock($fp, LOCK_UN);
             $ok = 1;
         }
     }
     defined("_BBC_DIO") ? dio_close($fp) : fclose($fp);
     return isset($ok) ? array($base, "o") : array($base, "l");
 }
Ejemplo n.º 4
0
 public function close()
 {
     if (isset($this->serial)) {
         dio_close($this->serial);
         unset($this->serial);
     }
     return true;
 }
Ejemplo n.º 5
0
function bbc_end_write($fp)
{
    if (defined("_BBC_SEM") ? !is_array($fp) || $fp[0] === false : $fp === false) {
        return false;
    }
    if (defined("_BBC_DIO")) {
        dio_fcntl($fp, F_SETLK, 0);
        dio_close($fp);
    } else {
        defined("_BBC_SEM") ? sem_release($fp[1]) : flock($fp, LOCK_UN);
        fclose(defined("_BBC_SEM") ? $fp[0] : $fp);
    }
    return true;
}
Ejemplo n.º 6
0
function file_write($path, $data, $simple = false, $skip_purge = false)
{
    global $config, $debug;
    //echo "file_write($path, ", strlen($data), ", $simple, $skip_purge)<br>\n";
    $board = '';
    if (strpos($path, '/') !== false) {
        $parts = explode('/', $path, 2);
        $board = $parts[0];
    }
    $useCache = true;
    $useFile = false;
    if ($path == 'main.js') {
        $useCache = false;
        $useFile = true;
    }
    if ($board && $useCache) {
        if (!isset($config['cache']['odiliMagicBoards'][$board])) {
            $useCache = false;
            $useFile = true;
        } else {
            $type = strtolower($config['cache']['odiliMagicBoards'][$board]);
            if ($type === 'hybrid') {
                $useFile = true;
                $useCache = true;
            } elseif ($type === 'memory') {
                // defaults will be fine
                $useCache = true;
                $useFile = false;
            } else {
                $useCache = false;
                $useFile = true;
            }
        }
    }
    if ($useCache) {
        Cache::store('vichan_filecache_' . $path, $data, -1);
        if ($config['gzip_static']) {
            $bytes = strlen($data);
            if ($bytes & ~0x3ff) {
                Cache::store('vichan_filecache_' . $path . '.gz', gzencode($data), -1);
            } else {
                Cache::delete('vichan_filecache_' . $path . '.gz');
            }
        }
    }
    if (preg_match('/^remote:\\/\\/(.+)\\:(.+)$/', $path, $m)) {
        if (isset($config['remote'][$m[1]])) {
            require_once 'inc/remote.php';
            $remote = new Remote($config['remote'][$m[1]]);
            $remote->write($data, $m[2]);
            return;
        } else {
            error('Invalid remote server: ' . $m[1]);
        }
    }
    if ($useFile) {
        if (!function_exists("dio_truncate")) {
            if (!($fp = fopen($path, $simple ? 'w' : 'c'))) {
                error('Unable to open file for writing: ' . $path);
            }
            // File locking
            if (!$simple && !flock($fp, LOCK_EX)) {
                error('Unable to lock file: ' . $path);
            }
            // Truncate file
            if (!$simple && !ftruncate($fp, 0)) {
                error('Unable to truncate file: ' . $path);
            }
            // Write data
            if (($bytes = fwrite($fp, $data)) === false) {
                error('Unable to write to file: ' . $path);
            }
            // Unlock
            if (!$simple) {
                flock($fp, LOCK_UN);
            }
            // Close
            if (!fclose($fp)) {
                error('Unable to close file: ' . $path);
            }
        } else {
            if (!($fp = dio_open($path, O_WRONLY | O_CREAT, 0644))) {
                error('Unable to open file for writing: ' . $path);
            }
            // File locking
            if (dio_fcntl($fp, F_SETLKW, array('type' => F_WRLCK)) === -1) {
                error('Unable to lock file: ' . $path);
            }
            // Truncate file
            if (!dio_truncate($fp, 0)) {
                error('Unable to truncate file: ' . $path);
            }
            // Write data
            if (($bytes = dio_write($fp, $data)) === false) {
                error('Unable to write to file: ' . $path);
            }
            // Unlock
            dio_fcntl($fp, F_SETLK, array('type' => F_UNLCK));
            // Close
            dio_close($fp);
        }
        /**
         * Create gzipped file.
         *
         * When writing into a file foo.bar and the size is larger or equal to 1
         * KiB, this also produces the gzipped version foo.bar.gz
         *
         * This is useful with nginx with gzip_static on.
         */
        if ($config['gzip_static']) {
            $gzpath = "{$path}.gz";
            if ($bytes & ~0x3ff) {
                // if ($bytes >= 1024)
                if (file_put_contents($gzpath, gzencode($data), $simple ? 0 : LOCK_EX) === false) {
                    error("Unable to write to file: {$gzpath}");
                }
                if (!touch($gzpath, filemtime($path), fileatime($path))) {
                    error("Unable to touch file: {$gzpath}");
                }
            } else {
                @unlink($gzpath);
            }
        }
    }
    if (!$skip_purge && isset($config['purge'])) {
        // Purge cache
        if (basename($path) == $config['file_index']) {
            // Index file (/index.html); purge "/" as well
            $uri = dirname($path);
            // root
            if ($uri == '.') {
                $uri = '';
            } else {
                $uri .= '/';
            }
            purge($uri);
        }
        purge($path);
    }
    if ($config['debug']) {
        $bytes = strlen($data);
        $debug['write'][] = $path . ': ' . $bytes . ' bytes';
    }
    event('write', $path);
}
Ejemplo n.º 7
0
 protected function spoolData()
 {
     // write stdin to a temp file
     $input = fopen($this->config['inputStream'], "rb");
     stream_set_blocking($input, 0);
     if (extension_loaded('dio') && isset($this->dataConfig['useDio']) && $this->dataConfig['useDio']) {
         $fd = dio_open($this->tmpPath, O_CREAT | O_NONBLOCK | O_WRONLY);
         $totalWritten = 0;
         while ($data = fread($input, $this->config['spoolReadSize'])) {
             $totalWritten += dio_write($fd, $data);
         }
         // make a check that we wrote all of the data that we expected to write
         // if not throw an exception
         if (isset($this->params['contentLength']) && $this->params['contentLength'] > 0 && $this->params['contentLength'] != $totalWritten) {
             dio_close($fd);
             unlink($this->tmpPath);
             $msg = sprintf($this->config['exceptionMsgs']['incompleteWrite'], $this->params['contentLength'], $totalWritten);
             throw new WebDFS_Exception($msg);
         }
         $this->fsync($fd);
         dio_close($fd);
         fclose($input);
     } else {
         $totalWritten = file_put_contents($this->tmpPath, $input);
         if (isset($this->params['contentLength']) && $this->params['contentLength'] > 0 && $this->params['contentLength'] != $totalWritten) {
             unlink($this->tmpPath);
             $msg = sprintf($this->config['exceptionMsgs']['incompleteWrite'], $this->params['contentLength'], $totalWritten);
             throw new WebDFS_Exception($msg);
         }
     }
 }
Ejemplo n.º 8
0
function listarSms()
{
    $port = $puerto;
    //$port = "COM5";
    webLog("PORT: {$port}");
    try {
        $config = "mode {$port}: baud=9600 data=8 stop=1 parity=n xon=on";
        webLog($config);
        exec($config);
        //==============================
        webLog("OPEN {$port}");
        $modem = dio_open("{$port}:", O_RDWR);
        $c = 0;
        $res = 'NOK';
        while ($c < 20 && $res != 'OK') {
            $c++;
            $res = callAT("AT", $modem, false);
        }
        if ($res == 'OK') {
            $res = callAT("AT", $modem);
            $res = callAT("AT+CMGF=1", $modem);
            $res = callAT("AT+CMGL=\"ALL\"", $modem);
            ?>
          <pre><h1><?php 
            print_r($res);
            ?>
</h1>
          </pre>
          <?php 
            $res = explode("+CMGL", $res);
            foreach ($res as $k => $v) {
                $v = str_replace(chr(0xa), ',', $v);
                $res[$k] = mb_split('(,)(?=(?:[^"]|"[^"]*")*$)', $v);
            }
        } else {
            webLog("NO SINCRONIZADO....", "MODEM");
        }
        //==============================
        webLog("CLOSE {$port}");
        dio_close($modem);
        return $res;
    } catch (Exception $error) {
        webLog($error, "ERROR");
    }
    webLog("FIN del proceso..");
    return array();
}