Merge branch 'shared_log'
This commit is contained in:
commit
6308ca6b8a
|
@ -322,6 +322,11 @@ class OC_Filestorage_Shared extends OC_Filestorage {
|
||||||
public function file_get_contents($path) {
|
public function file_get_contents($path) {
|
||||||
$source = $this->getSource($path);
|
$source = $this->getSource($path);
|
||||||
if ($source) {
|
if ($source) {
|
||||||
|
$info = array(
|
||||||
|
'target' => $this->datadir.$path,
|
||||||
|
'source' => $source,
|
||||||
|
);
|
||||||
|
OCP\Util::emitHook('OC_Filestorage_Shared', 'file_get_contents', $info);
|
||||||
$storage = OC_Filesystem::getStorage($source);
|
$storage = OC_Filesystem::getStorage($source);
|
||||||
return $storage->file_get_contents($this->getInternalPath($source));
|
return $storage->file_get_contents($this->getInternalPath($source));
|
||||||
}
|
}
|
||||||
|
@ -331,6 +336,11 @@ class OC_Filestorage_Shared extends OC_Filestorage {
|
||||||
if ($this->is_writable($path)) {
|
if ($this->is_writable($path)) {
|
||||||
$source = $this->getSource($path);
|
$source = $this->getSource($path);
|
||||||
if ($source) {
|
if ($source) {
|
||||||
|
$info = array(
|
||||||
|
'target' => $this->datadir.$path,
|
||||||
|
'source' => $source,
|
||||||
|
);
|
||||||
|
OCP\Util::emitHook('OC_Filestorage_Shared', 'file_put_contents', $info);
|
||||||
$storage = OC_Filesystem::getStorage($source);
|
$storage = OC_Filesystem::getStorage($source);
|
||||||
$result = $storage->file_put_contents($this->getInternalPath($source), $data);
|
$result = $storage->file_put_contents($this->getInternalPath($source), $data);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
|
@ -418,6 +428,12 @@ class OC_Filestorage_Shared extends OC_Filestorage {
|
||||||
public function fopen($path, $mode) {
|
public function fopen($path, $mode) {
|
||||||
$source = $this->getSource($path);
|
$source = $this->getSource($path);
|
||||||
if ($source) {
|
if ($source) {
|
||||||
|
$info = array(
|
||||||
|
'target' => $this->datadir.$path,
|
||||||
|
'source' => $source,
|
||||||
|
'mode' => $mode,
|
||||||
|
);
|
||||||
|
OCP\Util::emitHook('OC_Filestorage_Shared', 'fopen', $info);
|
||||||
$storage = OC_Filesystem::getStorage($source);
|
$storage = OC_Filesystem::getStorage($source);
|
||||||
return $storage->fopen($this->getInternalPath($source), $mode);
|
return $storage->fopen($this->getInternalPath($source), $mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
|
||||||
|
* This file is licensed under the Affero General Public License version 3 or
|
||||||
|
* later.
|
||||||
|
* See the COPYING-README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
OC::$CLASSPATH['OC_Files_Sharing_Log'] = 'apps/files_sharing_log/log.php';
|
||||||
|
|
||||||
|
$l=new OC_L10N('files_sharing_log');
|
||||||
|
OCP\App::addNavigationEntry( array(
|
||||||
|
'id' => 'files_sharing_log_index',
|
||||||
|
'order' => 5,
|
||||||
|
'href' => OCP\Util::linkTo( 'files_sharing_log', 'index.php' ),
|
||||||
|
'icon' => OCP\Util::imagePath( 'files_sharing_log', 'icon.png' ),
|
||||||
|
'name' => $l->t('Shared files log'))
|
||||||
|
);
|
||||||
|
|
||||||
|
OCP\Util::connectHook('OC_Filestorage_Shared', 'fopen', 'OC_Files_Sharing_Log', 'fopen');
|
||||||
|
OCP\Util::connectHook('OC_Filestorage_Shared', 'file_get_contents', 'OC_Files_Sharing_Log', 'file_get_contents');
|
||||||
|
OCP\Util::connectHook('OC_Filestorage_Shared', 'file_put_contents', 'OC_Files_Sharing_Log', 'file_put_contents');
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||||
|
<database>
|
||||||
|
<name>*dbname*</name>
|
||||||
|
<create>true</create>
|
||||||
|
<overwrite>false</overwrite>
|
||||||
|
<charset>latin1</charset>
|
||||||
|
<table>
|
||||||
|
<name>*dbprefix*sharing_log</name>
|
||||||
|
<declaration>
|
||||||
|
<field>
|
||||||
|
<name>user_id</name>
|
||||||
|
<type>text</type>
|
||||||
|
<notnull>true</notnull>
|
||||||
|
<length>64</length>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>source</name>
|
||||||
|
<type>text</type>
|
||||||
|
<notnull>true</notnull>
|
||||||
|
<length>128</length>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>uid_who</name>
|
||||||
|
<type>text</type>
|
||||||
|
<notnull>true</notnull>
|
||||||
|
<length>64</length>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>when</name>
|
||||||
|
<type>integer</type>
|
||||||
|
<default></default>
|
||||||
|
<notnull>false</notnull>
|
||||||
|
<unsigned>true</unsigned>
|
||||||
|
<length>4</length>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>mode</name>
|
||||||
|
<type>text</type>
|
||||||
|
<notnull>true</notnull>
|
||||||
|
<length>4</length>
|
||||||
|
</field>
|
||||||
|
</declaration>
|
||||||
|
</table>
|
||||||
|
</database>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<info>
|
||||||
|
<id>files_sharing_log</id>
|
||||||
|
<name>File Shared access logging app</name>
|
||||||
|
<description>Log access to shared files</description>
|
||||||
|
<licence>AGPL</licence>
|
||||||
|
<author>Bart Visscher</author>
|
||||||
|
<require>4</require>
|
||||||
|
<shipped>true</shipped>
|
||||||
|
</info>
|
|
@ -0,0 +1 @@
|
||||||
|
0.1
|
|
@ -0,0 +1,7 @@
|
||||||
|
#files_sharing_log {
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
#files_sharing_log th,
|
||||||
|
#files_sharing_log td {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
|
||||||
|
* This file is licensed under the Affero General Public License version 3 or
|
||||||
|
* later.
|
||||||
|
* See the COPYING-README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
OCP\User::checkLoggedIn();
|
||||||
|
OCP\App::checkAppEnabled('files_sharing_log');
|
||||||
|
|
||||||
|
OCP\App::setActiveNavigationEntry('files_sharing_log_index');
|
||||||
|
|
||||||
|
OCP\Util::addStyle('files_sharing_log', 'style');
|
||||||
|
|
||||||
|
$query = OCP\DB::prepare('SELECT * FROM *PREFIX*sharing_log WHERE user_id = ?');
|
||||||
|
$log = $query->execute(array(OCP\User::getUser()))->fetchAll();
|
||||||
|
|
||||||
|
$output = new OCP\Template('files_sharing_log', 'index', 'user');
|
||||||
|
$output->assign('log', $log);
|
||||||
|
$output->printPage();
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class OC_Files_Sharing_Log {
|
||||||
|
static public function fopen($arguments) {
|
||||||
|
$target = $arguments['target'];
|
||||||
|
$source = $arguments['source'];
|
||||||
|
$mode = $arguments['mode'];
|
||||||
|
self::log($target, $source, $mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function file_get_contents($arguments) {
|
||||||
|
$target = $arguments['target'];
|
||||||
|
$source = $arguments['source'];
|
||||||
|
$mode = 'get';
|
||||||
|
self::log($target, $source, $mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function file_put_contents($arguments) {
|
||||||
|
$target = $arguments['target'];
|
||||||
|
$source = $arguments['source'];
|
||||||
|
$mode = 'put';
|
||||||
|
self::log($target, $source, $mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function log($target, $source, $mode) {
|
||||||
|
$query = OCP\DB::prepare("SELECT * FROM *PREFIX*sharing WHERE source = ? AND target = ?");
|
||||||
|
$info = $query->execute(array($source, $target))->fetchAll();
|
||||||
|
$info = $info[0];
|
||||||
|
//var_dump($info);
|
||||||
|
$query = OCP\DB::prepare("INSERT INTO *PREFIX*sharing_log VALUES (?,?,?,?,?)");
|
||||||
|
$query->execute(array($info['uid_owner'], $source, OCP\User::getUser(), time(), $mode));
|
||||||
|
//die;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<table id="files_sharing_log">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><?php echo $l->t('File') ?></th>
|
||||||
|
<th><?php echo $l->t('Who') ?></th>
|
||||||
|
<th><?php echo $l->t('When') ?></th>
|
||||||
|
<th><?php echo $l->t('What') ?></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach($_['log'] as $log): ?>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<?php echo $log['source'] ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php echo $log['uid_who'] ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php echo date('Y-m-d H:i:s', $log['when']) ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php switch ($log['mode']):
|
||||||
|
case 'get':
|
||||||
|
echo $l->t('Read');
|
||||||
|
break;
|
||||||
|
case 'put':
|
||||||
|
echo $l->t('Write');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (strpos('r', $log['mode']) !== false):
|
||||||
|
echo $l->t('Read');
|
||||||
|
else:
|
||||||
|
echo $l->t('Write');
|
||||||
|
endif;
|
||||||
|
endswitch;
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
Loading…
Reference in New Issue