Benjamin Renard commited on 2013-08-22 09:57:43
Showing 2 changed files, with 69 additions and 0 deletions.
... | ... |
@@ -0,0 +1,26 @@ |
1 |
+DirectDownload plugin for ViewGit |
|
2 |
+================================= |
|
3 |
+ |
|
4 |
+This plugin permit direct download of project's files using URL like : |
|
5 |
+ |
|
6 |
+http://my.viewgit.com/?a=directdownload&p=myproject&h=HEAD&f=path/to/my/poject/file |
|
7 |
+ |
|
8 |
+Install |
|
9 |
+------- |
|
10 |
+ |
|
11 |
+Put directdownload directory in plugins directory |
|
12 |
+ |
|
13 |
+Configure rewrite for nicer URL |
|
14 |
+------------------------------- |
|
15 |
+ |
|
16 |
+To have nicer URL, you could configure your apache with mod_rewrite. |
|
17 |
+Add this following line in .htaccess file : |
|
18 |
+ |
|
19 |
+RewriteEngine On |
|
20 |
+RewriteCond %{REQUEST_FILENAME} !-f |
|
21 |
+RewriteCond %{REQUEST_FILENAME} !-d |
|
22 |
+RewriteRule ^download/([^/]+)/(.+)$ /index.php?a=directdownload&p=$1&h=HEAD&f=$2 [QSA,L] |
|
23 |
+ |
|
24 |
+You could now access to direct download feature with URL like : |
|
25 |
+ |
|
26 |
+http://my.viewgit.com/download/myproject/path/to/my/poject/file |
... | ... |
@@ -0,0 +1,43 @@ |
1 |
+<?php |
|
2 |
+/** |
|
3 |
+ * Direct Download plugin for ViewGit. |
|
4 |
+ * |
|
5 |
+ * This plugin permit direct download of project file using URL like |
|
6 |
+ * |
|
7 |
+ * http://my.viewgit.com/?a=directdownload&p=myproject&h=HEAD&f=path/to/my/poject/file |
|
8 |
+ * |
|
9 |
+ * @author Benjamin Renard <brenard@zionetrix.net> |
|
10 |
+ */ |
|
11 |
+class DirectDownloadPlugin extends VGPlugin |
|
12 |
+{ |
|
13 |
+ function __construct() { |
|
14 |
+ global $conf; |
|
15 |
+ $this->register_action('directdownload'); |
|
16 |
+ } |
|
17 |
+ |
|
18 |
+ function action($action) { |
|
19 |
+ if ($action === 'directdownload') { |
|
20 |
+ $project = validate_project($_REQUEST['p']); |
|
21 |
+ $hash = validate_hash($_REQUEST['h']); |
|
22 |
+ if (isset($_REQUEST['f'])) { |
|
23 |
+ $path = $_REQUEST['f']; |
|
24 |
+ $infos=git_get_path_info($project,$hash,$path); |
|
25 |
+ if (count($infos)!=1) { |
|
26 |
+ die('Invalid path'); |
|
27 |
+ } |
|
28 |
+ $hash=$infos[0]['hash']; |
|
29 |
+ $name=$infos[0]['name']; |
|
30 |
+ } |
|
31 |
+ else { |
|
32 |
+ $name = $_REQUEST['n']; |
|
33 |
+ } |
|
34 |
+ |
|
35 |
+ header('Content-type: application/octet-stream'); |
|
36 |
+ header("Content-Disposition: attachment; filename=$name"); |
|
37 |
+ |
|
38 |
+ run_git_passthru($project, "cat-file blob $hash"); |
|
39 |
+ die(); |
|
40 |
+ } |
|
41 |
+ } |
|
42 |
+} |
|
43 |
+ |
|
0 | 44 |