ibg 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +14 -0
- data/.travis.yml +7 -0
- data/Dockerfile +47 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +72 -0
- data/Rakefile +6 -0
- data/bin/iceberg-sync +137 -0
- data/bin/iceberg-web +8 -0
- data/config.ru +2 -0
- data/examples/docker/default.conf +38 -0
- data/examples/s3/credentials +3 -0
- data/ibg.gemspec +27 -0
- data/lib/ibg/storage.rb +96 -0
- data/lib/ibg/version.rb +3 -0
- data/lib/ibg/web.rb +213 -0
- data/lib/ibg.rb +185 -0
- data/public/bootstrap-filestyle.min.js +1 -0
- data/public/carousel.css +134 -0
- data/public/favicon.ico +0 -0
- data/public/humans.txt +2 -0
- data/public/index.js +88 -0
- data/public/jquery-2.1.3.min.js +4 -0
- data/public/robots.txt +5 -0
- data/public/show.js +9 -0
- data/public/starter-template.css +21 -0
- data/public/style.css +4 -0
- data/public/tripcode.js +53 -0
- data/public/white300x32.png +0 -0
- data/test/test_entry.rb +15 -0
- data/views/_navbar.haml +9 -0
- data/views/container.haml +8 -0
- data/views/index.haml +246 -0
- data/views/show.haml +93 -0
- data/views/tripcode.haml +56 -0
- metadata +180 -0
data/views/show.haml
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
- filename = filename || 'Encrypted File'
|
4
|
+
- encdigest = request.path_info.split('/').last
|
5
|
+
-# port = request.port
|
6
|
+
-# TODO reverse proxy setting: http -> https
|
7
|
+
-# hostport = request.scheme + '://' + request.host
|
8
|
+
- hostport = 'https://' + request.host
|
9
|
+
- params = hexdigest ? "?digest=#{hexdigest}&filename=#{filename}" : ''
|
10
|
+
- url = "#{name}#{params}"
|
11
|
+
- dllink = "/download/#{url}"
|
12
|
+
- ctlink = "/container/#{url}"
|
13
|
+
%head
|
14
|
+
%title #{filename} - Online Storage - Iceberg
|
15
|
+
- if exists
|
16
|
+
%meta{:name => 'twitter:title', :content => filename}
|
17
|
+
- summary = true
|
18
|
+
- case filename
|
19
|
+
- when /\.jpg$/, /\.gif$/, /\.png$/
|
20
|
+
- if filesize < 1024 * 1024
|
21
|
+
%meta{:property => 'twitter:card', :content => 'photo'}
|
22
|
+
%meta{:name => 'twitter:image', :content => "#{hostport}#{dllink}"}
|
23
|
+
%meta{:name => 'twitter:url', :content => request.url}
|
24
|
+
- summary = false
|
25
|
+
- when /\.mp3$/
|
26
|
+
%meta{:property => 'twitter:card', :content => 'player'}
|
27
|
+
%meta{:name => 'twitter:player', :content => "#{hostport}#{ctlink}"}
|
28
|
+
%meta{:name => 'twitter:player:width', :content => 300}
|
29
|
+
%meta{:name => 'twitter:player:height', :content => 32}
|
30
|
+
%meta{:name => 'twitter:image',
|
31
|
+
:content => "#{hostport}/white300x32.png"}
|
32
|
+
- summary = false
|
33
|
+
- if summary
|
34
|
+
%meta{:property => 'twitter:card', :content => 'summary'}
|
35
|
+
%meta{:name => 'twitter:description',
|
36
|
+
:content => 'Store and share files on Iceberg.'}
|
37
|
+
%link{:href => "/style.css", :rel => "stylesheet", :type => "text/css",
|
38
|
+
:media => "screen"}
|
39
|
+
- cdn = Iceberg::SETTING['local']['cdn'] || ''
|
40
|
+
%link{:href => "#{cdn}/css/bootstrap.min.css", :rel => "stylesheet"}
|
41
|
+
%link{:href => "#{cdn}/css/bootstrap-theme.min.css", :rel => "stylesheet"}
|
42
|
+
%link{:href => "/starter-template.css", :rel => "stylesheet"}
|
43
|
+
%body
|
44
|
+
%nav{:class => "navbar navbar-inverse navbar-fixed-top"}
|
45
|
+
%div.container
|
46
|
+
%div.navbar-header
|
47
|
+
%button{:type => "button", :class => "navbar-toggle collapsed",
|
48
|
+
"data-toggle" => "collapse", "data-target" => "#navbar",
|
49
|
+
"aria-expanded" => "false", "aria-controls" => "navbar"}
|
50
|
+
%span.sr-only Toggle navigation
|
51
|
+
%span.icon-bar
|
52
|
+
%span.icon-bar
|
53
|
+
%span.icon-bar
|
54
|
+
%a.navbar-brand{:href => "/"} Online Storage - Iceberg
|
55
|
+
%div#navbar{:class => "collapse navbar-collapse"}
|
56
|
+
%ul{:class => "nav navbar-nav"}= partial :navbar
|
57
|
+
%div.container
|
58
|
+
%div.starter-template
|
59
|
+
%h1 #{filename}
|
60
|
+
- if hexdigest
|
61
|
+
%input#name{:type => :hidden, :value => filename}
|
62
|
+
%input#digest{:type => :hidden, :value => hexdigest}
|
63
|
+
%input#encdigest{:type => :hidden, :value => encdigest}
|
64
|
+
- if exists
|
65
|
+
- case filename
|
66
|
+
- when /\.txt$/
|
67
|
+
%iframe{:src => dllink}
|
68
|
+
%hr
|
69
|
+
- when /\.webm$/
|
70
|
+
%video{:width => 640, :height => 360, :controls => :controls}
|
71
|
+
%source{:src => dllink}
|
72
|
+
%hr
|
73
|
+
- when /\.jpg$/, /\.gif$/, /\.png$/
|
74
|
+
%img{:src => dllink}
|
75
|
+
%hr
|
76
|
+
- when /\.mp3$/, /\.ogg$/, /\.flac$/
|
77
|
+
%audio{:src => dllink, :controls => :controls}
|
78
|
+
%hr
|
79
|
+
%a{:href => dllink, :class => 'btn btn-default btn-lg'}
|
80
|
+
%span{:class => 'glyphicon glyphicon-cloud-download'} Download
|
81
|
+
- else
|
82
|
+
%p File not found
|
83
|
+
%hr
|
84
|
+
%label Share URL:
|
85
|
+
%textarea{:rows => 2, :class => 'form-control'}
|
86
|
+
#{hostport}/show/#{url}
|
87
|
+
%br
|
88
|
+
%label Direct URL:
|
89
|
+
%textarea{:rows => 2, :class => 'form-control'}
|
90
|
+
#{hostport}#{dllink}
|
91
|
+
%script{:type => 'text/javascript', :src => '/jquery-2.1.3.min.js'}
|
92
|
+
%script{:type => 'text/javascript', :src => "#{cdn}/js/bootstrap.min.js"}
|
93
|
+
%script{:type => 'text/javascript', :src => '/show.js'}
|
data/views/tripcode.haml
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title #{tripcode} - Online Storage - Iceberg
|
5
|
+
%link{:href => "/style.css", :rel => "stylesheet", :type => "text/css",
|
6
|
+
:media => "screen"}
|
7
|
+
- cdn = Iceberg::SETTING['local']['cdn'] || ''
|
8
|
+
%link{:href => "#{cdn}/css/bootstrap.min.css", :rel => "stylesheet"}
|
9
|
+
%link{:href => "#{cdn}/css/bootstrap-theme.min.css", :rel => "stylesheet"}
|
10
|
+
%link{:href => "/starter-template.css", :rel => "stylesheet"}
|
11
|
+
%body
|
12
|
+
%input#tripcode{:type => :hidden, :value => tripcode}
|
13
|
+
%nav{:class => "navbar navbar-inverse navbar-fixed-top"}
|
14
|
+
%div.container
|
15
|
+
%div.navbar-header
|
16
|
+
%button{:type => "button", :class => "navbar-toggle collapsed",
|
17
|
+
"data-toggle" => "collapse", "data-target" => "#navbar",
|
18
|
+
"aria-expanded" => "false", "aria-controls" => "navbar"}
|
19
|
+
%span.sr-only Toggle navigation
|
20
|
+
%span.icon-bar
|
21
|
+
%span.icon-bar
|
22
|
+
%span.icon-bar
|
23
|
+
%a.navbar-brand{:href => "/"} Online Storage - Iceberg
|
24
|
+
%div#navbar{:class => "collapse navbar-collapse"}
|
25
|
+
%ul{:class => "nav navbar-nav"}= partial :navbar
|
26
|
+
%div.container
|
27
|
+
%div.starter-template
|
28
|
+
%h1#maintitle Untitled Tag
|
29
|
+
%div Tripcode: #{tripcode}
|
30
|
+
%br
|
31
|
+
- files.each do |file|
|
32
|
+
- filename = "encrypted-#{file[0, 8]}"
|
33
|
+
%div
|
34
|
+
%a.files{:href => "/show/#{file}", :id => file}= filename
|
35
|
+
%hr
|
36
|
+
%div{:class => 'input-group-btn'}
|
37
|
+
%button#starbtn{:type => 'button',
|
38
|
+
:class => 'btn btn-default'}
|
39
|
+
%span{:class => 'glyphicon glyphicon-star',
|
40
|
+
'aria-hidden' => true}
|
41
|
+
%span#star Star
|
42
|
+
%br
|
43
|
+
%div{:class => 'input-group'}
|
44
|
+
%div{:class => 'input-group-btn'}
|
45
|
+
%button#settagname{:type => 'button',
|
46
|
+
:class => 'btn btn-default'}
|
47
|
+
%span{:class => 'glyphicon glyphicon-tag',
|
48
|
+
'aria-hidden' => true}
|
49
|
+
Set
|
50
|
+
%input#tagname{:type => 'text', :class => 'form-control',
|
51
|
+
:placeholder => 'Tag Name', 'aria-label' => 'Set Tag Name'}
|
52
|
+
%hr
|
53
|
+
%p Fund: #{fund} MiB/Round (Under development)
|
54
|
+
%script{:type => 'text/javascript', :src => '/jquery-2.1.3.min.js'}
|
55
|
+
%script{:type => 'text/javascript', :src => "#{cdn}/js/bootstrap.min.js"}
|
56
|
+
%script{:type => 'text/javascript', :src => '/tripcode.js'}
|
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ibg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- OHASHI Hideya
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-01-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.7'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.7'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '10.0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '10.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: sinatra
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: haml
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: redis
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: aws-sdk
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: Decenterized file storage
|
111
|
+
email:
|
112
|
+
- ohachige@gmail.com
|
113
|
+
executables:
|
114
|
+
- iceberg-sync
|
115
|
+
- iceberg-web
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- .gitignore
|
120
|
+
- .travis.yml
|
121
|
+
- Dockerfile
|
122
|
+
- Gemfile
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.md
|
125
|
+
- Rakefile
|
126
|
+
- bin/iceberg-sync
|
127
|
+
- bin/iceberg-web
|
128
|
+
- config.ru
|
129
|
+
- examples/docker/default.conf
|
130
|
+
- examples/s3/credentials
|
131
|
+
- ibg.gemspec
|
132
|
+
- lib/ibg.rb
|
133
|
+
- lib/ibg/storage.rb
|
134
|
+
- lib/ibg/version.rb
|
135
|
+
- lib/ibg/web.rb
|
136
|
+
- public/bootstrap-filestyle.min.js
|
137
|
+
- public/carousel.css
|
138
|
+
- public/favicon.ico
|
139
|
+
- public/humans.txt
|
140
|
+
- public/index.js
|
141
|
+
- public/jquery-2.1.3.min.js
|
142
|
+
- public/robots.txt
|
143
|
+
- public/show.js
|
144
|
+
- public/starter-template.css
|
145
|
+
- public/style.css
|
146
|
+
- public/tripcode.js
|
147
|
+
- public/white300x32.png
|
148
|
+
- test/test_entry.rb
|
149
|
+
- views/_navbar.haml
|
150
|
+
- views/container.haml
|
151
|
+
- views/index.haml
|
152
|
+
- views/show.haml
|
153
|
+
- views/tripcode.haml
|
154
|
+
homepage: https://box.sighash.info/
|
155
|
+
licenses:
|
156
|
+
- MIT
|
157
|
+
post_install_message:
|
158
|
+
rdoc_options: []
|
159
|
+
require_paths:
|
160
|
+
- lib
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
+
none: false
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
requirements: []
|
174
|
+
rubyforge_project:
|
175
|
+
rubygems_version: 1.8.23
|
176
|
+
signing_key:
|
177
|
+
specification_version: 3
|
178
|
+
summary: Decenterized file storage
|
179
|
+
test_files:
|
180
|
+
- test/test_entry.rb
|