diff --git a/app/browse.rb b/app/browse.rb index 65035c2d..3464a9e6 100644 --- a/app/browse.rb +++ b/app/browse.rb @@ -1,6 +1,4 @@ get '/browse/?' do - @surfmode = false - @page = params[:page] @page = 1 if @page.not_an_integer? diff --git a/app/surf.rb b/app/surf.rb deleted file mode 100644 index adead741..00000000 --- a/app/surf.rb +++ /dev/null @@ -1,22 +0,0 @@ -get '/surf/?' do - not_found # 404 for now - @page = params[:page] - @page = 1 if @page.not_an_integer? - params.delete 'tag' if params[:tag].nil? || params[:tag].strip.empty? - site_dataset = browse_sites_dataset - site_dataset = site_dataset.paginate @page.to_i, 1 - @page_count = site_dataset.page_count || 1 - @site = site_dataset.first - redirect "/browse?#{Rack::Utils.build_query params}" if @site.nil? - @title = "Surf Mode - #{@site.title}" - erb :'surf', layout: false -end - -get '/surf/:username' do |username| - not_found # 404 for now - @site = Site.select(:id, :username, :title, :domain, :views, :stripe_customer_id).where(username: username).first - not_found if @site.nil? - @title = @site.title - not_found if @site.nil? - erb :'surf', layout: false -end diff --git a/models/site.rb b/models/site.rb index 9bbd3e64..7b24a55b 100644 --- a/models/site.rb +++ b/models/site.rb @@ -766,18 +766,24 @@ class Site < Sequel::Model def purge_cache(path) relative_path = path.gsub base_files_path, '' - # We gotta flush the dirname too if it's an index file. - if relative_path != '' && relative_path.match(/\/$|index\.html?$/i) - PurgeCacheWorker.perform_async username, relative_path + if relative_path[0] != '/' + relative_path = '/' + relative_path + end + # We gotta flush the dirname too if it's an index file. + if relative_path != '' && relative_path.match(/\/$|\/index\.html?$/i) purge_file_path = Pathname(relative_path).dirname.to_s purge_file_path = '' if purge_file_path == '.' purge_file_path += '/' if purge_file_path != '/' - PurgeCacheWorker.perform_async username, '/?surf=1' if purge_file_path == '/' PurgeCacheWorker.perform_async username, purge_file_path else - PurgeCacheWorker.perform_async username, relative_path + html = relative_path.match(/(.*)\.html?$/) + if html + PurgeCacheWorker.perform_async username, html.captures.first + else + PurgeCacheWorker.perform_async username, relative_path + end end end diff --git a/models/site_file.rb b/models/site_file.rb index 24b81b86..05020187 100644 --- a/models/site_file.rb +++ b/models/site_file.rb @@ -104,8 +104,6 @@ class SiteFile < Sequel::Model DB.transaction do self.path = new_path self.save_changes - site.purge_cache current_path - site.purge_cache new_path if is_directory site_files_in_dir = site.site_files.select {|sf| sf.path =~ /^#{current_path}\//} diff --git a/public/js/surfinject.js b/public/js/surfinject.js deleted file mode 100644 index d150654f..00000000 --- a/public/js/surfinject.js +++ /dev/null @@ -1,8 +0,0 @@ -function _nc_surf_page_overload() { - var ele = document.getElementsByTagName('a') - for(var i=0; i Rack::Test::UploadedFile.new('./tests/files/index.html', 'image/jpeg') ) + PurgeCacheWorker.jobs.clear + @site.site_files.select {|s| s.path == 'test'}.first.rename('test2') _(@site.site_files.select {|sf| sf.path =~ /test2\/index.html/}.length).must_equal 1 _(@site.site_files.select {|sf| sf.path =~ /test2\/test.jpg/}.length).must_equal 1 _(@site.site_files.select {|sf| sf.path =~ /test\/test.jpg/}.length).must_equal 0 - _(PurgeCacheWorker.jobs.collect {|p| p['args'].last}.sort).must_equal ["/test/test.jpg", "/test/index.html", "/test/", "test", "test2", "test/test.jpg", "test2/test.jpg", "test/index.html", "test/", "test2/index.html", "test2/"].sort + _(PurgeCacheWorker.jobs.collect {|p| p['args'].last}.sort).must_equal ["/test/", "/test/test.jpg", "/test2/", "/test2/test.jpg",].sort end it 'doesnt wipe out existing file' do @@ -309,8 +310,7 @@ describe 'site_files' do it 'purges cache for html file with extension removed' do upload 'files[]' => Rack::Test::UploadedFile.new('./tests/files/notindex.html', 'text/html') - _(PurgeCacheWorker.jobs.first['args'].last).must_equal '/notindex.html' - PurgeCacheWorker.jobs.clear + _(PurgeCacheWorker.jobs.length).must_equal 1 PurgeCacheWorker.new.perform @site.username, '/notindex.html' _(PurgeCacheWorker.jobs.first['args'].last).must_equal '/notindex' end @@ -329,25 +329,14 @@ describe 'site_files' do _(@site.site_changed).must_equal true _(@site.title).must_equal 'Hello?' - # Purge cache needs to flush / and index.html for either scenario. - _(PurgeCacheWorker.jobs.length).must_equal 3 + _(PurgeCacheWorker.jobs.length).must_equal 1 first_purge = PurgeCacheWorker.jobs.first - surf_purge = PurgeCacheWorker.jobs[1] - dirname_purge = PurgeCacheWorker.jobs.last username, pathname = first_purge['args'] _(username).must_equal @site.username - _(pathname).must_equal '/index.html' - - _(surf_purge['args'].last).must_equal '/?surf=1' - - username, pathame = nil - username, pathname = dirname_purge['args'] - _(username).must_equal @site.username _(pathname).must_equal '/' _(@site.space_used).must_equal @site.actual_space_used - _((@site.space_used > 0)).must_equal true end diff --git a/tests/site_tests.rb b/tests/site_tests.rb index 45149078..dec4acf2 100644 --- a/tests/site_tests.rb +++ b/tests/site_tests.rb @@ -128,4 +128,91 @@ describe Site do _(site.suggestions.length).must_equal(Site::SUGGESTIONS_LIMIT - 5) end end -end + + describe 'purge_cache' do + before do + @site = Fabricate :site + PurgeCacheWorker.jobs.clear + end + it 'works for /index.html' do + @site.purge_cache '/index.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/' + end + + it 'works for /dir/index.html' do + @site.purge_cache '/dir/index.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/dir/' + end + + it 'works for /test.html' do + @site.purge_cache '/test.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/test' + end + + it 'works for /newdir/index.html' do + @site.purge_cache '/newdir/test.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/newdir/test' + end + + it 'works for /file.png' do + @site.purge_cache '/file.png' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/file.png' + end + + it 'works for /testdir/file.png' do + @site.purge_cache '/testdir/file.png' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/testdir/file.png' + end + + it 'works for /notindex.html' do + @site.purge_cache '/notindex.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/notindex' + end + + it 'works for index.html missing forward slash' do + @site.purge_cache 'index.html' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/' + end + + it 'works for photo.png missing forward slash' do + @site.purge_cache 'photo.png' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + _(args.last).must_equal '/photo.png' + end + + it 'works for testdir/photo.png missing forward slash' do + @site.purge_cache 'testdir/photo.png' + _(PurgeCacheWorker.jobs.length).must_equal 1 + args = PurgeCacheWorker.jobs.first['args'] + _(args.first).must_equal @site.username + binding.pry + _(args.last).must_equal '/testdir/photo.png' + end + end +end \ No newline at end of file diff --git a/views/browse.erb b/views/browse.erb index e550d5a3..51fadc77 100644 --- a/views/browse.erb +++ b/views/browse.erb @@ -2,10 +2,6 @@ function getPage(page) { document.location.href = '/browse?page='+page+'&'+$('#search_criteria').serialize(); } - - function surf(page) { - document.location.href = '/surf?page='+page+'&'+$('#search_criteria').serialize(); - }
@@ -80,9 +76,6 @@ - onclick="surf(<%= ((@page-1)*Site::BROWSE_PAGINATION_LENGTH)+i+1 %>); return false" - <% end %> > <%= site.title %> @@ -91,9 +84,6 @@
diff --git a/views/index.erb b/views/index.erb index 39ec78ae..90654a76 100644 --- a/views/index.erb +++ b/views/index.erb @@ -194,7 +194,7 @@

Welcome back, web surfing

-

All Neocities sites are viewable in our website gallery. And it's easy to browse sites with our optional surf bar.

+

All Neocities sites are viewable and easily surfable in our website gallery.

Using tags (our version of Web Rings) you can easily discover new sites related to your interests.

diff --git a/views/surf.erb b/views/surf.erb deleted file mode 100644 index 6aa840b1..00000000 --- a/views/surf.erb +++ /dev/null @@ -1,285 +0,0 @@ - - - - - <%= title %> - - - - - - - -
-
    -
  • - Neocities -
  • - <% if @page %> -
  • -
    - - - -
    -
  • -
  • - <% if @page > 1 %> - - Prev - - <% end %> -
  • -
  • - <% if @page != @page_count %> - Next - <% end %> -
  • - <% end %> -
- -
- - - - - - - - diff --git a/views/surf/_surf_iframe_injection.erb b/views/surf/_surf_iframe_injection.erb deleted file mode 100644 index 4b7d0d0e..00000000 --- a/views/surf/_surf_iframe_injection.erb +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/workers/purge_cache_worker.rb b/workers/purge_cache_worker.rb index 19d29af0..0e115966 100644 --- a/workers/purge_cache_worker.rb +++ b/workers/purge_cache_worker.rb @@ -11,38 +11,6 @@ class PurgeCacheWorker end def perform(username, path) - # Must always have a forward slash - path = '/' + path if path[0] != '/' - - # Add removed html ext if present - html = path.match(/(.*)\.html?$/) - if html - PurgeCacheWorker.perform_async username, html.captures.first - end - $redis_proxy.publish 'proxy', {cmd: 'purge', path: "#{username}#{path}"}.to_msgpack -=begin - url = Addressable::URI.encode_component( - "https://#{proxy_ip}#{path}", - Addressable::URI::CharacterClasses::QUERY - ) - - retry_encoded = false - - begin - #cmd = %{timeout 5 curl -k -I -H "Host: #{URI::encode("#{username}.neocities.org")}" -H "Cache-Purge: 1" "#{url}"} - #`#{cmd}` - ctx = OpenSSL::SSL::SSLContext.new - ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE - HTTP.follow.timeout(read: 10, write: 10, connect: 5). - headers(host: URI::encode("#{username}.neocities.org"), cache_purge: '1'). - head(url, ssl_context: ctx) - rescue URI::InvalidURIError - raise if retry_encoded == true - url = URI.encode url - retry_encoded = true - retry - end -=end end end