parent
12b34d2dda
commit
4510571aa1
@ -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