Compare commits

...

2434 commits

Author SHA1 Message Date
Kyle Drake
369f1655a9 site profile: no csrf/flash unless signed in 2025-04-26 17:34:34 -05:00
Kyle Drake
380bd5f484 actually delete the cookie on the browser on signout 2025-04-25 10:29:13 -05:00
Kyle Drake
b7bef2bf55 supporter page: no flash display unless signed in 2025-04-25 10:06:45 -05:00
Kyle Drake
e21e20b32e activity feed: restrict csrf_token usage unless logged in to prevent cookie setting, remove the unused rack-cache 2025-04-24 17:54:37 -05:00
Kyle Drake
9479ca05d0 dont set cookie for index if not logged in 2025-04-23 09:59:08 -05:00
Kyle Drake
51ef1c3b2c catch bad input 2025-04-23 00:26:31 -05:00
Kyle Drake
416e82ee65 convert integer before check 2025-04-23 05:15:55 +00:00
Kyle Drake
86c0938b50 no event ids over max integer 2025-04-23 00:11:37 -05:00
Kyle Drake
818d520faf Merge branch 'master' of github.com:neocities/neocities 2025-04-23 04:51:31 +00:00
Kyle Drake
6662774be1 catch utf-8 encoding errors 2025-04-23 04:49:48 +00:00
Kyle Drake
0c2132fe5e
Merge pull request #349 from waldyrious/patch-2
Fix message for unsupported file types
2025-04-22 22:00:24 -05:00
Kyle Drake
739a797a2e
Merge branch 'master' into patch-2 2025-04-22 21:59:57 -05:00
Kyle Drake
3e39b6f5c7
Merge pull request #589 from neocities/dependabot/bundler/nokogiri-1.18.8
Bump nokogiri from 1.18.4 to 1.18.8
2025-04-22 21:16:16 -05:00
Kyle Drake
118d68ba6a fix for flaky tests 2025-04-22 21:15:32 -05:00
dependabot[bot]
5c142cdee9
Bump nokogiri from 1.18.4 to 1.18.8
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.4 to 1.18.8.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.4...v1.18.8)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 04:56:32 +00:00
Kyle Drake
bb03385a28 no csrf for js create validate index
Some checks failed
CI / test (push) Has been cancelled
2025-04-15 15:38:33 -05:00
Kyle Drake
3ccb4ace37 catch dir too long 2025-04-15 15:35:17 -05:00
Kyle Drake
f4fcf94b1a no csrf_token for create 2025-04-15 15:34:47 -05:00
Kyle Drake
2f0f5c2c01 catch for already refunded 2025-04-14 15:40:14 -05:00
Kyle Drake
e35af8c058
Merge pull request #571 from DougsShack/allow-rss-edit
Add rss to valid editable file extensions
2025-03-29 14:36:54 -05:00
Kyle Drake
e50f8e42a5
Merge pull request #579 from snailmusic/patch-1
Fix “ungird” typo
2025-03-29 14:35:58 -05:00
Kyle Drake
da984bf29b
Merge pull request #582 from neocities/dependabot/bundler/rack-3.1.12
Bump rack from 3.1.10 to 3.1.12
2025-03-29 14:35:29 -05:00
Kyle Drake
b08847b723
Merge pull request #584 from neocities/dependabot/bundler/nokogiri-1.18.4
Bump nokogiri from 1.18.2 to 1.18.4
2025-03-29 14:35:03 -05:00
Kyle Drake
fabd2e6a69
Merge pull request #585 from neocities/dependabot/bundler/uri-1.0.3
Bump uri from 1.0.2 to 1.0.3
2025-03-29 14:34:51 -05:00
Kyle Drake
833030cff8 fix test for signup 2025-03-25 15:04:01 -05:00
dependabot[bot]
c17153ef33
Bump nokogiri from 1.18.2 to 1.18.4
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.2 to 1.18.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.2...v1.18.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 16:51:08 +00:00
dependabot[bot]
4001c5236a
Bump uri from 1.0.2 to 1.0.3
Bumps [uri](https://github.com/ruby/uri) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v1.0.2...v1.0.3)

---
updated-dependencies:
- dependency-name: uri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 16:50:58 +00:00
Kyle Drake
321f8c6e29 persist browse page search prefs, scrub not allowed chars for tag entry 2025-03-25 11:49:49 -05:00
Kyle Drake
2a76e75c6f update of gemfile lock 2025-03-24 16:33:53 -05:00
Kyle Drake
3419337628 few more copy fixes on welcome 2025-03-24 15:30:27 -05:00
Kyle Drake
fcc9f66076 welcome/charge/confirm copy changes, send email confirmation token before welcome 2025-03-24 15:29:00 -05:00
Kyle Drake
e00f991c4c copy cleanups/improvements 2025-03-13 09:24:54 -05:00
Kyle Drake
ca428a22da supporter ban auto-refund 2025-03-13 09:23:58 -05:00
dependabot[bot]
180c6adbd0
Bump rack from 3.1.10 to 3.1.12
Bumps [rack](https://github.com/rack/rack) from 3.1.10 to 3.1.12.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.1.10...v3.1.12)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 22:29:06 +00:00
snail
9cf07eec75
Fix “ungird” typo 2025-03-04 10:57:27 -06:00
Kyle Drake
1584bb0865 remove net-smtp gem, not used and causing drama 2025-02-25 16:32:02 -06:00
Kyle Drake
03b052a3a7 update webmock 2025-02-18 12:15:55 -06:00
Kyle Drake
39aa74964a
Merge pull request #575 from neocities/dependabot/bundler/rack-3.1.10
Bump rack from 3.1.9 to 3.1.10
2025-02-18 12:11:18 -06:00
Kyle Drake
b766432974
Merge pull request #573 from neocities/dependabot/bundler/net-imap-0.5.6
Bump net-imap from 0.5.5 to 0.5.6
2025-02-18 12:10:31 -06:00
dependabot[bot]
e7cda8f410
Bump rack from 3.1.9 to 3.1.10
Bumps [rack](https://github.com/rack/rack) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-12 19:38:11 +00:00
Kyle Drake
124671d2e3 mime types: add application/pgp-signature 2025-02-10 16:16:16 -06:00
dependabot[bot]
31a738b5d6
Bump net-imap from 0.5.5 to 0.5.6
Bumps [net-imap](https://github.com/ruby/net-imap) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/ruby/net-imap/releases)
- [Commits](https://github.com/ruby/net-imap/compare/v0.5.5...v0.5.6)

---
updated-dependencies:
- dependency-name: net-imap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 18:09:43 +00:00
Kyle Drake
bd9024f6a9 remove old skeuocard images 2025-02-08 11:59:37 -06:00
Kyle Drake
b21d15e285 webdav: improve docs, enforce supporter only access 2025-02-08 11:59:20 -06:00
Kyle Drake
6e49ac23cd webdav: awful hack to fix VSC plugin 2025-02-07 18:09:28 -06:00
Kyle Drake
91055a2feb fixes for webdav 2025-02-06 16:36:01 -06:00
Kyle Drake
a81a708be5 show bandwidth on dashboard, fix extra stats one_to_many, clarify stats retainent and fix typo 2025-02-04 19:57:28 -06:00
Kyle Drake
2dd1f55119 updates for ruby 3.4.1 2025-02-02 20:52:01 -06:00
Kyle Drake
2cb5fb2399 update deps 2025-01-31 21:55:33 -06:00
Kyle Drake
f8f914879c temp message for logging back in 2025-01-31 20:33:03 -06:00
Kyle Drake
98acf7ce89 sessions: new secret, set issued time of session cookie for revoking 2025-01-31 20:03:41 -06:00
Kyle Drake
f7c367b939 migrate to sinatra 4 / rack 3 (breaks current session cookies) 2025-01-31 16:15:14 -06:00
DougsShack
4fcabe5a35 Add rss to valid editable file extensions 2025-01-31 19:23:09 +00:00
Kyle Drake
cf712b7175 stats: cleanup 2025-01-31 11:09:12 -06:00
Kyle Drake
514836fd4f no slash on host root for search 2025-01-16 14:20:33 -06:00
Kyle Drake
f3a2116b6e latest attempt to fix search timeout bug 2025-01-16 14:11:54 -06:00
Kyle Drake
92902696ab less strict tutorial regex for <h1></h1> 2025-01-16 13:07:37 -06:00
Kyle Drake
1bddcd4cfb Add AI blocking/selling copy 2024-12-31 01:16:53 -06:00
Kyle Drake
bb30252000 remove Applebot from list (Applebot-Extended determins LLM usage) 2024-12-30 17:40:19 -06:00
Kyle Drake
2cfc848ab2 move search above tags 2024-12-15 11:08:53 -06:00
Kyle Drake
db35971217 Add robots.txt for new sites, with instructions for blocking AI crawlers 2024-12-14 00:20:51 -06:00
Kyle Drake
d63467c4ca fix ci tests 2024-12-13 17:20:25 -06:00
Kyle Drake
a854244c33 ensure that the atproto dns record gets removed when updating the new record in .well-known 2024-12-13 17:16:13 -06:00
Kyle Drake
16fb3444fa refinements to search 2024-12-13 13:14:41 -06:00
Kyle Drake
44644cc7fa more encoding fixes 2024-12-12 17:20:45 -06:00
Kyle Drake
1463074f35 fix encoding display from result links 2024-12-12 17:05:22 -06:00
Kyle Drake
afef407744 scrub pdf/txt files and non-subdomain search results 2024-12-12 16:35:16 -06:00
Kyle Drake
40bef7d125 fix for .htm indexes 2024-12-12 15:33:25 -06:00
Kyle Drake
aae94f2078 quick n dirty neocities search results w/screenshots 2024-12-12 14:05:38 -06:00
Kyle Drake
3767725759 fix for screenshot sizing issues 2024-12-05 15:41:26 -06:00
Kyle Drake
4876708d99 sample from the top 1000 scored sites for featured 2024-11-29 10:17:22 -06:00
Kyle Drake
eec3adfd23 dont feature deleted or nsfw sites 2024-11-29 10:12:31 -06:00
Kyle Drake
84f916c6bd fix for crop error with webp 2024-11-28 21:11:41 -06:00
Kyle Drake
b495761db4 fix up acme challenge turd cleanup 2024-11-22 11:27:08 -06:00
Kyle Drake
dccd03a941 use site host for handle name 2024-11-21 14:44:48 -06:00
Kyle Drake
9f24cce038 remove value add for did on settings 2024-11-21 14:37:59 -06:00
Kyle Drake
8aa48f1ac2 update bluesky atproto setup to use .well-known vs dns 2024-11-21 14:28:40 -06:00
Kyle Drake
0d78a105d4 Switch to Bluesky from Twitter, change AT DID instructions to use well-known instead of DNS 2024-11-20 18:27:27 -06:00
Kyle Drake
dded5d130a fix removal of well-known acme challenge on letsencrypt 2024-11-20 15:38:57 -06:00
Kyle Drake
abc5a4cf56
Merge pull request #554 from aaadelnrrv/make-acme-cleanup-more-specific
Make ACME challenge cleanup more specific
2024-11-20 14:37:11 -06:00
Kyle Drake
920f25b098 allow text files with no extension (for well-known stuff) 2024-11-20 12:23:22 -06:00
Kyle Drake
5fb1523396 attempt 1 of several million to fix coveralls 2024-11-19 17:18:21 -06:00
Kyle Drake
0e10225f19 add exact date to titles for dates 2024-11-19 11:41:51 -06:00
Kyle Drake
553be38cda goodbye skeuocard, and thanks for all the memories <3 2024-11-19 00:46:05 -06:00
Kyle Drake
d54a359b78 fix to remove button after submit 2024-11-19 00:44:21 -06:00
Kyle Drake
7363215ea7 fix supporter card change 2024-11-19 00:29:43 -06:00
Kyle Drake
d2f977635c undelete site on password reset if deleted 2024-11-18 23:57:32 -06:00
Kyle Drake
c57f636e13 disable borked test for now 2024-11-18 22:29:13 -06:00
Kyle Drake
2c63328750 layout and copy improvements for supporter signup 2024-11-09 14:08:03 -06:00
Kyle Drake
4cac0c839c fix for supporter signup in mobile mode 2024-11-09 12:38:05 -06:00
Kyle Drake
29a3006f1c hide card display that breaks autofill 2024-11-04 15:34:34 -06:00
Kyle Drake
790d31f578 replace skeuocard with code that hopefully has less issues 2024-11-04 12:21:12 -06:00
Kyle Drake
c994f9f4c1 Merge branch 'editor_help_tooltips' 2024-11-01 10:37:11 -05:00
Kyle Drake
d07e201e4d add another windows webdav recommendation 2024-11-01 10:34:44 -05:00
Kyle Drake
8666d1b773
Merge pull request #555 from neocities/dependabot/bundler/rexml-3.3.9
Bump rexml from 3.3.6 to 3.3.9
2024-10-28 15:16:57 -05:00
dependabot[bot]
864aacd45a
Bump rexml from 3.3.6 to 3.3.9
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 18:52:56 +00:00
Violet V.
e9fe9b90ba
Make ACME challenge cleanup more specific
The .well-known directory has uses other than ACME challenge response,
so deleting the whole thing as cleanup is incorrect.

I ran into an issue where files I uploaded inside that directory (which
worked initially) disappeared after a while, I assume around the time
neocities renewed the certs for my custom domain. The file (and the
.well-known dir) still appeared in GETs on the /api/list endpoint, but
requests for them on my site returned 404. I tried to re-upload the
original to the same path but it appears since it had the same content
some optimization was preventing it from restoring the deleted file,
because it continued to 404.

Uploading the same file to a different path inside .well-known worked,
and then uploading a file with different content to the original path
worked.

This commit changes the ACME cleanup code to only remove the
.well-known/acme-challenge directory that it uses, and leaves any other
files alone.
2024-10-20 11:56:18 -04:00
Kyle Drake
8263bb9788 fix background for help popups in js mode 2024-10-13 22:40:15 -05:00
Kyle Drake
131d978180 editor: add editor help tooltips 2024-10-13 22:30:24 -05:00
Kyle Drake
67a5294e5a no flash after editor settings change 2024-10-09 15:11:26 -05:00
Kyle Drake
238844b723 keep editor theme change on it's own post method 2024-10-09 11:34:52 -05:00
Kyle Drake
9975daca5c set naming convention for editor vars 2024-10-08 20:58:19 -05:00
Kyle Drake
e93e2f31a0 add back sunburst theme 2024-10-08 20:48:45 -05:00
Kyle Drake
8ad26817f1 set default tab width to 2 to match current default 2024-10-04 17:41:44 -05:00
Kyle Drake
36237484f6
Merge pull request #551 from BanceDev/ace-settings
Updated Ace Editor Settings
2024-10-04 09:51:13 -05:00
Lance Borden
ebc81be9ca
fixed migration not using drop column 2024-10-04 00:21:23 -04:00
BanceDev
811b956a4b updated ace editor with new settings
settings for tab width, font size, keyboard mode, and autocomplete
2024-10-03 18:20:18 -04:00
Kyle Drake
d11e951fe6 usernames: restrict to lowercase match 2024-10-03 14:37:13 -05:00
Kyle Drake
372b22aa48 fix for username regex 2024-10-03 14:22:46 -05:00
Kyle Drake
5f0c590ca6 revert to ace editor 2024-10-02 14:09:38 -05:00
Kyle Drake
4bd30a97c8 fix tutorial 2024-10-02 11:31:54 -05:00
Kyle Drake
3b97b3f89c turn off autosuggestions/autocompletes for now 2024-10-01 22:38:44 -05:00
Kyle Drake
214465a369 only do html validation with html files 2024-10-01 18:26:05 -05:00
Kyle Drake
264d715447 add themes 2024-10-01 18:07:25 -05:00
Kyle Drake
f29244bf20 fix autocomplete misalign, enable minimap, short padding for bottom 2024-10-01 15:50:21 -05:00
Kyle Drake
0daaf69e25 monaco html hinting 2024-10-01 13:36:02 -05:00
Kyle Drake
a40defb927 fix margin for autocomplete text 2024-10-01 12:22:54 -05:00
Kyle Drake
8c7655ac6f fix monaco loading for text editor 2024-10-01 12:15:28 -05:00
Kyle Drake
2aec58b704
Merge pull request #545 from BanceDev/monaco-editor
Feature: Changed Code Editor to Monaco
2024-10-01 10:19:23 -05:00
BanceDev
504ea78593 added fix for inline autocomplete styling 2024-09-30 22:48:16 -04:00
BanceDev
ff27c37cf5 removed the dev and esm folders for monaco 2024-09-30 21:54:57 -04:00
BanceDev
037a9893db added basic languages folder 2024-09-30 21:45:45 -04:00
BanceDev
22864c927a Merge branch 'monaco-editor' of https://github.com/BanceDev/neocities into monaco-editor 2024-09-30 21:43:07 -04:00
BanceDev
4a7483509e added monaco code to public js folder and removed cdn 2024-09-30 21:42:19 -04:00
Lance Borden
75e966d958
Merge branch 'neocities:master' into monaco-editor 2024-09-30 15:05:29 -04:00
Kyle Drake
c2d6b2a361
Merge pull request #544 from neocities/dependabot/bundler/webrick-1.8.2
Bump webrick from 1.8.1 to 1.8.2
2024-09-30 13:37:11 -05:00
dependabot[bot]
a0ac6938cf
Bump webrick from 1.8.1 to 1.8.2
Bumps [webrick](https://github.com/ruby/webrick) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/ruby/webrick/releases)
- [Commits](https://github.com/ruby/webrick/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: webrick
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 18:18:03 +00:00
Kyle Drake
6f030797fa new btc address for lifer 2024-09-30 13:15:57 -05:00
BanceDev
165e17f844 basic monaco editor setup 2024-09-30 09:44:22 -04:00
Kyle Drake
47edba24dc properly escape screenshot path 2024-09-19 18:26:55 -05:00
Kyle Drake
4347642ac6 update puma to latest 2024-09-19 12:55:21 -05:00
Kyle Drake
4a8c55f6be chat tab commented out 2024-09-19 12:53:06 -05:00
Kyle Drake
3a41029313 add htm to uri, use site.uri for screenshot 2024-09-19 12:47:21 -05:00
Kyle Drake
0e827319cd ensure binary write of screenshots 2024-09-18 09:37:13 -05:00
Kyle Drake
48cef121a1 more fixes for file path 2024-09-17 17:14:30 -05:00
Kyle Drake
208950df55 fix for not loading certain characters correctly in editor file paths 2024-09-16 17:04:03 -05:00
Kyle Drake
dee9128cb3 fix up file uris/uri path code 2024-09-15 14:18:35 -05:00
Kyle Drake
1794a4bcba escape file path properly in dashboard, remove question mark scrub for now 2024-09-15 10:14:27 -05:00
Kyle Drake
605fa2cc74 scrub question marks 2024-09-14 13:10:26 -05:00
Kyle Drake
4fe0443a10 add new api clients 2024-09-10 23:34:04 -05:00
Kyle Drake
8331cb85b5 update btc address 2024-09-06 09:45:40 -05:00
Kyle Drake
1e59bab1eb fix bug for missing site 2024-09-04 14:26:36 -05:00
Kyle Drake
81ae359ec0
Merge pull request #537 from neocities/dependabot/bundler/rexml-3.3.6
Bump rexml from 3.3.3 to 3.3.6
2024-09-04 13:18:10 -05:00
Kyle Drake
ccb6c85c41 fixes for non-unique results and missing current site 2024-09-04 13:16:10 -05:00
Kyle Drake
1f1ee0b64e show username and site updated title with link 2024-09-04 12:34:32 -05:00
Kyle Drake
581756e110 tag search for activities, more tags in browse cloud, link between activity and browse tags 2024-09-04 12:19:48 -05:00
Kyle Drake
137f8af60b dont show comments for people you don't follow on news feeds 2024-09-03 22:08:41 -05:00
Kyle Drake
123d05d685 exclude nsfw from global feed 2024-08-30 00:15:27 -05:00
Kyle Drake
8a96e65f9f fix for missing comments on profile 2024-08-29 22:50:03 -05:00
Kyle Drake
724ee54658 fix for comment issue 2024-08-29 17:09:45 -05:00
Kyle Drake
91110edc52 show site index screenshot for site updates 2024-08-28 23:33:13 -05:00
Kyle Drake
aeb2e34243 fix for not showing site updates 2024-08-28 23:05:30 -05:00
Kyle Drake
68e1e2fed2 an inappropriate amount of fixes and improvements to the news feeds. if something breaks it's somebody else's fault 2024-08-28 15:16:24 -05:00
Kyle Drake
6ced50a88d disable activity cache 2024-08-26 22:54:45 -05:00
Kyle Drake
2625e1328a pagination for follow/follower lists 2024-08-26 22:41:23 -05:00
Kyle Drake
a67588a1c0 speed up and improve global activity 2024-08-26 21:53:10 -05:00
dependabot[bot]
6802210509
Bump rexml from 3.3.3 to 3.3.6
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.3 to 3.3.6.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.3...v3.3.6)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 20:51:43 +00:00
Kyle Drake
a00d460ce0 scrub all attempts to do stupid things with page 2024-08-20 11:29:38 -05:00
Kyle Drake
9ad4b27a50 return 404 for missing file on rename 2024-08-20 11:17:29 -05:00
Kyle Drake
a148f87701 no error when file/object already deleted 2024-08-20 11:14:21 -05:00
Kyle Drake
05c682b0e5 404 for deleted event 2024-08-20 11:05:32 -05:00
Kyle Drake
e1113287b4 check for ip addresses being used for custom domains 2024-08-20 10:29:31 -05:00
Kyle Drake
d10713455c fix for tag creation with extra space 2024-08-20 10:13:24 -05:00
Kyle Drake
b50d93f030 add back csrf token for index validation 2024-08-20 09:38:40 -05:00
Kyle Drake
c4487af180 fix for tag create/find 2024-08-19 22:37:31 -05:00
Kyle Drake
ea45da0dbd index: cache featured sites, fixes signup issues 2024-08-19 16:41:15 -05:00
Kyle Drake
53c258d58f no flash for index 2024-08-19 10:31:50 -05:00
Kyle Drake
601f58e025 fix for CSRF token in cached index 2024-08-19 10:16:09 -05:00
Kyle Drake
72d148b237 example screenshot for custom domains 2024-08-18 11:06:33 -05:00
Kyle Drake
6ee8d6ba18
Merge pull request #532 from nottnottloop/readmeupdate
Update the README
2024-08-15 13:31:17 -05:00
nottnottloop
4f8ef9d709 Update the README 2024-08-15 19:08:38 +01:00
Kyle Drake
3d58817927 remove debug puts 2024-08-15 11:53:58 -05:00
Kyle Drake
498f29bfa2 fixes for tests 2024-08-15 11:46:39 -05:00
Kyle Drake
88f419ce67 cache the entire rendering of the front page 2024-08-15 10:59:56 -05:00
Kyle Drake
6c0ecf752c use score for site suggestions 2024-08-15 10:55:10 -05:00
Kyle Drake
314227136e add db unique constraint for tags 2024-08-14 13:11:00 -05:00
Kyle Drake
4eeec12b67 add back tag dedupe code 2024-08-14 12:56:14 -05:00
Kyle Drake
4fc5698d0e further refinements to browse, fix broken test 2024-08-14 11:15:45 -05:00
Kyle Drake
18102eb76b fix email check for child sites 2024-08-07 11:38:31 -05:00
Kyle Drake
c12db50b27 site score: adjust views factor 2024-08-06 11:00:51 -05:00
Kyle Drake
5f7d29617c
Merge pull request #529 from neocities/dependabot/bundler/rexml-3.3.3
Bump rexml from 3.3.2 to 3.3.3
2024-08-06 09:58:15 -05:00
Kyle Drake
2ef0d2101c major improvements to special sauce, site browsing, move front page to use non-featured, and fix bug when title missing 2024-08-06 00:35:17 -05:00
dependabot[bot]
eded1340ca
Bump rexml from 3.3.2 to 3.3.3
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.2...v3.3.3)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 02:07:10 +00:00
Kyle Drake
4f9b75442e
Merge pull request #527 from neocities/dependabot/bundler/rexml-3.3.2
Bump rexml from 3.2.8 to 3.3.2
2024-07-23 14:01:35 -05:00
dependabot[bot]
af7f28f32c
Bump rexml from 3.2.8 to 3.3.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.8 to 3.3.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.8...v3.3.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 22:39:17 +00:00
Kyle Drake
141bba6d62 site file changes: order by last edited file first, increase to 6 files 2024-07-22 17:37:49 -05:00
Kyle Drake
96ffe92ce3 move character limit api doc to var 2024-07-17 17:32:17 -05:00
Kyle Drake
cc7731fe9c file name character limit to 200 chars 2024-07-17 17:30:16 -05:00
Kyle Drake
fb0b2e2e58
Merge pull request #505 from ekaitz-zarraga/master
views: api: Add Guile API by Ekaitz
2024-07-17 17:07:01 -05:00
Kyle Drake
bd3909c7d7
Merge pull request #506 from ParkedHampster/filename_extension
Bug: Filename Length
2024-07-17 17:05:59 -05:00
Kyle Drake
dfd30d489c fix for comment limit not applying to profile comments 2024-07-17 17:02:51 -05:00
Kyle Drake
0531a1d85f stop actions when users are blocked 2024-05-31 14:36:57 -05:00
Kyle Drake
c0dca503c9 add py to whitelist (brython support) 2024-05-27 15:46:45 -05:00
Kyle Drake
a220efb4ac
Merge pull request #518 from neocities/dependabot/bundler/nokogiri-1.16.5
Bump nokogiri from 1.16.2 to 1.16.5
2024-05-24 09:40:57 -06:00
Kyle Drake
79370bcba4
Merge pull request #519 from neocities/dependabot/bundler/rexml-3.2.8
Bump rexml from 3.2.6 to 3.2.8
2024-05-24 09:40:47 -06:00
dependabot[bot]
6296c4dfbf
Bump rexml from 3.2.6 to 3.2.8
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-16 21:53:20 +00:00
dependabot[bot]
d3908a1c3e
Bump nokogiri from 1.16.2 to 1.16.5
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.2 to 1.16.5.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.2...v1.16.5)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 23:42:50 +00:00
Kyle Drake
50b1ea65e3 plug created_at for missing updated_at 2024-05-06 12:02:20 -05:00
Kyle Drake
bca7ecb95f catch already created records errors 2024-05-06 10:49:24 -05:00
Kyle Drake
262fc34bb9
Merge pull request #516 from TarryDan/TarryDan-overlay-text
Update _project-Main.scss
2024-05-02 12:06:03 -05:00
Kyle Drake
305dc01820 remove likely bots/spammy sites from activity feed 2024-05-02 11:51:15 -05:00
Kyle Drake
cd05cdd44f dont exclude comments on news feed just for nsfw marking 2024-05-02 11:41:41 -05:00
Kyle Drake
11ad75d932 remove clunky slow fade animation 2024-04-30 09:56:39 -05:00
Kyle Drake
215e72d07c dont hide comment link when popping out 2024-04-29 17:59:02 -05:00
Kyle Drake
b5ca5f0bc9 news feed: confirm before removal of event 2024-04-29 17:28:09 -05:00
Kyle Drake
5adef9adb9 whitelist glb 2024-04-29 11:48:09 -05:00
Kyle Drake
1a698b5765
Merge pull request #515 from neocities/dependabot/bundler/sidekiq-7.2.4
Bump sidekiq from 7.2.0 to 7.2.4
2024-04-29 11:33:41 -05:00
Kyle Drake
ceefdcf7ca whitelist mjs, cjs, ts 2024-04-29 11:33:10 -05:00
TarryDan
5de38ec406
Update _project-Main.scss
Fixing issue #439 - overlay font smaller and further from file-open link to prevent mis-clicking; overlay font enlarges on hover so users can see which they are about  to click
2024-04-27 20:15:48 +01:00
dependabot[bot]
af9a9410a2
Bump sidekiq from 7.2.0 to 7.2.4
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.2.0 to 7.2.4.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.2.0...v7.2.4)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-26 22:20:25 +00:00
Kyle Drake
3d9cd560c5 chat: tweak distancefrombottom 2024-04-21 14:16:43 -05:00
Kyle Drake
781ad6512f chat: more tweaks 2024-04-21 13:59:51 -05:00
Kyle Drake
87dd81581c chat: improve window sizing 2024-04-21 11:58:26 -05:00
Kyle Drake
871f13ceb1
Merge pull request #509 from scarecat/sort-by-least-views
Feature: sort by: Least Views
2024-04-19 16:03:41 -05:00
Kyle Drake
11ca42e6f0
Merge pull request #510 from dimdenGD/patch-5
Fix follows' "see more" link
2024-04-19 15:58:42 -05:00
dimden
905c2fbe26
Fix follows' "see more" link 2024-04-19 13:14:11 +03:00
Kyle Drake
f1bfe198f6 trying to fix bing not showing favicon correctly 2024-04-18 11:44:09 -05:00
Kyle Drake
5a936a599c improvements to jerk detector 2024-04-16 17:28:38 -05:00
Kyle Drake
ca288fcd8b puma_config.rb: not needed anymore DB.disconnect call 2024-04-16 22:01:41 +00:00
Jacek Jarosz
766bc7a4a8 sort by least views 2024-04-15 00:22:30 +02:00
Kyle Drake
9bd9d7cc3a show dotfiles in editor 2024-04-10 14:33:42 -05:00
Kyle Drake
ca71db54ba convert net::http calls to http gem 2024-04-10 12:59:31 -05:00
Kyle Drake
be6c4252ff no error emails, using airbrake 2024-04-09 18:06:25 -05:00
Kyle Drake
160dc9e2de password reset tweaks 2024-04-09 16:49:57 -05:00
Kyle Drake
6ab3656040 tutorial subpages for tutorial match 2024-04-08 17:45:20 -05:00
Kyle Drake
5eac211d4d verification route path fixes 2024-04-08 15:39:04 -05:00
Kyle Drake
10acf8e7bb cleanups for account validation 2024-04-08 15:12:56 -05:00
Kyle Drake
bb430d455f chat: Penelope copy for system prompt 2024-04-02 20:32:18 -05:00
Kyle Drake
c16c5272e2 chat: back to penelope 2024-04-02 19:10:26 -05:00
Kyle Drake
5fa023e9f5 fix for activity feed not showing up 2024-04-02 10:14:35 -05:00
Kyle Drake
d1d6e3727e chat: header for bypassing proxy buffering 2024-04-01 17:39:57 -05:00
Kyle Drake
86f40a431d chat: no display on mobile/small screen 2024-04-01 13:58:42 -05:00
Kyle Drake
d57e33d951 chat: supporter only for now 2024-04-01 13:43:09 -05:00
Kyle Drake
07d578ab57 no default question 2024-04-01 02:10:14 +00:00
Kyle Drake
3db080b7f7 chat: final turd polishing on daria 2024-03-31 20:57:32 -05:00
Kyle Drake
fcd300a3fd catch errors, disable including html file for now 2024-03-29 12:08:17 -05:00
Kyle Drake
bf4d43067d chat: size and enabled/disabled retention 2024-03-28 14:23:53 -05:00
Kyle Drake
2b2954b0fd chat: minor visual tweaks 2024-03-28 10:37:44 -05:00
Kyle Drake
d850559f36 site views, hits needs bigint 2024-03-28 00:29:57 -05:00
Kyle Drake
862ae1fc93 fixes for height, adjust resize handle 2024-03-27 21:58:23 -05:00
Kyle Drake
efd61fb885 fighting the insanity that is css 2024-03-27 18:56:40 -05:00
Kyle Drake
e732c3ad8b chat: adjust column size of chat, add top control button 2024-03-27 14:26:40 -05:00
Kyle Drake
1892072128 chat: copy tweaks 2024-03-27 11:24:58 -05:00
Kyle Drake
8fdc30a88c missing atom mime type 2024-03-27 10:17:29 -05:00
Kyle Drake
c090392b41 limit how many follows are shown 2024-03-27 10:02:02 -05:00
Kyle Drake
f731466317 increase max follows to 2000 2024-03-27 14:01:28 +00:00
Kyle Drake
2831d2fd77 fixes for mime type changes 2024-03-27 02:03:59 +00:00
Kyle Drake
0704521d4a fixes for tutorial 2024-03-26 21:03:26 -05:00
Kyle Drake
935af9d4d1 layout fixes 2024-03-26 16:59:11 -05:00
Kyle Drake
4e05121dfc break off autoscroll if moved from bottom, tweak for button 2024-03-26 15:59:09 -05:00
Kyle Drake
a975c9c2be chat: target _blank for any links. Also Daria 2024-03-26 12:50:19 -05:00
parkedhampster
26b6f6f6c8 undo auto-lint changes from my editor 2024-03-26 11:41:06 -04:00
parkedhampster
25ca2a879b Increase filename limit to ext4 character limit
Purpose of this PR:
- ext4 filesystems permit a filename limit of 255 characters
- changes arbitrary 100-character limit to the above limit
- many site builders will create minified files with names over 100 characters in length
- adds the limit as part of the error return as well
  - this is hard-coded currently (I am not intimately familiar with ruby)
2024-03-26 11:21:50 -04:00
Kyle Drake
4bd2390c1d chat: multi-message prompting, system message, copy button, temp setting 2024-03-25 17:40:28 -05:00
Ekaitz Zarraga
8cf32a9195 views: api: Add Guile API by Ekaitz 2024-03-25 18:10:09 +01:00
Kyle Drake
8ba6005c67 start on the coding assistant 2024-03-24 17:13:22 -05:00
Kyle Drake
8f6a85d81d add img/vnd.microsoft.icon to mime type list, sort list 2024-03-22 16:58:53 -05:00
Kyle Drake
d0ab40f750 add json mime type, changed after site file upload change 2024-03-22 16:50:22 -05:00
Kyle Drake
39f37b2cf5 api upload: fix typo 2024-03-22 16:50:22 -05:00
Kyle Drake
bb83caf8fe
Merge pull request #503 from hf02/avatar-fix
Fix avatar positioning
2024-03-22 12:16:55 -05:00
hf02
4367479522
fix avatar positioning 2024-03-22 10:57:01 -04:00
Kyle Drake
47bc9788ef fix for badly behaved browser extension injecting html into user's sites 2024-03-21 13:26:13 -05:00
Kyle Drake
34ca68f1ae improve look when no feed news exists 2024-03-20 18:09:29 -05:00
Kyle Drake
077551556d typo fix 2024-03-20 18:09:29 -05:00
Kyle Drake
b0b6c0c0f6
Merge pull request #501 from M-Valentino/WCAG-text-color
I made the site tag text color darker so it passes most WCAG accessibility standards.
2024-03-15 09:15:53 -05:00
Mark Valentino
283086136b made text color slightly darker to be more accessible for low vision users 2024-03-14 19:54:29 -04:00
Kyle Drake
bc4ad96b76 SPAM covers SEO in our previous ToS, but updating it to explicitly mention SEO as a ToS violation of our AUP 2024-03-13 17:56:01 -05:00
Kyle Drake
103afdc07e check if path is a dir before showing edit links in dashboard 2024-03-13 17:08:29 -05:00
Kyle Drake
88ad085ac8 dont allow directories to end with .htm or .html. Breaks the dashboard UI, also breaks the cdn 2024-03-13 16:57:54 -05:00
Kyle Drake
9dbec11353
Merge pull request #500 from neocities/fileuploadrefactor
whitelist emails capability
2024-03-13 16:22:49 -05:00
Kyle Drake
9bc93a8d15 whitelist emails capability 2024-03-13 16:20:32 -05:00
Kyle Drake
d506f6cb3e
Merge pull request #497 from neocities/fileuploadrefactor
File Upload Refactor
2024-03-11 11:44:12 -05:00
Kyle Drake
1cb99d7706 last minute fixes and cleanups 2024-03-11 10:40:48 -05:00
Kyle Drake
a91041ae61 got drag n drop to work with firefox -and- chrome and checking in before I manage to break it again 2024-03-10 16:22:12 -05:00
Kyle Drake
a0707e9d54 add new views 2024-03-08 12:05:15 -06:00
Kyle Drake
f6af2cbbcf finishing up drag-n-drop code, use param for filename with site_file/text_editor 2024-03-08 11:53:51 -06:00
Kyle Drake
943271b509 massive update to deprecate site_file/upload in favor of api/upload, improve dashboard. todo: webdav switchover, dashboard error/result messages 2024-03-06 20:37:44 -06:00
Kyle Drake
577cd0a82a remove old unused js, only show new followers for page 1 2024-03-06 12:12:25 -06:00
Kyle Drake
baff1d23e6 add missing test file 2024-03-04 16:46:01 -06:00
Kyle Drake
e7e5121700 fix for api calls with square bracket filenames 2024-03-04 16:38:56 -06:00
Kyle Drake
3087e39b57
Merge pull request #493 from M-Valentino/largePortraitResponsiveness
I made a fix to prevent large portrait images from overflowing on certain resolutions
2024-03-04 14:45:46 -06:00
Kyle Drake
49f83ca5f7
Merge pull request #492 from neocities/dependabot/bundler/nokogiri-1.16.2
Bump nokogiri from 1.16.0 to 1.16.2
2024-03-04 14:32:36 -06:00
Kyle Drake
7bb13b2280
Merge pull request #495 from neocities/dependabot/bundler/rack-2.2.8.1
Bump rack from 2.2.8 to 2.2.8.1
2024-03-04 14:32:06 -06:00
Kyle Drake
71633e268c fix for tutorial image ref 2024-03-04 12:59:01 -06:00
Kyle Drake
90eb054e5e check for current site 2024-03-03 23:50:11 -06:00
Kyle Drake
b886f6021c browse: csv list of sites 2024-03-03 17:02:12 -06:00
Kyle Drake
1cf9dfd33e terms: fix typo 2024-03-03 16:52:28 -06:00
Kyle Drake
c928b02eea add note about descriptive comments 2024-03-02 10:34:06 -06:00
Kyle Drake
3751801796 remove old debug puts 2024-03-01 14:22:03 -06:00
Kyle Drake
2ff8365651 add logic for tutorial requirement 2024-03-01 12:50:41 -06:00
dependabot[bot]
5e793c4fbb
Bump rack from 2.2.8 to 2.2.8.1
Bumps [rack](https://github.com/rack/rack) from 2.2.8 to 2.2.8.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.8...v2.2.8.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-29 01:50:40 +00:00
Kyle Drake
01aab733bb remove extra purge cache for html file create 2024-02-22 13:31:09 -06:00
Kyle Drake
b0bb40fe23 fix for cache purge rename 2024-02-22 12:30:41 -06:00
Mark Valentino
53141a03d7 prevented large portrait images from overflowing on certain resolutions 2024-02-21 23:09:52 -05:00
Kyle Drake
f7341f5a51 add note about improved stats 2024-02-21 16:02:23 -06:00
Kyle Drake
79a6fd0541 remove binding.pry in tests 2024-02-21 15:49:12 -06:00
Kyle Drake
29619d51ee remove surf code, clean up purge cache and better define purge cache tests for expected behavior 2024-02-21 13:51:41 -06:00
Kyle Drake
b4caf44af4 only html tutorial 2024-02-20 09:39:05 -06:00
Kyle Drake
c686dd026f catch already deleted entries 2024-02-18 14:38:48 -06:00
Kyle Drake
2aa30eaa28 simplify catch for custom domain resolv issues 2024-02-18 14:28:50 -06:00
Kyle Drake
3fcbb116fe force utf encoding for saved title 2024-02-17 14:29:46 -06:00
Kyle Drake
68dcda74d0 contact: missing div close in faq 2024-02-17 13:42:23 -06:00
Kyle Drake
7576b52ab6 check for bad characters 2024-02-17 13:16:21 -06:00
Kyle Drake
0c1812e457 BlackBoxWorker: only check deleted 2024-02-17 19:15:46 +00:00
Kyle Drake
9800a4ad4b check tag input 2024-02-17 10:55:51 -06:00
Kyle Drake
6444fe7e94 sinatra indifferent hash not an integer 2024-02-17 10:43:05 -06:00
Kyle Drake
f7e65ec61b more strict integer checks 2024-02-17 10:27:02 -06:00
Kyle Drake
1d87b87e62 declined card check 2024-02-16 14:17:36 -06:00
Kyle Drake
e551aeb342 check for empty username/email for identifier 2024-02-16 14:11:46 -06:00
Kyle Drake
4ffeddaf5a only render tutorial page if number 1-10 2024-02-16 14:07:29 -06:00
Kyle Drake
1beedb79b1 better flow for current site check 2024-02-16 13:58:59 -06:00
Kyle Drake
59dbc1b2e1 allow api use via current_site, better check for current_site 2024-02-16 10:50:40 -06:00
Kyle Drake
b89ffc2bad catch error if follow is missing 2024-02-16 10:44:14 -06:00
Kyle Drake
04bcd555c3 catch resolutionerror for custom domain 2024-02-16 10:36:02 -06:00
Kyle Drake
6378e6ce5a exclude deleted sites from sitemap 2024-02-16 09:43:01 -06:00
Kyle Drake
777207f5a3 add warning to account delete that email will not be available for new site creation 2024-02-15 16:01:18 -06:00
dependabot[bot]
763003db7a
Bump nokogiri from 1.16.0 to 1.16.2
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.0 to 1.16.2.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.0...v1.16.2)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-06 03:52:27 +00:00
Kyle Drake
88e6c3967d catch card error during subscription create 2024-02-04 10:33:31 -06:00
Kyle Drake
786f72ad2f preventdefault causes test to break 2024-02-04 00:57:58 -06:00
Kyle Drake
8e77810fcf ensure card data is discarded after stripe token exists 2024-02-03 23:56:20 -06:00
Kyle Drake
ce0e9d422a refactor stripe js code to try to fix bug with missing token 2024-02-03 23:31:54 -06:00
Kyle Drake
51d65653e8 catch name resolution error for custom domain check 2024-02-03 13:31:16 -06:00
Kyle Drake
682f450561 better card decline copy - catch renames with too long filenames/paths 2024-02-03 13:05:50 -06:00
Kyle Drake
623dfd05fc catch card errors on supporter signup 2024-02-03 12:43:21 -06:00
Kyle Drake
2448b51d61 proper error message when old path does not exist 2024-02-03 11:56:39 -06:00
Kyle Drake
b122d54f1b catch for bad strings before validation 2024-02-02 15:38:38 -06:00
Kyle Drake
7d43dbae19 catch weird pages, set to 1 2024-02-02 14:53:31 -06:00
Kyle Drake
3e6422bb24 remove old dead routes 2024-02-02 14:42:55 -06:00
Kyle Drake
c19a7400a1 block array attempts as well 2024-02-02 14:39:44 -06:00
Kyle Drake
959a721345 is_integer no longer needed 2024-02-02 14:35:43 -06:00
Kyle Drake
2f2025aa31 fix for integer check 2024-02-02 14:34:55 -06:00
Kyle Drake
4f3ca20f55 no airbrake for retries in sidekiq, only failures 2024-02-02 14:26:16 -06:00
Kyle Drake
89be4c0a87 updates to faq to note changes to CSP 2024-01-22 17:51:23 -06:00
Kyle Drake
3a4956b549 update copy for site creation availability 2024-01-22 23:47:48 +00:00
Kyle Drake
0fe2bcb649 fix for tutorial not accepting spaces in link text 2024-01-22 14:40:07 -06:00
Kyle Drake
2e2ddec790
Merge pull request #473 from nottnottloop/cssimprovements2
Improve responsiveness for mobile screens for sites with large site stats
2024-01-22 09:07:01 -06:00
Kyle Drake
c4ce344459
Merge pull request #489 from lime360/master
making another pull request bc yes
2024-01-22 09:05:16 -06:00
Kiril Misnikov
96c2c4059b
Update site.rb
get yo ass out sussy wigglin' fucker (swf) you aren't supposed to be here
2024-01-22 16:57:07 +02:00
Kiril Misnikov
f110dc6fb4
Merge branch 'neocities:master' into master 2024-01-22 16:55:49 +02:00
Kyle Drake
5dafa17e36 airbrake: ignore 404s 2024-01-21 17:57:06 +00:00
Kyle Drake
8a398c3028 integrate airbrake 2024-01-21 11:47:02 -06:00
Kyle Drake
afd5efbebc add new download tool link 2024-01-21 09:50:56 -06:00
Kyle Drake
c70b6cef0f path limit to 1200 2024-01-21 09:40:54 -06:00
Kyle Drake
5916501e94 fix for supporter browse with tags 2024-01-21 09:32:59 -06:00
Kyle Drake
29dfe755fa more w3c rss validator madness 2024-01-21 09:19:49 -06:00
Kyle Drake
b25c8d1353 continuing the war with w3c's terrible rss validator 2024-01-21 09:16:41 -06:00
Kiril Misnikov
632deabfe7
Update site.rb 2024-01-21 16:43:15 +02:00
Kiril Misnikov
4dadb018ba
Merge branch 'neocities:master' into master 2024-01-21 16:38:08 +02:00
Kyle Drake
fd15fd6856 use nokogiri for rss, return better results, index for speed 2024-01-20 18:32:18 -06:00
Kiril Misnikov
28928b2591
Update site.rb
Added .osdx (Open Search Discovery) extension to the white list
2024-01-19 20:41:02 +02:00
Kyle Drake
7788437c33 improve underline links, update ace, add more ace themes 2024-01-19 11:16:02 -06:00
Kyle Drake
37cac9d1bd add yml/yaml/toml to whitelist 2024-01-15 22:22:53 -06:00
Kyle Drake
13969fef50 raise limit for path 2024-01-15 17:38:54 -06:00
Kyle Drake
a1cb3c6a11 add defined file and path length limits 2024-01-15 08:59:57 -06:00
Kyle Drake
1870286f2a fix save button being slightly off from other buttons 2024-01-09 21:27:25 -06:00
Kyle Drake
0888c9e2df default freeze string literals where present 2024-01-09 12:49:17 -06:00
Kyle Drake
19dadfd6d2 add threshold for jerk blocker for reducing change of false positive for more followed sites 2024-01-09 12:39:55 -06:00
Kyle Drake
9382505a29 add icons to view and share on editor 2024-01-09 12:39:55 -06:00
Kyle Drake
d7001cefdf
Merge pull request #483 from neocities/dependabot/bundler/puma-6.4.2
Bump puma from 6.4.0 to 6.4.2
2024-01-08 12:38:41 -06:00
Kyle Drake
9aed1a9f29
Merge pull request #461 from Winterhuman/apng
Add APNG
2024-01-08 12:31:02 -06:00
Winterhuman
a1d32b67a3
Merge branch 'master' into apng 2024-01-08 16:55:35 +00:00
dependabot[bot]
f231ed9d4d
Bump puma from 6.4.0 to 6.4.2
Bumps [puma](https://github.com/puma/puma) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.0...v6.4.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 16:24:08 +00:00
Kyle Drake
f261db16b0 refactor RSS from Atom to 2.0 and hopefully get it working without guids 2024-01-07 13:35:41 -06:00
Kyle Drake
2f6ba312dc add undiscovered article from polygon 2024-01-07 13:35:41 -06:00
Kyle Drake
0ffc5c5232 Merge branch 'master' of github.com:neocities/neocities 2024-01-07 18:23:34 +00:00
Kyle Drake
4b8c7c1933 add unsafe-eval to script-src to fix replies on comments 2024-01-07 18:23:28 +00:00
Kyle Drake
0c7c2d44b1 fix test issue related to validation text 2024-01-07 00:00:18 -06:00
Kyle Drake
8091e3d8c0 clean up and consolidate layout meta, improve favicon, og desc 2024-01-06 23:37:13 -06:00
Kyle Drake
47a478a3a7 add screenshot for neocities root url embeds 2024-01-06 21:19:37 -06:00
Kyle Drake
cb7e8661e6 add info about stats 2024-01-06 17:19:38 -06:00
Kyle Drake
b8baad628b add stats link to hamburger 2024-01-06 15:20:00 -06:00
Kyle Drake
f9852d04fd update to latest chartjs 2024-01-06 13:27:48 -06:00
Kyle Drake
837b0ea2d0 no hyphens at start or end of username 2024-01-05 16:37:14 -06:00
Kyle Drake
afb1d756e0 clean up pasted reference code 2024-01-05 14:50:25 -06:00
Kyle Drake
8c5a8b6f22 fixes for a few missing csp entries needed 2024-01-05 14:47:20 -06:00
Kyle Drake
0ef9bdefce add CSP, remove gravicons that are now blocked by it 2024-01-05 14:46:29 -06:00
Kyle Drake
cee8da725f add custom domain note about removing url redirects 2024-01-04 13:23:25 -06:00
Kyle Drake
f387059c66 puma: use phased restart instead of preload 2024-01-04 18:02:53 +00:00
Kyle Drake
350a7039c7 update vagrantfile to work with latest, closes #478 2024-01-04 02:30:24 -06:00
Kyle Drake
bc81646302
Merge pull request #472 from nottnottloop/vagrantupdate
Update Vagrant to latest Ubuntu LTS
2024-01-03 19:19:01 -06:00
Kyle Drake
02b54afea1 update deps for sidekiq, redis 2024-01-03 19:18:19 -06:00
Kyle Drake
c7764d3ed5 unfollow sites when blocked 2024-01-03 17:03:29 -06:00
Kyle Drake
e96bce69bd
Merge pull request #475 from zmac-me/minorfix
Remove an erroneous 'a' from supporter.erb
2024-01-03 13:12:04 -06:00
Kyle Drake
47a5508919 add note about editor saving issues caused by adblockers 2024-01-03 11:33:18 -06:00
Kyle Drake
3fa6f34e54 Rakefile: further remove obsolete/unused code 2023-12-31 01:55:52 -06:00
Kyle Drake
b4000c104a Rakefile: refactor zip code, remove some obsolete tasks 2023-12-31 01:43:44 -06:00
Kyle Drake
ed02178289 working to get the tests back online. deprecated zipruby to make selenium work, need to refactor zip code 2023-12-31 00:58:53 -06:00
Kyle Drake
10ff8a7cc7 sidekiq api available in test for screenshotworker 2023-12-31 00:55:59 -06:00
Kyle Drake
363453a78a cleanups for copy 2023-12-31 00:55:03 -06:00
Kyle Drake
dde5225752 deprecate ipfs 2023-12-28 15:36:20 -06:00
Kyle Drake
d394b2601e move proxy delete logic to other conditional 2023-12-27 18:00:39 +00:00
Kyle Drake
36765afb5c only try to delete redis entries if they're set from domain 2023-12-27 11:18:32 -06:00
Kyle Drake
9b954f086e move screenshots to default retry cycle 2023-12-25 11:14:18 -06:00
Kyle Drake
cac2cbd986 github action ruby 3.3 (previous commit enabled YJIT) 2023-12-25 10:56:24 -06:00
Kyle Drake
8dc323d803 fix for stats view 2023-12-25 16:50:40 +00:00
Kyle Drake
9b67926cc2 update gems/code for ruby 3.3.0 2023-12-25 09:43:48 -06:00
Kyle Drake
8dfb60fe55 add lang=en to main layout, bump out old IE hacks that were never used anyways 2023-12-24 12:35:30 -06:00
Zac McManus
2f3e658f5e
Removed an erroneous 'a' from supporter.erb
This oversight can be seen directly on Neocities: https://neocities.org/settings#supporter
2023-12-19 17:50:05 +11:00
nottnottloop
8a7fcd5c85 Improve responsiveness for mobile screens for sites with large site stats 2023-12-16 21:19:35 +00:00
nottnottloop
c0dd7ed51f Update Vagrant to latest Ubuntu LTS 2023-12-16 19:22:16 +00:00
Kyle Drake
9b00bd0169 retry screenshots to 4, add missing image optimizer 2023-12-15 18:09:59 +00:00
Kyle Drake
2bf24375d4 only use full png for index 2023-12-06 10:03:33 -06:00
Kyle Drake
c3789564f0 add opengraph / link expander friendly screenshot, add image optimizers 2023-12-05 15:49:14 -06:00
Kyle Drake
3c62b7be22 switch disposable email blacklist to more updated one 2023-12-03 15:22:25 +00:00
Kyle Drake
aa4d277bab custom domain copy 2023-12-01 16:28:30 +00:00
Kyle Drake
1aada9db53 invoice: remove debug code 2023-11-30 21:54:53 +00:00
Kyle Drake
a3832f25e1 invoice: more fixes 2023-11-30 21:54:10 +00:00
Kyle Drake
36e35c913e invoicing: parent site not current site 2023-11-30 15:32:31 -06:00
Kyle Drake
08ac0510a6 invoice downloading, cleanup settings tabs 2023-11-30 15:08:22 -06:00
Kyle Drake
075332d9da fix for phone verified for development 2023-11-30 13:09:47 -06:00
Kyle Drake
c1ecc63aa2 add tags question to FAQ 2023-11-29 15:22:03 -06:00
Kyle Drake
c83295b06f more faq copy 2023-11-26 15:21:54 -06:00
Kyle Drake
b875fcbd2c mention password managers in reset faq 2023-11-26 14:07:18 -06:00
Kyle Drake
7e49bd96a4 sidekiq provides string keys not symbols 2023-11-26 17:27:58 +00:00
Kyle Drake
6d237600fd stopforumspamworker: hash not methods 2023-11-26 11:14:53 -06:00
Kyle Drake
6008e2be4e fix for site instance var 2023-11-26 11:10:25 -06:00
Kyle Drake
6ddef6aa59 maxmind minfraud reporting 2023-11-26 11:09:02 -06:00
Kyle Drake
7c04f53af1 update copy, add faq answers, require check for faq viewing 2023-11-26 11:06:50 -06:00
Kyle Drake
84a23e35ba add minfraud 2023-11-22 00:09:58 -06:00
Kyle Drake
0d8684704f create disabled check to post, minfraud 2023-11-21 17:11:40 -06:00
Kyle Drake
7b9107393b use purge_all_cache instread of delete_all_cache 2023-11-21 16:57:49 -06:00
Kyle Drake
4c3daea4a8 delete_all_cache for destroy and not just ban 2023-11-18 10:59:17 -06:00
Kyle Drake
0f860cfdcc move order of delete_all_cache on undelete to bottom 2023-11-18 10:53:48 -06:00
Kyle Drake
c31b45575f ability to temp disable create 2023-11-18 10:48:12 -06:00
Kyle Drake
9fa4cc0e13 fix signout, add press article, add dns bl client 2023-11-13 13:18:11 -06:00
Kyle Drake
7f354bf8f6 fix redirect logic 2023-11-11 21:30:14 -06:00
Kyle Drake
ffaca51d36 spam inbox check comment for password reset 2023-11-11 15:11:34 -06:00
Kyle Drake
2e1a8af30d fix for verify, ask to check spam folder in email confirm 2023-11-11 10:07:01 -06:00
Kyle Drake
aad6546631 merge phonevalidation with master 2023-11-10 13:34:33 -06:00
Kyle Drake
3ee578e696 phone verification attempts migration 2023-11-10 13:30:48 -06:00
Kyle Drake
7f05c2c9dc code input validation, lockout after 3 attempts 2023-11-10 13:30:05 -06:00
Kyle Drake
40e848e2c0 phone validation: bugfixes, tweaks and refinements 2023-11-10 11:53:43 -06:00
Kyle Drake
143704215f first pass at phone validation 2023-11-09 14:55:48 -06:00
Kyle Drake
5dfbc7a91a increase jerk block threshold 2023-10-01 18:36:31 +00:00
Kyle Drake
f78775fb3f validate all types of btc addresses with tipper 2023-09-23 21:28:32 -05:00
Kyle Drake
7b7b3c05e1 add pls to file whitelist 2023-09-19 22:07:45 +00:00
Kyle Drake
0c8696009f upgrade to latest puma 2023-08-19 15:41:32 -05:00
Kyle Drake
c217d31dee
Merge pull request #462 from neocities/dependabot/bundler/puma-5.6.7
Bump puma from 5.6.5 to 5.6.7
2023-08-19 11:13:40 -07:00
dependabot[bot]
caecfa3a32
Bump puma from 5.6.5 to 5.6.7
Bumps [puma](https://github.com/puma/puma) from 5.6.5 to 5.6.7.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.6.5...v5.6.7)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-19 01:44:22 +00:00
Kyle Drake
1ecc148226 more generic site file download path 2023-08-09 19:58:46 +00:00
Kyle Drake
95e61a3f45 dont compress zip backups 2023-08-09 19:21:25 +00:00
Kyle Drake
9f96150b2d limit dl to 1 per hour 2023-08-09 14:09:59 -05:00
Winterhuman
1ad20de96d
Add image/apng and .apng to valid image types 2023-08-09 15:49:45 +00:00
Kyle Drake
19050fea82 fix email template locations 2023-08-08 15:45:42 -05:00
Kyle Drake
72b9d19e8a zip_tricks gem 2023-08-08 15:45:27 -05:00
Kyle Drake
6c4a80123c stream site download zip 2023-08-08 15:45:05 -05:00
Kyle Drake
d16bc0bace use created_at for to_rss if not updated yet 2023-07-20 13:36:38 +00:00
Kyle Drake
161dfb70f3 fixes for changes to sidekiq 2023-07-19 16:47:08 -05:00
Kyle Drake
a157cda92a
Merge pull request #445 from aeiouaeiouaeiouaeiouaeiouaeiou/missing-br
Fix missing br and recheck sharing links
2023-07-19 16:32:22 -05:00
Kyle Drake
22b8af52c3
Merge branch 'master' into missing-br 2023-07-19 16:32:15 -05:00
Kyle Drake
bf6f667741
Merge pull request #454 from Winterhuman/patch-1
Add AVIF images
2023-07-19 16:30:41 -05:00
Kyle Drake
8867765c20
Merge pull request #448 from talklittle/fix-education-tests
Fix education tests
2023-07-19 16:25:01 -05:00
Kyle Drake
d98934641d
Merge pull request #447 from neocities/dependabot/bundler/sidekiq-7.0.8
Bump sidekiq from 5.2.10 to 7.0.8
2023-07-19 16:22:24 -05:00
Kyle Drake
83e6d482cd
Merge pull request #455 from meisekimiu/fix-mastodon-link
Fix Mastodon Share
2023-07-19 16:20:45 -05:00
Kyle Drake
a54aa726e8
Merge pull request #446 from neocities/dependabot/bundler/nokogiri-1.14.3
Bump nokogiri from 1.13.10 to 1.14.3
2023-07-19 16:19:48 -05:00
Kyle Drake
4e499d7b41
Merge pull request #457 from neocities/dependabot/bundler/sanitize-6.0.2
Bump sanitize from 6.0.1 to 6.0.2
2023-07-19 16:19:19 -05:00
Kyle Drake
2a3b8593df Better error handling for screenshot and thumbnail workers, hacky fix for lets encrypt cert issue that's temporary 2023-07-19 21:17:48 +00:00
Kyle Drake
4382eec54b Helper for screenshot worker retry 2023-07-19 21:06:50 +00:00
Kyle Drake
4d7f9da286 hacky fix to not show new followers on single event link 2023-07-07 10:15:01 -05:00
Kyle Drake
9fee42f99d fix up styling of tips on profile 2023-07-07 09:53:50 -05:00
Kyle Drake
6b6fcba12e remove extraneous text from tip 2023-07-07 09:17:00 -05:00
dependabot[bot]
3dff836eb3
Bump sanitize from 6.0.1 to 6.0.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 20:04:14 +00:00
Natalie Martin
c1f8427e77 Fix Mastodon Share
Fix two issues with the Mastodon share link. Mastodon was not given a
new line unlike all the other share links, so it was showing up right
next to Tumblr. Second, the code that generated query params seems to
have been copied from Tumblr or Facebook without properly testing it and
does not fill in the textbox correctly. Fix this so the prefilled "Toot"
matches what Twitter share would post.
2023-06-25 21:23:10 -07:00
Winterhuman
5b449dc8e1
Add AVIF images 2023-06-18 14:10:28 +00:00
Kyle Drake
dc33d70809 update to latest sequel/sequel_pg 2023-05-22 10:39:56 -05:00
Kyle Drake
2bd0d8d35b fix for global activity 2023-05-21 10:19:03 -05:00
Kyle Drake
10a6e1634f fix for api key generation 2023-05-11 15:55:30 -05:00
Kyle Drake
8b8791212c newest followers ordered by created date 2023-05-11 13:43:53 -05:00
Kyle Drake
d1f60254a6 add new followers from last month to site profiles 2023-05-11 13:23:22 -05:00
Kyle Drake
e908bab348 fix a very stupid events bug where missing period prevented additional filters for deleted, banned, etc 2023-05-07 10:50:37 -05:00
Kyle Drake
8bcd123206 cap number of displayed follows on profiles, add see more link 2023-05-05 17:26:20 -05:00
Kyle Drake
10f40c8f5c disable showing follows for now, getting incredibly spammy. will add feature to highlight follows soon 2023-05-05 16:25:02 -05:00
Kyle Drake
6a045685d0 bluesky did/handle integration 2023-05-01 16:17:50 -05:00
Andrew Shu
e901f599c2 Fix suggestions test being off by one sometimes
Delete the leftover Site model in an unrelated test
to fix the race condition
2023-04-30 17:55:09 -07:00
Kyle Drake
243eda9321 add resolveHandle to whitelist 2023-04-30 17:33:47 -05:00
Andrew Shu
beafd2daf8 Fix validating education class tag whitelist 2023-04-30 11:57:30 -07:00
Andrew Shu
7887553666 Fix dependencies installation on Vagrant 2023-04-30 08:21:19 -07:00
Kyle Drake
6925c21d2b Merge branch 'master' of github.com:neocities/neocities 2023-04-28 15:21:48 +00:00
Kyle Drake
454e4162ce near lossless for screenshots 2023-04-28 15:21:43 +00:00
Kyle Drake
5a77fcb519 switch to ajax call to disable mystery caching that's popped up for some reason 2023-04-28 10:19:57 -05:00
dependabot[bot]
acf54a0eb5
Bump sidekiq from 5.2.10 to 7.0.8
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 5.2.10 to 7.0.8.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v5.2.10...v7.0.8)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 20:28:37 +00:00
dependabot[bot]
6f108c43ee
Bump nokogiri from 1.13.10 to 1.14.3
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.10 to 1.14.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.10...v1.14.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 06:00:53 +00:00
aeiouaeiouaeiouaeiouaeiouaeiou
11301b3c21
Fix missing br and recheck sharing links 2023-04-02 11:20:47 +03:00
Kyle Drake
28ed2718ba fix for screenshot worker test 2023-03-28 16:07:31 -05:00
Kyle Drake
a0b3216ec8 fix for faq on old browser proxy 2023-03-28 21:02:59 +00:00
Kyle Drake
bb4aaba71b
Merge pull request #354 from joppiesaus/patch-1
Fix typo in custom_domain.erb
2023-03-28 15:58:59 -05:00
Kyle Drake
1e253c9f50
Merge pull request #374 from talklittle/vagrant-bionic
Upgrade Vagrant to bionic (was trusty)
2023-03-28 15:17:26 -05:00
Kyle Drake
8082944d68
Merge pull request #434 from aeiouaeiouaeiouaeiouaeiouaeiou/fix-github-actions
Fix failing dependencies installation on GitHub Actions CI
2023-03-28 15:16:02 -05:00
Kyle Drake
7213678739
Merge pull request #436 from jeremyredhead/tutorial-cleanup
Cleanup Tutorials page links
2023-03-28 15:15:16 -05:00
Kyle Drake
a471166673
Merge pull request #437 from jeremyredhead/share-btn-cleanup
Remove dead social networks from share button
2023-03-28 15:13:49 -05:00
Kyle Drake
7c2c972b3f
Update views/_share.erb
Co-authored-by: aeiouaeiouaeiouaeiouaeiouaeiou <aeioudev@outlook.com>
2023-03-28 15:13:33 -05:00
Kyle Drake
38a339f396
Merge pull request #432 from neocities/dependabot/bundler/sanitize-6.0.1
Bump sanitize from 6.0.0 to 6.0.1
2023-03-28 15:12:06 -05:00
dependabot[bot]
2bac0970d5
Bump sanitize from 6.0.0 to 6.0.1
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-28 20:11:50 +00:00
Kyle Drake
c8333350de
Merge pull request #443 from neocities/dependabot/bundler/activesupport-7.0.4.3
Bump activesupport from 7.0.4 to 7.0.4.3
2023-03-28 15:11:29 -05:00
Kyle Drake
c0b4b34c01
Merge pull request #444 from neocities/dependabot/bundler/rack-2.2.6.4
Bump rack from 2.2.4 to 2.2.6.4
2023-03-28 15:10:57 -05:00
Kyle Drake
3774d2cb4f add FAQ on how to use old browsers 2023-03-28 15:07:04 -05:00
dependabot[bot]
852c97a0b1
Bump rack from 2.2.4 to 2.2.6.4
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.4.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.4)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 14:29:34 +00:00
Kyle Drake
f109b416a0 add domain index, check uri on screenshots, set workers to system cpu core count 2023-03-22 13:37:18 +00:00
Kyle Drake
ea927551ef add gpg to ext list and editable pgp/gpg 2023-03-21 09:47:33 -05:00
dependabot[bot]
75cb539e56
Bump activesupport from 7.0.4 to 7.0.4.3
Bumps [activesupport](https://github.com/rails/rails) from 7.0.4 to 7.0.4.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.0.4.3/activesupport/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v7.0.4...v7.0.4.3)

---
updated-dependencies:
- dependency-name: activesupport
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-16 00:02:24 +00:00
j. redhead
86b1adeb9b
Remove dead social networks from share button 2023-02-05 09:06:15 -06:00
j. redhead
70a33ce4a5
HTTPS-ify tutorial links, remove dead CodePupil 2023-02-05 06:36:09 -06:00
aeiouaeiouaeiouaeiouaeiouaeiou
86c8f35bba
Fix failing dependencies installation on GitHub Actions CI 2023-02-05 00:08:17 +03:00
Kyle Drake
520413140d switch to webp, use png for screenshot returns and be done with the accursed rmagick forever 2023-01-21 09:39:31 -06:00
Kyle Drake
3eb858bb6f fixes for new html redirects 2023-01-17 19:07:03 -06:00
Kyle Drake
5fb1af2a8c switch to faster screenshot resizer lib 2023-01-17 19:04:06 -06:00
Kyle Drake
d9d129dcc5
Merge pull request #424 from neocities/dependabot/bundler/loofah-2.19.1
Bump loofah from 2.19.0 to 2.19.1
2022-12-28 09:15:42 -06:00
Kyle Drake
0993c58215
Merge pull request #423 from neocities/dependabot/bundler/nokogiri-1.13.10
Bump nokogiri from 1.13.9 to 1.13.10
2022-12-28 09:15:29 -06:00
Kyle Drake
ce2f032ce8 add missing file for test 2022-12-28 09:05:21 -06:00
Kyle Drake
9bb34424ff purge cache for stripped .html files 2022-12-15 10:21:55 -06:00
dependabot[bot]
52ff1d1df1
Bump loofah from 2.19.0 to 2.19.1
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.19.0...v2.19.1)

---
updated-dependencies:
- dependency-name: loofah
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-13 20:53:21 +00:00
dependabot[bot]
5a329836df
Bump nokogiri from 1.13.9 to 1.13.10
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.9 to 1.13.10.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.9...v1.13.10)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-08 04:33:15 +00:00
Kyle Drake
1d448f8cac add map ext for .css.map files 2022-12-07 14:14:07 -06:00
Kyle Drake
4239fe3843
Merge pull request #422 from neocities/dependabot/bundler/sinatra-3.0.4
Bump sinatra from 3.0.2 to 3.0.4
2022-12-03 16:35:09 -06:00
Kyle Drake
0b0a575394 delay on black box check 2022-12-03 22:34:33 +00:00
Kyle Drake
2be4fbbde8 Fix for banned ips update 2022-12-03 22:34:13 +00:00
dependabot[bot]
1651c66da9
Bump sinatra from 3.0.2 to 3.0.4
Bumps [sinatra](https://github.com/sinatra/sinatra) from 3.0.2 to 3.0.4.
- [Release notes](https://github.com/sinatra/sinatra/releases)
- [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinatra/sinatra/compare/v3.0.2...v3.0.4)

---
updated-dependencies:
- dependency-name: sinatra
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 21:47:54 +00:00
Kyle Drake
a2098a300e put canonical url link on all pages 2022-11-16 15:47:40 -06:00
Kyle Drake
74df720aea replace coveralls with coveralls_reborn 2022-11-12 14:55:01 -06:00
Kyle Drake
b8578059da try ubuntu 22.04 with github actions 2022-11-12 14:46:49 -06:00
Kyle Drake
73579a8a94 use ruby 3.1 with github actions 2022-11-12 14:44:24 -06:00
Kyle Drake
0d49ac2213 Merge branch 'talklittle-github-actions' 2022-11-12 13:52:06 -06:00
Kyle Drake
e1416fd40f Merge branch 'github-actions' of https://github.com/talklittle/neocities into talklittle-github-actions 2022-11-12 13:51:51 -06:00
Kyle Drake
e03923b1f1
Merge pull request #410 from dimdenGD/patch-1
Fix #405
2022-11-12 13:18:45 -06:00
Kyle Drake
fa7eceea52
Merge pull request #411 from dimdenGD/patch-2
Moving files to folder in Dashboard
2022-11-12 13:17:24 -06:00
Kyle Drake
d9e117bca5
Merge pull request #412 from dimdenGD/patch-3
Make SVGs editable
2022-11-12 13:16:05 -06:00
Kyle Drake
ca9b897d5f
Merge pull request #414 from dimdenGD/patch-4
Fix breaking editor
2022-11-12 13:15:47 -06:00
Kyle Drake
831752fdab
Merge pull request #415 from lime360/master
added ungird and vuepress to resources list
2022-11-12 13:14:52 -06:00
Kyle Drake
2e6281c07a
Merge pull request #417 from SgtPooki/patch-1
docs(readme): use github fork link
2022-11-12 13:14:06 -06:00
Kyle Drake
6ea07df6a8 fix site unblocking 2022-11-12 13:07:49 -06:00
Kyle Drake
b54b2a4818 fix when unicode is used for filename and dir 2022-11-07 11:15:17 -06:00
Kyle Drake
e9afe63695 downgrade to puma 5 to fix webdav implementation 2022-11-07 16:22:20 +00:00
Kyle Drake
7557c5b827 404 if missing site for RSS feed 2022-11-06 15:28:32 -06:00
Kyle Drake
9c6ed2d7c5 more fixes for tests 2022-11-06 14:06:36 -06:00
Kyle Drake
8052844640 update ACE html editor to latest 2022-11-06 11:11:50 -06:00
Kyle Drake
2f18163579 redis namespace get method changed 2022-11-06 16:45:03 +00:00
Kyle Drake
e7eb6d8a2d fix for gemfile, merge conflicts, test fixes for ruby 3 2022-11-05 12:46:43 -05:00
Russell Dempsey
3006486b22
docs(readme): use github fork link
The fork button at the top of github is https://github.com/OWNER/REPO/fork. 

Using this link makes it slightly easier for newer contributors to do the right thing
2022-09-29 11:40:22 -07:00
Kiril Misnikov
60b7180f97
added ungird and vuepress to resources list 2022-09-10 20:27:34 +03:00
dimden
66bbbbcf05
Fix breaking editor
Fixes #413
2022-08-24 16:55:22 +03:00
dimden
959c13b735
Make SVGs editable
Fix #387
2022-08-24 02:49:42 +03:00
dimden
57c0424d3c
Moving files to folder in Dashboard
Fixes #404
2022-08-24 02:27:49 +03:00
dimden
05fd84e9f5
Fix #405
Fixes #405
2022-08-23 22:25:37 +03:00
Kyle Drake
0da213c747 Merge branch 'master' of github.com:neocities/neocities 2022-08-10 14:32:34 -05:00
Kyle Drake
0ca1473d22 mostly finished port to ruby3 2022-08-10 14:31:36 -05:00
Kyle Drake
d56891e3ad Merge branch 'master' of github.com:neocities/neocities 2022-08-10 18:57:00 +00:00
Kyle Drake
fcdbf2f55c Fix hyphen on normal screenshot urls, remove dupe code 2022-08-10 18:56:01 +00:00
Kyle Drake
0cf4ae1700
Merge pull request #406 from lime360/patch-1
you forgot west hollywood kyle
2022-07-30 12:09:36 -05:00
Kiril Misnikov
5670ef1ad8
you forgot west hollywood kyle 2022-07-18 18:51:31 +03:00
Kyle Drake
7b27184131
Merge pull request #393 from neocities/dependabot/bundler/puma-5.6.4
Bump puma from 5.5.1 to 5.6.4
2022-06-22 18:33:17 -05:00
Kyle Drake
586739d4b6
Merge pull request #396 from neocities/dependabot/bundler/sinatra-2.2.0
Bump sinatra from 2.0.5 to 2.2.0
2022-06-22 18:33:09 -05:00
Kyle Drake
158d2453eb
Merge pull request #399 from neocities/dependabot/bundler/nokogiri-1.13.6
Bump nokogiri from 1.11.4 to 1.13.6
2022-06-22 18:33:00 -05:00
Kyle Drake
04de657035
Merge pull request #400 from neocities/dependabot/bundler/rack-2.2.3.1
Bump rack from 2.2.3 to 2.2.3.1
2022-06-22 18:32:50 -05:00
Kyle Drake
75f225fd88 prevent creation of empty path with rename 2022-06-22 18:29:58 -05:00
dependabot[bot]
4cf91506c6
Bump rack from 2.2.3 to 2.2.3.1
Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 16:44:44 +00:00
dependabot[bot]
0b7a05487d
Bump nokogiri from 1.11.4 to 1.13.6
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.4 to 1.13.6.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.4...v1.13.6)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-24 00:27:07 +00:00
Kyle Drake
671b29bc9f Little rearrangin 2022-05-10 00:21:44 +00:00
Kyle Drake
322201332f No session ban 2022-05-10 00:20:58 +00:00
Kyle Drake
08a29c8768 Reduce archives 2022-05-10 00:20:34 +00:00
Kyle Drake
558edb442e Checks to prevent follow abuse - fixes for redis proxy settings 2022-05-10 00:19:59 +00:00
Kyle Drake
f468b261dd No threading for the moment to address bugs, set CPU manually 2022-05-10 00:19:19 +00:00
Kyle Drake
e61de5b0d6 manual review for supporter violations 2022-05-10 00:18:16 +00:00
Kyle Drake
985a21d347 Revised how black box works 2022-05-10 00:17:43 +00:00
Kyle Drake
a9dd102383 fix press url 2022-05-05 12:30:02 -05:00
dependabot[bot]
d43fa67643
Bump sinatra from 2.0.5 to 2.2.0
Bumps [sinatra](https://github.com/sinatra/sinatra) from 2.0.5 to 2.2.0.
- [Release notes](https://github.com/sinatra/sinatra/releases)
- [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinatra/sinatra/compare/v2.0.5...v2.2.0)

---
updated-dependencies:
- dependency-name: sinatra
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 21:17:29 +00:00
dependabot[bot]
e049ccc1a2
Bump puma from 5.5.1 to 5.6.4
Bumps [puma](https://github.com/puma/puma) from 5.5.1 to 5.6.4.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.5.1...v5.6.4)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-30 21:56:51 +00:00
Kyle Drake
bc0addb27b replace recaptch with hcaptcha 2021-12-03 12:04:00 -06:00
Kyle Drake
6d87c80df1
Merge pull request #379 from neocities/dependabot/bundler/sidekiq-5.2.0
Bump sidekiq from 4.2.10 to 5.2.0
2021-11-10 14:27:19 -06:00
Kyle Drake
3741d39fa2
Merge pull request #380 from neocities/dependabot/bundler/puma-5.5.1
Bump puma from 5.4.0 to 5.5.1
2021-11-10 14:24:02 -06:00
Kyle Drake
0aff063af1 remove contact info from about, tired of getting company emails on personal addresses 2021-11-10 14:18:08 -06:00
dependabot[bot]
cb7611cd4b
Bump puma from 5.4.0 to 5.5.1
Bumps [puma](https://github.com/puma/puma) from 5.4.0 to 5.5.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.4.0...v5.5.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-12 17:54:54 +00:00
dependabot[bot]
96ed1b62b5
Bump sidekiq from 4.2.10 to 5.2.0
Bumps [sidekiq](https://github.com/mperham/sidekiq) from 4.2.10 to 5.2.0.
- [Release notes](https://github.com/mperham/sidekiq/releases)
- [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/mperham/sidekiq/compare/v4.2.10...v5.2.0)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 23:17:30 +00:00
Kyle Drake
f5613d2776 Fix for nonstandard file rename with supporter accounts 2021-09-09 17:51:47 -05:00
Kyle Drake
fea2ec55f9 update nokogiri and addressable 2021-09-08 16:16:43 -05:00
Kyle Drake
5570fc1300 update puma 2021-09-08 16:07:54 -05:00
Kyle Drake
a5af32d143 fix for if site is missing 2021-09-08 16:04:32 -05:00
Kyle Drake
6cfbf54560
Merge pull request #361 from haydenwalker980/patch-1
typo
2021-08-14 13:15:17 -05:00
Andrew Shu
ca1802758f Migrate from Travis CI to GitHub Actions 2021-08-12 19:45:25 -07:00
Andrew Shu
16205f9b82 Upgrade Vagrant to bionic (was trusty) 2021-08-12 18:50:22 -07:00
Hayden
2f2e79e9ef
typo 2021-03-11 15:47:04 -08:00
Kyle Drake
4b69ab232f add filecoin donation address 2021-02-16 15:53:13 -07:00
Kyle Drake
5cdd13c519 increase time for excluded actioning site id search 2021-02-15 13:22:13 -07:00
Kyle Drake
e9ff2ea633 update ace editor to 1.4.12 2021-02-08 17:59:39 -07:00
joppiesaus
6be83e4b17
Fix typo in custom_domain.erb 2021-01-13 22:26:41 +01:00
Kyle Drake
f33f661f08 clump logs into single hash before importing to database 2021-01-13 14:46:52 -06:00
Kyle Drake
4115ebffa7 speed up stats parsing 2021-01-12 23:04:00 -06:00
Kyle Drake
c1705f0c52 Move user delete check to front of screenshot worker 2020-12-12 16:59:07 +00:00
Kyle Drake
1260a856d5 dont take screenshots for deleted sites 2020-12-12 16:43:51 +00:00
Kyle Drake
234df04300 update gemfile lock 2020-11-26 01:45:34 -06:00
Kyle Drake
2821f513f1 fixes for hcaptcha, add to dmca form 2020-11-26 01:45:23 -06:00
Kyle Drake
79cdd06b19 testing hcaptcha for contact form 2020-11-25 18:54:04 -06:00
Kyle Drake
a2a46d406e async black box 2020-11-24 01:11:38 -06:00
Kyle Drake
e4c580564b site: dont update domain for blank record 2020-11-20 21:36:43 -06:00
Kyle Drake
a55a00f5c3 api key index 2020-11-18 22:00:09 -06:00
Kyle Drake
1d76a0c45d fix for new screenshot url config 2020-11-17 11:11:09 -06:00
Waldir Pimenta
0ec3a9a1b2
Fix message for unsupported file types 2020-09-30 19:13:18 +01:00
Kyle Drake
25d0110ad9
Merge pull request #344 from mr-winson/patch-1
Add Bulma.io to list of CSS frameworks
2020-08-12 10:09:25 -05:00
Jude Wilson
61534c249e
Add Bulma.io to list of CSS frameworks
Not necessarily the most important thing but it is nice for new coders to see al options. Bulma has gotten bigger as well.
2020-08-12 03:06:35 -04:00
Kyle Drake
510cc9fcd9 update json gem to resolve security issue 2020-08-03 19:40:33 +00:00
Kyle Drake
0ec1c20f56 blacklist -> blocklist for disposable emails 2020-08-03 19:38:30 +00:00
Kyle Drake
1a04ea2961 update gems to patch security issues 2020-06-18 21:35:09 -07:00
Kyle Drake
7e7f6fa072 image_optim_pack binary fix 2020-06-18 21:27:20 -07:00
Kyle Drake
d91c196d69 Fix clamav exception messages 2020-06-18 21:26:01 -07:00
Kyle Drake
0eba98bffd split out code to dedupe tags 2020-05-26 22:48:24 -07:00
Kyle Drake
f32ef0a292
Merge pull request #339 from neocities/dependabot/bundler/activesupport-6.0.3.1
Bump activesupport from 6.0.0 to 6.0.3.1
2020-05-26 21:04:31 -07:00
Kyle Drake
2d33f99d31
Merge pull request #338 from neocities/dependabot/bundler/puma-4.3.5
Bump puma from 4.3.3 to 4.3.5
2020-05-26 21:03:43 -07:00
Kyle Drake
4533214d71 thumbnailworker: reduce memory issues 2020-05-27 04:02:45 +00:00
dependabot[bot]
a4dd827584
Bump activesupport from 6.0.0 to 6.0.3.1
Bumps [activesupport](https://github.com/rails/rails) from 6.0.0 to 6.0.3.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v6.0.3.1/activesupport/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v6.0.0...v6.0.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-05-26 15:57:23 +00:00
dependabot[bot]
3b9e9c0e19
Bump puma from 4.3.3 to 4.3.5
Bumps [puma](https://github.com/puma/puma) from 4.3.3 to 4.3.5.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-05-22 15:14:01 +00:00
Kyle Drake
7b0df670fd missing filename escapes in flash messages 2020-05-07 01:16:17 -07:00
Kyle Drake
c6a83f8426 add ga_adgroupid column to sites 2020-05-05 14:40:52 -07:00
Kyle Drake
f2e0b1dba7 track where ga signups come from 2020-05-05 14:38:51 -07:00
Kyle Drake
d3dfdc850c update rmagick to latest 2020-05-03 23:40:14 -07:00
Kyle Drake
2656303458 fix for letsencrypt test conditional 2020-05-04 06:39:14 +00:00
Kyle Drake
a546c88bad Merge branch 'master' of github.com:neocities/neocities 2020-04-30 02:27:58 -07:00
Kyle Drake
478e133b05 truncate ext in dashboard to 4 chars 2020-04-30 02:27:52 -07:00
Kyle Drake
f225c7c336 Add supporter child sites to supporter list 2020-04-30 07:52:07 +00:00
Kyle Drake
9e5dbfa2c6 Merge branch 'master' of github.com:neocities/neocities 2020-04-30 07:45:53 +00:00
Kyle Drake
8b762bb786 catch clamav crashes and skip to avoid upload failure 2020-04-30 07:45:37 +00:00
Kyle Drake
3057eda4b0 ensure stats for supporter children are retained 2020-04-30 00:44:00 -07:00
Kyle Drake
10018c5124 Fixes for letsencrypt - please no more acme changes :( 2020-04-14 01:31:13 +00:00
Kyle Drake
4dfacac83a update letsencrypt worker to acmev2 2020-04-13 17:49:45 -07:00
Kyle Drake
5a3184f6fe Update stripe, acme-client gems 2020-04-13 17:46:07 -07:00
Kyle Drake
bf00086074 Flush cache for undeletes - dont show profile disabled site suggestions 2020-04-13 11:32:23 -07:00
Kyle Drake
dffba2a532 Add Q/A to FAQ 2020-04-13 11:29:53 -07:00
Kyle Drake
a7e458ffcc Add hard reload info to contact faq 2020-04-02 11:39:34 -07:00
Kyle Drake
1dcc11a1b5 bump puma version 2020-03-04 10:37:25 -05:00
Kyle Drake
e9b688e388 Update rake, hoe, disable over-verbose test warnings 2020-03-02 11:40:42 -05:00
Kyle Drake
f4d12b625a Move follow count to a weekly compute task due to bugs/abuse. *sigh* 2020-02-29 14:50:05 -05:00
Kyle Drake
50da1d37f5
Merge pull request #332 from neocities/dependabot/bundler/puma-4.3.2
Bump puma from 4.3.1 to 4.3.2
2020-02-29 14:12:39 -05:00
dependabot[bot]
8efb440285
Bump puma from 4.3.1 to 4.3.2
Bumps [puma](https://github.com/puma/puma) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v4.3.1...v4.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-02-29 18:38:17 +00:00
Kyle Drake
ee91f73039 update nokogiri 2020-02-29 13:04:18 -05:00
Kyle Drake
1073ed8c2a Don't show/count follows/followers for banned/deleted/disabled profile sites 2020-02-28 21:55:43 -05:00
Kyle Drake
38f55a8ec0 Remove untracked stats from CSV export 2020-02-17 11:06:24 -08:00
Kyle Drake
440935fb76 fix title for bitcoin supporter page 2020-02-17 10:59:53 -08:00
Kyle Drake
a9e49d7cdd Rake to dump list of screenshots for future ML research 2020-02-01 21:18:58 -08:00
Kyle Drake
225bf84946 accessing site instance incorrectly 2020-01-31 07:17:51 +00:00
Kyle Drake
c8b748069c site: add final slash to file list 2020-01-31 07:02:37 +00:00
Kyle Drake
a385ae7d1f dashboard: fix old hack for removing root slash 2020-01-30 22:53:24 -08:00
Kyle Drake
406e475ecb Give puma 4 another try and hope issues are fixed 2020-01-27 19:22:49 -08:00
Kyle Drake
b2b38b90b9 Patch more missing thumbnail/screenshot change events, cache purges 2020-01-27 18:56:43 -08:00
Kyle Drake
2055ddc78b Fix for missing slash for editing files in dashboard 2020-01-27 22:33:29 +00:00
Kyle Drake
ff696d3231 DRY thumbnail/screenshot generation 2020-01-27 14:12:30 -08:00
Kyle Drake
780c093dd6 Move screenshots/thumbs when renaming user.
Also DRY up a bit, remove some old code. Fix an extra path slash, and fix screenshot display in dashboard.
2020-01-27 01:53:54 -08:00
Kyle Drake
9f7bbe16e7 show entire list of allowed file extensions 2020-01-27 01:27:32 -08:00
Kyle Drake
00f79c8019 clarify recommendation of no hotlinking on neocities 2020-01-27 01:26:33 -08:00
Kyle Drake
368d000551 Update tests for screenshot worker url array 2020-01-27 01:22:57 -08:00
Kyle Drake
eb519d0bbf Array for screenshot worker, catch exceptions 2020-01-27 08:13:23 +00:00
Kyle Drake
027dfb52ef Don't load info/stats pages for banned/deleted sites 2020-01-18 17:04:06 -08:00
Kyle Drake
0afe4f6df3 method for unbanning 2019-12-18 20:58:59 -08:00
Kyle Drake
82462b2461 whitelisting for blackbox 2019-12-18 20:43:04 -08:00
Kyle Drake
675a182b89
Merge pull request #325 from neocities/dependabot/bundler/rack-2.0.8
Bump rack from 2.0.7 to 2.0.8
2019-12-18 19:21:01 -08:00
dependabot[bot]
767ee1591e
Bump rack from 2.0.7 to 2.0.8
Bumps [rack](https://github.com/rack/rack) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.0.7...2.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-19 03:18:46 +00:00
Kyle Drake
a228994de3
Merge pull request #324 from neocities/dependabot/bundler/puma-3.12.2
Bump puma from 3.12.1 to 3.12.2
2019-12-18 19:18:17 -08:00
dependabot[bot]
dbf91a1af0
Bump puma from 3.12.1 to 3.12.2
Bumps [puma](https://github.com/puma/puma) from 3.12.1 to 3.12.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v3.12.1...v3.12.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-06 02:33:28 +00:00
Kyle Drake
f84e5a67c9 new donation link 2019-11-30 18:52:56 -08:00
Kyle Drake
42561ac41b add maxmind-db gem 2019-11-30 00:37:17 -08:00
Kyle Drake
32e1d474a0 Merge branch 'master' of github.com:neocities/neocities 2019-11-16 11:03:51 -08:00
Kyle Drake
d827d34f04 add latest ace editor (1.4.7) 2019-11-16 11:03:43 -08:00
Kyle Drake
606215b799
Merge pull request #322 from neocities/dependabot/bundler/loofah-2.3.1
Bump loofah from 2.2.3 to 2.3.1
2019-11-16 10:42:03 -08:00
dependabot[bot]
c1afa24574
Bump loofah from 2.2.3 to 2.3.1
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.2.3 to 2.3.1.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.2.3...v2.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-08 17:35:40 +00:00
Kyle Drake
525065e2f0 make follows use overwritten dataset 2019-11-03 19:00:33 -08:00
Kyle Drake
c4995ce262 order follows by score 2019-10-30 14:04:33 -07:00
Kyle Drake
e26e23b439 order follows 2019-10-30 13:58:38 -07:00
Kyle Drake
72ac64802e patch missing screenshot thumbnails for followers 2019-10-30 13:43:23 -07:00
Kyle Drake
16673f0111 index for suggestions, only load when needed 2019-10-30 13:18:10 -07:00
Kyle Drake
ae3df1d0f9 fix for svg 2019-10-29 11:30:19 -07:00
Kyle Drake
da391d059a update skeuocard to use davidsiaw branch 2019-10-24 12:41:06 -07:00
Kyle Drake
9c2fb8d7b2 set referrer policy for layout 2019-10-23 03:07:59 -07:00
Kyle Drake
5cfb849554 always use parent site for paypal supporter data 2019-10-18 22:15:06 -07:00
Kyle Drake
b949154df0 sitemap: off by one like a boss 2019-10-10 14:57:46 -07:00
Kyle Drake
8070b8dd61 sitemap.xml.gz -> index.xml.gz 2019-10-10 10:47:03 +00:00
Kyle Drake
66868a352b sitmap: remove index- prefixes 2019-10-10 03:37:09 -07:00
Kyle Drake
40f068f7e0 robots.txt with new sitemap root 2019-10-10 03:23:45 -07:00
Kyle Drake
54ba54c936 sitemap: refactor for easier digesting 2019-10-10 03:21:51 -07:00
Kyle Drake
7e7548f4d9 direct link to sharded site sitemaps 2019-10-09 16:22:56 -07:00
Kyle Drake
d6d0d983a1 no changefreq for sitemaps 2019-10-09 15:54:24 -07:00
Kyle Drake
6957305fc0 sitemap: gzip everything 2019-10-09 15:34:07 -07:00
Kyle Drake
f84290f8f4 sitemap: improvements, fixes, add tags 2019-10-09 15:13:42 -07:00
Kyle Drake
86df307d5f Remove unneccessary test 2019-10-09 14:57:12 -07:00
Kyle Drake
8875d75a9f Fix bug where popular tags cache applies to all limits 2019-10-09 14:09:11 -07:00
Kyle Drake
6113eb2d48 sitemap: remove url with different domain we cant control 2019-10-08 21:22:29 -07:00
Kyle Drake
8c24b9831c sitemap gen index missing a char 2019-10-08 21:15:08 -07:00
Kyle Drake
6d74434e9a list of base site links 2019-10-08 20:56:49 -07:00
Kyle Drake
116954a592 sitemap generation 2019-10-08 20:50:32 -07:00
Kyle Drake
4d27f625f1 DRY up file uri / index stuff a bit 2019-10-07 15:39:25 -07:00
Kyle Drake
18041d4d28 Merge branch 'master' of github.com:neocities/neocities 2019-10-07 07:21:24 +00:00
Kyle Drake
00cd44878a update site changed once rather than inline - edge case where change boolean is overwritten by update with old data 2019-10-07 00:20:58 -07:00
Kyle Drake
0444461b2e dont attach path if undefined 2019-10-07 00:10:30 -07:00
Kyle Drake
895d059942 scrub file path 2019-10-07 00:10:11 -07:00
Kyle Drake
3ef953be62 Back to puma 3 to deal with socket issues 2019-10-06 23:52:40 +00:00
Kyle Drake
013086d3bc Add two mime types for email text and ttf fonts 2019-09-27 13:52:02 -07:00
Kyle Drake
10155986d8 add email text mime type 2019-09-23 22:31:57 -07:00
Kyle Drake
904e773d16 clean up some old gunk 2019-09-21 02:17:13 -07:00
Kyle Drake
a191da9f84 try to prevent failure when fill is too slow 2019-09-21 01:52:01 -07:00
Kyle Drake
ea187e8675 remove poltergeist gem, no longer used 2019-09-21 01:26:42 -07:00
Kyle Drake
69c32d17ed Update gems, modernize test stack, fix flaky tests 2019-09-21 01:19:47 -07:00
Kyle Drake
e223b687b2 index/404 pages scale for mobile devices 2019-09-19 18:46:50 -07:00
Kyle Drake
6a5a7c8e3b Merge branch 'master' of github.com:neocities/neocities 2019-09-19 18:46:16 -07:00
Kyle Drake
b966321282 patch bug where dir create didn't scrub path in db entry 2019-09-19 18:45:45 -07:00
Kyle Drake
58a09f0bd9 properly remove old test files 2019-09-19 18:45:00 -07:00
Kyle Drake
28690fbe8a Merge branch 'master' of github.com:neocities/neocities 2019-09-20 01:39:55 +00:00
Kyle Drake
f496613c41 Set to lower thread pool size to handle heavy load better 2019-09-20 01:39:33 +00:00
Kyle Drake
9fd31c744d
Merge pull request #314 from vince94/master
Improve the Bad Dudes image
2019-09-11 20:33:35 -07:00
vince94
4840e1d8d1
Improve the Bad Dudes image
Shoutouts to https://deathgenerator.com/#baddudes
2019-09-11 15:09:52 -04:00
Kyle Drake
24c2d7d3d3 fix typo 2019-09-03 01:17:25 -07:00
Kyle Drake
c5bdb00c13 latest puma 2019-09-03 00:18:20 -07:00
Kyle Drake
1e1a7f25cc update nokogiri 2019-09-03 00:18:00 -07:00
Kyle Drake
69ba17d081 update dav4rack, tempblock some methods until we can cover them properly 2019-09-03 00:16:41 -07:00
Kyle Drake
71534eda41 fix followers text 2019-07-02 16:40:17 -07:00
Kyle Drake
e183ac32f6 dumper task for ml image classification work 2019-07-02 13:46:39 -07:00
Kyle Drake
7fd75170e2 Merge branch 'master' of github.com:neocities/neocities 2019-07-01 11:21:57 -07:00
Kyle Drake
19ae045c7d bump gems 2019-07-01 11:21:06 -07:00
Kyle Drake
aa1ea29a89 whitelist chromedriver download incase we use future selenium driver for capybara 2019-07-01 11:19:03 -07:00
Kyle Drake
69a0b90930 Clearer follower desc 2019-06-30 19:28:19 -07:00
Kyle Drake
99956d762a
Merge pull request #295 from valtron/api-list-hash
api: include file sha1 hash in /api/list (#252)
2019-06-30 19:15:13 -07:00
Kyle Drake
44ef76dcb6
Merge pull request #299 from fmartingr/fmartingr/webdav-docs
Updated WebDAV documentation
2019-06-30 19:06:31 -07:00
Kyle Drake
92047adcdb
Merge pull request #300 from fmartingr/fmartingr/vagrant-little-details
Added two little details to Vagrant environment
2019-06-30 19:04:49 -07:00
Kyle Drake
2864514933 fix admin display for browse 2019-06-30 14:50:38 -07:00
Kyle Drake
ed5f646cdd Remove tests I can't for the life of me get to work 2019-06-30 14:49:50 -07:00
Kyle Drake
e1c4440612
Merge pull request #309 from joppiesaus/commentsizelimitfix
Fix being able to comment more than size limit
2019-06-30 12:51:01 -07:00
joppiesaus
cba3e827db Fix being able to comment more than size limit 2019-06-30 21:13:50 +02:00
Kyle Drake
a37e908b5e no tag editing on home screen, only on profile 2019-06-28 15:47:41 -07:00
Kyle Drake
0b14ff9d68 fix for tag error message, clean up dialog 2019-06-28 15:43:36 -07:00
Kyle Drake
0bb6774473 add some rss-related file types to whitelist 2019-06-28 15:16:29 -07:00
Kyle Drake
c5d0194946 fix for profile comment editing 2019-06-28 15:08:22 -07:00
Kyle Drake
54a27a23ed fix for when former credit card supporter switches to paypal after 2019-06-28 22:07:49 +00:00
Kyle Drake
880f70477b use total follow count for home and stats page 2019-06-28 12:24:56 -07:00
Kyle Drake
ee94e4e540 some minor bundle updates (and puma 4) 2019-06-28 06:01:19 +00:00
Kyle Drake
f647daa87e Merge branch 'master' of github.com:neocities/neocities 2019-06-27 21:53:52 -07:00
Kyle Drake
bd23c94b65 new approach: compute score separately from real follower count, use db cache for score rather than total 2019-06-27 21:53:44 -07:00
Kyle Drake
a5b71c4396 Only show follow button if you can follow 2019-06-24 20:53:07 -07:00
Kyle Drake
7a50bed7d3 Dont allow following of own sites 2019-06-24 20:52:43 -07:00
Kyle Drake
9e5d8d044f Typo fix 2019-05-03 12:36:50 -07:00
Kyle Drake
fc096f155d
Update README.md with link to support contact 2019-05-03 11:23:52 -07:00
Kyle Drake
d681687a38 coupla quick links for webgl 2019-04-24 10:18:18 -07:00
Felipe Martin
daff8628f9
Updated macOS webdav support page 2019-03-11 21:55:07 +01:00
Felipe Martin
10b9b0c9a0
Updated README 2019-03-11 21:46:57 +01:00
Felipe Martin
16f7e90938
Updated provision script with auto cd and blacklist creation 2019-03-11 21:46:34 +01:00
Felipe Martin
449e16e099
Updated WebDAV documentation 2019-03-11 21:26:07 +01:00
Kyle Drake
ef1f448a40 Merge branch 'site_file_rename' 2019-02-26 09:38:14 -08:00
Kyle Drake
2c5ef5195b fix for uploads with multiple directorys and same filenames 2019-02-14 09:47:31 -08:00
Kyle Drake
da3036c03d use different icon for file rename 2019-02-14 07:54:53 -08:00
Kyle Drake
26aa62fcae scrub carriage return garbage 2019-02-13 22:45:28 -08:00
Kyle Drake
f8697e50a6 updates to tutorial 2019-02-11 21:24:29 -08:00
Kyle Drake
e278a1cefe Prevent controller from sending huge zipball 2019-02-11 01:32:36 -08:00
Kyle Drake
0231cca30f Don't allow tarballs of enormous sites 2019-02-11 01:28:33 -08:00
Kyle Drake
6f7a6098a4 bugfixes and reforms to block filters 2019-02-03 21:54:01 -08:00
Kyle Drake
249ea7a2d0 Support for site file and directory renaming / moving 2019-02-03 05:05:47 -08:00
Kyle Drake
687a134207 add index for slow featured_at query 2019-01-26 22:45:29 +00:00
Kyle Drake
a2677bb930 clarify ipfs support, add missing titles for pages 2019-01-26 14:44:23 -08:00
valtron
8d0e339f72 api: include file sha1 hash in /api/list (#252) 2019-01-23 18:07:17 -07:00
Kyle Drake
556bc9d2be add more stuff to tmp turd list 2019-01-23 11:11:04 +00:00
Kyle Drake
75172f054d reduce front page stats font size 2019-01-23 00:43:52 -08:00
Kyle Drake
54ab148236 ajaxify some admin controls 2019-01-20 04:14:59 -08:00
Kyle Drake
1fa8aa3a74 try to make capybara wait for a page load to continue running 2019-01-20 00:35:50 -08:00
Kyle Drake
2eab561a28 change source to card for stripe customer create which changed at some point apparently 2019-01-19 23:57:14 -08:00
Kyle Drake
830d5cb713 install bundler before install on travis 2019-01-19 23:29:50 -08:00
Kyle Drake
9581f5ad12 update travis to run ruby 2.6.0 2019-01-19 23:25:13 -08:00
Kyle Drake
9606c951b6 silence money gem warnings 2019-01-19 23:11:14 -08:00
Kyle Drake
8e7a6bff33 check for explicit true value of ipfs_archiving_enabled 2019-01-19 12:16:52 +00:00
Kyle Drake
5598d0a852 10 ipfs archives per site 2019-01-19 12:10:03 +00:00
Kyle Drake
0ba71bc1b6 use https link for stopforumspam 2019-01-19 12:09:49 +00:00
Kyle Drake
8b0d396565 Refactor IPFS archiving to support cidv1-base32 2019-01-19 03:36:07 -08:00
Kyle Drake
9b8d7747b8 fix merge conflict 2019-01-19 03:35:57 -08:00
Kyle Drake
590d2bdd49 New version of webmock to fix error with ruby 2.6 2019-01-19 03:34:54 -08:00
Kyle Drake
e81d3fed40 Fix merge conflict 2019-01-19 03:34:00 -08:00
Kyle Drake
b2e1c8bb61 fix for the broken stripe mock in test 2019-01-19 03:03:00 -08:00
Kyle Drake
0b5b07aad4 Remove extra slash for screenshot url 2019-01-19 03:03:00 -08:00
Kyle Drake
8576d954b0 ignore banned email domains list 2018-12-20 05:08:45 +00:00
Kyle Drake
706c9a19ec Move puma back to multi-threaded mode 2018-12-20 05:07:25 +00:00
Kyle Drake
a733a3b742 Fix for blocked ip update script 2018-12-20 05:07:07 +00:00
Kyle Drake
ee3516829f Move back to older version of acme-client 2018-12-11 07:54:03 +00:00
Kyle Drake
e760f87bfb Merge branch 'master' of github.com:neocities/neocities 2018-12-10 07:36:46 +00:00
Kyle Drake
9399bebee7 temp disable archive button, cleanups for new gems 2018-12-10 07:36:22 +00:00
Kyle Drake
2feeb933cb update gems 2018-12-09 23:34:55 -08:00
Kyle Drake
c6140531ee cocaine gem renamed to terrapin 2018-12-09 23:33:00 -08:00
Kyle Drake
81d8c09c18 use rubygems stripe gem for now 2018-12-02 00:15:55 -08:00
Kyle Drake
4cf7aee08d update gems to latest 2018-12-02 00:15:01 -08:00
Kyle Drake
b250b19bbb fix stat tests 2018-12-02 00:14:34 -08:00
Kyle Drake
63d3c89cd3 update stripe gems 2018-12-01 22:44:55 -08:00
Kyle Drake
af0c65e94f knowl file support 2018-10-06 18:14:33 -07:00
Kyle Drake
3370ef59d1 gettin weird fam 2018-09-23 17:21:31 -07:00
Kyle Drake
7eee6a084c add canadian flag to php link 2018-09-23 17:13:04 -07:00
Kyle Drake
a310b91ab3 add link to PHP library in API 2018-09-23 17:10:36 -07:00
Kyle Drake
6f46060c9b work with gzipped logfiles 2018-09-19 17:47:51 -07:00
Kyle Drake
0d4ebf42ac include new /24 for paypal notify hook ip sources 2018-09-03 12:51:13 -07:00
Kyle Drake
62df9c47e9 zero or more for banned email domain match 2018-06-25 18:19:49 -07:00
Kyle Drake
52fb279fed parent site for card change 2018-06-18 14:56:40 -07:00
Kyle Drake
73607a5dfc dont require validation for card update 2018-06-18 13:22:53 -07:00
Kyle Drake
966e5106e8 ugprade to sinatra 2.0.3 2018-06-14 12:02:50 -07:00
Kyle Drake
a8d64e0af5 add banned email blacklist 2018-06-10 17:54:35 -07:00
Kyle Drake
951e66861e check for site owner instead of crashing on missing current_site 2018-05-22 22:06:16 -07:00
Kyle Drake
1afb5da0bb fix and improve stats, including CSV export 2018-05-22 18:59:02 -07:00
Kyle Drake
24e458d368
Merge pull request #258 from Retroity/master
Remove Mention of Underscores in Signup Dialog
2018-04-13 15:47:00 -07:00
Kyle Drake
11b99598b4 update some gems to fix security bugs 2018-03-23 13:28:28 -07:00
Kyle Drake
a5d331082c add webmanifest to ext whitelist 2018-03-23 13:07:40 -07:00
Kyle Drake
e235090108 add bin for gltf support, lowercase gltf 2018-03-16 19:21:56 -07:00
Kyle Drake
83acf308e1 add safety check for which site to save to to make sure user hasn't switched users in another tab 2018-03-02 23:20:46 -08:00
Kyle Drake
2c4972d89c update sinatra to 2.0.1 2018-02-21 09:37:55 -08:00
Kyle Drake
dae2466487 switch to captcha v2 api 2018-02-21 09:29:00 -08:00
Kyle Drake
7b0c26c1c2 link to privacy policy from terms page 2018-02-11 20:57:32 -08:00
Kyle Drake
5526cef426 add ref to curl page for AJ 2018-02-11 20:46:29 -08:00
Kyle Drake
0a94093fe6 Add neocities-python to the API library list, add note about CLI 2018-02-11 20:35:48 -08:00
Kyle Drake
693c07914e Run second lets encrypt update later to try to fix missing www CNAME issues 2018-02-10 07:37:43 -08:00
Kyle Drake
e89f5d7092 remove old redis proxy domain records on site delete 2017-12-27 12:41:22 -08:00
Kyle Drake
3aea4e8333 add email and lower(email) sites index 2017-12-08 22:27:34 -08:00
Kyle Drake
86e188f29f Merge branch 'master' of github.com:neocities/neocities 2017-12-08 22:19:29 -08:00
Kyle Drake
a99e3cc330 if site path doesn't exist during a destroy, continue with destroy anyways 2017-12-08 22:19:04 -08:00
Kyle Drake
d467e9be96 Force case insensitivity for new emails, existing.
There is a legacy bug I just caught, where many accounts would have the
same email but then have different casing. In extreme scenarios, this
would lead to them creating a new user with the same email, or having
issues with password reset and username lookup.

This doesn't merge in the existing duplicates, but makes sure to only
allow insensitive lowercase emails from here on out. It also will check
for emails in a case insensitive way for such things as resets and
logins if the sensitive lookup doesn't work.

The implementation was not wrong per se - email is supposed to be case sensitive
for usernames. But of course, nobody (nor do most/all email servers) treat
them that way, leading to confusion situations where the user sometimes
camelcases their email and then switches to lowercase later.
2017-12-08 22:13:27 -08:00
Kyle Drake
33054a8298 Update gems, remove simplecov/coveralls to prevent crashing issue 2017-12-08 22:08:50 -08:00
Kyle Drake
15230c5622 missing beginning strong element 2017-11-28 17:45:32 -08:00
Kyle Drake
532830697a improve documentation of custom domain adding 2017-11-28 17:43:50 -08:00
Retroity
209f032d0b Removed Mention of Underscores in Signup Dialog
Underscores are not allowed in usernames, so they shouldn't be mentioned as allowed.
2017-10-18 10:22:35 -05:00
Kyle Drake
e476d649ea Merge branch 'master' of github.com:neocities/neocities 2017-10-15 11:26:50 -07:00
Kyle Drake
9d3b86302d clean up tests to reflect new purging code 2017-10-15 11:26:42 -07:00
Kyle Drake
203d6ecb47 Merge branch 'master' of github.com:neocities/neocities 2017-10-15 10:43:28 -07:00
Kyle Drake
2f7f5a5467 fixes for ipfs archiving 2017-10-15 10:43:26 -07:00
Kyle Drake
d0936bce67 epub, gltf whitelist 2017-10-15 10:41:57 -07:00
Kyle Drake
115580a18d Add new press references 2017-10-11 15:10:14 -07:00
Kyle Drake
9d33464ef0 Don't show edu sites in regular browse 2017-10-10 12:09:11 -07:00
Kyle Drake
c24d1d73bd Fix for links back from deep nested directories 2017-10-10 06:32:33 -07:00
Kyle Drake
6c9267d791 Migration and template for email invoice 2017-10-04 20:29:15 -07:00
Kyle Drake
68352e3d8f Email invoice support 2017-10-04 20:27:24 -07:00
Kyle Drake
ea760fc849 migrations for future (possible) github integration 2017-09-27 20:46:30 -07:00
Kyle Drake
8405cb5067 Fix for extra space underline 2017-09-09 16:15:44 -07:00
Kyle Drake
0c75d5cda5 ability to donate with altcoins 2017-08-08 13:59:32 -07:00
Kyle Drake
99ca2591c7 fix for cache purge of index.. use purge for delete_cache 2017-08-08 13:31:53 -07:00
Kyle Drake
b3a5b2d860 directly use PurgeCacheWorker now 2017-08-01 18:06:51 -07:00
Kyle Drake
f8db008a0d revert css change, it caused editor overflow 2017-08-01 18:06:00 -07:00
Kyle Drake
d96aaeba5a fix for long filenames in editor bleeding out buttons 2017-08-01 14:48:01 -07:00
Kyle Drake
35d93f5755 delete -> purge hotfix 2017-07-25 13:18:23 -07:00
Kyle Drake
0f0ce3d047 Merge branch 'master' of github.com:neocities/neocities 2017-07-25 12:41:22 -07:00
Kyle Drake
0c54347d4d add proxy dnslink adder 2017-07-24 23:10:10 -07:00
Kyle Drake
1a563e8aee shut down http-based purging 2017-07-23 16:03:21 -07:00
Kyle Drake
99cd5d1ab8 archives: fix for title being set before not found check 2017-07-23 14:21:30 -07:00
Kyle Drake
fcb2da9166 Merge branch 'master' of github.com:neocities/neocities 2017-07-23 11:53:06 -07:00
Kyle Drake
b3b30d1b58 add www records for redis 2017-07-23 11:52:59 -07:00
Kyle Drake
49d8732459 remove debug puts 2017-07-23 11:15:11 -07:00
Kyle Drake
b1ec65ac14 fix obsolete limit! call 2017-07-23 11:12:32 -07:00
Kyle Drake
dbc47f0586 key renamed to path 2017-07-23 11:10:10 -07:00
Kyle Drake
bdee6500ee hybridize the cache purging for transistion 2017-07-23 11:09:29 -07:00
Kyle Drake
a8a2462e05 new redis data structure for proxy data 2017-07-22 11:15:12 -07:00
Kyle Drake
bb3354b09d updates to distributed web info copy 2017-07-20 14:16:24 -07:00
Kyle Drake
d2d1f730d6 archiving controls migration 2017-07-20 13:44:35 -07:00
Kyle Drake
1002aa01f7 ipfs: archive every 10 minutes, allow disabling, make archives public 2017-07-20 13:42:30 -07:00
Kyle Drake
f82cbad73e Title for site IPFS archives 2017-07-19 21:50:24 -07:00
Kyle Drake
bd45dfdab6 fix deleted comments not being hidden 2017-07-12 09:16:40 -07:00
Kyle Drake
de669d86cb Updates to legal copy 2017-07-10 11:48:20 -07:00
Kyle Drake
4822a9d14b Updates to donate copy 2017-07-10 11:48:12 -07:00
Kyle Drake
f293122004 fix for signup captcha check when internet is not available 2017-07-10 10:07:21 -07:00
Kyle Drake
2b56391f8f Fix spooky error where actioning sites are nil 2017-07-10 09:55:22 -07:00
Kyle Drake
90c89318bc Fix for when there are no entries yet during tests 2017-07-10 09:54:59 -07:00
Kyle Drake
b3838f2976 404 the surf page for now 2017-07-10 09:17:38 -07:00
Kyle Drake
29d65b4d16 ensure that zip tmpfile gets deleted on error 2017-07-10 09:09:14 -07:00
Kyle Drake
ce21e9a519 disable mockups 2017-07-10 09:06:33 -07:00
Kyle Drake
3f57e452ca fix site create bug 2017-07-08 02:25:11 -07:00
Kyle Drake
45834176c1 remove scrypt, update ext gems, fix legal info doc 2017-07-07 14:05:00 -07:00
Kyle Drake
3da57195c6 factor in email support costs 2017-07-07 13:20:20 -07:00
Kyle Drake
742e762baf update prices for AWS/GCS difference (fucking yikes) 2017-07-07 13:15:32 -07:00
Kyle Drake
5b81b5fc97 raise supporter space to 50GB, BW to 3TB. Compare cleanups 2017-07-07 13:05:43 -07:00
Kyle Drake
7b068b0872 remove trump plan 2017-07-07 10:51:14 -07:00
Kyle Drake
3ff6f420a4 Merge branch 'refactorpubsubupdate' 2017-07-06 10:29:09 -07:00
Kyle Drake
d559dc8b99 fix issue where unstripped title is displayed in browse 2017-07-06 10:26:45 -07:00
Kyle Drake
34ac611d9b Refactor redis proxy storage 2017-07-06 10:24:14 -07:00
Kyle Drake
0bd8557620 use stored value for domain names, not idn translation version 2017-06-29 12:01:08 -07:00
Kyle Drake
bf2fec7cf9 rakefile task to prime redis proxy ssl 2017-06-29 11:17:24 -07:00
Kyle Drake
50b32257df Fix for archive logging 2017-06-29 11:13:36 -07:00
Kyle Drake
0adc6d65fd Fixes for not saving keys/certs when refreshed 2017-06-29 11:12:39 -07:00
Kyle Drake
8d5a1c0561 Merge remote-tracking branch 'origin/newproxypubsub' 2017-06-28 13:02:33 -07:00
Kyle Drake
6798d31e0f init for redis proxy db 2017-06-28 13:01:38 -07:00
Kyle Drake
e7d03ce613 store crt/key in der format in redis record when changed 2017-06-28 13:01:11 -07:00
Kyle Drake
291cec71a3 Add catbus-index image 2017-06-23 13:44:42 -07:00
Kyle Drake
49ca4c4614 index: cat bus for donations tab 2017-06-23 13:43:53 -07:00
Kyle Drake
4a33f3f9d3 Add hit/view/update stats to Neocities front page 2017-06-23 10:25:20 -07:00
Kyle Drake
ffb67cd3a8 site archiving: update timestamp when ipfs hash already exists 2017-06-16 23:04:52 -07:00
Kyle Drake
5c2f56e0b6 support for multiple cache purge ips in stats parsing 2017-06-16 22:21:58 -07:00
Kyle Drake
b80c4a98a2 Merge branch 'master' of github.com:neocities/neocities 2017-06-16 22:10:20 -07:00
Kyle Drake
5728d6ff7f set minimum views to 10k for browse followers 2017-06-16 22:10:11 -07:00
Kyle Drake
9c693acc00 missing slash after sharding dir 2017-06-16 14:35:13 -07:00
Kyle Drake
77870927ac add sharding dir in archiver code 2017-06-16 14:32:17 -07:00
Kyle Drake
56bd469bcd browse: switch to eye for views/hits stats 2017-06-16 00:47:29 -07:00
Kyle Drake
43e6098b19 browse: hide site view stats on mobile 2017-06-16 00:27:55 -07:00
Kyle Drake
9989e00f6d reduce activity updates to 500 for now (pending optimizations) 2017-06-15 23:50:21 -07:00
Kyle Drake
92ed88cd9b experimenting with a new global activity feed 2017-06-15 23:44:36 -07:00
Kyle Drake
b66ecd5811 Minor copy updates to index 2017-06-15 23:42:42 -07:00
Kyle Drake
a9c6ec8edb add migration for site profile enabled flag 2017-06-14 14:00:14 -07:00
Kyle Drake
83756af770 add ability to disable site profile 2017-06-14 13:58:58 -07:00
Kyle Drake
31c7b7637a cleanup of meta_robots method 2017-06-14 12:35:03 -07:00
Kyle Drake
547e174aa4 Add NOINDEX, FOLLOW to site profiles
Search engines are ranking profiles above the actual site, so we're
going to tell search engines not to index them.
2017-06-14 12:25:11 -07:00
Kyle Drake
023f03af15 Remove inner heart on supporter link, has zoom issues 2017-06-11 14:26:29 -07:00
Kyle Drake
86cc58af2d style fix for links on front page header 2017-06-11 14:14:18 -07:00
Kyle Drake
a086749881 more red for the red gods 2017-06-10 11:22:20 -07:00
Kyle Drake
3b5d4b50cb Merge branch 'cloudcompare' 2017-06-08 14:37:57 -07:00
Kyle Drake
c9ba1cf0f4 add ability to restore deleted sites 2017-06-03 23:43:05 -07:00
Kyle Drake
371f8ec465 comparison to gcs and aws prices 2017-06-03 18:08:35 -07:00
Kyle Drake
c4e307fcf1 Merge branch 'master' of github.com:neocities/neocities 2017-05-30 23:47:26 -07:00
Kyle Drake
d39beaa2f8 site profile display fixes for mobile 2017-05-30 23:47:21 -07:00
Kyle Drake
25c2242ee6 Merge pull request #245 from kambrium/patch-1
Add an entry for neocitiesd
2017-05-30 11:56:56 -07:00
Kyle Drake
b121261cc1 git hook info 2017-05-26 15:17:26 -07:00
Kyle Drake
19b325b278 add information on the Neocities CLI 2017-05-26 13:02:17 -07:00
Kyle Drake
e6deaa05b9 remove sandbox for banned/deleted sites 2017-05-24 12:06:45 -07:00
Kyle Drake
f73b6e5a75 proper fix for validation of username length issue 2017-05-23 13:04:34 -07:00
Kyle Drake
4b7bd4cdc5 cutoff date to May 23, username length max to 30, some code order cleaning 2017-05-23 12:47:58 -07:00
Kyle Drake
0212167b3e fix for username length spam 2017-05-23 12:39:11 -07:00
Kyle Drake
4d397df015 update gems, fix warning about must_equal nil test 2017-05-22 18:10:26 -07:00
Kyle Drake
8a4fcd3d44 Merge branch 'master' into upgrade 2017-05-22 17:39:56 -07:00
Kyle Drake
bf089379aa fixes for upload hash check, catch index.html delete scenario 2017-05-21 20:16:37 -07:00
Kyle Drake
61bf9012d6 dont set cookie for api calls 2017-05-21 20:12:47 -07:00
Kyle Drake
4a2926508e api: add upload_hash for checking file hash before uploading 2017-05-21 17:32:26 -05:00
Kyle Drake
7d17202f39 add WebDAV windows alt; restrict zipball downloads44444444 for large sites 2017-05-21 15:37:50 -05:00
kambrium
fa8737d809 Add an entry for neocitiesd
I've just created a library for Neocities in D. Maybe someone is interested in it.
2017-05-21 21:19:10 +02:00
Kyle Drake
cfef4bc9c9 use cache control ip from config 2017-05-13 23:21:42 -05:00
Kyle Drake
6e873a0778 add documentation for /api/key 2017-05-13 18:55:48 -05:00
Kyle Drake
9f8afbd18e ability to return api key from api using login 2017-05-13 18:31:51 -05:00
Kyle Drake
1274e9fa63 API key support 2017-05-13 18:18:34 -05:00
Kyle Drake
73ec613283 replace some http:// links with https:// 2017-05-10 22:41:13 -07:00
Kyle Drake
05711b6c7f Use https:// for password reset 2017-05-10 22:40:01 -07:00
Kyle Drake
31b864227a upgrades ruby gems, related fixes 2017-05-08 02:54:19 -07:00
Kyle Drake
282ae9e45d Instructions on how to disable site commenting / email notification 2017-05-07 00:25:37 -07:00
Kyle Drake
6038517c24 bump up screenshot quality a bit 2017-05-05 16:12:00 -07:00
Kyle Drake
0e3b6ee3a0 enforce disposable email policy on email verifications / changes 2017-05-05 16:02:03 -07:00
Kyle Drake
2e5cc9b243 Merge branch 'master' of github.com:neocities/neocities 2017-05-05 14:30:31 -07:00
Kyle Drake
d2fc7a3a16 Disable v6 check for trumpplan, tempfix for purge cache, uncomment
manifest entries
2017-05-05 14:29:34 -07:00
Kyle Drake
14d8b5e986 lower jerk threshold, ask for commenters to be nice 2017-05-05 14:26:13 -07:00
Kyle Drake
d0a59f5de1 Merge branch 'master' into trumpplan 2017-05-03 02:29:51 -07:00
Kyle Drake
7d352be907 Remove weird margin that uncentered dash header 2017-05-03 02:28:53 -07:00
Kyle Drake
443552f3d5 Add images for trump plan luxury portal 2017-04-26 16:50:20 -07:00
Kyle Drake
ebc3ffe7e9 Add TRUMP PLAN to pay for upcoming Net Neutrality
Removes the free plan for the White House, FCC, US Senate and Trump
hotels. Introduces special Trump Plan, 2MB of disk space for only $100/mo.
2017-04-26 16:38:43 -07:00
Kyle Drake
b7d629a87e stats: huge DB transactions were locking up DB 2017-04-26 03:18:32 -07:00
Kyle Drake
e7be10fb8e add index for sites.parent_site.id 2017-04-25 15:43:49 -07:00
Kyle Drake
f5da0d4ef0 remove old mocking code 2017-04-25 15:36:08 -07:00
Kyle Drake
b0c5c95b5e Don't do expensive re-open of zip for each file add 2017-04-22 17:30:40 -07:00
Kyle Drake
f1f91763fb fix for follow_count with compute scores 2017-04-05 05:02:43 -07:00
Kyle Drake
0d2e2afb35 fix for tag browse 2017-04-05 04:06:07 -07:00
Kyle Drake
f9c885c23b use one query to get tag names for sites in browse 2017-04-03 01:09:47 -07:00
Kyle Drake
2b69e9cb8a more speedups for browsing 2017-04-03 00:35:32 -07:00
Kyle Drake
07be2dcecc throw a short temp cache around excluded_actioning_site_ids 2017-04-02 22:42:32 -07:00
Kyle Drake
9d9ada3acc event index for actioning_site_id 2017-04-02 22:19:49 -07:00
Kyle Drake
baf9b6100d index for follow_count/view/updated 2017-04-02 21:26:03 -07:00
Kyle Drake
04af230f8d performance: denormalize count of followers 2017-04-02 20:47:06 -07:00
Kyle Drake
a542796ce3 continuing to fight travis: new .yml config changes 2017-04-02 14:29:35 -07:00
Kyle Drake
c8f980e152 try switching back to psql 9.3 to fix travis 2017-04-02 14:19:13 -07:00
Kyle Drake
3fdd165f41 update vagrant, travis to ruby 2.4 2017-04-02 14:14:51 -07:00
Kyle Drake
d6f51a1cbb fix failing tests 2017-04-02 13:59:14 -07:00
Kyle Drake
b7685009bd Check for Integer not Fixnum (ruby 2.4) 2017-04-02 13:58:32 -07:00
Kyle Drake
1300ff1ab9 Update coveralls/simplecov 2017-04-02 13:58:16 -07:00
Kyle Drake
73523236f7 Merge branch 'master' of github.com:neocities/neocities 2017-04-02 12:26:36 -07:00
Kyle Drake
cc476e5b15 Fix for flash dumping all keys 2017-04-02 12:25:59 -07:00
Kyle Drake
746f0b48e0 Reduce site record lookups needed for auth, webdav 2017-04-02 12:25:34 -07:00
Kyle Drake
7a1b9989b2 REPENT TO YOUR WEATHER LORDS 2017-04-01 23:26:09 -07:00
Kyle Drake
11f6367e55 Merge branch 'weatherishappening' 2017-04-01 00:30:52 -07:00
Kyle Drake
ff5e424c4b Fix missing shard_dir link in thumbnail test 2017-03-30 15:41:39 -07:00
Kyle Drake
26a53995db Clean up junk from previous tests when running new tests 2017-03-30 15:40:36 -07:00
Kyle Drake
29a6e95a2a Disable site file max hard check, getting too slow 2017-03-30 15:40:12 -07:00
Kyle Drake
43dbbcd8c6 Switch to generated .gitignore (why different?) 2017-03-30 15:39:49 -07:00
Kyle Drake
024fad8226 Only handle excludes when not empty array 2017-03-30 15:38:44 -07:00
Kyle Drake
d622a7065d Don't prerequire facter gem 2017-03-30 15:38:14 -07:00
Kyle Drake
ae6b0dce49 Update to tz gem 2017-03-30 15:38:01 -07:00
Kyle Drake
dc373ae021 remove unused requires in workers 2017-03-29 12:57:14 -07:00
Kyle Drake
2efe578ab0 add convenient Boston weather forecast link to the header 2017-03-29 12:51:18 -07:00
Kyle Drake
458b6a410a fix for excluded site ids in news feed 2017-03-27 14:08:11 -07:00
Kyle Drake
e37d25894b Merge branch 'master' of github.com:neocities/neocities 2017-03-27 12:11:10 -07:00
Kyle Drake
b47aef9205 dont show events for sites flagged nsfw 2017-03-27 12:10:50 -07:00
Kyle Drake
e555f6e6b2 Merge branch 'master' of github.com:neocities/neocities 2017-03-27 11:37:28 -07:00
Kyle Drake
0e9f2ca533 Fix screenshot/thumbnail urls to use sharding dir 2017-03-27 11:37:04 -07:00
Kyle Drake
6080a2c591 1GB free space - 20GB supporter space 2017-03-27 11:34:28 -07:00
Kyle Drake
e608aff5a2 Funner gateway error message 2017-03-22 17:47:33 -07:00
Kyle Drake
7adb8b0c9b Better detection of # of cores available 2017-03-22 17:47:07 -07:00
Kyle Drake
54422802e5 Switch to directory sharding model for site storage 2017-03-22 17:45:01 -07:00
Kyle Drake
d597208e38 Merge branch 'master' of github.com:neocities/neocities 2017-03-22 14:33:29 -07:00
Kyle Drake
68729d1d63 Merge branch 'master' of github.com:neocities/neocities 2017-03-22 11:50:54 -07:00
Kyle Drake
9f73ec61bd Fixes for Ruby 2.4 support 2017-03-22 11:39:06 -07:00
Kyle Drake
d03df1c490 Remove extraneous binding.pry 2017-03-22 11:34:31 -07:00
Kyle Drake
d57809608f Merge branch 'master' of github.com:neocities/neocities 2017-03-18 18:14:19 -07:00
Kyle Drake
73f2ba1b3d A few copy fixes for the compare page 2017-03-18 18:13:48 -07:00
Kyle Drake
ed9083070c Merge branch 'master' of github.com:neocities/neocities 2017-03-18 18:54:45 +00:00
Kyle Drake
709509fd15 Clean up CSS for comment contents, add word-break 2017-03-18 11:53:50 -07:00
Kyle Drake
4a7fa0384c Add resolv require 2017-03-15 23:09:39 -07:00
Kyle Drake
471127488c Temporarily disable thumbnail optimization 2017-03-16 03:50:49 +00:00
Kyle Drake
ca8f8146c7 Merge branch 'master' of github.com:neocities/neocities 2017-03-05 11:07:41 -08:00
Kyle Drake
7b5c34b29b Reset domain fail count to 0 on success 2017-03-05 11:07:17 -08:00
Kyle Drake
18e6b9f9ff Merge branch 'master' of github.com:neocities/neocities 2017-03-05 03:53:57 +00:00
Kyle Drake
5aeb1b0c8b Merge branch 'master' of github.com:neocities/neocities 2017-03-04 19:53:47 -08:00
Kyle Drake
49ffeb77c7 Fix for missing supporter hearts in news feed 2017-03-04 19:53:30 -08:00
Kyle Drake
3c1e155a76 Merge branch 'master' of github.com:neocities/neocities 2017-03-04 17:23:25 +00:00
Kyle Drake
cdcc65e951 LetsEncryptWorker: Follow redirects for verification 2017-03-04 17:22:55 +00:00
Kyle Drake
788f99831d Merge pull request #226 from joppiesaus/followyourselffix
Fixes #215
2017-03-03 20:47:10 -08:00
Kyle Drake
f3ab1a6f24 Merge branch 'master' of github.com:neocities/neocities 2017-03-03 20:38:06 -08:00
Kyle Drake
8d5a1e95f1 Partial for new flash code 2017-03-03 20:37:54 -08:00
Kyle Drake
ae1f3a81e3 DRY up flash display code, fix colors for success/error 2017-03-03 20:36:58 -08:00
Kyle Drake
3e485fcf30 Merge pull request #227 from joppiesaus/browsemodefix
Fixed browsing tiles leading to unintended pages
2017-03-03 11:04:17 -08:00
Kyle Drake
57e13ffcae Merge pull request #243 from topaz/topaz-patch-1
Fix minor grammatical error
2017-03-03 10:56:04 -08:00
Kyle Drake
019ceff01c Remove add link when maximum tags is reached 2017-03-03 10:52:43 -08:00
Kyle Drake
460dea3f5e Merge branch 'master' of github.com:neocities/neocities 2017-03-02 12:07:10 -08:00
Kyle Drake
8c787e0352 Fixed position for ace search ctrlf 2017-03-02 12:06:32 -08:00
Kyle Drake
395ae6b4f9 screenshot_worker: fixes weird chmod permissions error with mount 2017-03-02 04:24:40 +00:00
Kyle Drake
dd40671576 Merge pull request #244 from Retroity/master
Change all Twitter links to @Neocities from @NeocitiesWeb
2017-02-28 17:20:49 -08:00
Kyle Drake
2c6ef58e6f nginx mapfile for subdomains to domains - switch to contact form from
email
2017-02-28 14:50:21 -08:00
Retroity
229537d975 Update _team.erb 2017-02-28 15:19:59 -06:00
Retroity
b74ab7dd15 Update _footer.erb 2017-02-28 15:19:28 -06:00
Retroity
c383229489 Update email_welcome.erb 2017-02-28 15:18:11 -06:00
Retroity
732e4d3adc Update supporter_upgrade.erb 2017-02-28 15:17:21 -06:00
Retroity
03b74dcd1f Update email_subscription.erb 2017-02-28 15:15:51 -06:00
Retroity
4b120c19d3 Update gateway_error.html 2017-02-28 15:14:28 -06:00
Kyle Drake
3dc38bfc5a tipping: only show tipping sites with paypal/btc input 2017-02-25 10:19:14 -08:00
Kyle Drake
42b3f25b11 browse: Exclude null records for site updated at 2017-02-25 10:01:12 -08:00
Eric Wastl
55e78edcd6 Update _compare.erb 2017-02-22 04:47:14 -05:00
Eric Wastl
58559ffaea Update welcome.erb 2017-02-22 04:45:07 -05:00
Kyle Drake
e50199bd57 XCF file support 2017-02-17 16:27:08 -08:00
Kyle Drake
0562c549b3 remove old code that was blocking resubs 2017-02-15 21:45:05 -08:00
Kyle Drake
3bb3312831 app/webhooks.rb: halt for nil customer 2017-02-15 20:32:12 -08:00
Kyle Drake
ba628805bd check for database record for require_login 2017-02-15 18:38:44 -08:00
Kyle Drake
6c939eaa83 dont 500 for missing customer in stripe webhook 2017-02-15 18:24:41 -08:00
Kyle Drake
13e67fc264 prevent duplicate comments 2017-02-13 19:32:39 -08:00
Kyle Drake
48884994e1 fix for apostrophe/special character drama 2017-02-13 19:04:47 -08:00
Kyle Drake
5d8f9df7e0 sort sites by tipping enabled 2017-02-13 12:05:40 -08:00
Kyle Drake
036a45630e Initial CSP header idea - enable tipping site-wide 2017-02-11 15:39:11 -08:00
Kyle Drake
dc38851163 Remove site reporting link.
It was 49% spam, 50% trolling, and 1% legitimate reports.
2017-02-09 11:22:25 -08:00
Kyle Drake
f6550555b0 Templates for tip emails 2017-02-07 22:48:15 -08:00
Kyle Drake
b556795f78 Missing xml file for blog feed test 2017-02-07 22:47:35 -08:00
Kyle Drake
28a71d275a Tests for paypal tipping webhook 2017-02-07 22:46:39 -08:00
Kyle Drake
bd1ed0d732 Database migration for tips table changes 2017-02-07 22:46:17 -08:00
Kyle Drake
cc07e90b44 Code to display tips submitted on news feed 2017-02-07 22:45:29 -08:00
Kyle Drake
621e45b6a2 Modify domain registration record structure. 2017-02-07 22:44:03 -08:00
Kyle Drake
e52aa29290 Fix tempfile returning nil for empty files
This is an "monkey patch" to have Tempfile return 0 instead of nil when
a tempfile is empty. This has caused an unexplained exception in our
logs for years, and I was really surprised when I caught it, and more
surprised that nobody has ever reported it to us before.

I really think this is a bug, and have filed it as a bug on the ruby
tracker. I haven't seen any consequences (yet) to doing this, so I'm
just going to run with it and see what happens. If it blows
something up (how? what scenario?), I'll try a different approach.
2017-02-06 11:26:14 -08:00
Kyle Drake
28000fc73c Send email notifications for email and password changes 2017-02-04 11:31:48 -08:00
Kyle Drake
80b31c29cb Consolidate file uploads into a single call 2017-02-02 15:25:49 -08:00
Kyle Drake
0d9c366555 Don't set whitelist captcha using session variable 2017-02-02 11:33:02 -08:00
Kyle Drake
ad22cc519f Use form POST for signout link to prevent CSRF 2017-02-02 10:27:30 -08:00
Kyle Drake
e43e7d973a Whitelist webp images 2017-01-29 16:49:47 -08:00
Kyle Drake
0428a1246e Fix for cache purging for subdir default indexes 2017-01-29 00:00:25 -08:00
Kyle Drake
46b402a633 Fix up index test, stub blog rss feed get 2017-01-26 00:31:22 -08:00
Kyle Drake
be2c2598c7 Flush password reset token when email changes 2017-01-25 20:45:00 -08:00
Kyle Drake
4f09d954e5 Plug XSS hole in file upload name 2017-01-25 20:15:47 -08:00
Kyle Drake
89f123d125 Switch to test keys for recaptcha 2017-01-24 23:40:28 -08:00
Kyle Drake
6dc1abe99b SameSite=Lax for cookies, DENY for X-Frame-Options 2017-01-25 04:52:20 +00:00
Kyle Drake
79887f87ba Fix for supporter file type uploads via WebDAV 2017-01-19 00:34:52 -08:00
Kyle Drake
e95dd99c29 patch XSS related to directories, remove redundant text editor file load 2017-01-17 21:20:34 -08:00
Kyle Drake
eed42b7558 Numerous small copy changes here and there, blog feed on front page, added a press article 2017-01-17 00:35:31 -08:00
Kyle Drake
f0ca037237 Stop Forum Spam: Evidence must be direct data, not an abstraction! 2017-01-16 20:33:26 -08:00
Kyle Drake
9d718f09b7 Merge branch 'master' of github.com:neocities/neocities 2017-01-15 15:08:08 -08:00
Kyle Drake
65008f4ac4 pass stopforumspam as formencoded 2017-01-15 15:07:58 -08:00
Kyle Drake
5178ea4e78 Compare with year for root domain check for lets encrypt 2017-01-14 06:12:36 +00:00
Kyle Drake
d16e768072 Merge branch 'master' of github.com:neocities/neocities 2017-01-14 06:00:21 +00:00
Kyle Drake
60a4ad470d Root url for reported site screenshot 2017-01-13 20:20:25 +00:00
Kyle Drake
154abfc167 Disable delete cache worker for the moment, we don't use it 2017-01-13 20:07:31 +00:00
Kyle Drake
7198e788d1 No http follow, more debug info on errors 2017-01-13 20:06:59 +00:00
Kyle Drake
6e37fd7d25 improve retry for let's encrypt 2017-01-13 12:04:10 -08:00
Kyle Drake
ea467c1eef fix for ip OR conditional 2017-01-11 17:24:44 -06:00
Kyle Drake
bedc08cb58 mechanism to report spam ips to stopforumspam 2017-01-11 17:16:40 -06:00
Kyle Drake
7be37ce595 optimize site images so dumb optimizer check scripts STFU 2017-01-10 19:38:50 -06:00
Kyle Drake
57e31c66e3 fortify cookie security - samesite, secure, explicit httponly 2017-01-10 16:43:14 -06:00
Kyle Drake
d12dc53631 padding fix for front header 2017-01-10 13:10:14 -06:00
Kyle Drake
663c69cd83 more experimentation for global feed 2017-01-09 19:49:52 -06:00
Kyle Drake
0c61010981 experiment with comma separated large view numbers rather than shortened 2017-01-09 03:01:14 -06:00
Kyle Drake
79fb01e6a7 first attempt to improve the global activity feed 2017-01-09 02:22:04 -06:00
Kyle Drake
1dca65a4c2 only register html files as site changes 2017-01-09 01:45:46 -06:00
Kyle Drake
522fe16f67 use usernames for event likes popup 2017-01-09 01:34:05 -06:00
Kyle Drake
f796fdf9a8 default https for cache purging and URIs 2017-01-06 00:03:30 -06:00
Kyle Drake
f92d6c6139 follow redirects 2017-01-05 16:01:35 -06:00
Kyle Drake
749f2fd5e0 sould fix sidekiq csrf issue 2016-12-29 17:27:52 -06:00
Kyle Drake
616875b1d0 remove dupe is_deleted filter 2016-12-29 17:14:33 -06:00
Kyle Drake
e821410d84 optimize screenshots and thumbnails, slight thumbnail quality reduction 2016-12-29 17:09:01 -06:00
Kyle Drake
841779a36c enforce signout of deleted accounts 2016-12-29 15:55:44 -06:00
Kyle Drake
fa53929e66 Fix delete when child site is destroyed, also hide destroyed records
from list
2016-12-29 15:55:12 -06:00
Kyle Drake
276a8a0eb7 inappropriately colored the tip buttons green 2016-12-25 14:56:31 -06:00
Kyle Drake
571e445dc3 experimental support for site tipping integration via paypal or bitcoin 2016-12-25 13:40:35 -06:00
Kyle Drake
119381c222 Warn about changing usernames 2016-12-25 13:35:58 -06:00
Kyle Drake
34c075bbc6 Add better message for domain save 2016-12-23 14:19:39 -06:00
Kyle Drake
07d7ad237c No checking for missing A/CNAME records 2016-12-23 14:17:01 -06:00
Kyle Drake
9981a08175 Raise bandwidth for free plan to 200GB 2016-12-21 07:18:18 -06:00
Kyle Drake
20cbd4ebac redirect to the Internet Archive for Geocities site paths before 404ing 2016-12-16 13:42:45 -06:00
Kyle Drake
9b493483b7 prevent www. in domain names 2016-12-16 01:54:07 -06:00
Kyle Drake
2b526d85ed reduce sandboxing time, set to single threaded as an experiment 2016-12-12 06:34:19 +00:00
Kyle Drake
b2377051dc Dedupe before taking screenshots 2016-12-12 06:33:40 +00:00
Kyle Drake
b55584997f Fix for account site banning 2016-12-12 06:33:15 +00:00
Kyle Drake
55729d8737 Merge branch 'master' of github.com:neocities/neocities 2016-12-10 19:43:53 -06:00
Kyle Drake
fc1afb558a try new webdav, use remote service for initial site screenshots 2016-12-10 19:43:26 -06:00
Kyle Drake
57b430c895 require url for redis init 2016-12-09 21:52:08 -08:00
Kyle Drake
817012042d Fix contact for not logged in 2016-12-08 15:39:28 -06:00
Kyle Drake
e92fba18be Force unique constraint on username 2016-12-08 15:26:12 -06:00
Kyle Drake
67ddf7d419 ban worker 2016-11-27 20:08:32 -06:00
Kyle Drake
e554666fc5 better tos issue reporting, and a threshold for being considered abusive in
comments
2016-11-27 19:21:42 -06:00
Kyle Drake
4dc613e27a custom SSL code is abandoned in favor of Let's Encrypt 2016-11-22 01:11:57 -06:00
Kyle Drake
4fca52e03d fixes for broken/flaky tests and remove unused template 2016-11-22 00:59:31 -06:00
Kyle Drake
a8a83c434e add education tag whitelist to template 2016-11-21 23:03:21 -06:00
Kyle Drake
3272b16f47 whitelisting for education 2016-11-14 15:49:09 -06:00
Kyle Drake
c77299cd05 prevent deleted comments from showing in profile 2016-10-31 16:26:26 -05:00
Kyle Drake
aa20d39141 no sandboxing for child sites 2016-10-30 18:38:33 -05:00
Kyle Drake
98387741e8 fix for supporter header link logic 2016-10-29 14:23:29 -05:00
Kyle Drake
a2e854d3b3 hotfix for supporter page for not logged in users 2016-10-29 14:18:55 -05:00
Kyle Drake
620e53bf63 more fixes for supporter page 2016-10-29 19:11:08 +00:00
Kyle Drake
ea8a49ddfc fix for supporter check on welcome 2016-10-29 14:05:54 -05:00
Kyle Drake
411bf26347 Add (design challenged) comment bar to news feed 2016-10-27 09:17:31 -05:00
Kyle Drake
882d2fb4b2 fix for api 404 2016-10-26 21:34:53 -05:00
Kyle Drake
d5493d4d23 fix tests for new code 2016-10-23 13:05:10 -05:00
Kyle Drake
80b3f6b0be Use http.rb to ensure timeout enforcement for cache purging, disable crashing flag for now 2016-10-23 12:53:47 -05:00
Kyle Drake
c3ea1fc9e4 add site delete to FAQ 2016-10-19 00:04:06 -05:00
Kyle Drake
a2828bed16 add site delete tab on account if only site 2016-10-18 23:55:55 -05:00
Kyle Drake
55a245c290 better contact info 2016-10-18 15:31:39 -05:00
Kyle Drake
1ffcfb8487 Set plan_ended to false on paypal sub, and redirect properly 2016-10-18 15:26:39 -05:00
Kyle Drake
2c88c62cbc major refactor of supporter structure 2016-10-18 12:47:58 -05:00
Kyle Drake
dadeb778c9 Move mockups to subdir 2016-10-13 20:18:40 -05:00
Kyle Drake
dec243f14d Merge branch 'master' of github.com:neocities/neocities 2016-10-13 02:06:53 -05:00
Kyle Drake
383bb2e672 check mx records for disposable emails 2016-10-13 02:06:46 -05:00
Kyle Drake
dfd1a525a3 dont log cache purges as hits 2016-10-06 15:47:39 +00:00
Kyle Drake
b9fa24e479 dont allow broken/corrupt log to stop log parsing 2016-10-06 10:27:55 -05:00
Kyle Drake
d6b33ddad8 skim the cache purge timeout 2016-10-05 22:22:10 -05:00
Kyle Drake
1ff9c0a845 libmagic thinks text files are elc sometimes 2016-10-05 18:53:29 -05:00
Kyle Drake
40866f12f2 ssl certs are here 2016-10-05 16:34:17 -05:00
Kyle Drake
1ac30ea529 proxy ips to match tests, prevent fail for no proxies 2016-09-30 01:45:15 -05:00
Kyle Drake
776bbeaa2c Merge branch 'master' of github.com:neocities/neocities 2016-09-30 01:36:00 -05:00
Kyle Drake
83c1d90776 fix for travis 2016-09-30 01:35:51 -05:00
Kyle Drake
13b60163af yeah.. maybe 5 2016-09-30 06:13:44 +00:00
Kyle Drake
d220d73b0c limit on comments per day to prevent spam 2016-09-30 00:47:23 -05:00
Kyle Drake
92abcd6a49 exclude deleted sites from other_sites_dataset 2016-09-29 20:37:21 -05:00
Kyle Drake
93b333dbf2 Merge branch 'master' of github.com:neocities/neocities 2016-09-26 22:20:51 -07:00
Kyle Drake
9ba0006232 temp disable the ipfs hash on the site profile 2016-09-26 22:18:11 -07:00
Kyle Drake
83e307674d revert to auto processor count for puma/rainbows 2016-09-20 21:03:56 +00:00
Kyle Drake
1c98e591af 30 seconds wait for screenshot (from 1 min) 2016-09-20 21:00:53 +00:00
Kyle Drake
6132875b6b A few fixes for lets encrypt error handling 2016-09-17 17:51:56 +00:00
Kyle Drake
bfa13e5325 Detect and remove dead custom domains 2016-09-17 10:02:51 -07:00
Kyle Drake
ce905200da Switch delete cache to local proxy ips, tune retries 2016-09-15 01:42:20 +00:00
Kyle Drake
c5fbf1f0e5 Provide proxy ips locally vs through DNS system 2016-09-15 01:22:32 +00:00
Kyle Drake
bdbc4b44cd up free max file count to 5000 2016-09-07 18:45:13 +00:00
Kyle Drake
b3300f4ad0 add scss 2016-08-18 12:45:10 -07:00
Kyle Drake
7c4ffcb413 ScreenshotWorker: garbage collection improvements 2016-08-18 00:14:32 -07:00
Kyle Drake
a75a02d653 purge_tmp_terds: a sewage system for /tmp 2016-08-16 12:14:56 -07:00
Kyle Drake
444f8a5bd0 use TempfileReaper to hopefully clean up RackMultipart turds 2016-08-16 11:56:47 -07:00
joppiesaus
b9a9e42d17 Fixed browsing tiles leading to unintended pages
Fixed title ignoring surf mode state and leading to the wrong page if
the current page is >1
2016-08-11 13:23:56 +02:00
Kyle Drake
3885fe9afc murder the json-jwt nightmare dependency 2016-08-10 14:58:26 -07:00
Kyle Drake
3cb7be6f35 Fix for password reset validation 2016-08-10 13:15:24 -07:00
Kyle Drake
d73017ec56 fix for admin browsing 2016-08-10 10:50:44 -07:00
joppiesaus
4e74d048e6 Fixes #215
Fixed being able to follow yourself; unfollowing yourself is still
possible, if it may cause problems in the future.
2016-08-10 19:29:40 +02:00
Kyle Drake
431b3d5fd9 Merge branch 'master' of github.com:neocities/neocities 2016-08-09 20:28:59 -07:00
Kyle Drake
217333cdff Remove legacy custom domain code 2016-08-09 20:28:29 -07:00
Kyle Drake
b36a062eb4 Improvements & fixes for vagrant staging 2016-08-09 20:04:57 -07:00
Kyle Drake
e6d2e4d29b remove old custom domains config 2016-08-05 16:27:18 -07:00
Kyle Drake
7bbaa9826e Merge pull request #222 from DrEvilBrain/patch-1
Updated hotlinking policy to reflect supporter status
2016-08-05 10:47:50 -07:00
Kyle Drake
a74f79aeae more site design fixes 2016-08-03 18:00:26 -07:00
Kyle Drake
0fd68aafc0 pull last changes, which stopped mattering(?) but broke the profiles 2016-08-03 17:42:22 -07:00
Kyle Drake
eea530cecb hacky padding add to fix squish caused by line spacing fix 2016-07-31 10:17:47 -07:00
Kyle Drake
7f64a62926 Small design fixes for front page on mobile 2016-07-31 10:12:43 -07:00
Kyle Drake
54c14eb4cf reduce screenshot size on news feed for mobile 2016-07-30 22:30:56 -07:00
Kyle Drake
2d9e6c520e parse urls for comments 2016-07-29 19:55:43 -07:00
Kyle Drake
0cbbc938e9 fix big with disposable email matcher 2016-07-29 15:13:30 -07:00
Kyle Drake
23b5ba2883 no cache headers 2016-07-29 14:51:33 -07:00
Kyle Drake
4ca2e3f443 finish merge on cleaned up news feed 2016-07-29 14:10:29 -07:00
Kyle Drake
dc0bf88392 improvements to admin interface 2016-07-20 13:33:46 -07:00
Kyle Drake
32ddc97a95 editor: use regex for path to match dirs, improve perf 2016-07-20 10:52:19 -07:00
Kyle Drake
21299e3abc load file to edit async to prevent browser page caching issues 2016-07-19 14:40:22 -07:00
Kyle Drake
83ee577a14 Merge branch 'master' of github.com:neocities/neocities 2016-07-11 16:27:54 -07:00
Kyle Drake
b1492802ca add comment on htaccess http authentication 2016-07-11 16:27:42 -07:00
Kyle Drake
69186f1814 Add .htaccess to FAQ 2016-07-11 16:22:28 -07:00
Kyle Drake
5e2f5c1ae5 Comment for how to delete scheduler jobs 2016-07-03 02:11:16 +00:00
Kyle Drake
9c17b9cddb Enable letsencrypt updates for domain changes 2016-07-03 02:10:49 +00:00
Kyle Drake
69996cb5e8 SSL certs for custom domains 2016-07-02 18:31:57 -07:00
Kyle Drake
c33a8a86b1 fix escaping issues for file deletion 2016-06-30 15:29:23 -07:00
Kyle Drake
80d7536fe1 Remove old files 2016-06-30 14:48:09 -07:00
Kyle Drake
b48fa044cc Mention email support in supporter compare 2016-06-30 14:47:45 -07:00
Kyle Drake
8d71c04f88 Move stats to admin until performance issues are resolved 2016-06-30 14:44:47 -07:00
Kyle Drake
68e4424725 Fix for deletion with regexp escape chars 2016-06-29 12:58:46 -07:00
Kyle Drake
01e721adca track when certs are updated 2016-06-27 20:56:46 -07:00
Kyle Drake
ed44cc5a17 Script to periodically renew certs (run with cronjob) 2016-06-28 03:50:03 +00:00
Kyle Drake
54ff80ecd2 Let's Encrypt script is getting ugly, but covers the edge cases now.
Needs refactor eventually.
2016-06-28 03:48:15 +00:00
Kyle Drake
713d057395 Merge branch 'master' of github.com:neocities/neocities 2016-06-23 16:20:51 -07:00
Kyle Drake
8a109f7b4b try to deal with rate limiting 2016-06-23 16:05:26 -07:00
Kyle Drake
568a7e9900 Letsencrypt gets very mad at too many pending auths, adjust times 2016-06-21 23:01:57 +00:00
Kyle Drake
aa6cd46eeb Tweaks to initial seed script 2016-06-21 23:01:08 +00:00
Kyle Drake
3d73172246 cert generation rake task 2016-06-21 11:29:33 -07:00
Kyle Drake
5a5845e890 certs stay in pem, openssl cannot do der for chained certs 2016-06-20 22:01:42 -07:00
Kyle Drake
060376acfe compile letsencrypt ssl keys for map 2016-06-19 10:40:04 -07:00
Kyle Drake
68399bd76c Update certs periodically, retry tweaks 2016-06-19 04:57:47 +00:00
Kyle Drake
2598474596 A few bugfixes for letsencrypt worker 2016-06-19 02:00:14 +00:00
Kyle Drake
96642dc27a the subdomain also needs auth apparently 2016-06-18 18:40:17 -07:00
Kyle Drake
1fc3120363 deduping code and fixes for letsencrypt 2016-06-18 21:25:41 +00:00
Kyle Drake
06b74f3e8e helps when you add the file you moved to git 2016-06-18 12:51:12 -07:00
Kyle Drake
695de69ab4 ..and proper filename 2016-06-18 12:50:35 -07:00
Kyle Drake
3b193ed58e worker name to LetsEncryptWorker 2016-06-18 12:50:02 -07:00
Kyle Drake
9ef69854ca simplify letsencrypt code for now, merge into single async worker 2016-06-18 12:46:00 -07:00
Kyle Drake
e1c69dbc13 fix for queue name 2016-06-18 11:48:44 -07:00
Kyle Drake
7c3bcf7d2c don't move forward if domain is blank 2016-06-18 11:46:07 -07:00
Kyle Drake
9341271bda use unmerged pull for cleaning activesupport out of json-jwt 2016-06-18 00:58:49 -07:00
Kyle Drake
8473b99d56 checkin of initial letsencrypt code 2016-06-16 01:42:16 -07:00
Kyle Drake
6a8aaacd20 okay, maybe one hour... 2016-06-06 13:42:10 -07:00
Kyle Drake
35d03e95e2 tune IPFS archiver to go more quickly (now that it's more stable/fast) 2016-06-06 12:46:08 -07:00
Kyle Drake
2ef7668595 better monthly stats info 2016-06-02 20:24:56 -07:00
DrEvilBrain
d5dd58b4a2 Updated hotlinking policy to reflect supporter 2016-06-02 13:32:21 -04:00
Kyle Drake
233b6f758a disable the surf bar until we can wrangle it's drama better 2016-06-01 07:15:57 -04:00
Kyle Drake
7c6418a6fb touch up donations page 2016-05-31 01:23:02 -04:00
Kyle Drake
927c34ed01 fix for mapfile format 2016-05-25 06:42:17 -04:00
Kyle Drake
7ef47038a8 mapping for sandboxed sites 2016-05-25 06:35:54 -04:00
Kyle Drake
3a6b0479ba change to multiple site 2016-05-25 03:24:48 -04:00
Kyle Drake
4dcc7255e8 clarify multiple site offering 2016-05-25 03:23:03 -04:00
Kyle Drake
71be5eeed7 nginx map gen into single dir 2016-05-25 03:08:52 -04:00
Kyle Drake
4c0ddce4bf deprecate ruby 2.2.3 support 2016-05-24 22:16:04 -04:00
Kyle Drake
52c488a3d7 fixes for tests 2016-05-24 21:44:45 -04:00
Kyle Drake
df78018547 Add status page to footer 2016-05-24 06:24:10 -04:00
Kyle Drake
ffbc4f91f4 Add a few VICE Motherboard articles. Holy fuck those guys are good. 2016-05-24 06:14:32 -04:00
Kyle Drake
892eca6c6a fix for comma separated with bignum 2016-05-23 17:23:55 -04:00
Kyle Drake
cb3a918aed update sidekiq to address memory leak issue 2016-05-19 22:24:38 -04:00
Kyle Drake
4b6001b6ef Code to parse out tode exit nodes I might do something with later 2016-05-17 21:37:36 -04:00
Kyle Drake
76cb669659 validate against throwaway email addresses 2016-05-15 01:53:55 -04:00
Kyle Drake
6b88c8339d Merge branch 'emailvalidation' 2016-05-14 23:21:22 -04:00
Kyle Drake
f97ebd9781 Set email validation grandfathering for May 16th. All new sites will need to validate email. 2016-05-14 23:15:13 -04:00
Kyle Drake
ce21f8386f Tutorial is next step for signin 2016-05-13 20:17:13 -04:00
Kyle Drake
3d317da545 a few copy changes 2016-05-13 20:14:02 -04:00
Kyle Drake
b2146eb011 Merge branch 'master' of github.com:neocities/neocities 2016-05-13 16:49:02 -04:00
Kyle Drake
a2a6a40438 Mandate email validation for free accounts. Be sure to set EMAIL_VALIDATION_CUTOFF_DATE before deploy 2016-05-13 16:48:29 -04:00
Kyle Drake
5014083277 Mock redis for tests 2016-05-13 16:47:02 -04:00
Kyle Drake
7f055574b5 More updates to plan copy 2016-05-13 16:46:26 -04:00
Kyle Drake
d525bf6dee Copy updates for welcome screen 2016-05-13 16:44:11 -04:00
Kyle Drake
d3c4c5f340 Fix for tag test issues 2016-05-13 16:42:11 -04:00
Kyle Drake
cef1611003 Maximum email confirmation anti-spam column 2016-05-13 16:39:49 -04:00
Victoria Wang
3cdba5f578 dialogue tweak 2016-05-09 18:00:54 -07:00
Victoria Wang
d2d63ccf6d tutorial integration - adding references into other parts of site, updates to page 9 and 10, work on tutorial landing page 2016-05-09 17:50:37 -07:00
Kyle Drake
bba781c5be Fix for tag remove issues 2016-05-07 22:20:23 +00:00
Kyle Drake
1d08832948 Add 3D objects to whitelist 2016-05-06 20:17:01 +00:00
Kyle Drake
23992e34ba catch for address issues in custom domain setup 2016-04-26 20:18:06 -07:00
Kyle Drake
a4defc69f7 fix for site downloads with a lot of files 2016-04-26 11:53:03 -07:00
Kyle Drake
1a31d6db3b allow masquerading as user for debugging 2016-04-26 11:41:41 -07:00
Kyle Drake
ad167fa4df Merge branch 'master' of github.com:neocities/neocities 2016-04-25 18:06:38 -07:00
Kyle Drake
0baacf1d10 Fix for dir with spaces issues 2016-04-25 17:59:57 -07:00
Kyle Drake
8556f7f551 Note about deletes being delayed in the cache purge 2016-04-25 17:59:40 -07:00
Victoria Wang
71894452d0 adjust layout for pg 9 buttons 2016-04-25 09:46:29 -07:00
Kyle Drake
6f4117ac31 better copy for site delete page 2016-04-24 12:43:04 -07:00
Victoria Wang
d779c012db remove pseudo code pg 10 2016-04-20 11:41:19 -07:00
Victoria Wang
f368486e7a adjust margin 2016-04-19 21:49:28 -07:00
Victoria Wang
c09c12ced4 Merge branch 'master' of github.com:neocities/neocities 2016-04-19 21:47:05 -07:00
Kyle Drake
cca04adb80 remove preview header and add margin to iframe 2016-04-19 21:23:37 -07:00
Victoria Wang
f0a7568d71 minor change to pg 9 2016-04-19 19:15:05 -07:00
Victoria Wang
33c7eee1f4 minor changes to errors, pg 9 2016-04-19 19:11:32 -07:00
Kyle Drake
103f45eb27 saving for tutorial page 2016-04-19 15:39:40 -07:00
Kyle Drake
79a62d445b get all crazy with tags 2016-04-19 00:40:26 -07:00
Kyle Drake
b53d87e51e default to followers for tag results 2016-04-18 23:18:09 -07:00
Kyle Drake
2f09415d88 quick and dirty cache for popular tags result 2016-04-18 22:25:18 -07:00
Kyle Drake
be6196d67c Add indexes to site_change_files 2016-04-18 21:29:14 -07:00
Victoria Wang
bafe75463a Added text/buttons for optionally saving to user's index.html 2016-04-18 14:43:41 -07:00
Victoria Wang
0f4c0562f2 Improvements to pg 5 help text 2016-04-18 12:07:32 -07:00
Victoria Wang
837efa7094 Added syntax highlighting to dialog boxes, improved look of green box code samples 2016-04-18 11:47:23 -07:00
Victoria Wang
07bffc7d25 updates to pg 10 image 2016-04-18 11:46:48 -07:00
Kyle Drake
890dc900be syntax highlighting for api examples 2016-04-18 10:53:14 -07:00
Kyle Drake
4ac2f2c4e1 add code example partials 2016-04-18 10:41:26 -07:00
Kyle Drake
c133252cb6 fix up highlight.js support and add syntax for code examples, few homework check fixes 2016-04-18 10:40:46 -07:00
Kyle Drake
1f6ef958dc improved flow for 7 and 8 2016-04-17 17:23:31 -07:00
Kyle Drake
8c5b9a803d better homework checking for tutorial up to page 6 2016-04-17 14:33:23 -07:00
Victoria Wang
322a87b1d0 Edit to pg 6 dialog 2016-04-15 17:16:25 -07:00
Victoria Wang
347cb1b923 Merge branch 'master' of github.com:neocities/neocities 2016-04-15 15:44:24 -07:00
Victoria Wang
041c3a08e4 More misc edits to tutorial 2016-04-15 15:44:18 -07:00
Kyle Drake
0fe8b47b61 Merge branch 'master' of github.com:neocities/neocities 2016-04-15 15:35:08 -07:00
Kyle Drake
10789f46f4 cleaner tutorial match code, improved page 2 logic 2016-04-15 15:35:01 -07:00
Victoria Wang
ca6dfce8e6 Tweaks to pg 1, buttons 2016-04-15 15:00:29 -07:00
Victoria Wang
0a0a367541 Tweaks, ending message for page 10 2016-04-15 14:48:28 -07:00
Victoria Wang
10b66b6594 Gemfile.lock update 2016-04-15 14:48:14 -07:00
Victoria Wang
578b11a2d5 Merge branch 'master' of github.com:neocities/neocities 2016-04-15 11:34:22 -07:00
Victoria Wang
6de648c0be change info pg 2 2016-04-15 11:34:13 -07:00
Kyle Drake
4f0eb2b82b Merge branch 'master' of github.com:neocities/neocities 2016-04-15 11:34:09 -07:00
Kyle Drake
006c5aba8d Tempfix for tutorial 2 2016-04-15 11:33:47 -07:00
Victoria Wang
d6aab961c0 Updated colored/shaded tutorial images, css adjustments 2016-04-15 11:08:38 -07:00
Victoria Wang
939cfb44bc Merge branch 'master' of github.com:neocities/neocities 2016-04-15 10:29:18 -07:00
Victoria Wang
1067ce9bce css adjustments to page 2 2016-04-15 10:29:14 -07:00
Kyle Drake
a512d9735f no index.html path for view on root 2016-04-13 21:09:21 -07:00
Kyle Drake
110a8f508a Add hotlinking and CORS to comparison page 2016-04-13 17:37:52 -07:00
Kyle Drake
fafca061b7 included in config, not needed in map file 2016-04-13 15:47:54 -07:00
Kyle Drake
edde56c60c Merge branch 'master' of github.com:neocities/neocities 2016-04-13 15:19:59 -07:00
Kyle Drake
5d4e5ec109 supporters intelligence for proxy servers 2016-04-13 15:19:54 -07:00
Victoria Wang
8eb2c4e926 Edits to tutorial layout pg 2, simplified default html 2016-04-13 15:15:47 -07:00
Kyle Drake
f58aa79283 Update Gemfile.lock, freeze hoe due to issues 2016-04-11 18:51:34 -07:00
Kyle Drake
5ab7f97486 Checkin my Gemfile.lock to fix a weird issue 2016-04-11 18:07:05 -07:00
Kyle Drake
c4ec5fe00e Merge branch 'master' of github.com:neocities/neocities 2016-04-11 17:57:56 -07:00
Kyle Drake
05e5b3998b username lookup tool 2016-04-11 17:57:51 -07:00
Victoria Wang
35ec826a71 Add 'certified' gem 2016-04-08 20:24:59 -07:00
Kyle Drake
fd3a7ccabc major improvements and testing for password reset 2016-04-07 15:30:43 -07:00
Kyle Drake
a03056863e Commit migrations from domains 2016-04-07 12:51:01 -07:00
Kyle Drake
02ecd19f58 provide latest ipfs hash for api 2016-04-06 20:51:54 -07:00
Kyle Drake
4d223e356e no browser cache for dashboard and text editor 2016-04-06 20:23:48 -07:00
Kyle Drake
b15f1aab1d totally killed it with the used car ad, made a billion bucks bro 2016-04-01 23:52:38 -07:00
Kyle Drake
6f6d7bd717 used car ad from our sponsor 2016-04-01 01:43:39 -07:00
Kyle Drake
709516cc07 Support for KML 2016-03-31 02:28:16 +00:00
Kyle Drake
2a867b0786 Ignore IPv6 for delete purge 2016-03-28 20:21:11 +00:00
Kyle Drake
06b22bf971 Fix for ignoring ipv6 records 2016-03-23 04:42:00 +00:00
Kyle Drake
0dcffb37d4 update png file used for starter page 2016-02-28 13:36:17 -08:00
Kyle Drake
055cbf7ab5 fix text editing title 2016-02-27 13:46:51 -08:00
Kyle Drake
7178fb34e6 Remove Dnsruby call in workers 2016-02-25 03:51:41 +00:00
Kyle Drake
f07f804138 switch off dnsruby until 2.3.x warning goes away 2016-02-24 17:04:40 -08:00
Kyle Drake
8cd765dc0c rebuild Gemfile.lock, some upgrades 2016-02-24 16:54:42 -08:00
Kyle Drake
6ee4305795 ignore css map file 2016-02-20 19:09:14 -08:00
Kyle Drake
7b7fc91eb4 Dedupe scheduled archive jobs as well as queued jobs 2016-02-20 19:08:13 -08:00
Kyle Drake
c41c0433b2 hide domain code from settings for now 2016-02-19 19:40:52 -08:00
Kyle Drake
7084cde42f merge domains 2016-02-19 19:39:24 -08:00
Kyle Drake
47c0e52d93 initial contact form for domain registration 2016-02-19 19:37:27 -08:00
Kyle Drake
fda95b7f07 punycode support for domains, validate for registered domains 2016-02-17 23:15:12 -08:00
Kyle Drake
19638ff712 fix for supporter space 2016-02-16 14:59:36 -08:00
Kyle Drake
93e81e9d00 enforce maximum archives 2016-02-16 10:42:33 -08:00
Kyle Drake
ac0afbd2e9 rescue for missing pin 2016-02-15 18:07:37 -08:00
Kyle Drake
8aa0061ab4 unpin code for pruning excessive ipfs archives 2016-02-13 17:47:00 -08:00
Kyle Drake
7cce210f90 Merge branch 'master' of github.com:neocities/neocities 2016-02-12 19:08:27 -08:00
Kyle Drake
bbe57750da New API method: /api/list 2016-02-12 19:07:24 -08:00
Victoria Wang
ed9c516e12 Added sponsorship link 2016-02-12 17:24:26 -08:00
Kyle Drake
6ba8efaa11 RSS file support 2016-02-11 21:04:15 -08:00
Kyle Drake
f026d9d5fe Initial setup of Gandi gem 2016-02-11 19:56:37 -08:00
Kyle Drake
a868312bb4 Merge branch 'master' of github.com:neocities/neocities 2016-02-11 19:55:41 -08:00
Kyle Drake
07216f5099 remove unneeded MB from pricing 2016-02-11 19:55:33 -08:00
Victoria Wang
221287d236 Update code-of-conduct.txt 2016-02-08 12:45:41 -08:00
Victoria Wang
d74810d04f Update code-of-conduct.txt 2016-02-08 12:42:12 -08:00
Victoria Wang
a0544672c8 Update code-of-conduct.txt 2016-02-08 12:36:02 -08:00
Kyle Drake
4657a8563b Merge branch 'master' of github.com:neocities/neocities 2016-02-08 00:54:28 -08:00
Kyle Drake
fcb86b185e Record dashboard access 2016-02-08 00:54:08 -08:00
Victoria Wang
e09e925dfa Update code-of-conduct.txt 2016-02-06 17:10:48 -08:00
Victoria Wang
aa6132079a Update code-of-conduct.txt 2016-02-06 17:07:42 -08:00
Victoria Wang
95d5155028 Create code-of-conduct.txt 2016-02-06 17:06:52 -08:00
Kyle Drake
b51bb9d917 redis-namespace is needed 2016-01-24 15:41:11 -08:00
Kyle Drake
939d902b71 rebuild Gemfile.lock with updates, hopefully fix corruption issue 2016-01-23 21:59:53 -08:00
Kyle Drake
098ec87d39 Fix for new sidekiq 2016-01-23 21:59:23 -08:00
Kyle Drake
aa5d5ccd45 Updates to Gemfile.lock part 1 2016-01-23 20:56:40 -08:00
Kyle Drake
ab82ed898d Merge branch 'master' of github.com:neocities/neocities 2016-01-23 14:36:52 -08:00
Kyle Drake
aeb5fe4e34 change name downcases username check 2016-01-23 14:36:47 -08:00
Kyle Drake
608b3e00a7 charges once, so push start of recurring to one month from now 2016-01-23 01:29:31 +00:00
Kyle Drake
9170f9f99c reset plan type after paypal cancel 2016-01-22 21:58:03 +00:00
Kyle Drake
b967093ba7 updates for paypal support 2016-01-22 20:38:42 +00:00
Kyle Drake
be9fe7ca12 revert to to_space_pretty for storage on pricing 2016-01-21 22:55:53 -08:00
Kyle Drake
7db121e09f we need paypal-recurring 2016-01-21 22:38:42 -08:00
Kyle Drake
393fc4a63d Merge branch 'master' into paypalrecurring 2016-01-21 17:21:22 -08:00
Kyle Drake
ad89bf4187 Check in working Gemfile.lock due to dep problems 2016-01-21 17:14:45 -08:00
Kyle Drake
b878417ee0 merge master with paypalrecurring 2016-01-19 11:29:12 -08:00
Kyle Drake
a37586bad4 step back on classifier for now 2016-01-15 20:20:16 -08:00
Kyle Drake
3ef075b24b Better tuning for screenshots 2016-01-15 20:16:46 -08:00
Kyle Drake
415d853764 Test linnaeus branch with perf improvements 2016-01-11 10:44:44 -08:00
Kyle Drake
f3aab94de7 helps when you add the right files 2016-01-06 14:48:07 -08:00
Kyle Drake
32b4fe0d49 improvements to pagination 2016-01-06 14:46:57 -08:00
Kyle Drake
7714dc7c53 don't show receiver for same, take 2 2016-01-05 21:53:23 -08:00
Kyle Drake
1ca6c9238a don't show receiver if it's the same 2016-01-05 21:51:25 -08:00
Kyle Drake
c42196e16d updates to classifier primer 2016-01-01 01:52:21 -06:00
Kyle Drake
d9f8d1b688 raise site files limit for supporters to 50k 2015-12-31 14:02:33 -06:00
Kyle Drake
0487e0c95b spam training script 2015-12-30 17:52:47 -06:00
Kyle Drake
0c81f212b6 further improvements to site inspector 2015-12-29 22:48:46 -06:00
Kyle Drake
c6077724be site inspector title 2015-12-29 20:40:33 -06:00
Kyle Drake
390414e1ee site inspector touchups 2015-12-29 20:38:21 -06:00
Kyle Drake
d86f614248 site inspector, hotlinking page 2015-12-29 20:26:00 -06:00
Kyle Drake
71fabef58f classifier options for admin panel 2015-12-28 15:38:29 -06:00
Kyle Drake
242cc6e92d experimental statistical language classification system 2015-12-28 14:32:43 -06:00
Kyle Drake
9cc85a48bb fix for coveralls 2015-12-27 14:57:44 -06:00
Kyle Drake
aa59a4cae7 add ruby 2.3.0 for travis 2015-12-27 14:48:31 -06:00
Kyle Drake
2296ece1c2 fixes for travis, suggestions limit 2015-12-27 14:47:37 -06:00
Kyle Drake
7786320a94 bigints for daily stats 2015-12-26 16:13:22 -06:00
Kyle Drake
2bac42078c bigint for views and hits 2015-12-26 04:33:26 -06:00
Kyle Drake
7d8ad81fd0 Log stats for log date, rather than processing time. Add daily total
stats.
2015-12-22 04:37:16 -06:00
Kyle Drake
8174db65e1 Use site_files instead of file_list when all file list is needed 2015-12-19 22:48:08 -08:00
Kyle Drake
b2bdcfd1f5 fixes for space used issues 2015-12-18 03:22:41 -08:00
Kyle Drake
dd51efb1da Merge branch 'master' of github.com:neocities/neocities 2015-12-15 00:32:57 +00:00
Kyle Drake
688dd6ea62 fix for blocked ip updater 2015-12-15 00:32:52 +00:00
Victoria Wang
a2dcd57200 tutorial pg 2-4 colored versions 2015-12-14 15:44:58 -08:00
Kyle Drake
518a847b9e syntax highlighting for <pre><code> start 2015-12-14 15:30:07 -08:00
Kyle Drake
607d1fa1fd some indenting / newline removal 2015-12-14 15:11:32 -08:00
Kyle Drake
4918f2b5a6 Merge branch 'master' of github.com:neocities/neocities 2015-12-14 14:55:43 -08:00
Kyle Drake
65bc388ee9 Implement ace editor for coding 2015-12-14 14:55:33 -08:00
Victoria Wang
3b9491b719 tutorial ch1 pg1 initial colored version 2015-12-14 14:52:28 -08:00
Kyle Drake
d422795c04 Merge branch 'master' of github.com:neocities/neocities 2015-12-13 15:30:07 -08:00
Kyle Drake
66a9feef54 reduce image size on front splash 2015-12-13 15:30:00 -08:00
Victoria Wang
4bab84cf9d Merge branch 'master' of github.com:neocities/neocities 2015-12-09 13:39:51 -08:00
Victoria Wang
e974d59905 css tweak 2015-12-09 13:39:37 -08:00
Kyle Drake
5bff6b8c7c free maximum site files -> 2000 2015-12-04 23:40:53 -08:00
Kyle Drake
3b5b9ce4dc Merge branch 'master' of github.com:neocities/neocities 2015-11-28 02:45:59 -08:00
Kyle Drake
2a451e1eec cache purge: retry once with URI.encode 2015-11-28 02:45:54 -08:00
Victoria Wang
11bb1644f4 tutorial - special page 2 styling 2015-11-24 16:55:51 -08:00
Kyle Drake
d31655d73f Merge branch 'master' of github.com:neocities/neocities 2015-11-23 23:26:53 -08:00
Kyle Drake
053a82d3eb dont account crashing boolean for follows 2015-11-23 23:26:08 -08:00
Victoria Wang
b3e2d286f1 Fixed page-skipping bug, Line art for last 2 pages, lots of adjustments 2015-11-19 14:39:14 -08:00
Victoria Wang
966721043f Tutorial tweaks 2015-11-19 12:30:42 -08:00
Victoria Wang
2cc969198f tutorial error checking adjustments, added refined line art images 2015-11-19 12:03:07 -08:00
Kyle Drake
b671a19326 wire dialog display 2015-11-17 20:35:17 -08:00
Kyle Drake
7549855071 remove rainbows code 2015-11-15 11:25:40 +00:00
Kyle Drake
df917f3791 new image screenshot system for #194 2015-11-15 03:22:13 -08:00
Kyle Drake
06778925e0 Fixes for webdav directories 2015-11-11 13:50:29 -08:00
Kyle Drake
4195b903d7 disable autocomplete for editor, closing #197 2015-11-11 11:35:45 -08:00
Kyle Drake
7ea3935571 fix for file storing in webdav 2015-11-11 11:30:38 -08:00
Kyle Drake
74c65cf680 fix DMCA typo #198 2015-11-11 01:43:25 -08:00
Kyle Drake
6ef52c3020 Fix keyboard binding for proprietary computer (mac) 2015-11-08 21:01:08 -08:00
Kyle Drake
b6a759d036 less upload and rendering 2015-11-08 21:00:30 -08:00
Kyle Drake
67c37e57c5 show featured sites on site creation if no tag sites 2015-11-04 20:14:23 -08:00
Kyle Drake
6559f9b129 config for puma 2015-10-20 11:24:00 -07:00
Kyle Drake
9ee34e5a5b Merge branch 'master' of github.com:neocities/neocities 2015-10-15 16:37:53 -07:00
Kyle Drake
96478b25bb clean up some of the delete code, fix space_used bug (hopefully) 2015-10-15 16:37:47 -07:00
Victoria Wang
1e46191684 Tutorial page 1 part 2 mockup, error mockup 2015-10-14 11:25:56 -07:00
Kyle Drake
b98d982e5b Merge branch 'master' of github.com:neocities/neocities 2015-10-13 15:59:19 -07:00
Kyle Drake
d018e9df2d implement initial code for tutorial 2015-10-13 15:59:13 -07:00
Victoria Wang
251f4fcad1 Added Gemfile.lock to .gitignore 2015-10-13 11:26:31 -07:00
Victoria Wang
6fcc43297b Tutorial text improvements 2015-09-28 17:24:09 -07:00
Kyle Drake
ae94473a3c Merge branch 'master' of github.com:neocities/neocities 2015-09-20 00:15:52 -07:00
Kyle Drake
4502771702 use site_files for storing directory information 2015-09-20 00:15:46 -07:00
Victoria Wang
eb8873c381 Tutorial chapter 1 dialogue placement with rough comic mockups 2015-09-18 15:09:06 -07:00
Victoria Wang
11ab120f77 Initial HTML for Ch1 tutorial 2015-09-14 15:53:46 -07:00
Kyle Drake
f753b66ffd try revisiting signup site if failure 2015-09-13 02:31:19 -07:00
Kyle Drake
3dbdb584f7 add coverage badge 2015-09-13 02:16:21 -07:00
Kyle Drake
5c0cc42a01 filter test files from coverage 2015-09-13 02:14:12 -07:00
Kyle Drake
4f807e4d34 Merge branch 'master' of github.com:neocities/neocities 2015-09-13 02:02:44 -07:00
Kyle Drake
955e3e86bc use multiformatter for simplecov to get html cov reports back 2015-09-13 02:02:40 -07:00
Kyle Drake
2dcbbcf529 use coveralls simplecov formatter 2015-09-13 01:58:44 -07:00
Kyle Drake
fb5aa4f236 Incorrect use of IPFS -w 2015-09-13 08:47:40 +00:00
Kyle Drake
704a992f11 use coveralls for travis 2015-09-13 01:45:45 -07:00
Kyle Drake
faa738d6c1 yet another attempt at fixing the timing bug 2015-09-13 01:04:51 -07:00
Kyle Drake
575a38fbeb try to fix stat_logs dir 2015-09-13 00:52:09 -07:00
Kyle Drake
5ea0f8a7db remove stale gitignore, remove incorrect stat tests dir 2015-09-13 00:50:36 -07:00
Kyle Drake
2fe1d47db2 attempt to solve bundler deadlock issue with travis 2015-09-13 00:42:22 -07:00
Kyle Drake
09dba515b5 include dir for temp stat test files 2015-09-13 00:36:28 -07:00
Kyle Drake
e17f566833 test with ruby 2.2 2015-09-13 00:29:43 -07:00
Kyle Drake
00b211f38c upgrade to new travis build system 2015-09-13 00:24:15 -07:00
Kyle Drake
69b636d477 theoretical fix for occasional missing field in tests 2015-09-13 00:22:27 -07:00
Kyle Drake
f00214758c Merge branch 'master' of github.com:neocities/neocities 2015-09-12 23:35:39 -07:00
Kyle Drake
a7e370764b improve the site delete copy 2015-09-12 23:35:34 -07:00
Victoria Wang
4af150f736 Thank you page updates 2015-09-11 17:14:42 -07:00
Kyle Drake
7c1a895c89 baseplate for tutorials 2015-09-09 16:58:18 -07:00
Victoria Wang
843fd9c40d Merge branch 'master' of github.com:neocities/neocities 2015-09-08 16:14:01 -07:00
Victoria Wang
19d243e31e Initial work on tutorial mockup in HTML 2015-09-08 16:12:35 -07:00
Kyle Drake
e271c2c802 show ipfs hash on link 2015-09-08 12:31:17 -07:00
Kyle Drake
310dac87ab show ipfs link on site profile 2015-09-08 12:27:40 -07:00
Kyle Drake
84a1983994 Merge branch 'master' of github.com:neocities/neocities 2015-09-08 12:04:04 -07:00
Kyle Drake
8e9d3aef1e last changes for archiving 2015-09-08 12:03:56 -07:00
Victoria Wang
bbc6536971 Thank you page update 2015-09-04 13:12:58 -07:00
Kyle Drake
92de3ce7d7 touchups to ipfs archiver, fix for -w flag to add for directory objects 2015-09-04 09:17:33 -07:00
Kyle Drake
a9380d4554 fix for archiver 2015-09-03 13:18:11 -07:00
Kyle Drake
1b6e12a831 revert to old catcher for phantomjs for now 2015-09-02 17:23:51 -07:00
Kyle Drake
ab6b174ac5 missing table close 2015-09-02 03:15:42 -07:00
Kyle Drake
84b4d98e35 display popular sites 2015-09-02 03:09:02 -07:00
Kyle Drake
caa702c964 track bandwidth usage 2015-09-02 02:19:44 -07:00
Kyle Drake
ee9ad3f759 increase follow upvote count to 30 2015-08-28 12:11:13 -07:00
Kyle Drake
8524bc9d17 compute scores script 2015-08-28 12:03:04 -07:00
Kyle Drake
48845f3435 flush empty index sites script 2015-08-28 12:02:29 -07:00
Kyle Drake
ff953f4c09 site changed to false for empty index files 2015-08-28 11:55:36 -07:00
Kyle Drake
4447d24ed3 api_calls for score compute 2015-08-28 01:53:25 -07:00
Kyle Drake
97f0428745 check for nil api_calls 2015-08-28 01:31:24 -07:00
Kyle Drake
064e919490 penalize api calls in special sauce 2015-08-28 01:29:37 -07:00
Kyle Drake
b75116d13c index score, filter site_changed for compute 2015-08-28 01:04:17 -07:00
Kyle Drake
a732cfda88 dont set site changed unless /index.html is changed 2015-08-28 00:36:38 -07:00
Kyle Drake
b246eefe1d NEW FORMULA, EVEN BETTER TASTE 2015-08-27 22:25:19 -07:00
Kyle Drake
55dce7e80e SpEcIaL SaUcE 2015-08-27 21:12:52 -07:00
Kyle Drake
985a2f8b60 purge for delete and purge for refreshing 2015-08-26 16:23:21 -07:00
Kyle Drake
12a543d2aa Merge branch 'master' of github.com:neocities/neocities 2015-08-25 21:46:59 -07:00
Kyle Drake
341880db74 defer screenshot update for one minute 2015-08-25 21:46:52 -07:00
Victoria Wang
5a7522e656 Thank you page update 2015-08-25 10:32:43 -07:00
Kyle Drake
93b0dce694 only do an archive once per day 2015-08-21 15:16:07 -07:00
Kyle Drake
40e74d8f6f Merge branch 'master' of github.com:neocities/neocities 2015-08-21 14:42:11 -07:00
Kyle Drake
3035175c4f ability to set custom maximum space 2015-08-21 14:42:05 -07:00
Kyle Drake
0c8bba8114 pathetic start on implementing report processing 2015-08-19 16:23:40 -05:00
Victoria Wang
06ba067be8 Changed thankyou page protocol-relative urls back to http urls, added another backer 2015-08-18 17:03:38 -07:00
Victoria Wang
49df4a4d21 Merge branch 'master' of github.com:neocities/neocities 2015-08-17 14:47:15 -07:00
Victoria Wang
d722b0855b Added all the rest of the kickstarter supporter names I have to /thankyou page 2015-08-17 14:47:06 -07:00
Kyle Drake
b5920d8ba8 Dedupe follows 2015-08-13 19:01:13 -05:00
Kyle Drake
1efe0d486b Fix for plan update 2015-08-12 15:33:29 -05:00
Kyle Drake
ec306f9059 Ability to change stored credit card 2015-08-12 15:04:47 -05:00
Kyle Drake
b6686531c7 site reporting csrf token 2015-08-07 10:26:50 -05:00
Kyle Drake
6e0b21bfd2 Change upgrade copy, initial site files prime code 2015-08-05 11:40:16 -07:00
Kyle Drake
ac9ca39bfe Merge branch 'master' of github.com:neocities/neocities 2015-08-03 22:34:01 -07:00
Kyle Drake
351816c154 Flush cache on surf pages 2015-08-03 22:33:35 -07:00
Victoria Wang
b726abe94f Updates to /thankyou, /learn 2015-08-03 16:06:38 -07:00
Victoria Wang
8d1ccdca8c Add sponsor to homepage and initial kickstarter thank you page (incomplete) 2015-07-31 16:58:11 -07:00
Kyle Drake
e4c88688e7 Merge branch 'master' of github.com:neocities/neocities 2015-07-29 22:29:43 -07:00
Kyle Drake
a1023948f8 You never know. 2015-07-29 22:29:36 -07:00
Victoria Wang
b71e04cd9d Added /plan link back to header 2015-07-29 17:36:13 -07:00
Kyle Drake
7e2ee59186 don't worry about forbidden 2015-07-29 14:29:18 -07:00
Kyle Drake
afd9821c77 Information on our hotlinking policy 2015-07-29 03:06:09 -07:00
Kyle Drake
7bd2ad6b51 New cache system using proxy_cache_bypass
Instead of using ngx_cache_purge which was buggy, we are trying
proxy_cache_bypass, which is internal to nginx. This is A Good Thing
(assuming it works), because when we call HEAD on the purge item, it
also warms the cache for us, which the previous system did not do. We
want newly updated files to cache warm, because they are expected to be
used quickly.
2015-07-27 15:44:34 -07:00
Kyle Drake
0f0baa78ff remove kickstarter days helper 2015-07-25 16:03:41 -07:00
Kyle Drake
0ddcd3b35a Remove old kickstarter refs 2015-07-25 16:02:50 -07:00
Kyle Drake
0a27c0a9da Remove kickstarter from home and welcome screen 2015-07-25 15:27:44 -07:00
Kyle Drake
efd9627837 Merge branch 'master' of github.com:neocities/neocities 2015-07-25 15:23:50 -07:00
Kyle Drake
766ca009ca redirect blog path to subdomain 2015-07-23 17:27:37 -07:00
Victoria Wang
5df014a221 Changed blog links to blog.neocities.org 2015-07-23 17:26:20 -07:00
Victoria Wang
91f7cda905 Changed "1 days left" on kickstarter notices to "1 day left" 2015-07-23 17:12:12 -07:00
Victoria Wang
07a1d569b7 Added kickstarter link to welcome page 2015-07-22 14:26:07 -07:00
Victoria Wang
0c6ad24110 Wording changes to site metadata 2015-07-22 14:08:56 -07:00
Victoria Wang
f2496126f8 Changed "web site" to "website" on homepage 2015-07-22 13:40:19 -07:00
Victoria Wang
fd9b82d148 Clarified in a few places that we do static hosting only 2015-07-22 13:38:19 -07:00
Kyle Drake
82fe01fb4d Merge branch 'master' of github.com:neocities/neocities 2015-07-21 22:13:53 -07:00
Kyle Drake
aca48d3b0d some fixes to browse 2015-07-21 19:38:41 -07:00
Victoria Wang
4a24983bb5 Wording changes to current /tutorials page 2015-07-21 11:56:53 -07:00
Kyle Drake
91640d87b6 update phantomjs and screencap 2015-07-20 15:41:45 -07:00
Victoria Wang
233265f8ab Fix position of Edit Site button on mobile 2015-07-20 13:14:28 -07:00
Kyle Drake
205036004b no deleted/banned/crashing sites in followings/followers 2015-07-18 18:33:57 -07:00
Kyle Drake
64fb2cf4c4 forgot the migration, of course 2015-07-18 17:13:26 -07:00
Kyle Drake
04d1ba7ae4 flag admin_nsfw 2015-07-18 17:10:37 -07:00
Kyle Drake
b85903c4f6 admin nsfw flag 2015-07-18 16:59:28 -07:00
Kyle Drake
08ce614451 fix tag browsing for surf 2015-07-18 15:30:20 -07:00
Kyle Drake
f4904b622f Merge branch 'master' of github.com:neocities/neocities 2015-07-18 15:24:58 -07:00
Kyle Drake
7408960e5d improve tag browsing 2015-07-18 15:24:54 -07:00
Kyle Drake
d264672b51 fix for site tags referencing followed counts 2015-07-18 15:23:01 -07:00
Victoria Wang
3166ea9a13 Dashboard file listing fixes 2015-07-17 15:59:57 -07:00
Victoria Wang
8814680678 Merge branch 'master' of github.com:neocities/neocities 2015-07-17 15:37:57 -07:00
Victoria Wang
55062092de Misc mobile fixes 2015-07-17 15:37:33 -07:00
Kyle Drake
33cfc8dacf Merge branch 'master' of github.com:neocities/neocities 2015-07-17 15:31:06 -07:00
Kyle Drake
34de6cffba add re/code article to press 2015-07-17 15:30:51 -07:00
Victoria Wang
a409016496 Minimized dashboard header on mobile 2015-07-17 15:25:50 -07:00
Victoria Wang
834a79b4ef Fix kickstarter banner on mobile 2015-07-17 15:13:12 -07:00
Kyle Drake
b30e26513f faster load of list view class 2015-07-17 14:58:32 -07:00
Kyle Drake
b3979514cd set preference for view using localStorage 2015-07-17 14:53:57 -07:00
Victoria Wang
eef333431e Fixed text editor issues on mobile 2015-07-17 14:22:17 -07:00
Victoria Wang
2fb2a43e6a Add selected color to appropriate dashboard buttons 2015-07-17 13:56:31 -07:00
Kyle Drake
0bcefd9e2d select between list view and icon view 2015-07-17 13:43:52 -07:00
Victoria Wang
afd14f012b Moved list-view class from list div to files div 2015-07-17 13:28:09 -07:00
Kyle Drake
78dcd83191 Merge branch 'dashboard_list' 2015-07-17 13:14:54 -07:00
Kyle Drake
93427dca14 merge dashboard list view, wire in live data 2015-07-17 13:14:17 -07:00
Victoria Wang
2fd5aaf850 Show dashboard list view for mobile users 2015-07-17 12:45:51 -07:00
Victoria Wang
3c08f91d8e Text editor - hide view/share buttons on mobile so filename has more room 2015-07-17 12:35:11 -07:00
Victoria Wang
b38472260c Removed search page, moved search form to bottom of browse page 2015-07-17 12:03:00 -07:00
Victoria Wang
375de16acc Few more tweaks to browse 2015-07-17 11:18:26 -07:00
Victoria Wang
ac9d314b2b Misc adjustments to browse page 2015-07-17 10:54:41 -07:00
Kyle Drake
6773034487 add http timeout for purge cache worker 2015-07-16 19:28:45 -07:00
Kyle Drake
aa56561dff further cleanups to filtering code 2015-07-15 16:23:58 -07:00
Kyle Drake
af0a31d6a2 catch branch up with master 2015-07-13 20:14:55 -07:00
Kyle Drake
a7ee94b0c7 a start on improving reporting 2015-07-13 16:28:15 -07:00
Kyle Drake
bb44965c8e ensure forward slash 2015-07-03 16:09:42 -07:00
Kyle Drake
a5fdbfe4a7 fix cache purge test url and encode spaces 2015-07-02 19:40:42 -07:00
Kyle Drake
4b87c818e7 cache purge improvements, index path flusher 2015-07-02 17:21:19 -07:00
Kyle Drake
3a6ca6c12b implement the cache purger 2015-07-02 14:23:22 -07:00
Kyle Drake
4bfaa32431 fix for site banner 2015-07-01 16:09:03 -07:00
Kyle Drake
6116e90e62 unsubscribe not subscribe 2015-06-29 13:54:49 -07:00
Kyle Drake
cff1c3a20b pace out the email sending 2015-06-29 13:28:59 -07:00
Kyle Drake
da4c51e1ef code to count down date of end of campaign 2015-06-28 21:49:24 -07:00
Kyle Drake
1ae265d184 Merge branch 'master' of github.com:neocities/neocities 2015-06-28 21:41:22 -07:00
Kyle Drake
b986c57577 email newsletter capability 2015-06-28 21:41:08 -07:00
Victoria Wang
fb50667c26 Changed top navigation link from plan page to kickstarter 2015-06-28 20:24:14 -07:00
Victoria Wang
51f42e3ae5 news feed kickstarter banner 2015-06-28 20:15:01 -07:00
Kyle Drake
b164acbff4 fix the day (badly) for now 2015-06-26 23:31:57 +00:00
Kyle Drake
91e9acb49d more efficient queuer 2015-06-26 23:30:58 +00:00
Victoria Wang
0524180724 improvements to front page kickstarter section 2015-06-25 17:39:54 -07:00
Victoria Wang
d4303c7e46 Add info on kickstarter to homepage 2015-06-25 15:07:38 -07:00
Kyle Drake
2bb32e0091 fixes for site changed logic 2015-06-25 00:31:25 -07:00
Kyle Drake
ba1b00cdb5 fix for pin cmd 2015-06-24 16:39:45 -07:00
Kyle Drake
e50239ee39 fix for comment issue 2015-06-23 11:22:27 -07:00
Kyle Drake
35c8a98ec0 spiff up errors email 2015-06-21 02:38:29 -07:00
Kyle Drake
f38998b46a fix actual space used parser 2015-06-21 02:23:04 -07:00
Kyle Drake
098552e303 fix the file size issue 2015-06-21 00:39:02 -07:00
Kyle Drake
17889dff9a Link to daily stats 2015-06-17 16:43:33 -07:00
Kyle Drake
a9e142dee0 Only record visit stats for now, need to rethink 2015-06-17 16:29:57 -07:00
Kyle Drake
c9b4393dce Fix for iterator 2015-06-17 14:31:40 -07:00
Kyle Drake
964b4493f8 Add indexes for timestamp to stats 2015-06-17 14:30:05 -07:00
Kyle Drake
fb31f2de57 Add stat referrers site id index 2015-06-17 14:27:15 -07:00
Kyle Drake
334a9c019a Add url hash index for stat_referrers 2015-06-17 14:20:43 -07:00
Kyle Drake
8a4bc57524 New namecheap affiliate link for custom domains 2015-06-15 15:17:01 -07:00
Kyle Drake
c7edd8a712 Testing new meta tags 2015-06-14 18:18:53 -07:00
Kyle Drake
b11350b04f most followed default browse 2015-06-08 21:16:54 -07:00
Kyle Drake
d3eda71447 exclude stats from the current day 2015-06-08 21:07:05 -07:00
Kyle Drake
bf61a5384e show stats by days 2015-06-08 20:50:37 -07:00
Kyle Drake
5b13244712 Site model for file limit fix 2015-06-08 20:50:02 -07:00
Kyle Drake
784ba44785 Restrict amount of files created per site 2015-06-08 20:49:30 -07:00
Kyle Drake
397f34a014 Fix bug allowing you to delete your own site directory 2015-06-07 21:54:25 -07:00
Kyle Drake
092eb4536f browse pagination length to 100 2015-06-07 16:27:30 -07:00
Kyle Drake
11927f027d patch up space used bug 2015-06-07 03:05:13 -07:00
Kyle Drake
864903aa1f remove redundant archive requests from queue 2015-06-06 22:47:12 -07:00
Kyle Drake
3023c8badd sort by followers 2015-06-06 15:09:15 -07:00
Kyle Drake
6452442f42 updates to stats 2015-06-06 07:13:04 -07:00
Kyle Drake
453e762f8c more work on stats view 2015-06-04 03:08:39 -07:00
Kyle Drake
64ebf70b31 add username index to sites 2015-06-04 01:07:40 -07:00
Kyle Drake
781ea9c170 that was definitely what was wrong with the stats 2015-06-04 00:56:01 -07:00
Kyle Drake
987d9789be full hits migration 2015-06-03 14:54:07 -07:00
Kyle Drake
b5b529dca9 Merge branch 'master' of github.com:neocities/neocities 2015-06-03 14:52:39 -07:00
Kyle Drake
179289b8ac new bundler 2015-06-03 14:52:34 -07:00
Kyle Drake
9458903bb3 remove archive from sync 2015-06-03 21:52:20 +00:00
Kyle Drake
e5eeb58201 Merge branch 'master' of github.com:neocities/neocities 2015-06-03 14:51:44 -07:00
Kyle Drake
fdd98d5fba Not Found for title 2015-06-03 14:51:34 -07:00
Kyle Drake
06521b2b01 apparent fixes to stats 2015-05-30 19:39:49 +00:00
Kyle Drake
a48d5db958 ensure that ssh disconnects 2015-05-30 12:37:58 -07:00
Kyle Drake
d58e678dd0 properly disconnect ssh sessions 2015-05-30 03:25:21 -07:00
Kyle Drake
aea574da72 uncomment ipfs links on site page for now 2015-05-30 02:49:51 -07:00
Kyle Drake
97226ced22 fix for link 2015-05-30 02:44:46 -07:00
Kyle Drake
c4e181032c quick-n-dirty permanent web info page 2015-05-30 02:27:18 -07:00
Kyle Drake
59feb09928 integrate IPFS using remote ssh for now, views 2015-05-27 16:06:56 -07:00
Kyle Drake
8424cc02e8 Implement IPFS archiving (locally). Refactor store_file. 2015-05-21 23:10:59 -07:00
Victoria Wang
e138fc1dfe dashboard mobile tweak 2015-05-20 17:30:24 -07:00
Victoria Wang
e4f2495438 Dashboard (list-view) mobile styles 2015-05-20 16:38:15 -07:00
Victoria Wang
9bf33e192b Improvements to file list/icon view switcher, added select and hover styles 2015-05-20 16:16:30 -07:00
Victoria Wang
0cf25653e1 Added buttons for switching between list/icon view 2015-05-19 17:09:07 -07:00
Victoria Wang
7c017388f0 Added alternating background colors to file list rows, adjusted fonts, etc 2015-05-18 17:57:42 -07:00
Victoria Wang
239c1e2eb7 Added checkboxes to file list, fixed links 2015-05-18 17:43:24 -07:00
Kyle Drake
235460abf0 remove unlimited creativity part on the bottom 2015-05-15 12:59:39 -07:00
Kyle Drake
28a908e1f8 final copy of new header 2015-05-15 12:58:43 -07:00
Kyle Drake
0f22f2949a new top title 2015-05-15 12:38:25 -07:00
Kyle Drake
097f17358e Merge branch 'dashboard_list' of github.com:neocities/neocities into dashboard_list 2015-05-15 12:34:59 -07:00
Kyle Drake
b7f96cb72c new top header 2015-05-15 12:34:53 -07:00
Victoria Wang
674798a01b Change list view manage/delete to always shown 2015-05-13 15:28:53 -07:00
Victoria Wang
b0667a73a7 Initial work on size/updated columns; switched title truncation from ruby to css text-overflow 2015-05-13 15:16:10 -07:00
Victoria Wang
5878692c81 Moved manage/delete buttons to the right 2015-05-13 15:04:40 -07:00
Kyle Drake
a374a7a9c6 site based protocol for webgl api 2015-05-11 18:15:37 -07:00
Victoria Wang
120fc5296a Initial work on dashboard list view 2015-05-11 17:04:48 -07:00
Kyle Drake
bd0b23e612 mixed content is a nono 2015-05-11 15:03:15 -07:00
Kyle Drake
f92023a5d0 country codes needed 2015-05-11 15:01:26 -07:00
Kyle Drake
51140856c5 First implementation of advanced stats 2015-05-11 15:00:58 -07:00
Kyle Drake
dc01d795f3 fix for Stripe webhook model lookup 2015-05-11 10:38:48 -07:00
Kyle Drake
16eec7d10d Merge branch 'master' of github.com:neocities/neocities 2015-05-11 10:02:55 -07:00
Kyle Drake
f687b7becd try to fix stripe webhook 2015-05-11 10:02:50 -07:00
Kyle Drake
496385438a Fix dashboard test 2015-05-11 10:02:12 -07:00
Kyle Drake
cc4cc6b5a6 typo fix 2015-05-11 15:48:52 +00:00
Kyle Drake
e91208c2f2 Prevent Joey's hacking from throwing exception 2015-05-11 08:47:19 -07:00
Kyle Drake
2b7a552b03 Merge branch 'master' of github.com:neocities/neocities 2015-05-10 10:31:57 -07:00
Kyle Drake
e8e903bf09 try to debug the charge webhook issue 2015-05-10 10:31:22 -07:00
Kyle Drake
ecc0085f33 fix for surf pagination 2015-05-10 09:48:20 +00:00
Kyle Drake
021589d7dc not sure how that happened... 2015-05-10 09:21:25 +00:00
Kyle Drake
9adf6ba4fb fix error email 2015-05-10 09:17:32 +00:00
Kyle Drake
5d89cb305d browse by supporters 2015-05-10 00:01:07 -07:00
Kyle Drake
5a07d9d0f1 Merge branch 'master' of github.com:neocities/neocities 2015-05-09 22:16:20 -07:00
Kyle Drake
977ba19610 implement education version of Neocities 2015-05-09 22:16:15 -07:00
Kyle Drake
c5d62b19a3 New stats needs to escape gets newline 2015-05-09 16:52:22 -07:00
Kyle Drake
9affb83a2c Fix stats for paths with spaces in them 2015-05-09 00:48:23 -07:00
Victoria Wang
439710b9d5 Tweaks to dashboard wording, padding 2015-05-08 15:20:21 -07:00
Victoria Wang
cc519c00d6 Lightening up file listing background color 2015-05-08 15:12:58 -07:00
Kyle Drake
93b5b94f14 better file create 2015-05-07 14:32:52 -07:00
Kyle Drake
85fc6d6e39 focus for dir closes #165 2015-05-07 08:17:40 -07:00
Kyle Drake
2d7de7e246 sometimes referrer isn't there, what the lump is that 2015-05-06 23:25:29 -07:00
Kyle Drake
ae87b48bef fix pretty bytes (i hope) 2015-05-06 18:12:24 -07:00
Kyle Drake
f8f8fe1a22 featured browse option closes #158 2015-05-06 14:29:43 -07:00
Kyle Drake
65bce59126 Merge branch 'master' of github.com:neocities/neocities 2015-05-06 14:23:00 -07:00
Kyle Drake
49defcd0c7 fix tag tests, start on education site creation, updated test code 2015-05-06 14:22:55 -07:00
Victoria Wang
4f2b9ff3cb Fixes to stats page on mobile 2015-05-05 16:56:23 -07:00
Victoria Wang
1a67da05e9 Tweaks to visitor globe 2015-05-05 15:28:03 -07:00
Victoria Wang
830bc28aed Improvements to latest visitors table 2015-05-05 08:58:42 -07:00
Victoria Wang
4805dbcdf3 Better latest visitors table, added time filter for chart 2015-05-04 17:18:06 -07:00
Victoria Wang
9e29572510 Initial Chart.js code 2015-05-04 16:14:48 -07:00
Victoria Wang
0834651363 Fixed WebGL earth 2015-05-04 15:30:48 -07:00
Kyle Drake
f00e5d0757 recursive directory drag-n-drop for chrome 2015-05-03 15:30:55 -07:00
Kyle Drake
258ef281e0 changed count >= 1 2015-05-03 10:25:05 -07:00
Kyle Drake
8d24b0fe09 Fix link for view on domains 2015-05-02 23:56:44 -07:00
Kyle Drake
0b6111e197 editor path breadcrumbs 2015-05-02 23:23:57 -07:00
Kyle Drake
b90ebd19c1 Helps when you use the right method 2015-05-02 22:50:52 -07:00
Kyle Drake
1fa734f679 Fix for bad link for domains 2015-05-02 22:50:08 -07:00
Kyle Drake
e08a1362e1 delete returns to directory user was in 2015-05-02 22:33:50 -07:00
Kyle Drake
704011a1c0 finish up pruning for stats 2015-05-02 14:34:21 -07:00
Kyle Drake
918231ea0f Merge branch 'master' of github.com:neocities/neocities 2015-05-02 02:34:31 -07:00
Kyle Drake
227b123fc9 stat referrers, locations, and paths 2015-05-02 02:34:24 -07:00
Victoria Wang
0ee7727461 Initial work on stats UI 2015-05-01 23:22:43 -07:00
Kyle Drake
d9babf5cd6 Accidental commit, fix soon 2015-05-01 01:54:55 -07:00
Kyle Drake
e5f3969ed8 referrers recording (no purge yet), and cleaner stat tests 2015-05-01 01:52:13 -07:00
Kyle Drake
c2705157c4 leave a note about stat#prune 2015-04-30 12:53:50 -07:00
Kyle Drake
9c80d5eecd Add GeoLiteCity, and stats pruning code 2015-04-30 12:43:21 -07:00
Kyle Drake
6a8fa080eb Merge branch 'master' of github.com:neocities/neocities 2015-04-29 18:18:07 -07:00
Kyle Drake
3bca5e8839 Refactor logs, granularity to one day, with testing 2015-04-29 18:18:02 -07:00
Victoria Wang
94ee46d9e8 Changed yellow alert color to alert-error only, tweaked some alerts 2015-04-29 16:42:49 -07:00
Victoria Wang
84dd32f61e More tweaks to education page 2015-04-29 16:15:44 -07:00
Kyle Drake
434deee366 Update rmagick (and add io/extra for geoip) 2015-04-29 13:37:21 -07:00
Victoria Wang
44e3d276f4 More work on education page 2015-04-28 16:53:00 -07:00
Victoria Wang
ddf7dd7ca2 Initial work on education page 2015-04-28 15:44:31 -07:00
Kyle Drake
10ce4c058f missed another https link 2015-04-28 03:00:11 +00:00
Kyle Drake
33892c515e fix for view site in header 2015-04-28 02:55:45 +00:00
Kyle Drake
1ed9fbeaf9 Mention the @ dealie 2015-04-27 19:53:19 -07:00
Kyle Drake
1145bc6bff Uri link, not default https for custom domains 2015-04-27 19:52:14 -07:00
Kyle Drake
c7649a9292 Fix view site for header link 2015-04-22 22:26:02 -07:00
Kyle Drake
bf59b98631 Copy changes 2015-04-22 12:36:39 -07:00
Kyle Drake
391f20c9d5 Merge branch 'master' of github.com:neocities/neocities 2015-04-22 12:31:13 -07:00
Kyle Drake
bded4ad064 Merge branch 'master' of github.com:neocities/neocities 2015-04-22 16:50:29 +00:00
Kyle Drake
0552eb8833 push free space to 100MB 2015-04-22 16:50:24 +00:00
Kyle Drake
ec4a3b4440 More signup reporting 2015-04-19 06:51:40 -07:00
Kyle Drake
eba8a307bd Add GeoIP, will be used for stats 2015-04-18 18:50:51 -07:00
Kyle Drake
8b32946b19 Quick fix to pricing bullet 2015-04-18 18:48:38 -07:00
Kyle Drake
0acbcbb235 fix copy on plan info 2015-04-15 15:28:37 -07:00
Victoria Wang
876a701be1 More graphical site update events on news feed 2015-04-14 11:45:51 -07:00
Victoria Wang
43959d5185 More tweaks to newsfeed 2015-04-12 15:10:13 -07:00
Kyle Drake
526f4c9543 add migrations 2015-04-10 18:31:43 -07:00
Kyle Drake
c4376bc580 an unfinished start on proper paypal recurring integration 2015-04-10 18:15:11 -07:00
Kyle Drake
5346b7345e Less pompous english request for contact 2015-04-10 14:44:08 -07:00
Kyle Drake
fa66b2bdbe Nix the period 2015-04-09 17:35:07 -07:00
Victoria Wang
d637f2d05c Fixed extra padding in welcome page 2015-04-09 17:05:24 -07:00
Victoria Wang
8b3c07b9ab Newsfeed wording changes 2015-04-09 16:23:41 -07:00
Victoria Wang
a945904cfc Updated alignments for new newsfeed 2015-04-09 12:48:45 -07:00
Kyle Drake
949380ed09 Touch up welcome page 2015-04-09 12:46:55 -07:00
Victoria Wang
baf5884b7b Initial work on news feed redesign 2015-04-08 17:18:36 -07:00
Kyle Drake
602fc1a82d fix paypal link attempt # 6000 2015-04-08 12:41:53 -07:00
Kyle Drake
0da379fb71 Merge branch 'master' of github.com:neocities/neocities 2015-04-08 10:35:40 -07:00
Kyle Drake
1867e12c36 add XML to allowed file types list, fix titles 2015-04-08 10:35:17 -07:00
Kyle Drake
93397a4176 add XML to allowed file types list 2015-04-08 10:34:57 -07:00
Kyle Drake
0ccf82f4ad Merge branch 'master' of github.com:neocities/neocities 2015-04-06 17:32:24 -07:00
Kyle Drake
976a9728b3 Update stats to show site hits and views 2015-04-06 17:16:15 -07:00
Victoria Wang
95659e1662 Minor visual fixes to Featured Sites on homepage 2015-04-05 16:10:44 -07:00
Victoria Wang
0e4adcdeb4 Visual improvements to homepage captcha 2015-04-05 15:46:29 -07:00
Kyle Drake
e44e4ffcb7 No more SEO spam from report tool that does not require login 2015-04-05 12:34:36 -07:00
Kyle Drake
02cea425e9 track api call counts that require auth 2015-04-04 17:11:30 -07:00
Kyle Drake
cd94d2ce36 event permalink now points to site actioned on 2015-04-02 22:28:43 -07:00
Kyle Drake
7c4b332acf Fix error with empty tag remove 2015-04-01 22:55:36 -07:00
Kyle Drake
f92a0d7b43 Merge branch 'master' of github.com:neocities/neocities 2015-04-01 17:41:00 -07:00
Kyle Drake
343e3ee502 Boost site changes to 100 2015-04-02 00:40:37 +00:00
Kyle Drake
724fe393bc Merge branch 'master' of github.com:neocities/neocities 2015-04-01 17:39:27 -07:00
Kyle Drake
23f811e3ed Dealing with our techno-libertarian infestation problem 2015-04-01 17:39:21 -07:00
Victoria Wang
bf212abb6f Expanding the homepage gallery with a title and button to visit the browse page 2015-04-01 16:19:59 -07:00
Kyle Drake
577682277d Don't use fancy sapphire card version to fix Chase Freedom card 2015-04-01 13:16:55 -07:00
Kyle Drake
245ce0c6b0 no unsubscribe footer for internal emails 2015-04-01 11:35:47 -07:00
Kyle Drake
b7e091b440 fix volume for reals 2015-03-31 21:25:20 -07:00
Kyle Drake
15d00c6d7a little quieter 2015-03-31 21:22:52 -07:00
Kyle Drake
ceddec5b5c Kinder, Gentler Marc Andreeson 2015-03-31 21:17:36 -07:00
Kyle Drake
55f1c8c066 stay on top 2015-03-31 21:04:15 -07:00
Kyle Drake
1ccdc7a996 raptorize 2015-03-31 20:59:42 -07:00
Kyle Drake
fe00760cd6 Merge branch 'master' of github.com:neocities/neocities 2015-03-31 16:51:40 -07:00
Kyle Drake
3e8514fde4 show some site change activity in global activity 2015-03-31 16:51:31 -07:00
Victoria Wang
42576bcac0 Style adjustments to homepage demo 2015-03-31 16:12:16 -07:00
Victoria Wang
293ce32b16 Merge branch 'master' of github.com:neocities/neocities 2015-03-31 13:36:20 -07:00
Victoria Wang
b6e2d8c47a Added image/text on commenting to homepage 2015-03-31 13:35:52 -07:00
Kyle Drake
32882da161 Merge branch 'master' of github.com:neocities/neocities 2015-03-31 13:28:41 -07:00
Kyle Drake
54ea98be1c refactor news feed default dataset, fix event delete 2015-03-31 13:28:35 -07:00
Kyle Drake
ebc3254724 Add sleep to prevent missing element issue 2015-03-31 13:28:00 -07:00
Victoria Wang
e6301e52b4 Improved follow/site updates screenshot 2015-03-31 12:27:13 -07:00
Victoria Wang
24fe3775d0 Upgrade FontAwesome to 3.4.0. 2015-03-31 12:19:23 -07:00
Victoria Wang
28615bb1f7 More work on homepage demo copy and screenshots 2015-03-30 19:59:27 -07:00
Kyle Drake
f739c4bcd4 Try yet another paypal button that won't work 2015-03-30 19:38:53 -07:00
Kyle Drake
307e6299b2 Fix for share links 2015-03-30 19:38:40 -07:00
Kyle Drake
da2907e959 use keyboardjs instead of custom version 2015-03-30 18:26:40 -07:00
Kyle Drake
1400a090b6 always use neocities subdomain 2015-03-30 11:48:45 -07:00
Kyle Drake
dfa52604ff Merge branch 'homepagetour' 2015-03-30 11:47:12 -07:00
Kyle Drake
b72c152ef9 6 actually 2015-03-30 00:40:06 -07:00
Kyle Drake
f5c0dad309 add featured at column for sites 2015-03-30 00:29:53 -07:00
Kyle Drake
4a150f2564 a start on dynamic featured front sites 2015-03-30 00:29:26 -07:00
Kyle Drake
44350c9d84 redirect for all pages on surf mode, not just offsite 2015-03-29 19:45:02 -07:00
Victoria Wang
0c13dee38f Mostly done with homepage tour styles 2015-03-28 23:55:07 -07:00
Victoria Wang
8935aaf43a More updates to homepage tour 2015-03-28 23:05:55 -07:00
Kyle Drake
6195c784ad https for surf 2015-03-28 23:05:38 -07:00
Kyle Drake
f23b5c4871 remove surf proxy before check 2015-03-28 22:58:03 -07:00
Kyle Drake
eb316031a2 fix js file, remove old surf mode crap 2015-03-28 22:57:31 -07:00
Kyle Drake
2e76bc9a0b config.yml.template update and surfinject 2015-03-28 22:27:17 -07:00
Victoria Wang
acc87b328c Initial work on bringing back homepage tour of features 2015-03-26 21:14:05 -07:00
Kyle Drake
169a741213 new requirements for config.yml 2015-03-26 11:55:05 -07:00
Kyle Drake
75f6c5d31b new strategy for surf mode 2015-03-26 11:53:41 -07:00
Kyle Drake
0efa3cada0 account events was not pulling in proper data, causing commenting issues 2015-03-26 11:20:51 -07:00
Kyle Drake
2c3441d791 improvements to surf mode 2015-03-25 14:44:39 -07:00
Kyle Drake
3a157b697f referencing stripe from its repo breaks rubygems install for some reason 2015-03-25 20:03:28 +00:00
Kyle Drake
08faf639b0 Merge branch 'master' of github.com:neocities/neocities 2015-03-25 12:54:50 -07:00
Kyle Drake
a2ac84dc42 first attempt at a working surf bar proxy 2015-03-25 12:54:44 -07:00
Victoria Wang
edadd279ed Fix weird green links from bootstrap 2015-03-24 19:20:47 -07:00
Victoria Wang
0f7c5bd024 Contact page wording changes. Removed snarky bit from answer to "I want to take down someone's Neocities site." 2015-03-24 19:11:20 -07:00
Kyle Drake
5640f02ee8 clarification on english 2015-03-24 14:50:58 -07:00
Kyle Drake
a3fb4bd2c5 add DMCA contact form 2015-03-24 14:44:22 -07:00
Victoria Wang
dd4318505f More fixes to buttons 2015-03-24 13:44:20 -07:00
Victoria Wang
28fad8d3f2 Removed btn class from btn-Action links because it's both redundant and bringing along messed up boostrap baggage with it #104 2015-03-24 13:36:12 -07:00
Victoria Wang
55f74f3a01 Improvements to button styles 2015-03-24 13:21:09 -07:00
Kyle Drake
6af47e3bd6 this will be funnier 2015-03-23 22:29:38 -07:00
Kyle Drake
e7b87929c4 update contact FAQ 2015-03-23 22:25:35 -07:00
Kyle Drake
759e5500ed share specific file for site editor share button 2015-03-23 21:12:02 -07:00
Kyle Drake
43ea7a7ed7 Merge branch 'master' of github.com:neocities/neocities 2015-03-23 17:55:02 -07:00
Kyle Drake
7ead36fffb Paypal fix attempt (again) 2015-03-23 17:54:53 -07:00
Victoria Wang
5e283cf62d Fix <a> tag in follow header 2015-03-23 17:23:18 -07:00
Victoria Wang
070a8f0a66 Add a share button to news feed sidebar, made edit icons consistent. 2015-03-23 17:17:04 -07:00
Kyle Drake
326650b4e3 quick and dirty follows/followings pages 2015-03-23 16:45:34 -07:00
Kyle Drake
ca5d21d56b check in newest paypal code 2015-03-20 18:46:23 -07:00
Kyle Drake
78a33c8b62 paypal sucks 2015-03-17 12:11:09 -07:00
Kyle Drake
235a828214 Merge branch 'master' of github.com:neocities/neocities 2015-03-17 12:08:53 -07:00
Kyle Drake
8a7e9606fe potential fix for paypal weirdness 2015-03-17 12:07:23 -07:00
Victoria Wang
742092cd8b Merge branch 'master' of github.com:neocities/neocities 2015-03-14 17:59:16 -05:00
Victoria Wang
d1eb303b3f Fixes to newsfeed header on mobile, wording change 2015-03-14 17:59:09 -05:00
Kyle Drake
dce7d8e7d4 Merge branch 'master' of github.com:neocities/neocities 2015-03-14 17:49:23 -05:00
Kyle Drake
3f7f90c9e7 remove monkeypatch that was causing file upload issues 2015-03-14 17:49:18 -05:00
Victoria Wang
e3108cb515 Newsfeed: Fix focus link color 2015-03-14 17:25:39 -05:00
Kyle Drake
82c473351f Remove debug puts 2015-03-14 16:21:20 -05:00
Victoria Wang
d22be6ce2d Minor copy edits to Welcome and Confirm emails 2015-03-14 14:46:14 -05:00
Victoria Wang
3d458873d2 Merge branch 'master' of github.com:neocities/neocities 2015-03-14 14:19:34 -05:00
Victoria Wang
73eb52d52f Contact page style changes and copy edits 2015-03-14 14:19:20 -05:00
Kyle Drake
ad650a3800 Merge branch 'master' of github.com:neocities/neocities 2015-03-14 12:38:30 -05:00
Kyle Drake
41f2096a7d tweak global activity limits 2015-03-14 12:37:48 -05:00
Victoria Wang
5af99daa0d Misc adjustments to margins on mobile and elsewhere 2015-03-14 12:14:31 -05:00
Kyle Drake
4248d27544 trying to fix paypal 2015-03-14 00:33:39 -05:00
Kyle Drake
a20a2be99e Merge branch 'master' of github.com:neocities/neocities 2015-03-14 00:17:11 -05:00
Kyle Drake
9ec23e6d3f Max file size of 100MB to prevent movie piracy 2015-03-14 00:17:07 -05:00
Victoria Wang
03610c5aa6 Improvement to site suggestions on mobile 2015-03-13 17:35:00 -05:00
Victoria Wang
5f609f2683 More fixes to browse page on mobile 2015-03-13 17:13:44 -05:00
Victoria Wang
17ef25b572 Dashboard mobile margin fixes 2015-03-13 14:33:11 -05:00
Victoria Wang
91ff69f86d Dashboard header margin tweak 2015-03-13 13:58:39 -05:00
Victoria Wang
25ee91a759 Add share button to dashboard header 2015-03-13 13:47:30 -05:00
Victoria Wang
79e8885ae5 Add share button to site editor (initial placement, needs more work) 2015-03-13 13:05:51 -05:00
Kyle Drake
a397df8e1f Merge branch 'master' of github.com:neocities/neocities 2015-03-13 11:39:00 -05:00
Victoria Wang
98a4e450b0 A few more tweaks to footer 2015-03-13 11:38:45 -05:00
Kyle Drake
1721502cda Merge branch 'master' of github.com:neocities/neocities 2015-03-13 11:38:34 -05:00
Kyle Drake
3f67a37a09 Clean up supporter upgrade email, closes #80 2015-03-13 11:38:26 -05:00
Victoria Wang
535570e1f5 Margin changes to footer on mobile 2015-03-13 11:33:32 -05:00
Kyle Drake
2a9752b503 Merge pull request #88 from fluffypony/master
minor readme fixes
2015-03-13 11:28:37 -05:00
Kyle Drake
d085a99ddc Add more catches for stripe events 2015-03-13 11:27:39 -05:00
Kyle Drake
4e0ff8a7ca send email for new customers, closes #103 2015-03-13 09:58:10 -05:00
Kyle Drake
0f958023d0 Push supporter space to 10GB, BW to 2TB 2015-03-12 13:00:55 -05:00
Kyle Drake
5450ab4e83 ability to email without footer 2015-03-11 12:19:40 -04:00
Kyle Drake
6da092aee7 quick and dirty, not thread safe, temporary stripe customers cache for stats 2015-03-06 16:11:34 -05:00
Kyle Drake
25698f1b9c AND instead of OR, take 2 2015-03-06 16:01:29 -05:00
Kyle Drake
7848a1436e Remove debugger 2015-03-06 15:30:54 -05:00
Kyle Drake
b71a549d05 AND for exclusions, not OR 2015-03-06 15:29:52 -05:00
Kyle Drake
ae14987a2f cleanup for stats explanation 2015-03-06 14:55:42 -05:00
Kyle Drake
dcf7fdca32 fix test 2015-03-06 14:41:57 -05:00
Kyle Drake
4319bfde05 mistakenly committed namecheap test code, removing 2015-03-06 14:20:13 -05:00
Kyle Drake
69f8bf9232 Add Treehouse link 2015-03-06 14:17:23 -05:00
Kyle Drake
7b83db26e3 little copy changes 2015-03-06 14:14:59 -05:00
Kyle Drake
97fff828d7 Merge branch 'master' of github.com:neocities/neocities 2015-03-06 14:02:14 -05:00
Kyle Drake
834aff78ed Legal information guide 2015-03-06 14:01:54 -05:00
Kyle Drake
410f9c5683 Info on stats 2015-03-06 13:33:11 -05:00
Victoria Wang
91a9d1c5f2 Margin adjustments to footer 2015-03-02 16:54:10 -06:00
Kyle Drake
8d9582bab8 uncomment block test for now 2015-03-01 15:43:35 -08:00
Kyle Drake
6ccabdc5f4 add lsyncd config 2015-03-01 15:29:35 -08:00
Kyle Drake
73adf1f984 clarify revenue after fees 2015-03-01 11:32:08 -08:00
Kyle Drake
251ecc8aca Merge branch 'master' of github.com:neocities/neocities 2015-03-01 11:30:26 -08:00
Kyle Drake
41c4a5a1ef calculate the real revenue on stats after credit card fees 2015-03-01 11:30:21 -08:00
Victoria Wang
c8bd1b3d59 Slight change to wording of dashboard welcome dialog #77 2015-02-28 22:39:08 -06:00
Kyle Drake
fbee506f88 fix quartz link 2015-02-28 08:42:00 -08:00
Kyle Drake
a0f02cf2c5 Merge branch 'master' of github.com:neocities/neocities 2015-02-27 20:32:27 -08:00
Kyle Drake
e32bd5d85a moar press 2015-02-27 20:32:21 -08:00
Victoria Wang
0ef25a55b7 Removed "Neocities" top menu link from signed-in homepage and "About" top menu link from all pages 2015-02-27 21:26:12 -06:00
Kyle Drake
7f8fdb159d add press 2015-02-27 17:10:13 -08:00
Kyle Drake
314e67adcd a little bit faster cache recycle 2015-02-27 12:10:29 -08:00
Kyle Drake
e1ef255f84 prohibit third-party form sites that are almost exclusively used for phishing 2015-02-27 09:44:43 -08:00
Kyle Drake
c2978f03f0 admin link if admin 2015-02-26 15:57:11 -08:00
Kyle Drake
05860c2193 XMerge branch 'master' of github.com:neocities/neocities 2015-02-26 11:17:46 -08:00
Kyle Drake
b822d4345b ability to view individual event #71:close 2015-02-26 11:17:40 -08:00
Victoria Wang
122c9eeb89 Merge branch 'master' of github.com:neocities/neocities 2015-02-26 00:24:30 -06:00
Kyle Drake
c28a72df5c updated gemfile.lock 2015-02-26 05:12:00 +00:00
Kyle Drake
781e85f908 set mode correctly for ace editor [#93:closed] 2015-02-25 21:10:46 -08:00
Kyle Drake
fe9b051c87 fix for derpie behavior of successmultiple firing for each upload 2015-02-25 20:49:46 -08:00
Kyle Drake
ca2a0c057b missing file for empty js test #85 2015-02-25 14:28:15 -08:00
Kyle Drake
79b2d2322e Merge branch 'master' of github.com:neocities/neocities 2015-02-25 14:25:54 -08:00
Kyle Drake
d0d6cec34e permit uploading of empty files #85 2015-02-25 14:24:52 -08:00
Riccardo Spagni
67f8573d31
minor readme fix 2015-02-25 13:46:46 +02:00
Victoria Wang
d2daf69167 Added target="_blank" to Twitter and RSS in the share pop up 2015-02-24 23:02:46 -06:00
Victoria Wang
671f5af493 Site profile - fixed pluralization of values in header, moved Number of Updates from sidebar to header #64 2015-02-24 22:58:24 -06:00
Victoria Wang
804067d9c3 Quick conversion of Global Activity page into the standard one-column layout. This will eventually be turned into a two-col layout. 2015-02-24 22:33:22 -06:00
Victoria Wang
fbf66be7b0 Assuming "websome" was a typo ;) 2015-02-24 21:44:42 -06:00
Victoria Wang
14ebe8128a Misc header tweaks 2015-02-24 21:43:07 -06:00
Kyle Drake
762b3c7ba6 Merge branch 'master' of github.com:neocities/neocities 2015-02-24 18:14:01 -08:00
Kyle Drake
3c40fb6503 touch up the alternate payment page, switch to new paypal account 2015-02-24 18:13:44 -08:00
Victoria Wang
9aa0f245ea Merge branch 'master' of github.com:neocities/neocities 2015-02-24 16:46:52 -06:00
Victoria Wang
2209c54fc3 More tweaks to /welcome styles and copy 2015-02-24 16:46:32 -06:00
Kyle Drake
474f5be8e7 disable cache on stats until I can figure out the top bar problem 2015-02-24 13:51:19 -08:00
Victoria Wang
ac44a0419d Fix font problem with skeuocard on /welcome 2015-02-24 15:33:48 -06:00
Kyle Drake
029eb57b85 New welcome page #54 2015-02-24 13:23:15 -08:00
Kyle Drake
7390dbbd4c push back byebug for mri 2015-02-24 08:14:10 -08:00
Kyle Drake
d500721788 gemfile deps fixes for Rubinius 2015-02-24 07:57:18 -08:00
Kyle Drake
016de5f983 push daily limit to 1000 2015-02-23 08:02:02 -08:00
Kyle Drake
478156ea88 Merge branch 'master' of github.com:neocities/neocities 2015-02-23 07:54:58 -08:00
Kyle Drake
c01d130e4d up limits for ips 2015-02-23 07:54:34 -08:00
Victoria Wang
23c8fc9ed7 Welcome pricing margin tweaks 2015-02-21 16:51:57 -06:00
Victoria Wang
4849a0cefb Welcome signup improvements for large and small screen widths 2015-02-21 16:24:30 -06:00
Kyle Drake
d56edd80ec better error reporting to help fix bugs 2015-02-21 14:08:27 -08:00
Kyle Drake
b782632b69 Merge branch 'master' of github.com:neocities/neocities 2015-02-21 09:00:27 -08:00
Kyle Drake
cb1bb24d86 attempted fix for weird encoding problem 2015-02-21 09:00:17 -08:00
Victoria Wang
ef404e4d20 More progress on welcome signup 2015-02-20 00:00:00 -06:00
Victoria Wang
c3b58beb68 Merge branch 'master' of github.com:neocities/neocities 2015-02-18 00:00:35 -06:00
Victoria Wang
bf48e03b9a Initial styles for the welcome pricing page 2015-02-17 23:59:47 -06:00
Kyle Drake
1f01baf664 non https for hosts 2015-02-17 18:00:00 -08:00
Kyle Drake
78a5791e5a disable cache for now on activity closes #72 2015-02-17 17:57:46 -08:00
Kyle Drake
12b7a2830e tweak numbers 2015-02-15 13:21:34 -08:00
Kyle Drake
60f9b5b589 cached global activity feed, publicly acessible #69 2015-02-15 13:18:54 -08:00
Kyle Drake
41a7cb763d tweaks to global feed 2015-02-15 12:01:17 -08:00
Kyle Drake
d53b6584d5 global activity feed 2015-02-14 13:16:46 -08:00
Kyle Drake
8fba5e7a9b Merge branch 'master' into supporter_plan_display_after_signup 2015-02-13 15:20:50 -08:00
Kyle Drake
a8edcc8ab6 disable email spam notifications for now 2015-02-13 12:06:22 -08:00
Kyle Drake
fbe00f6f9c delete nested site_files when directory is deleted 2015-02-13 11:54:18 -08:00
Kyle Drake
e6aaba74fb link to site within following text 2015-02-12 16:02:48 -08:00
Kyle Drake
af2b7a3f86 switch to manual is_delete checking to prevent derpie errors from sites deleting 2015-02-12 15:55:38 -08:00
Kyle Drake
0552b4e9b7 Merge branch 'master' of github.com:neocities/neocities 2015-02-12 15:35:53 -08:00
Kyle Drake
0d73682ba1 remove events when site is deleted 2015-02-12 15:34:02 -08:00
Victoria Wang
e9bbb20c48 Small fix to heart in header nav 2015-02-11 14:15:01 -06:00
Kyle Drake
84f4c3b3aa Welcome screen for new users 2015-02-10 19:15:49 -08:00
Victoria Wang
91aad73da5 Merge branch 'master' of github.com:neocities/neocities 2015-02-08 16:34:07 -06:00
Kyle Drake
c66a935cb1 Ability to delete sites, #29 2015-02-07 20:44:52 -08:00
Victoria Wang
6a59cb65cf Merge branch 'master' of github.com:neocities/neocities 2015-02-06 14:00:28 -06:00
Victoria Wang
8b1f7f1e8c Fixes to browse page/site suggestions screenshot galleries on mobile 2015-02-06 14:00:19 -06:00
Kyle Drake
a5307448bb file delete fix for apostrophes fixes #40 2015-02-04 14:24:43 -08:00
Kyle Drake
cf4edffbe0 fix for travis 2015-02-03 20:49:12 -08:00
Kyle Drake
5fb16d967f Merge branch 'markup-accessibility' 2015-02-03 20:41:13 -08:00
Kyle Drake
2c9029c998 Update cat-larger.png and use SVG for not found logo 2015-02-03 20:40:43 -08:00
Kyle Drake
0d72dea0d7 Merge pull request #46 from neocities/markup-accessibility
markup & accessibility updates
2015-02-03 20:36:02 -08:00
Scott
42820c848b markup & accessibility updates
quick pass through some files to get some low hanging accessibility & markup semantic updates.
2015-02-02 20:54:35 -05:00
Kyle Drake
963bb29d9d fix stats (i think) 2015-02-02 14:27:54 -08:00
Kyle Drake
4da6fe9da4 admin interface baked into browse 2015-02-02 12:50:04 -08:00
Kyle Drake
847f28c6af missing views limit 2015-01-31 16:12:16 -08:00
Kyle Drake
981118b9fd minimum 100 views for browse to reduce noise 2015-01-31 16:07:55 -08:00
Kyle Drake
9038141e28 Vagrantfile and provision scripts for development 2015-01-31 15:50:12 -08:00
Kyle Drake
46883b2bdd Merge branch 'master' of github.com:neocities/neocities 2015-01-30 16:53:58 -08:00
Kyle Drake
042e3e11e6 Fix for ruby 2.2.0 2015-01-30 16:53:40 -08:00
Kyle Drake
5296e486e6 Plug a leak for customers with no subscription 2015-01-30 16:34:00 -08:00
Kyle Drake
f5faa8877c Clean up valid data test 2015-01-29 15:11:51 -08:00
Victoria Wang
d3c5e0f765 Merge branch 'master' of github.com:neocities/neocities 2015-01-20 23:52:00 -06:00
Kyle Drake
1553229b95 exclude banned and nsfw sites from suggestions 2015-01-20 16:30:22 -08:00
Kyle Drake
ded6275c71 use send_email for welcome email 2015-01-20 16:26:31 -08:00
Victoria Wang
63a7d1edb5 Fix stray password field appearing on small screens 2015-01-19 23:34:29 -06:00
Kyle Drake
54a5a8b30f unused code in signin test 2015-01-19 10:28:36 -08:00
Kyle Drake
73f29bf9cc deprecate the black box and the questions 2015-01-19 10:21:45 -08:00
Kyle Drake
b9530b3d43 a start on the index tests 2015-01-19 10:20:04 -08:00
Kyle Drake
9a31ecb1a1 remove unneeded code from test 2015-01-19 08:52:05 -08:00
Kyle Drake
779b44c121 acceptance tests for supporter upgrade 2015-01-19 08:46:10 -08:00
Kyle Drake
81c9a4c94c initial implementation of stripe mocking 2015-01-18 17:07:09 -08:00
Kyle Drake
af2c4eea26 move the license 2015-01-18 16:24:21 -08:00
Kyle Drake
5085e3ccbf fix for mount info 2015-01-18 00:46:01 -08:00
Kyle Drake
be34383627 Merge 'em changes 2015-01-18 00:35:47 -08:00
Kyle Drake
d42c4a3c7e special upgrade machine 2015-01-18 00:35:41 -08:00
Kyle Drake
8e31f06818 preload was working, I needed to use USR2 2015-01-17 10:07:37 +00:00
Kyle Drake
4271a5e223 fix for followers pluralization 2015-01-17 02:07:11 -08:00
Kyle Drake
bd43c38753 preload_app prevents graceful restarts of code changes 2015-01-16 17:19:12 -08:00
Kyle Drake
70f2057854 fix for titles coming from subdir indexes 2015-01-16 17:10:37 -08:00
Kyle Drake
8ed3183c5f a pretty good template for email sending in a fever 2015-01-15 23:14:32 -08:00
Kyle Drake
f88c81b54a fix for mount info without login 2015-01-12 09:43:09 -08:00
Kyle Drake
126ad0c494 fix for stats runner (i think) 2015-01-09 23:23:50 -08:00
Kyle Drake
f296b86752 fixes for stats 2015-01-09 23:09:08 -08:00
Kyle Drake
1d9c71b9f8 add goals to stats 2015-01-09 22:50:54 -08:00
Kyle Drake
d112290b3b cleanup of wording 2015-01-08 14:20:38 -08:00
Kyle Drake
671aa53aae fix for stats (I think) 2015-01-08 14:16:05 -08:00
Kyle Drake
50bedaa442 make the stats public, and cache 2015-01-08 14:06:41 -08:00
Kyle Drake
b7fe2ab8ee fixes for missing site dir on dashboard 2015-01-08 13:22:18 -08:00
Kyle Drake
96b8453ae8 Require supporter info 2015-01-08 13:21:51 -08:00
Kyle Drake
be0267956b easy unsubscribe baked into emails 2015-01-07 15:24:15 -08:00
Kyle Drake
39ce179d16 fix bug with email notification check, add tests 2015-01-06 19:57:13 -08:00
Kyle Drake
8a0e121f29 email notifications management 2015-01-06 19:45:38 -08:00
Kyle Drake
be8ad1a888 hotfix for limit pagination for customer data 2015-01-06 19:24:41 -08:00
Kyle Drake
d611a5a290 better email infrastructure, email for profile comments, webapp format support 2015-01-06 19:14:24 -08:00
Kyle Drake
85fbfed910 Merge branch 'master' of github.com:neocities/neocities
e is necessary,
2015-01-01 10:45:20 -06:00
Kyle Drake
e7fc76a938 fixes for ip block updater 2015-01-01 10:45:04 -06:00
Kyle Drake
3cf0714a29 skip bad images 2015-01-01 05:06:05 +00:00
Kyle Drake
839edbe922 Merge branch 'master' of github.com:neocities/neocities 2015-01-01 04:48:15 +00:00
Kyle Drake
92c23cdc38 parse logs fix 2015-01-01 04:48:10 +00:00
Kyle Drake
2368ec2b89 rake task for refreshing thumbnails 2014-12-31 22:47:23 -06:00
Kyle Drake
88503191bd blog slash indifference 2014-12-31 18:13:31 -06:00
Kyle Drake
fe5b47ce53 cache manifest, otf fonts 2014-12-30 23:07:22 -06:00
Kyle Drake
0de126d6b1 support for manifest files 2014-12-30 22:26:25 -06:00
Kyle Drake
6c330666f2 fix for nsfw without email 2014-12-30 13:42:20 -06:00
Kyle Drake
4e847e2295 catch for directory edit attempt 2014-12-28 12:51:47 -06:00
Kyle Drake
9874ce3c5f yet another stupid encoding bug tempfix 2014-12-26 23:21:43 -06:00
Kyle Drake
aefbc1ad30 plug a missing site leak 2014-12-26 22:56:55 -06:00
Kyle Drake
1b3d7f7933 FROM HELL'S HEART, I STAB AT UTF-8 2014-12-26 22:36:37 -06:00
Kyle Drake
20f3e34d9c fix for creste dir error message 2014-12-26 15:22:14 -06:00
Kyle Drake
d2e2dd3482 improve file type message, fix missing directory for drag-n-drop 2014-12-26 15:16:05 -06:00
Kyle Drake
7dc4179bf8 quick fix for now, improve later 2014-12-26 02:37:14 -06:00
Kyle Drake
b49590a8f8 show title for followers/follows on hover 2014-12-26 02:22:58 -06:00
Kyle Drake
badfc671d9 fixes for file upload response 2014-12-26 02:18:19 -06:00
Kyle Drake
f4c812d0df Merge branch 'master' of github.com:neocities/neocities 2014-12-26 03:53:12 +00:00
Kyle Drake
b3e1fa4110 fix for email confirmation display when site not found 2014-12-25 21:52:34 -06:00
Kyle Drake
4e9ab96678 redirect for original new page path 2014-12-25 20:06:44 -06:00
Kyle Drake
f5ae443ad5 Merge branch 'master' of github.com:neocities/neocities 2014-12-26 01:53:17 +00:00
Kyle Drake
38a46ed552 fix for special/supporter diff 2014-12-26 01:53:12 +00:00
Kyle Drake
661279bc1e Merge branch 'master' of github.com:neocities/neocities 2014-12-25 19:43:27 -06:00
Kyle Drake
fa6158ba02 fix for someone sending weird URI requests periodically 2014-12-25 19:43:23 -06:00
Kyle Drake
f9781ac16e Merge branch 'master' of github.com:neocities/neocities 2014-12-26 01:33:54 +00:00
Kyle Drake
6f8d153aad script we used to fix stripe accounts 2014-12-26 01:33:49 +00:00
Kyle Drake
75a8975941 no validate for editor update 2014-12-25 19:28:30 -06:00
Kyle Drake
178334ec9b 24 hours for site changes 2014-12-23 16:37:22 -08:00
Kyle Drake
0a8b33f67a update for special -> supporter 2014-12-23 13:17:54 -08:00
Kyle Drake
3354df5bbe Merge master 2014-12-23 09:23:30 -08:00
Kyle Drake
f6ba160db6 disable surf mode until we can figure out what to do about the clickjacking restrictions 2014-12-23 09:23:26 -08:00
Kyle Drake
e09609131d Merge branch 'master' of github.com:neocities/neocities 2014-12-23 00:09:28 +00:00
Kyle Drake
f4541bbeb8 site updated at 2014-12-23 00:09:24 +00:00
Kyle Drake
715de65234 Update screenshots doesn't need to be that crazy 2014-12-23 00:08:47 +00:00
Kyle Drake
8dab34bc39 create site link for surf when not logged in 2014-12-22 16:07:32 -08:00
Kyle Drake
64f625cf41 Merge changes from remote 2014-12-22 16:01:41 -08:00
Kyle Drake
1cc6d62611 views > hits, pluralization fixes 2014-12-22 16:01:31 -08:00
Kyle Drake
d704a1b7eb Fix screenshots on front page 2014-12-21 22:56:01 +00:00
Kyle Drake
e2ee2f2281 Merge branch 'master' of github.com:neocities/neocities 2014-12-21 08:55:37 +00:00
Kyle Drake
128e90398e Escape query string params 2014-12-21 08:55:18 +00:00
Kyle Drake
343d6b7c47 Fix for file copy to FS 2014-12-21 08:52:43 +00:00
root
ad2e60ad1c Fix for phantomjs 2014-12-21 08:51:13 +00:00
Kyle Drake
81fa54cb53 screenshot worker bugfix 2014-12-21 08:19:19 +00:00
Kyle Drake
941f809987 missing file 2014-12-20 17:54:31 -08:00
Kyle Drake
a2c01e91dd finishing touches 2014-12-20 17:51:50 -08:00
Kyle Drake
62d0fa36d7 fix for supporter check 2014-12-19 15:16:40 -08:00
Kyle Drake
0cd510da33 shorthand for root domain and wildcard in map with hostname directive 2014-12-18 10:02:28 -08:00
Kyle Drake
f7b81c33e2 update compile map to support domain wildcards 2014-12-18 07:56:06 -08:00
Kyle Drake
f69312e42e fix merge cflct 2014-12-15 12:28:49 -08:00
Kyle Drake
010a1dd994 implement new recaptcha 2014-12-15 12:25:08 -08:00
Kyle Drake
8630e5d431 Fix for production with sass 2014-12-14 09:28:14 -08:00
Kyle Drake
d2f472e2c8 Remove style.css 2014-12-11 07:25:41 -08:00
Kyle Drake
e0cffc4c35 Gateway error page 2014-12-11 07:19:19 -08:00
Kyle Drake
ddf6578398 Merge pull request #8 from tomByrer/v2
woff2 filetype allowed
2014-12-08 10:58:43 -08:00
tomByrer
d4ffeb061e woff2 filetype allowed
https://github.com/neocities/neocities-docker/issues/1
Dogs & cats can get along ;)
2014-12-08 11:48:23 -07:00
Victoria Wang
c2eedc3952 sigh 2014-12-05 03:05:16 -06:00
Kyle Drake
8fe2bf2296 rearranging files 2014-12-03 11:24:24 -08:00
Kyle Drake
c5910cde4b autoconfig workers, one per core 2014-12-03 09:04:12 -08:00
Kyle Drake
60e6697529 further cleanups to app.rb 2014-12-03 08:50:24 -08:00
Kyle Drake
4cbcc3a5e9 delete empty mockup file 2014-12-03 08:35:58 -08:00
Kyle Drake
ab60744ac5 refactor app.rb blob to partition routes into files 2014-12-03 08:29:01 -08:00
Kyle Drake
ce110f4101 potential fix for ClientShutdown exceptions 2014-12-03 07:57:58 -08:00
Kyle Drake
e1a4c4b5c9 multiple site -> supporters 2014-12-03 02:50:22 -08:00
Kyle Drake
2f432281a3 improve desc for allowed file types 2014-12-03 01:44:30 -08:00
Kyle Drake
2a36bca4c0 no whitelist for catbus and fatcat 2014-12-03 01:13:26 -08:00
Kyle Drake
8bdf4e7663 Business logic fix for news actions 2014-12-02 01:32:55 -08:00
Kyle Drake
56f712bb89 Custom SSL certs coming soon 2014-12-02 01:32:15 -08:00
Kyle Drake
587d5c8559 Refactor of front index for launch 2014-12-02 01:12:58 -08:00
Kyle Drake
17610787ee Fixes for surf mode pagination conversion 2014-12-01 22:19:56 -08:00
Kyle Drake
acb6449e77 a few screenshots for the front 2014-11-29 22:01:48 -08:00
Kyle Drake
6dddb5e6c3 Merge violasong 2014-11-27 17:33:13 -08:00
Kyle Drake
14d29b5bb5 fix to sslsites 2014-11-27 17:32:44 -08:00
Victoria Wang
76eb1384cc Fix follow button for Safari 2014-11-22 03:41:09 -06:00
Victoria Wang
b6c76e6d73 Style improvements to remove need for empty h3s in single-col pages 2014-11-22 03:30:14 -06:00
Victoria Wang
8d5bf652ad Adjustment to dashboard file listing margin 2014-11-22 03:29:05 -06:00
Victoria Wang
3a1b907f09 Improved single-col header alignment 2014-11-22 03:15:51 -06:00
Victoria Wang
76a56598bd Gross but necessary hack to prevent Safari's autofill in the signup form 2014-11-22 03:08:09 -06:00
Victoria Wang
d2ec02a0e6 Fix press logos display for screen widths between 1200px and mobile 2014-11-21 01:12:08 -06:00
Kyle Drake
72fa948d93 Merge 2014-11-20 19:02:18 -08:00
Kyle Drake
e08d52d09e fix for certs 2014-11-20 19:02:13 -08:00
Victoria Wang
96fdf9e846 Mobile fixes for homepage 2014-11-20 16:02:00 -06:00
Victoria Wang
e0be1603b5 Slight improvement to favicon, html fix 2014-11-20 15:11:30 -06:00
Victoria Wang
34dc2d2db5 Clearer, jauntier favicon + code to force browsers to download the new one 2014-11-20 15:03:43 -06:00
Kyle Drake
a0421dd34e Merge 2014-11-20 04:45:27 -08:00
Kyle Drake
e54c1a750b services for proxy data 2014-11-20 04:44:44 -08:00
Victoria Wang
3ece3a59bc Keep dashboard mobile fixes from affecting other pages 2014-11-18 21:19:31 -06:00
Victoria Wang
d20a448e25 Mobile fixes for dashboard 2014-11-18 21:10:28 -06:00
Victoria Wang
2b513f9f7e Adjustment to mobile menu 2014-11-18 20:53:36 -06:00
Victoria Wang
a673d851c1 Mobile fixes for news feed 2014-11-18 20:43:17 -06:00
Victoria Wang
d73afc4760 Adjustments to hamburger menu button 2014-11-18 20:42:31 -06:00
Victoria Wang
5b5cfd84f1 More improvements to site profile header for mobile 2014-11-18 18:33:56 -06:00
Victoria Wang
3066b91af2 Improved look of save button tooltip, changed success icon from floppy to checkmark 2014-11-18 17:52:12 -06:00
Victoria Wang
cfbd7fb673 Merge kyledrake changes 2014-11-18 17:12:27 -06:00
Kyle Drake
64433ac957 fix for file save in editor 2014-11-18 14:53:13 -08:00
Victoria Wang
97dc10207c Hide the site editor theme selector for mobile screens 2014-11-18 16:41:43 -06:00
Kyle Drake
08ae90d601 fix for supporter heart in comments 2014-11-17 23:47:05 -08:00
Kyle Drake
b33f9f57ad try to fix travis 2014-11-17 23:20:34 -08:00
Kyle Drake
5b33ebca6b fixes and a bit of cleanup for store_file 2014-11-17 23:16:07 -08:00
Kyle Drake
6ae74c9caf Merge branch 'v2' of github.com:neocities/neocities into v2 2014-11-17 23:08:59 -08:00
Kyle Drake
f4c7467ea0 placeholder for spam/phish prevention filtering 2014-11-17 23:08:54 -08:00
Victoria Wang
d0bca81cef Initial work on fixing site profile for mobile browsers 2014-11-17 23:34:03 -06:00
Kyle Drake
66fdbab21e fix tags validation on create 2014-11-14 17:03:40 -08:00
Kyle Drake
134790dcbc improve robots.txt 2014-11-14 00:47:11 -08:00
Kyle Drake
214770ac80 fix site.supporter? 2014-11-14 00:27:58 -08:00
Kyle Drake
578246668e Merge violasong 2014-11-13 23:53:49 -08:00
Kyle Drake
78b11c75dd code for legacy supporters 2014-11-13 23:53:44 -08:00
Victoria Wang
7e74f632b9 Bit more styling to brand assets 2014-11-10 20:09:37 -06:00
Victoria Wang
b85e8ceb9e Misc changes to brand assets 2014-11-10 20:02:27 -06:00
Victoria Wang
b636eedbcc Added follow button behavior from site profile to surf bar 2014-11-10 14:48:30 -06:00
Victoria Wang
e7955b77dc Link commenter icons to their profile 2014-11-10 13:37:23 -06:00
Victoria Wang
1c03e2bdfe Removed titles from navigation links - they seem redundant and distracting 2014-11-10 13:17:13 -06:00
Victoria Wang
c2b661ae0c Adjustments to Support Us heart 2014-11-10 13:16:49 -06:00
Victoria Wang
a829c064e7 First attempt at adding some embellishment to Support Us link 2014-11-10 00:13:43 -06:00
Victoria Wang
c65a584591 Fixed supporter badge positioning next to long site titles 2014-11-09 23:17:41 -06:00
Victoria Wang
be77ae26e6 Added high-res supporter badge, adjusted styles 2014-11-09 23:10:38 -06:00
Victoria Wang
d7ec37b13b Added format_large_number to hit/view/follower counts, removed hits_english/views_english 2014-11-09 22:49:53 -06:00
Victoria Wang
5dcac62bf2 Style improvements to profile header 2014-11-09 22:46:11 -06:00
Victoria Wang
f3ee315336 Removed random whitespace 2014-11-09 21:45:41 -06:00
Victoria Wang
0b22717fc1 Improved format_large_number that rounds to one decimal place but doesn't include tenths place if it's a zero 2014-11-09 21:39:40 -06:00
Victoria Wang
b7cc13b9c6 format_large_number now removes trailing zero 2014-11-09 20:01:07 -06:00
Victoria Wang
576561956e Improvements to format_large_number 2014-11-09 19:33:17 -06:00
Victoria Wang
4feb316c04 Merge kyledrake changes 2014-11-09 19:25:33 -06:00
Kyle Drake
9d6e2566dd いきましょう 2014-11-09 17:11:07 -08:00
Victoria Wang
45fc351565 Adjusted widths on username/view # elements in website galleries 2014-11-09 19:05:55 -06:00
Kyle Drake
a64c123a8c strengthen banning 2014-11-09 16:59:10 -08:00
Kyle Drake
4af4347492 add format_large_numbers (via @violasong) 2014-11-09 16:42:18 -08:00
Kyle Drake
6593c9c2ed Merge 2014-11-09 16:22:15 -08:00
Kyle Drake
ce3b111678 suggested sites uses surf mode 2014-11-09 16:22:09 -08:00
Victoria Wang
26136a7901 Added explanatory comment to default style.css 2014-11-07 18:11:16 -06:00
Victoria Wang
094b9112ad fix merge conflict 2014-11-07 18:10:20 -06:00
Victoria Wang
ac9e0ed195 Added a bit more instruction to default html template. 2014-11-07 16:08:34 -06:00
Kyle Drake
4983a9b24e Cryptographically scramble IPs stored by Neocities
"There is a time when the operation of the machine becomes so odious,
makes you so sick at heart, that you can't take part; you can't even
passively take part, and you've got to put your bodies upon the gears
and upon the wheels, upon the levers, upon all the apparatus, and you've
got to make it stop. And you've got to indicate to the people who run
it, to the people who own it, that unless you're free, the machine will
be prevented from working at all."

Mario Savio
Sproul Hall Steps
University of California, Berkeley
December 3, 1964
2014-11-07 00:41:10 -08:00
Kyle Drake
1b7269c201 Merge violasong 2014-11-06 14:05:40 -08:00
Kyle Drake
53d25cba1d use style.css for new installs, refactor new install to use store_file 2014-11-06 14:05:34 -08:00
Victoria Wang
d362dd34b0 Added higher-res surf bar tiny cat 2014-11-06 15:43:24 -06:00
Victoria Wang
8e25e751c2 Changed to simpler arrow icon for upload button 2014-11-06 15:35:23 -06:00
Victoria Wang
c406989baf Added hi-res version of folder images on dashboard, adjusted margins 2014-11-06 15:31:31 -06:00
Victoria Wang
59a18bac52 Replaced mini cat in interior header with higher-res version 2014-11-06 15:18:32 -06:00
Victoria Wang
8e5a25ea7f Add new high res logo to homepage 2014-11-06 02:07:26 -06:00
Victoria Wang
2f7f9d8989 Added logo with text to press page, adjusted margins 2014-11-06 01:49:16 -06:00
Victoria Wang
a4d1f30f2c Fixed some links pointing to /new 2014-11-06 00:48:15 -06:00
Victoria Wang
2e6c5ed312 Rearranged header links, changed "New Site" to "Sign up for Free" 2014-11-06 00:46:36 -06:00
Victoria Wang
187fa7753e Add press link to footer, homepage 2014-11-06 00:45:27 -06:00
Victoria Wang
82bd6ea35c Merge kyledrake changes 2014-11-05 21:32:54 -06:00
Victoria Wang
fecfc62265 More styling on press page 2014-11-05 21:32:42 -06:00
Kyle Drake
42e21bce9a Merge violasong 2014-11-05 19:14:39 -08:00
Kyle Drake
83e47d0be8 fix banned message 2014-11-05 19:14:33 -08:00
Victoria Wang
3694548489 Initial work on press page 2014-11-05 20:18:20 -06:00
Kyle Drake
20bdd2ac55 fix for new page create with directories 2014-11-03 22:43:25 -08:00
Victoria Wang
b446160d6b Site editor: in short html files, background now matches Tomorrow Night theme 2014-11-03 20:47:04 -06:00
Victoria Wang
0f8adcace4 Tweak to dashboard breadcrumb separator 2014-11-03 20:42:25 -06:00
Victoria Wang
209a2589c4 Removing explanatory index.html text for now 2014-11-03 20:42:10 -06:00
Victoria Wang
ca8dcaf269 Merge kyledrake changes 2014-11-03 20:36:27 -06:00
Victoria Wang
172593fbde Delete modal: Removed preceding slash and bolded file name 2014-11-03 20:36:16 -06:00
Kyle Drake
831141a7a9 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-11-03 17:36:28 -08:00
Kyle Drake
aedc5e363c start tracking files in our database 2014-11-03 17:36:20 -08:00
Victoria Wang
60a8eeaa8c Cleaned up admin page a bit 2014-11-03 18:51:15 -06:00
Victoria Wang
5c76e96506 Default page html: Removed tutorial link in css comment since it's redundant, fixed 'Neocities' casing 2014-11-03 18:22:08 -06:00
Victoria Wang
d821ec9dca Site Editor - hide scrollbars if not needed 2014-11-03 18:07:33 -06:00
Victoria Wang
20a0e6096e Some wording changes for homepage intro 2014-11-03 17:57:36 -06:00
Victoria Wang
1c55dbf4d4 Homepage green intro text - lighter underline color 2014-11-03 17:56:28 -06:00
Kyle Drake
d2f349acd6 fix a broken test 2014-11-03 14:14:07 -08:00
Victoria Wang
cd78c91abb Merge kyledrake changes 2014-10-29 17:35:25 -07:00
Victoria Wang
3c18f2c082 Text/scyle changes to Support Us page 2014-10-29 17:35:18 -07:00
Kyle Drake
9b54cf6fff only register unseen notifications for other actioning sites 2014-10-29 17:34:05 -07:00
Victoria Wang
9a07df3157 Added links to neocities facebook account, messed with footer styles a bit 2014-10-29 17:25:35 -07:00
Victoria Wang
da4ec035de Rough mockup of editor error tooltip 2014-10-28 19:23:07 -07:00
Victoria Wang
d4b33c669a Added ability to scroll down using arrow key in ace editor (still issues with scrolling up) 2014-10-28 18:11:51 -07:00
Victoria Wang
91817cb98b Initial work on new page editor 2014-10-28 16:56:59 -07:00
Victoria Wang
52fdd1065a Slightly improved catbus image 2014-10-28 11:59:34 -07:00
Victoria Wang
e04c5f6f9e Minor fix to 2 col styles 2014-10-28 11:39:04 -07:00
Victoria Wang
03b0909a4e Adjustments to two-col layout 2014-10-28 11:36:26 -07:00
Victoria Wang
002c0ca17c Fix comment policy styles 2014-10-28 11:28:22 -07:00
Victoria Wang
dde3ce4abc Cleaned up modal dialogs 2014-10-28 11:22:45 -07:00
Kyle Drake
6122a188b6 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-27 19:08:10 -07:00
Kyle Drake
5eeee34017 Add view button 2014-10-27 19:07:57 -07:00
Victoria Wang
e35d3dbc6f Wrap overly long url in newsfeed sidebar 2014-10-27 18:26:15 -07:00
Victoria Wang
84beecac20 Fixes bug with 'like' popovers being cut off on the left (due to overflow:hidden) but requires min-height for new feed and site profile main content areas. Main problem is site profiles with short sidebars are now longer than they should be. Need better solution later. 2014-10-27 18:23:24 -07:00
Victoria Wang
6d3a6aa9e0 Merge kyledrake changes 2014-10-27 18:15:39 -07:00
Victoria Wang
8e268d2ec3 Fix for post-comment field not working 2014-10-27 18:15:34 -07:00
Victoria Wang
0cb39bcf55 Fix yellow tag visited color 2014-10-27 17:58:52 -07:00
Kyle Drake
26b11aa9f7 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-27 17:57:14 -07:00
Kyle Drake
f2d6bf0eac fix for plan space on subscription 2014-10-27 17:57:04 -07:00
Kyle Drake
5abfcabe8b more test fixes 2014-10-27 17:25:37 -07:00
Kyle Drake
f673c8b231 remove no longer used index file 2014-10-27 17:21:10 -07:00
Victoria Wang
0fed9320f8 Style improvements to site profile - no longer cuts off bottom of 'like' popover 2014-10-27 17:19:07 -07:00
Victoria Wang
ecd4312d72 Disabled button look for "Current Plan" 2014-10-27 17:18:09 -07:00
Kyle Drake
fdcaaf0177 fix question_answer for testing 2014-10-27 17:17:12 -07:00
Kyle Drake
eec822f633 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-27 17:16:56 -07:00
Kyle Drake
0ee44a9924 Fix some of the tests.. sort of 2014-10-27 17:16:47 -07:00
Victoria Wang
a9af3d7707 Merge kyledrake changes 2014-10-27 16:45:10 -07:00
Victoria Wang
8960df487d Added edit icon to Edit Site button, 'start building' text 2014-10-27 16:45:03 -07:00
Kyle Drake
8613505cd6 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-27 16:34:09 -07:00
Kyle Drake
05807e2f39 refactor site_updated, add initial site file tracking 2014-10-27 16:34:06 -07:00
Victoria Wang
df5d6a81e7 Only show All Activity/My Activity links if there is activity and user is following at least one person 2014-10-27 16:17:21 -07:00
Victoria Wang
87e97b9cef Merge kyledrake changes 2014-10-27 16:09:44 -07:00
Victoria Wang
460ffb6698 News feed now shows both news feed items and site suggestions if user hasn't followed anyone yet. After following someone, shows a banner encouraging user to start building their website. 2014-10-27 16:09:36 -07:00
Kyle Drake
f50b3a23d9 Merge violasong 2014-10-27 15:46:32 -07:00
Kyle Drake
c36ca15055 add space used migration 2014-10-27 15:43:29 -07:00
Victoria Wang
ef405a753f Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-27 15:23:29 -07:00
Kyle Drake
518ef4579d Add back the timestamp creation 2014-10-27 15:22:40 -07:00
Victoria Wang
cfdc753ff5 tweak to gray site gallery links 2014-10-27 14:52:28 -07:00
Kyle Drake
a06a7a74a4 Fix for suggestions 2014-10-27 14:38:42 -07:00
Kyle Drake
d47d52b6f8 Merge violasong changes 2014-10-27 14:29:31 -07:00
Kyle Drake
b112db7e62 Switch to new plan features model 2014-10-27 14:29:12 -07:00
Victoria Wang
7565a300e1 Restored light tan color to sidebars, header tweaks 2014-10-25 23:15:11 -07:00
Victoria Wang
3c029cf43b Merge kyledrake changes 2014-10-25 23:04:32 -07:00
Kyle Drake
cbd4b1bf0b white background for misc pages 2014-10-25 16:59:05 -07:00
Kyle Drake
d9f6e80930 Merge violasong 2014-10-25 16:57:01 -07:00
Kyle Drake
609cee1c17 track subscription ids 2014-10-25 16:56:53 -07:00
Victoria Wang
6ff82a699e Clicking on folder name in dashboard now brings you to manage folder view 2014-10-24 19:53:36 -07:00
Victoria Wang
51bc2b3fae Changed dashboard breadcrumb separator to angle icon 2014-10-24 19:47:16 -07:00
Victoria Wang
230a6b4b0d Dashboard - tweaks to edit/delete links 2014-10-24 19:32:21 -07:00
Victoria Wang
e82fa9ad12 Merge kyledrake changes 2014-10-24 19:19:33 -07:00
Victoria Wang
2ae81b6624 Initial work on preview section 2014-10-24 19:19:25 -07:00
Kyle Drake
5235286d8a supporter refactor 2014-10-24 18:45:42 -07:00
Kyle Drake
e82e1b4631 tweaks to pricing page 2014-10-24 18:37:03 -07:00
Kyle Drake
ecd838c891 Merge violasong changes 2014-10-24 18:16:05 -07:00
Kyle Drake
d2f46fdf66 implement skeuocard and upgrade capability 2014-10-24 18:16:00 -07:00
Victoria Wang
a2f9c65a3f Remove stray accent character 2014-10-24 17:11:58 -07:00
Victoria Wang
e575d18019 Style adjustments to updated signup form 2014-10-24 17:00:54 -07:00
Victoria Wang
fa9d7c39ac merge kyledrake changes 2014-10-24 16:43:51 -07:00
Kyle Drake
f2180b1385 fix fields for validate 2014-10-24 16:43:24 -07:00
Victoria Wang
3613991fc2 Prevent ugly chrome autofill behavior in signup form via ridiculous hack 2014-10-24 16:33:29 -07:00
Kyle Drake
58131f4964 Merge violasong changes 2014-10-24 16:26:40 -07:00
Kyle Drake
9c5337edae Initial start on plan refactor 2014-10-24 16:26:32 -07:00
Kyle Drake
31c43c3170 Fix and add mock black box 2014-10-24 16:25:53 -07:00
Victoria Wang
06205e7bde More alignment fixes for news feed 2014-10-24 16:13:50 -07:00
Victoria Wang
f26ee30b74 fix merge conflicts 2014-10-24 15:50:05 -07:00
Victoria Wang
7e25397845 News feed changes - cleaned up text, improved colors/alignment 2014-10-24 15:48:03 -07:00
Victoria Wang
0b013b55de Added supporter heart to supporter usernames in surf bar 2014-10-24 15:18:01 -07:00
Kyle Drake
9584cf9a67 fix autosubmit for typeahead 2014-10-23 20:06:03 -07:00
Victoria Wang
9ca5caab9d Reverting to large icon style for all comments 2014-10-23 19:44:12 -07:00
Victoria Wang
7d43fe2ab8 Trying out small icon style for my friends' comments on someone else's page 2014-10-23 19:41:05 -07:00
Kyle Drake
6e4ad797d5 Merge violasong changes 2014-10-23 17:54:48 -07:00
Kyle Drake
5c96a4d4ce add comment on index.html edit 2014-10-23 17:54:28 -07:00
Victoria Wang
d56beab370 Merge kyledrake changes 2014-10-23 17:32:32 -07:00
Victoria Wang
7163fec474 Fixes to newsfeed file listing styles 2014-10-23 17:32:26 -07:00
Kyle Drake
bf4381e1ca Merge violasong commits 2014-10-23 17:25:20 -07:00
Kyle Drake
4e987286ee improvements to text editor 2014-10-23 17:25:14 -07:00
Victoria Wang
26a1af2bcc Merge kyledrake changes 2014-10-23 16:59:32 -07:00
Victoria Wang
5e83b7f4b5 css3 fix for surf bar iframe height issues 2014-10-23 16:56:47 -07:00
Victoria Wang
f580cf2856 Changed surf bar popover colors 2014-10-23 16:17:37 -07:00
Victoria Wang
df30d5879e Surf bar style refinements 2014-10-23 16:12:13 -07:00
Kyle Drake
d83fbf81d3 fix news feed and site profile event activity 2014-10-23 15:39:10 -07:00
Kyle Drake
15c60cb6a8 limit ip site creation 2014-10-22 22:32:02 -07:00
Kyle Drake
9140f3b929 fix merge cflct 2014-10-22 22:08:09 -07:00
Kyle Drake
42e2935916 implement new signup form validation 2014-10-22 22:06:36 -07:00
Victoria Wang
3016ef8d79 adjusted news feed pagination style 2014-10-21 19:27:28 -07:00
Victoria Wang
1fd6dd9101 Fixed browse page surf links 2014-10-21 19:14:38 -07:00
Victoria Wang
9cc9b0e5d7 Removed actions from follow events, style changes to news feed 2014-10-21 17:40:49 -07:00
Victoria Wang
f1ffd458e4 Fixed small comment avatars 2014-10-21 17:29:47 -07:00
Victoria Wang
bb5bb45687 Fixed screenshots in following section in sidebar 2014-10-21 17:29:17 -07:00
Victoria Wang
a1ba1a0974 Added user icon to usernames, with heart icon denoting supporter status 2014-10-21 16:25:52 -07:00
Victoria Wang
f30b77a3e0 Made the site updated box a bit more subtle 2014-10-21 16:24:45 -07:00
Victoria Wang
f8a27aec6c Merge kyledrake changes 2014-10-21 16:22:59 -07:00
Kyle Drake
1aac62923d Site creation is back online 2014-10-21 15:12:25 -07:00
Kyle Drake
6c4cacbd3e slight adjustment to suggestions 2014-10-21 14:49:10 -07:00
Victoria Wang
fb437bf2cf Fixed dashboard screenshot image 2014-10-20 18:02:01 -07:00
Kyle Drake
39a7b93cc1 fix test, fix home display for own site updates 2014-10-20 17:39:23 -07:00
Kyle Drake
8d592bb982 ability to follow sites from surf page 2014-10-20 17:31:03 -07:00
Victoria Wang
8a0d556fc7 Fixed Open Company link 2014-10-20 17:20:49 -07:00
Kyle Drake
8649973d71 fix for missing tag 2014-10-20 17:09:52 -07:00
Kyle Drake
1a55ca93d8 Merge violasong changes 2014-10-20 17:03:42 -07:00
Kyle Drake
f6a6df6c86 wrangle between surf and browse context 2014-10-20 17:03:37 -07:00
Victoria Wang
1cc411f199 Tweaks to pricing. Still need a better name for Supporter plan 2014-10-20 16:48:44 -07:00
Victoria Wang
d0ae9badca Styling for bottom sign-up message, which just brings user to top of page for now 2014-10-20 16:24:09 -07:00
Victoria Wang
12ea73c89c Merge kyledrake changes 2014-10-20 15:55:54 -07:00
Victoria Wang
2ce7620b1d Fixed some bugs with signup error popovers, changed color to red 2014-10-20 15:54:11 -07:00
Kyle Drake
9d9c1c4495 Merge violasong changes 2014-10-20 15:10:07 -07:00
Kyle Drake
11cbc74526 a start on neocities surf page 2014-10-20 15:09:59 -07:00
Victoria Wang
ee2e2d2c57 Fixed stray apostrophe 2014-10-20 14:50:43 -07:00
Victoria Wang
bbfb2ac21a Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-20 14:45:17 -07:00
Victoria Wang
525f47dcf1 Added Fast Company logo, various style and punctuation tweaks to homepage 2014-10-20 14:45:11 -07:00
Kyle Drake
2f0380cd4e Start on validations for front create 2014-10-20 14:02:21 -07:00
Victoria Wang
f13a484e76 Homepage style tweaks 2014-10-17 19:49:00 -07:00
Victoria Wang
988a72002b Styling for press quote, more homepage header tweaks 2014-10-17 19:48:40 -07:00
Victoria Wang
f09d0f12d3 Responsive css fixes 2014-10-17 19:27:31 -07:00
Kyle Drake
289e17134c more copy changes 2014-10-17 19:06:04 -07:00
Kyle Drake
086863075d Merge violasong changes 2014-10-17 18:21:08 -07:00
Kyle Drake
52aece64d6 changes to copy 2014-10-17 18:21:04 -07:00
Victoria Wang
36c7186637 Lots of little homepage style tweaks 2014-10-17 18:20:11 -07:00
Kyle Drake
5f7821accf reduce copy on header 2014-10-17 17:11:16 -07:00
Kyle Drake
5dc0111581 Merge violasong changes 2014-10-17 16:06:06 -07:00
Victoria Wang
745bfaeb27 merge 2014-10-17 16:05:22 -07:00
Kyle Drake
24e6f87d24 some layout tweaks, anchor for new site creation 2014-10-17 16:05:15 -07:00
Victoria Wang
2a73fac5d3 Initial stab at making plan charts look okay at small screen sizes 2014-10-17 15:57:07 -07:00
Kyle Drake
6448cc2363 big updates to text on index 2014-10-17 15:53:28 -07:00
Victoria Wang
e917023fe9 Some style and punctuation changes to pricing plans 2014-10-17 14:39:23 -07:00
Kyle Drake
edb2da5f50 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-15 19:06:46 -07:00
Kyle Drake
8345b7aa04 update plans for live data and extra fun things 2014-10-15 19:06:39 -07:00
Victoria Wang
1c2433c670 Fixed site portrait in news feed sidebar 2014-10-15 19:04:57 -07:00
Victoria Wang
570db1211b Removing tips data for now 2014-10-15 18:11:17 -07:00
Victoria Wang
0937bc0306 Header dropdown menu tweaks 2014-10-15 17:49:17 -07:00
Victoria Wang
6bb76f1894 News feed suggestions now using the same site gallery style as the browse page 2014-10-15 17:38:19 -07:00
Victoria Wang
05ea963464 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-15 16:53:56 -07:00
Victoria Wang
275314513e Tweaks to browse page 2014-10-15 16:52:48 -07:00
Kyle Drake
f5bb352032 lil fixes for new index and plans 2014-10-15 16:46:16 -07:00
Victoria Wang
ae2bd68858 Fixes to following/follower lists 2014-10-15 16:17:29 -07:00
Victoria Wang
c1939b5d72 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-15 16:04:02 -07:00
Kyle Drake
dbdf55841f fix tests 2014-10-15 15:43:29 -07:00
Victoria Wang
bc39a77dc0 Changed popover colors 2014-10-15 15:41:08 -07:00
Kyle Drake
f2bf9da535 move new index mockup to main index 2014-10-15 15:33:22 -07:00
Kyle Drake
8cb368e584 fix for tags 2014-10-15 15:24:23 -07:00
Victoria Wang
600eefeecf Finished up follow button 2014-10-14 23:27:33 -07:00
Victoria Wang
f2e57193dd Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-14 22:42:20 -07:00
Victoria Wang
5011d83436 Almost where I want the follow button to be, but not quite 2014-10-14 22:42:13 -07:00
Kyle Drake
8914219a75 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 18:56:20 -07:00
Kyle Drake
3750e25a7a more fixes for cleantags 2014-10-13 18:56:12 -07:00
Victoria Wang
8665e70be1 Stopgap fix for long site names breaking the header dropdown, shadow adjustment 2014-10-13 18:46:16 -07:00
Kyle Drake
5db702cf14 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 18:24:21 -07:00
Kyle Drake
26c27cef49 nsfw tags filtered (for now), fix to tag cleanup 2014-10-13 18:24:14 -07:00
Victoria Wang
a6b01bc004 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 18:05:57 -07:00
Victoria Wang
ed86705411 Fixed size of screenshot in site profile 2014-10-13 18:05:47 -07:00
Kyle Drake
56f2f5bfb4 add nsfw boolean for tags 2014-10-13 17:39:42 -07:00
Kyle Drake
19bb544b78 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 17:36:04 -07:00
Kyle Drake
4bfdd9bbc3 fix display of flattr 2014-10-13 17:35:56 -07:00
Victoria Wang
4713c99041 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 17:33:24 -07:00
Victoria Wang
ffc3d49af7 Fixed notification display for firefox 2014-10-13 17:33:17 -07:00
Kyle Drake
7f5c2a1cfe fix donation link 2014-10-13 17:30:43 -07:00
Kyle Drake
24d2368f6e Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 17:15:27 -07:00
Kyle Drake
54376428ef remove counter 2014-10-13 17:15:15 -07:00
Victoria Wang
86a1d2dcac Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 17:10:38 -07:00
Victoria Wang
1b75c950bd Fixing issues with header dropdown menu's submenu 2014-10-13 17:10:22 -07:00
Kyle Drake
47dde508d3 fix news feed display, notifications, fix tag create 2014-10-13 17:09:13 -07:00
Kyle Drake
7f5f028cc5 fix dep injection 2014-10-13 16:37:40 -07:00
Kyle Drake
4bdf43097e Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 15:22:17 -07:00
Kyle Drake
1d14f973ce ignore textmate turds 2014-10-13 15:22:11 -07:00
Victoria Wang
a362c89e42 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-10-13 15:20:57 -07:00
Victoria Wang
ed660595df merge commit 2014-10-13 15:18:00 -07:00
Kyle Drake
b4f04cdab8 update ace editor, auto sizing 2014-10-13 15:16:42 -07:00
Victoria Wang
d0a4991079 Browse page - initial work on adding tags for individual sites, switching to 3 columns at a certain browser width 2014-10-13 15:04:38 -07:00
Kyle Drake
7f7b1fc8d5 pull-right for submenu for switch sites 2014-10-13 14:38:49 -07:00
Kyle Drake
6995409c50 merge parentsites with v2 2014-10-12 09:33:39 -07:00
Kyle Drake
52fde7a0d5 fix supporter plan management 2014-10-12 09:11:20 -07:00
Kyle Drake
f44ce014d3 fixes and cleanups for new auth model 2014-10-12 08:42:32 -07:00
Victoria Wang
50debf9a81 Adjusted some shadows 2014-10-10 17:35:23 -07:00
Victoria Wang
f0ce08f85d Stopgap measure for site suggestions' large tag issues 2014-10-10 13:47:25 -07:00
Victoria Wang
caf8621c78 Fixed alignment of Like link. Not sure if action items should be like-able... 2014-10-10 01:19:13 -07:00
Victoria Wang
5997abdcb2 Starting to make some improvements to feed styles 2014-10-10 01:12:31 -07:00
Victoria Wang
a7706983a9 Text/style improvements to welcome dialog - now mentioning that they need to make a change to be on the website gallery. 2014-10-10 00:57:02 -07:00
Victoria Wang
8231afe983 Slight improvement to dashboard file spacing (could definitely use more work) 2014-10-10 00:41:27 -07:00
Victoria Wang
1334a03875 Improvements to filenames in Dashboard 2014-10-10 00:37:15 -07:00
Victoria Wang
3f607501d6 Replaced my dashboard icons with font awesome 2014-10-10 00:22:08 -07:00
Victoria Wang
7fe2209944 Initial work on header dropdown menu with notifications. Current menu items and placement of notification bubble will need more thought - Profile and "Activity on your profile" are kind of redundant. 2014-10-10 00:08:38 -07:00
Victoria Wang
4681523c4c Browse Mode top bar, now with tag field (need to add autocompletion) and better icons 2014-10-09 19:38:20 -07:00
Victoria Wang
931a1f8554 Adjusted styling for message explaining comment policy 2014-10-09 18:42:31 -07:00
Victoria Wang
204b1fbd0d Capitalize Twitter 2014-10-09 18:40:12 -07:00
Victoria Wang
90939f3488 Linking sites count to browse page 2014-10-09 18:39:47 -07:00
Victoria Wang
8abd3298af Sigh, just a few more small screen fixes; will continue with the plan charts later 2014-10-09 16:50:35 -07:00
Kyle Drake
21b0848030 switch sites ability, some cleanup 2014-10-07 12:48:04 -07:00
Kyle Drake
d0970cdf9e separate site and account settings context 2014-10-07 10:09:16 -07:00
Kyle Drake
7e36dc83f8 clean up space representation a bit 2014-10-06 17:52:18 -07:00
Kyle Drake
584c7cfbd6 fix password match error message 2014-10-07 02:27:40 +02:00
Kyle Drake
d3c1546d45 start on accounts using site context, improved settings page, clean up space representation 2014-10-07 02:22:08 +02:00
Victoria Wang
1c6f7c1e49 Starting to fix new homepage issues for small screens 2014-10-03 22:54:17 -07:00
Victoria Wang
c99d9f0fdf Added cat images for plans. 2014-10-03 22:37:32 -07:00
Victoria Wang
b105d55316 Added press section and plan charts to home page 2014-09-30 22:02:17 -07:00
Victoria Wang
df1b3f86a5 Adjustments to home page features section, html for plans charts 2014-09-30 14:25:11 -07:00
Kyle Drake
8a36f1c6f5 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-09-26 13:31:39 +02:00
Kyle Drake
5bb1b4f5b6 email settings tests, code cleanup 2014-09-26 13:31:31 +02:00
Victoria Wang
ec1a19e7e8 Fixed issue with autocomplete field looking super wide in first second of loading on browse page. Still a little wonky 2014-09-23 14:14:47 -07:00
Victoria Wang
a524ef7de5 More progress on new homepage css 2014-09-23 13:53:58 -07:00
Kyle Drake
2dd3a34961 fix password change 2014-09-17 21:11:14 -07:00
Kyle Drake
5403d61ac2 better update screenshot, fix username ref on news comment 2014-09-17 20:40:04 -07:00
Kyle Drake
fbdce831de Merge branch 'v2' of github.com:neocities/neocities into v2 2014-09-17 20:13:26 -07:00
Kyle Drake
1d200a886e richer news feed, change screenshots/thumbnails to use retina quality 2014-09-17 20:13:14 -07:00
Victoria Wang
9628238d91 merging 2014-09-17 18:46:54 -07:00
Victoria Wang
dbb7d873cf Initial work on new homepage design with announcement 2014-09-17 18:36:04 -07:00
Kyle Drake
45168341de spiff up the settings page a lil' bit 2014-09-16 22:57:41 -07:00
Kyle Drake
3f8167dc17 OMG IT ROFLSCALES NOW 2014-09-16 22:09:25 -07:00
Kyle Drake
c93d0bbc7f catch errors with titles, run sidekiq jobs immediately in development 2014-09-16 22:05:37 -07:00
Kyle Drake
3fa67447bb Show more tags, popular on top for autocomplete 2014-09-16 21:28:55 -07:00
Kyle Drake
ae867847a5 Use pry-byebug instead of pry-debugger 2014-09-16 17:58:59 -07:00
Kyle Drake
4a4553f676 way better autocomplete, ranks by popularity 2014-09-16 01:49:33 -07:00
Kyle Drake
698c602475 Clean up settings test to plug occasional failure bug 2014-09-16 01:48:29 -07:00
Kyle Drake
e92f13728d only update needed columns when saving to database 2014-09-16 00:53:57 -07:00
Kyle Drake
27525c2762 forgot a line 2014-09-16 00:44:02 -07:00
Kyle Drake
624d77fcfa better tag tests 2014-09-16 00:43:47 -07:00
Kyle Drake
f5814226a6 tests for tagging, eliminate dupes, script to unify tags 2014-09-16 00:38:49 -07:00
Kyle Drake
5cb988b3e7 add views display/search, and improve initial site suggestions 2014-09-15 16:48:19 -07:00
Kyle Drake
df4cf8a3d6 fix pagination 2014-09-15 03:15:25 -07:00
Kyle Drake
3e54d15cea apparently we don't use the app method with classic sinatra 2014-09-12 19:15:32 -07:00
Kyle Drake
0d4d31d0f8 remove unused rack test include 2014-09-12 19:14:08 -07:00
Kyle Drake
50c1f67bdf patch a few missing tests, deprecate server model, fix a few bugs 2014-09-12 19:09:58 -07:00
Kyle Drake
86990f3535 initial plan structure, and some misc fixes 2014-09-12 14:54:53 -07:00
Kyle Drake
555e64ac97 fix for ssl nginx config check 2014-09-10 13:56:45 -07:00
Kyle Drake
7020edc5e7 stats page 2014-09-06 17:50:33 -07:00
Kyle Drake
8a4e1765f0 Fix tags search on browse 2014-09-06 14:35:15 -07:00
Kyle Drake
4441c12d09 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-09-05 22:23:31 -07:00
Kyle Drake
96e277c331 restrict comments for new users that haven't updated their site 2014-09-05 22:23:23 -07:00
Victoria Wang
0ab91a224a Improved styles on autocomplete menus 2014-09-05 18:12:40 -07:00
Kyle Drake
305bb71aa3 fix for sslfiles, update tos 2014-09-05 14:27:45 -07:00
Kyle Drake
4168854d76 fixes and improvements to ssl verification 2014-09-03 17:14:11 -07:00
Kyle Drake
8cd61a06f2 ssl sites bundler 2014-09-03 11:52:14 -07:00
Kyle Drake
3d32e616da Merge branch 'ssl' into v2 2014-09-02 18:36:33 -07:00
Kyle Drake
af605f352e allow adding of ssl certs for domain 2014-09-02 18:36:17 -07:00
Victoria Wang
46744df98d More tweaks to browse page 2014-09-02 17:18:52 -07:00
Victoria Wang
24c7f71c89 Fixed font awesome icons 2014-09-02 17:08:58 -07:00
Victoria Wang
16c4a93305 Fixed pagination arrows 2014-09-02 16:32:06 -07:00
Victoria Wang
7caba79217 Improvements to "no sites found" on browse page 2014-09-02 16:07:17 -07:00
Victoria Wang
95278eacb4 Improvements to autocomplete menu 2014-09-02 16:06:59 -07:00
Victoria Wang
225bdc03cf Fixed issue with autocomplete fields floating above the top bar 2014-09-02 15:35:49 -07:00
Victoria Wang
9da6f128ec Adjusted tags section on browse page 2014-09-02 15:34:18 -07:00
Victoria Wang
aa35f2f158 Fixed the select field bug I caused in Firefox, adjusted browse page aligment 2014-09-02 15:15:27 -07:00
Kyle Drake
92fcee0aea allow site to disable comments on profile 2014-08-31 20:25:59 -07:00
Kyle Drake
8274ac3e80 tweak spacing for news items 2014-08-30 15:55:08 -07:00
Kyle Drake
ab0e6e7ab4 Reply -> Comment 2014-08-30 15:54:20 -07:00
Kyle Drake
6b442bd318 ignore new neo.css location 2014-08-30 15:54:05 -07:00
Kyle Drake
4b94fc65bf fixes tests, quiet sidekiq client logger 2014-08-30 15:49:03 -07:00
Kyle Drake
74f5ef31d9 detect spam sites 2014-08-29 21:19:03 -07:00
Kyle Drake
71d4e99b1c webdav mount info 2014-08-29 20:36:57 -07:00
Kyle Drake
47344e8bdc streamline CSS, remove google font/cdn dep 2014-08-29 20:05:19 -07:00
Kyle Drake
ab6abc637e optimize and clarify post for site profile 2014-08-25 12:51:58 -05:00
Kyle Drake
6f33be1e4f display basename for files changed 2014-08-23 11:10:41 -05:00
Kyle Drake
c53e1bdb22 remove neo.css, it is autogeneratedn ow 2014-08-23 10:57:14 -05:00
Kyle Drake
7520bc70b8 implement WebDAV mount support 2014-08-23 10:56:01 -05:00
Victoria Wang
48451f2d12 Browse page header elements now perfectly aligned, wooo. Starting to fix issues with autocomplete menu. 2014-08-21 02:31:11 -07:00
Kyle Drake
b2906808d1 move neo.css back to assets folder for relative url links 2014-08-20 18:23:20 -07:00
Kyle Drake
0f9b9bad56 slightly smaller font for file titles 2014-08-20 18:02:05 -07:00
Kyle Drake
9aca6cd0a0 sass now auto-compiles, fix relative_path for site files 2014-08-20 17:57:02 -07:00
Kyle Drake
fbf78f04d6 fixes for screenshot worker 2014-08-20 13:48:20 -07:00
Kyle Drake
0aca6b3328 fixes for thumbnail worker 2014-08-19 18:06:35 -07:00
Kyle Drake
3e4e85ceee fix and test purge cache 2014-08-19 17:05:43 -07:00
Victoria Wang
7afc07ecff Merge branch 'v2' of github.com:neocities/neocities into v2 2014-08-19 16:04:40 -07:00
Kyle Drake
445ec92226 fix for home link 2014-08-19 15:13:13 -07:00
Kyle Drake
e200eb47c6 fix text editor 2014-08-19 15:09:20 -07:00
Kyle Drake
2743e02cc1 Dashboard is Edit Site, redirect if folder missing 2014-08-19 13:48:02 -07:00
Kyle Drake
2f73732daa Folders. 2014-08-19 13:44:15 -07:00
Victoria Wang
521063c6df Initial code for top bar. Need to fix issue where certain websites' borders are reduced when inside the iframe… 2014-08-15 19:43:00 -07:00
Kyle Drake
605fdce9be remove console.log in dashboard 2014-08-15 18:38:14 -07:00
Kyle Drake
d261e5bf95 skip already banned sites 2014-08-15 18:17:56 -07:00
Kyle Drake
c0bea57468 use redis connection pool for cache purge 2014-08-15 12:55:10 -07:00
Kyle Drake
adaf581731 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-08-14 22:02:32 -07:00
Kyle Drake
c085fd068d fix up news feed a bit 2014-08-14 22:02:26 -07:00
Victoria Wang
576b0037ff Added html/image for folder support 2014-08-14 22:00:31 -07:00
Victoria Wang
545652722e UI changes to Browse page 2014-08-14 20:56:45 -07:00
Victoria Wang
c989819328 Fix typo 2014-08-14 20:55:03 -07:00
Victoria Wang
afbbcaa33e Merge branch 'v2' of github.com:neocities/neocities into v2 2014-08-14 20:53:54 -07:00
Kyle Drake
19ad676df6 de-prioritize shooting yourself in the foot 2014-08-14 11:01:56 -07:00
Kyle Drake
08026ac235 fix for missing following code, email fixes, start on delete site 2014-08-13 19:27:40 -07:00
Victoria Wang
6fe7db054b Added "New Site" to interior top bar when not logged in 2014-08-13 19:24:41 -07:00
Victoria Wang
de48a1ff35 Fixed incorrectly aligned header 2014-08-13 19:24:12 -07:00
Kyle Drake
89998e2f18 Add tasks for new proxy system 2014-08-13 15:07:46 -07:00
Kyle Drake
4fe339f51f email confirmation 2014-08-12 14:07:39 -07:00
Kyle Drake
63d9348012 better structure for cache purge 2014-08-11 20:45:43 -07:00
Kyle Drake
be128608b9 remove IE workaround, no longer needed 2014-08-11 04:30:26 -07:00
Kyle Drake
8e161c0099 banned_at shouldnt be neccessary 2014-08-11 04:26:54 -07:00
Kyle Drake
7445f8006b block ips rake task 2014-08-11 04:21:25 -07:00
Kyle Drake
3095185121 fix for threat matches 2014-08-11 00:16:39 -07:00
Kyle Drake
30d4d72b7a fix regex 2014-08-10 19:09:41 -07:00
Kyle Drake
3e02b65cfb typo fix 2014-08-10 19:05:19 -07:00
Kyle Drake
d4ed6a30c2 no virus scan check for travis 2014-08-10 18:53:46 -07:00
Kyle Drake
cc64a57172 Scan for embedded viruses/executables in uploaded files 2014-08-10 18:46:28 -07:00
Kyle Drake
e756724fe7 change purgecache publish name 2014-08-10 17:24:26 -07:00
Kyle Drake
94b3fd6903 purge cache pubsub implementation 2014-08-10 00:55:13 -07:00
Kyle Drake
b786df44d1 sanity check for banning sites 2014-08-09 16:21:42 -07:00
Kyle Drake
aab39212ef Better checking for valid site name 2014-08-07 01:24:05 -07:00
Kyle Drake
3233494281 fix for site create 2014-08-03 12:35:39 -07:00
Kyle Drake
d3fc35989d brush up email requirements 2014-08-02 15:22:54 -07:00
Kyle Drake
933fb9fcfd make editor theme stick, and get rid of slim 2014-08-01 22:37:38 -07:00
Kyle Drake
7a751e811e admin -> erb 2014-08-01 21:00:28 -07:00
Kyle Drake
49055145f1 new page -> erb 2014-08-01 20:30:06 -07:00
Kyle Drake
363147b96d port settings to erb 2014-08-01 11:56:51 -07:00
Kyle Drake
35298346d6 Supporters now get one gigabyte 2014-07-31 19:47:29 -07:00
Kyle Drake
201e63865a Display individual events by clicking on date 2014-07-31 19:44:32 -07:00
Kyle Drake
afa3a312c9 fix views browsing 2014-07-31 17:05:00 -07:00
Kyle Drake
351b2d7178 pagination for site profile 2014-07-31 17:01:30 -07:00
Kyle Drake
17119d369c Events pagination and fixes for browse pagination 2014-07-31 16:49:18 -07:00
Kyle Drake
be32867860 typeahead for new tag 2014-07-31 15:39:02 -07:00
Kyle Drake
1ac9cdf606 tag autocomplete and better browsing 2014-07-31 15:25:08 -07:00
Kyle Drake
581398f826 few fixes for home screen 2014-07-23 16:07:07 -07:00
Kyle Drake
64914a7ebe fix support emailing 2014-07-22 10:49:31 -07:00
Kyle Drake
36f7603142 ask for single tag, clarify purpose 2014-07-22 00:17:13 -05:00
Kyle Drake
7de447cf6f updated link goes to site profile 2014-07-22 00:03:51 -05:00
Kyle Drake
7499c29f6c tag length to 25 chars 2014-07-21 15:29:26 -05:00
Kyle Drake
ba840423a6 one word tags, fix captcha two word mention 2014-07-21 15:19:15 -05:00
Kyle Drake
9cedbd086d bold for activity link, usernames for likes, fix likes 2014-07-21 13:44:25 -05:00
Kyle Drake
b2a2281ff7 ignore flash username for error display on signin 2014-07-21 13:11:57 -05:00
Kyle Drake
6a26c3115d remove phantomjs_url as its no longer used 2014-07-03 19:08:03 -05:00
Kyle Drake
7c05c16925 remaining username to title changes 2014-07-03 19:04:01 -05:00
Kyle Drake
c62e8fe12c add missing indexes 2014-07-03 17:31:27 -05:00
Kyle Drake
50d0e9d4db shorten titles, DRY up url generation 2014-07-03 14:03:35 -05:00
Kyle Drake
c512b579ce Capture unique visitors 2014-06-30 17:26:44 -05:00
Kyle Drake
25e8b7104e more room for site title 2014-06-30 13:02:08 -05:00
Kyle Drake
a420132632 use web app for bans, not system 2014-06-27 21:23:28 -04:00
Kyle Drake
ab95fa01af link for only my updates 2014-06-27 18:21:58 -04:00
Kyle Drake
fa35da3c12 News Feed 2014-06-27 18:15:25 -04:00
Kyle Drake
70a58176fa fixes for tags 2014-06-18 13:15:01 -07:00
Kyle Drake
c3da5cc262 remove unused constant 2014-06-17 00:24:04 -07:00
Kyle Drake
447f654435 blocking, tag fixes 2014-06-17 00:22:41 -07:00
Kyle Drake
e546b22797 implement site reporting 2014-06-14 16:15:47 -07:00
Kyle Drake
5edeba9495 RSS/Atom feed for sites 2014-06-12 16:30:02 -07:00
Kyle Drake
b47997a030 fix for follows display 2014-06-12 12:59:26 -07:00
Kyle Drake
769a122b03 finish basic implementation of tags, misc cleanups 2014-06-11 16:18:19 -07:00
Kyle Drake
575189656b fix for >5 tag logic 2014-06-08 21:20:09 -07:00
Kyle Drake
51ccd367c4 persist tag search 2014-06-08 21:08:04 -07:00
Kyle Drake
f6ebb4ee41 fix for logged out display of site 2014-06-08 18:58:35 -07:00
Kyle Drake
f3c2a81e0c check more than two word tag checking 2014-06-08 18:39:27 -07:00
Kyle Drake
e0efe996b0 refactor tags, whitespace 2014-06-08 18:32:33 -07:00
Kyle Drake
e9b7826621 fix merges in css 2014-06-06 21:54:52 -07:00
Kyle Drake
909c0c9a63 Merge branch 'master' into v2 2014-06-06 21:49:28 -07:00
Kyle Drake
e1eb377a92 optimize performance for site profile render 2014-06-05 01:23:10 -07:00
Kyle Drake
13988ad74a tag support for browse, show site name on bottom 2014-06-04 23:58:16 -07:00
Kyle Drake
4155211051 more share options 2014-06-04 20:48:44 -07:00
Kyle Drake
084a09c688 Plug neocitizen for API, sort HTML first for file changes, Tumblr share link 2014-06-04 19:10:11 -07:00
Kyle Drake
7eee0f062d remove double-change count, and only increment for actual changes 2014-06-04 18:26:17 -07:00
Kyle Drake
da9d1e4eb3 site change and file recording, better share support 2014-06-04 18:05:29 -07:00
Kyle Drake
9275b92d9f 404 if site is not found 2014-05-30 21:33:21 -07:00
Kyle Drake
d9b33238e9 continued work on site profile, tag adding 2014-05-30 21:18:55 -07:00
Kyle Drake
264e4becea follow/followings fixes, general cleanups 2014-05-19 18:31:46 +02:00
Kyle Drake
ad9ac1e68d event actioning_site migration 2014-05-19 16:57:58 +02:00
Kyle Drake
070d8df1db fixes for follows, initial follow event code 2014-05-08 08:47:28 -07:00
Kyle Drake
2097350a1c barely functioning share modal 2014-05-05 17:07:22 -07:00
Kyle Drake
32da2d15b6 remove debug code 2014-05-05 15:25:59 -07:00
Kyle Drake
0a29a496d7 following button on site 2014-05-05 15:25:25 -07:00
Kyle Drake
51a85a0b03 comment liking 2014-05-05 11:58:11 -07:00
Kyle Drake
8210670122 event comment delete 2014-05-02 22:45:57 -07:00
Kyle Drake
a4a2b5165b event deleting 2014-05-02 17:44:31 -07:00
Kyle Drake
6277a94a5b editing for profile comments 2014-05-02 15:08:12 -07:00
Kyle Drake
f681e6c704 tooltip showing who likes an event 2014-05-02 01:46:18 -07:00
Kyle Drake
b96730b83f more work on comments for events 2014-05-01 19:20:34 -07:00
Kyle Drake
eba4a6e3f5 event like support 2014-05-01 14:09:45 -07:00
Kyle Drake
cf6bf7f031 Merge branch 'master' into v2 2014-04-30 19:46:01 -07:00
Kyle Drake
d9ee4f8c65 Merge branch 'master' into v2 2014-04-29 02:13:05 -07:00
Kyle Drake
177e4d3592 more improvements for profile/feed page 2014-04-29 02:07:35 -07:00
Kyle Drake
5bc66e2524 initial profile comments 2014-04-29 01:17:17 -07:00
Kyle Drake
44311e4008 start of feed and profile integration 2014-04-29 00:03:48 -07:00
Kyle Drake
d23ffc3b17 Merge branch 'v2' of github.com:neocities/neocities into v2 2014-04-28 14:19:36 -07:00
Victoria Wang
725539b867 Initial mockup/code for new index with large sections. 2014-04-26 10:24:56 -05:00
1727 changed files with 766678 additions and 6970 deletions

46
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,46 @@
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-22.04
services:
postgres:
image: postgres
env:
POSTGRES_DB: ci_test
POSTGRES_PASSWORD: citestpassword
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps tcp port 5432 on service container to the host
- 5432:5432
redis:
image: redis
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps port 6379 on service container to the host
- 6379:6379
steps:
- uses: actions/checkout@v2
- run: sudo apt-get update && sudo apt-get -y install libimlib2-dev chromium-browser
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Install dependencies
run: bundle install
- name: Run tests with Coveralls
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: bundle exec rake

41
.gitignore vendored
View file

@ -1,24 +1,31 @@
*.gem
*.rbc
.bundle
.config
coverage
InstalledFiles
lib/bundler/man
pkg
rdoc
spec/reports
test/tmp
test/version_tmp
tmp
# YARD artifacts
.yardoc
_yardoc
doc/
tests/coverage
config.yml
.DS_Store
public/assets/css/.sass-cache/
public/css/neo.css
public/css/neo.css.map
public/site_thumbnails
public/sites
public/site_screenshots
public/site_screenshots_test
public/site_thumbnails_test
*.swp
files/map.txt
files/supporter-map.txt
files/maps
.sass-cache
.sass-cache/*
files/sslsites.zip
.tm_properties
.vagrant
public/banned_sites
public/deleted_sites
files/disposable_email_whitelist.conf
files/disposable_email_blacklist.conf
files/banned_email_blacklist.conf
files/letsencrypt.key
files/tor.txt
.bundle
ext/black_box.rb
files/trumpplan.txt
public/sitemap

View file

@ -1,7 +0,0 @@
language: ruby
rvm:
- "2.1.0"
addons:
postgresql: "9.3"
before_script:
- psql -c 'create database travis_ci_test;' -U postgres

118
Gemfile
View file

@ -3,66 +3,90 @@ source 'https://rubygems.org'
gem 'sinatra'
gem 'redis'
gem 'sequel'
gem 'slim'
gem 'redis-namespace'
gem 'bcrypt'
gem 'sinatra-flash', require: 'sinatra/flash'
gem 'sinatra-xsendfile', require: 'sinatra/xsendfile'
gem 'puma', require: nil
gem 'rubyzip', require: 'zip'
gem 'rack-recaptcha', require: 'rack/recaptcha'
gem 'rmagick', require: nil
gem 'sidekiq'
gem 'ago'
gem 'puma', '< 7', require: nil
gem 'sidekiq', '~> 7'
gem 'mail'
gem 'google-api-client', require: 'google/api_client'
gem 'tilt'
gem 'erubis'
gem 'stripe', :git => 'https://github.com/stripe/stripe-ruby'
gem 'screencap'
gem 'erubi'
gem 'stripe' #, source: 'https://code.stripe.com/'
gem 'terrapin'
gem 'sass', require: nil
gem 'dav4rack', git: 'https://github.com/neocities/dav4rack.git', ref: '1bf1975c613d4f14d00f1e70ce7e0bb9e2e6cd9b'
gem 'filesize'
gem 'thread'
gem 'rest-client', require: 'rest_client'
gem 'addressable', '>= 2.8.0', require: 'addressable/uri'
gem 'paypal-recurring', require: 'paypal/recurring'
gem 'geoip'
gem 'io-extra', require: 'io/extra'
#gem 'rye'
gem 'coveralls_reborn', require: false
gem 'sanitize'
gem 'will_paginate'
gem 'simpleidn'
gem 'gandi'
gem 'hoe', require: nil
gem 'msgpack'
gem 'acme-client', '~> 2.0.0'
gem 'http'
gem 'htmlentities'
gem 'rinku'
gem 'image_optim'
gem 'image_optim_pack'
gem 'ipaddress'
gem 'feedjira', '2.1.4'
gem 'monetize'
gem 'xmlrpc'
gem 'magic'
gem 'pg'
gem 'sequel_pg', require: nil
gem 'hiredis'
gem 'activesupport'
gem 'facter', require: nil
gem 'maxmind-db'
gem 'json', '>= 2.3.0'
gem 'nokogiri'
gem 'webp-ffi'
gem 'rszr'
gem 'zip_tricks'
gem 'adequate_crypto_address'
gem 'twilio-ruby'
gem 'phonelib'
gem 'dnsbl-client'
gem 'minfraud'
gem 'image_optimizer' # apt install optipng jpegoptim pngquant
gem 'rubyzip', require: 'zip'
gem 'airbrake'
gem 'csv'
platform :mri do
gem 'magic' # sudo apt-get install file, For OSX: brew install libmagic
gem 'pg'
gem 'sequel_pg', require: nil
gem 'hiredis'
gem 'rainbows', require: nil
group :development, :test do
gem 'pry'
gem 'pry-debugger'
end
end
platform :jruby do
gem 'jruby-openssl'
gem 'json'
gem 'jdbc-postgres'
group :development do
gem 'ruby-debug', require: nil
gem 'sass', require: nil
end
group :development, :test do
gem 'pry'
end
group :development do
gem 'shotgun', require: nil
gem 'certified'
end
group :test do
gem 'faker'
gem 'fabrication', require: 'fabrication'
gem 'fabrication', require: 'fabrication'
gem 'minitest'
gem 'minitest-reporters', require: 'minitest/reporters'
gem 'rack-test', require: 'rack/test'
gem 'webmock'
gem 'mocha', require: nil
gem 'rake', require: nil
gem 'poltergeist'
gem 'phantomjs', require: 'phantomjs/poltergeist'
gem 'capybara'
gem 'capybara_minitest_spec'
platform :mri do
gem 'simplecov', require: nil
end
gem 'minitest-reporters', require: 'minitest/reporters'
gem 'rack-test', require: 'rack/test'
gem 'mocha', require: nil
gem 'rake', '>= 12.3.3', require: nil
gem 'capybara', require: nil #, '2.10.1', require: nil
gem 'selenium-webdriver'
gem 'rack_session_access', require: nil
gem 'webmock', require: nil
gem 'stripe-ruby-mock', '~> 3.1.0.rc3', require: 'stripe_mock'
gem 'timecop'
gem 'mock_redis'
gem 'simplecov', require: nil
gem 'm'
end

View file

@ -1,239 +1,488 @@
GIT
remote: https://github.com/stripe/stripe-ruby
revision: 48f76057f425ab5c3bb147f3d71c3d36d951159f
remote: https://github.com/neocities/dav4rack.git
revision: 1bf1975c613d4f14d00f1e70ce7e0bb9e2e6cd9b
ref: 1bf1975c613d4f14d00f1e70ce7e0bb9e2e6cd9b
specs:
stripe (1.11.0)
json (~> 1.8.1)
mime-types (~> 1.25)
rest-client (~> 1.4)
dav4rack (0.3.0)
nokogiri (>= 1.4.2)
rack (~> 3.0)
uuidtools (~> 2.1.1)
webrick
GEM
remote: https://rubygems.org/
specs:
addressable (2.3.6)
ago (0.1.5)
ansi (1.4.3)
autoparse (0.3.3)
addressable (>= 2.3.1)
extlib (>= 0.9.15)
multi_json (>= 1.0.0)
bcrypt (3.1.7)
builder (3.2.2)
capybara (2.2.1)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
capybara_minitest_spec (1.0.1)
capybara (>= 2)
minitest (>= 2)
celluloid (0.15.2)
timers (~> 1.1.0)
cliver (0.3.2)
coderay (1.1.0)
columnize (0.3.6)
connection_pool (2.0.0)
crack (0.4.2)
safe_yaml (~> 1.0.0)
debugger (1.6.6)
columnize (>= 0.3.1)
debugger-linecache (~> 1.2.0)
debugger-ruby_core_source (~> 1.3.2)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.3.2)
docile (1.1.3)
erubis (2.7.0)
extlib (0.9.16)
fabrication (2.11.0)
faker (1.3.0)
i18n (~> 0.5)
faraday (0.9.0)
multipart-post (>= 1.2, < 3)
ffi (1.9.3)
google-api-client (0.7.1)
addressable (>= 2.3.2)
autoparse (>= 0.3.3)
extlib (>= 0.9.15)
faraday (>= 0.9.0)
jwt (>= 0.1.5)
launchy (>= 2.1.1)
multi_json (>= 1.0.0)
retriable (>= 1.4)
signet (>= 0.5.0)
uuidtools (>= 2.1.0)
hashie (2.0.5)
hiredis (0.5.0)
i18n (0.6.9)
json (1.8.1)
jwt (0.1.11)
multi_json (>= 1.5)
kgio (2.9.2)
launchy (2.4.2)
addressable (~> 2.3)
magic (0.2.6)
acme-client (2.0.19)
base64 (~> 0.2.0)
faraday (>= 1.0, < 3.0.0)
faraday-retry (>= 1.0, < 3.0.0)
activesupport (8.0.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
adequate_crypto_address (0.1.9)
base58 (~> 0.2)
keccak (~> 1.3)
airbrake (13.0.5)
airbrake-ruby (~> 6.0)
airbrake-ruby (6.2.2)
rbtree3 (~> 0.6)
ansi (1.5.0)
base58 (0.2.3)
base64 (0.2.0)
bcrypt (3.1.20)
benchmark (0.4.0)
bigdecimal (3.1.9)
builder (3.3.0)
capybara (3.40.0)
addressable
matrix
mini_mime (>= 0.1.3)
nokogiri (~> 1.11)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
certified (1.0.0)
climate_control (1.2.0)
coderay (1.1.3)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
coveralls_reborn (0.28.0)
simplecov (~> 0.22.0)
term-ansicolor (~> 1.7)
thor (~> 1.2)
tins (~> 1.32)
crack (1.0.0)
bigdecimal
rexml
crass (1.0.6)
csv (3.3.2)
dante (0.2.0)
date (3.4.1)
dnsbl-client (1.1.1)
docile (1.4.1)
domain_name (0.6.20240107)
drb (2.2.1)
erubi (1.13.1)
exifr (1.4.1)
fabrication (2.31.0)
facter (4.10.0)
hocon (~> 1.3)
thor (>= 1.0.1, < 1.3)
faker (3.5.1)
i18n (>= 1.8.11, < 2)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.1)
faraday (~> 1.0)
feedjira (2.1.4)
faraday (>= 0.9)
faraday_middleware (>= 0.9)
loofah (>= 2.0)
sax-machine (>= 1.0)
ffi (1.17.1-aarch64-linux-gnu)
ffi (1.17.1-aarch64-linux-musl)
ffi (1.17.1-arm-linux-gnu)
ffi (1.17.1-arm-linux-musl)
ffi (1.17.1-arm64-darwin)
ffi (1.17.1-x86_64-darwin)
ffi (1.17.1-x86_64-linux-gnu)
ffi (1.17.1-x86_64-linux-musl)
ffi-compiler (1.3.2)
ffi (>= 1.15.5)
rake
filesize (0.2.0)
fspath (3.1.2)
gandi (3.3.28)
hashie
xmlrpc
geoip (1.6.4)
hashdiff (1.1.2)
hashie (5.0.0)
hiredis (0.6.3)
hocon (1.4.0)
hoe (4.2.2)
rake (>= 0.8, < 15.0)
htmlentities (4.3.4)
http (5.2.0)
addressable (~> 2.8)
base64 (~> 0.1)
http-cookie (~> 1.0)
http-form_data (~> 2.2)
llhttp-ffi (~> 0.5.0)
http-accept (1.7.0)
http-cookie (1.0.8)
domain_name (~> 0.5)
http-form_data (2.3.0)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
image_optim (0.31.4)
exifr (~> 1.2, >= 1.2.2)
fspath (~> 3.0)
image_size (>= 1.5, < 4)
in_threads (~> 1.3)
progress (~> 3.0, >= 3.0.1)
image_optim_pack (0.11.2)
fspath (>= 2.1, < 4)
image_optim (~> 0.19)
image_optim_pack (0.11.2-x86_64-darwin)
fspath (>= 2.1, < 4)
image_optim (~> 0.19)
image_optim_pack (0.11.2-x86_64-linux)
fspath (>= 2.1, < 4)
image_optim (~> 0.19)
image_optimizer (1.9.0)
image_size (3.4.0)
in_threads (1.6.0)
io-extra (1.4.0)
ipaddress (0.8.3)
json (2.9.1)
jwt (2.10.1)
base64
keccak (1.3.2)
llhttp-ffi (0.5.0)
ffi-compiler (~> 1.0)
rake (~> 13.0)
logger (1.6.5)
loofah (2.24.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
m (1.6.2)
method_source (>= 0.6.7)
rake (>= 0.9.2.2)
magic (0.2.9)
ffi (>= 0.6.3)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
metaclass (0.0.4)
method_source (0.8.2)
mime-types (1.25.1)
mini_portile (0.5.3)
minitest (5.3.1)
minitest-reporters (1.0.2)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
matrix (0.4.2)
maxmind-db (1.2.0)
maxmind-geoip2 (1.2.0)
connection_pool (~> 2.2)
http (>= 4.3, < 6.0)
maxmind-db (~> 1.2)
method_source (1.1.0)
mime-types (3.6.0)
logger
mime-types-data (~> 3.2015)
mime-types-data (3.2025.0107)
minfraud (2.6.0)
connection_pool (~> 2.2)
http (>= 4.3, < 6.0)
maxmind-geoip2 (~> 1.2)
simpleidn (~> 0.1, >= 0.1.1)
mini_mime (1.1.5)
minitest (5.25.4)
minitest-reporters (1.7.1)
ansi
builder
minitest (>= 5.0)
powerbar
mocha (1.0.0)
metaclass (~> 0.0.1)
multi_json (1.9.2)
multipart-post (2.0.0)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
pg (0.17.1)
phantomjs (1.9.7.0)
poltergeist (1.5.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0)
polyglot (0.3.4)
powerbar (1.0.11)
ansi (~> 1.4.0)
hashie (>= 1.1.0)
pry (0.9.12.6)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
pry-debugger (0.2.2)
debugger (~> 1.3)
pry (~> 0.9.10)
puma (2.8.1)
rack (>= 1.1, < 2.0)
rack (1.5.2)
rack-protection (1.5.2)
rack
rack-recaptcha (0.6.6)
json
rack-test (0.6.2)
ruby-progressbar
mocha (2.7.1)
ruby2_keywords (>= 0.0.5)
mock_redis (0.49.0)
redis (~> 5)
monetize (1.13.0)
money (~> 6.12)
money (6.19.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.7.5)
multi_json (1.15.0)
multipart-post (2.4.1)
mustermann (3.0.3)
ruby2_keywords (~> 0.0.1)
net-imap (0.5.6)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.1)
net-protocol
netrc (0.11.0)
nio4r (2.7.4)
nokogiri (1.18.8-aarch64-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.8-aarch64-linux-musl)
racc (~> 1.4)
nokogiri (1.18.8-arm-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.8-arm-linux-musl)
racc (~> 1.4)
nokogiri (1.18.8-arm64-darwin)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.8-x86_64-linux-musl)
racc (~> 1.4)
ostruct (0.6.1)
paypal-recurring (1.1.0)
pg (1.5.9)
phonelib (0.10.3)
progress (3.6.0)
pry (0.15.2)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (6.0.1)
puma (6.6.0)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.12)
rack-protection (4.1.1)
base64 (>= 0.1.0)
logger (>= 1.6.0)
rack (>= 3.0.0, < 4)
rack-session (2.1.0)
base64 (>= 0.1.0)
rack (>= 3.0.0)
rack-test (2.2.0)
rack (>= 1.3)
rack_session_access (0.2.0)
builder (>= 2.0.0)
rack (>= 1.0.0)
rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rbtree3 (0.7.1)
redis (5.3.0)
redis-client (>= 0.22.0)
redis-client (0.23.2)
connection_pool
redis-namespace (1.11.0)
redis (>= 4)
regexp_parser (2.10.0)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.4.1)
rinku (2.0.6)
rszr (1.5.0)
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
sanitize (7.0.0)
crass (~> 1.0.2)
nokogiri (>= 1.16.8)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sax-machine (1.3.2)
securerandom (0.4.1)
selenium-webdriver (4.28.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
sequel (5.89.0)
bigdecimal
sequel_pg (1.17.1)
pg (>= 0.18.0, != 1.2.0)
sequel (>= 4.38.0)
shotgun (0.9.2)
rack (>= 1.0)
rainbows (4.6.1)
kgio (~> 2.5)
rack (~> 1.1)
unicorn (~> 4.8)
raindrops (0.13.0)
rake (10.2.1)
redis (3.0.7)
redis-namespace (1.4.1)
redis (~> 3.0.4)
rest-client (1.6.7)
mime-types (>= 1.16)
retriable (1.4.1)
rmagick (2.13.2)
rubyzip (1.1.2)
safe_yaml (1.0.1)
screencap (0.1.1)
phantomjs
sequel (4.8.0)
sequel_pg (1.6.9)
pg (>= 0.8.0)
sequel (>= 3.39.0)
shotgun (0.9)
rack (>= 1.0)
sidekiq (3.0.0)
celluloid (>= 0.15.2)
connection_pool (>= 2.0.0)
json
redis (>= 3.0.6)
redis-namespace (>= 1.3.1)
signet (0.5.0)
addressable (>= 2.2.3)
faraday (>= 0.9.0.rc5)
jwt (>= 0.1.5)
multi_json (>= 1.0.0)
simplecov (0.8.2)
docile (~> 1.1.0)
multi_json
simplecov-html (~> 0.8.0)
simplecov-html (0.8.0)
sinatra (1.4.4)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
sidekiq (7.3.8)
base64
connection_pool (>= 2.3.0)
logger
rack (>= 2.2.4)
redis-client (>= 0.22.2)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4)
simpleidn (0.2.3)
sinatra (4.1.1)
logger (>= 1.6.0)
mustermann (~> 3.0)
rack (>= 3.0.0, < 4)
rack-protection (= 4.1.1)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
sinatra-flash (0.3.0)
sinatra (>= 1.0.0)
sinatra-xsendfile (0.4.2)
sinatra (>= 0.9.1)
slim (2.0.2)
temple (~> 0.6.6)
tilt (>= 1.3.3, < 2.1)
slop (3.5.0)
temple (0.6.7)
tilt (1.4.1)
timers (1.1.0)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
unicorn (4.8.2)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
uuidtools (2.1.4)
webmock (1.17.4)
addressable (>= 2.2.7)
stripe (5.55.0)
stripe-ruby-mock (3.1.0)
dante (>= 0.2.0)
multi_json (~> 1.0)
stripe (> 5, < 6)
sync (0.5.0)
term-ansicolor (1.11.2)
tins (~> 1.0)
terrapin (1.0.1)
climate_control
thor (1.2.2)
thread (0.2.2)
tilt (2.6.0)
timecop (0.9.10)
timeout (0.4.3)
tins (1.38.0)
bigdecimal
sync
twilio-ruby (7.4.3)
benchmark
faraday (>= 0.9, < 3.0)
jwt (>= 1.5, < 3.0)
nokogiri (>= 1.6, < 2.0)
ostruct
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uri (1.0.3)
uuidtools (2.1.5)
webmock (3.25.0)
addressable (>= 2.8.0)
crack (>= 0.3.2)
websocket-driver (0.3.2)
xpath (2.0.0)
nokogiri (~> 1.3)
hashdiff (>= 0.4.0, < 2.0.0)
webp-ffi (0.4.0)
ffi (>= 1.9.0)
ffi-compiler (>= 0.1.2)
webrick (1.9.1)
websocket (1.2.11)
will_paginate (4.0.1)
xmlrpc (0.3.3)
webrick
xpath (3.2.0)
nokogiri (~> 1.8)
zip_tricks (5.6.0)
PLATFORMS
ruby
aarch64-linux-gnu
aarch64-linux-musl
arm-linux-gnu
arm-linux-musl
arm64-darwin
x86_64-darwin
x86_64-linux-gnu
x86_64-linux-musl
DEPENDENCIES
ago
acme-client (~> 2.0.0)
activesupport
addressable (>= 2.8.0)
adequate_crypto_address
airbrake
bcrypt
capybara
capybara_minitest_spec
erubis
certified
coveralls_reborn
csv
dav4rack!
dnsbl-client
erubi
fabrication
facter
faker
google-api-client
feedjira (= 2.1.4)
filesize
gandi
geoip
hiredis
jdbc-postgres
jruby-openssl
json
hoe
htmlentities
http
image_optim
image_optim_pack
image_optimizer
io-extra
ipaddress
json (>= 2.3.0)
m
magic
mail
maxmind-db
minfraud
minitest
minitest-reporters
mocha
mock_redis
monetize
msgpack
nokogiri
paypal-recurring
pg
phantomjs
poltergeist
phonelib
pry
pry-debugger
puma
rack-recaptcha
puma (< 7)
rack-test
rainbows
rake
rack_session_access
rake (>= 12.3.3)
redis
rmagick
ruby-debug
redis-namespace
rest-client
rinku
rszr
rubyzip
sanitize
sass
screencap
selenium-webdriver
sequel
sequel_pg
shotgun
sidekiq
sidekiq (~> 7)
simplecov
simpleidn
sinatra
sinatra-flash
sinatra-xsendfile
slim
stripe!
stripe
stripe-ruby-mock (~> 3.1.0.rc3)
terrapin
thread
tilt
timecop
twilio-ruby
webmock
webp-ffi
will_paginate
xmlrpc
zip_tricks
BUNDLED WITH
2.6.3

View file

@ -1,63 +1,36 @@
# NeoCities.org
### NOTE: THIS IS NOT FOR NEOCITIES SUPPORT! Any issues filed not related to the source code itself will be closed. For support please contact: https://neocities.org/contact
[![Build Status](https://travis-ci.org/neocities/neocities.png?branch=master)](https://travis-ci.org/neocities/neocities)
# Neocities.org
The web site for NeoCities! It's open source. Want a feature on the site? Send a pull request!
[![Build Status](https://github.com/neocities/neocities/actions/workflows/ci.yml/badge.svg)](https://github.com/neocities/neocities/actions?query=workflow%3ACI)
[![Coverage Status](https://coveralls.io/repos/neocities/neocities/badge.svg?branch=master&service=github)](https://coveralls.io/github/neocities/neocities?branch=master)
## Installation (OSX)
The web site for Neocities! It's open source. Want a feature on the site? Send a pull request!
Install homebrew:
```
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
```
## Getting Started
Install deps:
```
$ brew install redis postgresql phantomjs libmagic imagemagick
```
Fork the repository on Github.
Clone the forked repo to your local machine: git clone git@github.com:YOURUSERNAME/neocities.git
Install deps:
Neocities can be quickly launched in development mode with [Vagrant](https://www.vagrantup.com). Vagrant builds a virtual machine that automatically installs everything you need to run Neocities as a developer. Install Vagrant, then from the command line:
```
$ cd neocities
$ gem install bundler
$ bundle install
vagrant up --provision
```
Create postgres databases:
![Vagrant takes a while, make a pizza while waiting](https://i.imgur.com/dKa8LUs.png)
Make a copy of `config.yml.template` in the root directory, and rename it to `config.yml`. Then:
```
createdb neocities_test
createdb neocities_dev
vagrant ssh
bundle exec rackup -o 0.0.0.0
```
Copy config.yml.template to config.yml and edit to something like this:
```
development:
database: 'postgres://neocities@127.0.0.1/neocities_dev'
database_pool: 1
session_secret: SECRET1234
recaptcha_public_key: ENTER RECAPTCHA PUBLIC KEY HERE
recaptcha_private_key: ENTER RECAPTCHA PRIVATE KEY HERE
sidekiq_user: sidekiq
sidekiq_pass: sidekiq
phantomjs_url:
- http://localhost:8910
```
Run the tests to see if they work:
```
bundle exec rake test
```
Now you can access the running site from your browser: http://127.0.0.1:9292
## Want to contribute?
If you'd like to fix a bug, or make an improvement, or add a new feature, it's easy! Just send us a Pull Request.
1. Fork it ( http://github.com/YOURUSERNAME/neocities/fork )
1. Fork it (https://github.com/neocities/neocities/fork)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)

255
Rakefile
View file

@ -1,4 +1,4 @@
require "rake/testtask"
require 'rake/testtask'
task :environment do
require './environment.rb'
@ -7,36 +7,253 @@ end
desc "Run all tests"
Rake::TestTask.new do |t|
t.libs << "spec"
t.test_files = FileList['tests/*_tests.rb']
t.verbose = true
t.test_files = FileList['tests/**/*_tests.rb']
t.verbose = false
t.warning = false
end
task :default => :test
desc "prune logs"
task :prune_logs => [:environment] do
Stat.prune!
StatLocation.prune!
StatReferrer.prune!
StatPath.prune!
end
desc "parse logs"
task :parse_logs => [:environment] do
hits = {}
logfile = File.open '/var/log/nginx/neocities-sites.log.1', 'r'
while hit = logfile.gets
hit = hit.split ' '
Stat.parse_logfiles $config['logs_path']
end
# It says hits, but really we're tracking visits to index"
if hit[3] == '/'
hits[hit[1]] ||= 0
hits[hit[1]] += 1
desc 'Update disposable email blacklist'
task :update_disposable_email_blacklist => [:environment] do
# Formerly: https://raw.githubusercontent.com/martenson/disposable-email-domains/master/disposable_email_blocklist.conf
uri = URI.parse('https://raw.githubusercontent.com/disposable/disposable-email-domains/master/domains.txt')
File.write(Site::DISPOSABLE_EMAIL_BLACKLIST_PATH, HTTP.get(uri))
end
desc 'Update banned IPs list'
task :update_blocked_ips => [:environment] do
filename = 'listed_ip_365_ipv46'
zip_path = "/tmp/#{filename}.zip"
File.open(zip_path, 'wb') do |file|
response = HTTP.get "https://www.stopforumspam.com/downloads/#{filename}.zip"
response.body.each do |chunk|
file.write chunk
end
end
logfile.close
hits.each do |username,hitcount|
DB['update sites set hits=hits+? where username=?', hitcount, username].first
Zip::File.open(zip_path) do |zip_file|
zip_file.each do |entry|
if entry.name == "#{filename}.txt"
ips = entry.get_input_stream.read
insert_hashes = []
ips.each_line { |ip| insert_hashes << { ip: ip.strip, created_at: Time.now } }
ips = nil
# Database transaction
DB.transaction do
DB[:blocked_ips].delete
DB[:blocked_ips].multi_insert insert_hashes
end
end
end
end
FileUtils.rm zip_path
end
desc 'Update screenshots'
task :update_screenshots => [:environment] do
Site.select(:username).filter(is_banned: false).filter(~{updated_at: nil}).order(:updated_at.desc).all.collect {|s|
ScreenshotWorker.perform_async s.username
}
desc 'rebuild_thumbnails'
task :rebuild_thumbnails => [:environment] do
dirs = Dir[Site::SITE_FILES_ROOT+'/**/*'].collect {|s| s.sub(Site::SITE_FILES_ROOT, '')}.collect {|s| s.sub('/', '')}
dirs.each do |d|
next if File.directory?(d)
full_path = d.split('/')
username = full_path.first
path = '/'+full_path[1..full_path.length].join('/')
if Pathname(path).extname.gsub('.', '').match Site::IMAGE_REGEX
begin
ThumbnailWorker.new.perform username, path
rescue Magick::ImageMagickError
end
end
end
end
desc 'compute_scores'
task :compute_scores => [:environment] do
Site.compute_scores
end
desc 'renew_ssl_certs'
task :renew_ssl_certs => [:environment] do
delay = 0
DB[%{select id from sites where (domain is not null or domain != '') and is_banned != 't' and is_deleted != 't' and (cert_updated_at is null or cert_updated_at < ?)}, 60.days.ago].all.each do |site|
LetsEncryptWorker.perform_in delay.seconds, site[:id]
delay += 10
end
end
desc 'purge_tmp_turds'
task :purge_tmp_turds => [:environment] do
['neocities_screenshot*', 'RackMultipart*', 'neocities_saving_file*', 'newinstall-*', '*.dmp', 'davfile*', 'magick*', '*.scan', '*.jpg'].each do |target|
Dir.glob("/tmp/#{target}").select {|filename| File::Stat.new(filename).ctime < (Time.now - 3600)}.each {|filename| FileUtils.rm(filename)}
end
end
desc 'compute_follow_count_scores'
task :compute_follow_count_scores => [:environment] do
Site.select(:id,:username,:follow_count).all.each do |site|
count = site.scorable_follow_count
if count != 0
puts "#{site.username} #{site.follow_count} => #{count}"
end
DB['update sites set follow_count=? where id=?', count, site.id].first
end
end
desc 'ml_screenshots_list_dump'
task :ml_screenshots_list_dump => [:environment] do
['phishing', 'spam', 'ham', nil].each do |classifier|
File.open("./files/screenshot-urls#{classifier.nil? ? '' : '-'+classifier.to_s}.txt", 'w') do |fp|
SiteFile.where(classifier: classifier).where(path: 'index.html').each do |site_file|
begin
fp.write "#{site_file.site.screenshot_url('index.html', Site::SCREENSHOT_RESOLUTIONS.first)}\n"
rescue NoMethodError
end
end
end
end
end
desc 'generate_sitemap'
task :generate_sitemap => [:environment] do
sorted_sites = {}
# We pop off array, so highest scores go last.
sites = Site.
select(:id, :username, :updated_at, :profile_enabled).
where(site_changed: true).
exclude(updated_at: nil).
exclude(is_deleted: true).
order(:score).
all
site_files = []
sites.each do |site|
site.site_files_dataset.exclude(path: 'not_found.html').where(path: /\.html?$/).all.each do |site_file|
if site.uri(site_file.path) == site.uri
priority = 0.5
else
priority = 0.4
end
site_files << [site.uri(site_file.path), site_file.updated_at.utc.iso8601, priority]
end
end
sites = nil
GC.start
sitemap_root = File.join Site::PUBLIC_ROOT, 'sitemap'
FileUtils.mkdir_p sitemap_root
index = 0
until site_files.empty?
sfs = site_files.pop 50000
file = File.open File.join(sitemap_root, "sites-#{index}.xml.gz"), 'w'
Zlib::GzipWriter.open File.join(sitemap_root, "sites-#{index}.xml.gz") do |gz|
gz.write %{<?xml version="1.0" encoding="UTF-8"?>\n}
gz.write %{<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n}
sfs.each do |sf|
gz.write %{<url><loc>#{sf[0].encode(xml: :text)}</loc><lastmod>#{sf[1].encode(xml: :text)}</lastmod><priority>#{sf[2].to_s.encode(xml: :text)}</priority></url>\n}
end
gz.write %{</urlset>}
end
index += 1
end
# Set basic neocities.org root paths
builder = Nokogiri::XML::Builder.new { |xml|
xml.urlset(xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9') {
File.read(File.join(DIR_ROOT, 'files', 'root_site_uris.txt')).each_line { |uri|
priority, changefreq, uri = uri.strip.split(',')
xml.url {
xml.loc uri
xml.changefreq changefreq
xml.priority priority
}
}
}
}
Zlib::GzipWriter.open File.join(sitemap_root, 'root.xml.gz') do |gz|
gz.write builder.to_xml(encoding: 'UTF-8')
end
# Tagged sites sitemap
builder = Nokogiri::XML::Builder.new { |xml|
xml.urlset(xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9') {
Tag.popular_names(Site.count).each { |tag|
xml.url {
xml.loc "https://neocities.org/browse?sort_by=views&tag=#{tag[:name]}"
xml.changefreq 'daily'
xml.lastmod Time.now.utc.iso8601
}
}
}
}
Zlib::GzipWriter.open File.join(sitemap_root, 'tags.xml.gz') do |gz|
gz.write builder.to_xml(encoding: 'UTF-8')
end
# Final index.xml.gz entrypoint
Zlib::GzipWriter.open File.join(sitemap_root, 'index.xml.gz') do |gz|
gz.write %{<?xml version="1.0" encoding="UTF-8"?>\n}
gz.write %{<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n}
gz.write %{<sitemap><loc>https://neocities.org/sitemap/root.xml.gz</loc><lastmod>#{Time.now.utc.iso8601}</lastmod></sitemap>\n}
gz.write %{<sitemap><loc>https://neocities.org/sitemap/tags.xml.gz</loc><lastmod>#{Time.now.utc.iso8601}</lastmod></sitemap>\n}
0.upto(index-1).each do |i|
gz.write %{<sitemap><loc>https://neocities.org/sitemap/sites-#{i}.xml.gz</loc><lastmod>#{Time.now.utc.iso8601}</lastmod></sitemap>\n}
end
gz.write %{</sitemapindex>}
end
end
desc 'dedupe tags'
task :dedupetags => [:environment] do
Tag.all.each do |tag|
begin
tag.reload
rescue Sequel::Error => e
next if e.message =~ /Record not found/
end
matching_tags = Tag.exclude(id: tag.id).where(name: tag.name).all
matching_tags.each do |matching_tag|
DB[:sites_tags].where(tag_id: matching_tag.id).update(tag_id: tag.id)
matching_tag.delete
end
end
end

12
Vagrantfile vendored Normal file
View file

@ -0,0 +1,12 @@
VAGRANTFILE_API_VERSION = '2'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'ubuntu/jammy64'
config.vm.provision :shell, path: './vagrant/development.sh'
config.vm.network :forwarded_port, guest: 9292, host: 9292
config.vm.provider :virtualbox do |vb|
vb.customize ['modifyvm', :id, '--memory', '8192']
vb.name = 'neocities'
end
end

1018
app.rb

File diff suppressed because it is too large Load diff

52
app/activity.rb Normal file
View file

@ -0,0 +1,52 @@
get '/activity' do
@page = params[:page] || 1
if params[:tag]
query1 = Event
.join(:sites, id: :site_id)
.join(:sites_tags, site_id: :id)
.join(:tags, id: :tag_id)
.where(tags__name: params[:tag])
.where(events__is_deleted: false, sites__is_deleted: false)
.where{sites__score > Event::ACTIVITY_TAG_SCORE_LIMIT}
.where(sites__is_nsfw: false)
.where(follow_id: nil)
.select_all(:events)
query2 = Event
.join(:sites, id: :actioning_site_id)
.join(:sites_tags, site_id: :id)
.join(:tags, id: :tag_id)
.where(tags__name: params[:tag])
.where(events__is_deleted: false, sites__is_deleted: false)
.where{sites__score > Event::ACTIVITY_TAG_SCORE_LIMIT}
.where(sites__is_nsfw: false)
.where(follow_id: nil)
.select_all(:events)
if current_site
blocking_site_ids = current_site.blocking_site_ids
query1 = query1.where(Sequel.|({events__site_id: nil}, ~{events__site_id: blocking_site_ids})).where(Sequel.|({events__actioning_site_id: nil}, ~{events__actioning_site_id: blocking_site_ids}))
query2 = query2.where(Sequel.|({events__site_id: nil}, ~{events__site_id: blocking_site_ids})).where(Sequel.|({events__actioning_site_id: nil}, ~{events__actioning_site_id: blocking_site_ids}))
end
ds = query1.union(query2, all: false).order(Sequel.desc(:created_at))
else
ds = Event.news_feed_default_dataset.exclude(sites__is_nsfw: true)
if current_site
blocking_site_ids = current_site.blocking_site_ids
ds = ds.where(Sequel.|({events__site_id: nil}, ~{events__site_id: blocking_site_ids})).where(Sequel.|({events__actioning_site_id: nil}, ~{events__actioning_site_id: blocking_site_ids}))
end
ds = ds.where(
Sequel.expr(Sequel[:sites][:score] > Event::GLOBAL_SCORE_LIMIT) |
Sequel.expr(Sequel[:actioning_sites][:score] > Event::GLOBAL_SCORE_LIMIT)
)
end
@pagination_dataset = ds.paginate @page.to_i, Event::GLOBAL_PAGINATION_LENGTH
@events = @pagination_dataset.all
erb :'activity'
end

308
app/admin.rb Normal file
View file

@ -0,0 +1,308 @@
get '/admin' do
require_admin
@banned_sites = Site.select(:username).filter(is_banned: true).order(:username).all
@nsfw_sites = Site.select(:username).filter(is_nsfw: true).order(:username).all
erb :'admin'
end
get '/admin/reports' do
require_admin
@reports = Report.order(:created_at.desc).all
erb :'admin/reports'
end
get '/admin/site/:username' do |username|
require_admin
@site = Site[username: username]
not_found if @site.nil?
@title = "Site Inspector - #{@site.username}"
erb :'admin/site'
end
post '/admin/reports' do
end
post '/admin/site_files/train' do
require_admin
site = Site[params[:site_id]]
site_file = site.site_files_dataset.where(path: params[:path]).first
not_found if site_file.nil?
site.untrain site_file.path
site.train site_file.path, params[:classifier]
'ok'
end
get '/admin/usage' do
require_admin
today = Date.today
current_month = Date.new today.year, today.month, 1
@monthly_stats = []
month = current_month
until month.year == 2016 && month.month == 2 do
stats = DB["select sum(views) as views, sum(hits) as hits,sum(bandwidth) as bandwidth from daily_site_stats where created_at::text LIKE '#{month.year}-#{month.strftime('%m')}-%'"].first
stats.keys.each do |key|
stats[key] ||= 0
end
stats.collect {|s| s == 0}.uniq
if stats[:views] != 0 && stats[:hits] != 0 && stats[:bandwidth] != 0
popular_sites = DB[
'select sum(bandwidth) as bandwidth,username from stats left join sites on sites.id=stats.site_id where stats.created_at >= ? and stats.created_at < ? group by username order by bandwidth desc limit 50',
month,
month.next_month
].all
@monthly_stats.push stats.merge(date: month).merge(popular_sites: popular_sites)
end
month = month.prev_month
end
erb :'admin/usage'
end
get '/admin/email' do
require_admin
erb :'admin/email'
end
get '/admin/stats' do
require_admin
@stats = {
total_hosted_site_hits: DB['SELECT SUM(hits) FROM sites'].first[:sum],
total_hosted_site_views: DB['SELECT SUM(views) FROM sites'].first[:sum],
total_site_changes: DB['select max(changed_count) from sites'].first[:max],
total_sites: Site.count
}
# Start with the date of the first created site
start = Site.select(:created_at).
exclude(created_at: nil).
order(:created_at).
first[:created_at].to_date
runner = start
monthly_stats = []
now = Date.today
while Date.new(runner.year, runner.month, 1) <= Date.new(now.year, now.month, 1)
monthly_stats.push(
date: runner,
sites_created: Site.where(created_at: runner..runner.next_month).count,
total_from_start: Site.where(created_at: start..runner.next_month).count,
supporters: Site.where(created_at: start..runner.next_month).exclude(stripe_customer_id: nil).count,
)
runner = runner.next_month
end
@stats[:monthly_stats] = monthly_stats
if $stripe_cache && Time.now < $stripe_cache[:time] + 14400
customers = $stripe_cache[:customers]
else
customers = Stripe::Customer.all limit: 100000
$stripe_cache = {
customers: customers,
time: Time.now
}
end
@stats[:monthly_revenue] = 0.0
subscriptions = []
@stats[:cancelled_subscriptions] = 0
customers.each do |customer|
sub = {created_at: Time.at(customer.created)}
if customer[:subscriptions][:data].empty?
@stats[:cancelled_subscriptions] += 1
next
end
next if customer[:subscriptions][:data].first[:plan][:amount] == 0
sub[:status] = 'active'
plan = customer[:subscriptions][:data].first[:plan]
sub[:amount_without_fees] = (plan[:amount] / 100.0).round(2)
sub[:percentage_fee] = (sub[:amount_without_fees]/(100/2.9)).ceil_to(2)
sub[:fixed_fee] = 0.30
sub[:amount] = sub[:amount_without_fees] - sub[:percentage_fee] - sub[:fixed_fee]
if(plan[:interval] == 'year')
sub[:amount] = (sub[:amount] / 12).round(2)
end
@stats[:monthly_revenue] += sub[:amount]
subscriptions.push sub
end
@stats[:subscriptions] = subscriptions
# Hotwired for now
@stats[:expenses] = 300.0 #/mo
@stats[:percent_until_profit] = (
(@stats[:monthly_revenue].to_f / @stats[:expenses]) * 100
)
@stats[:poverty_threshold] = 11_945
@stats[:poverty_threshold_percent] = (@stats[:monthly_revenue].to_f / ((@stats[:poverty_threshold]/12) + @stats[:expenses])) * 100
# http://en.wikipedia.org/wiki/Poverty_threshold
@stats[:average_developer_salary] = 93_280.00 # google "average developer salary"
@stats[:percent_until_developer_salary] = (@stats[:monthly_revenue].to_f / ((@stats[:average_developer_salary]/12) + @stats[:expenses])) * 100
erb :'admin/stats'
end
post '/admin/email' do
require_admin
%i{subject body}.each do |k|
if params[k].nil? || params[k].empty?
flash[:error] = "#{k.capitalize} is missing."
redirect '/admin/email'
end
end
sites = Site.newsletter_sites
day = 0
until sites.empty?
seconds = 0.0
queued_sites = []
Site::EMAIL_BLAST_MAXIMUM_PER_DAY.times {
break if sites.empty?
queued_sites << sites.pop
}
queued_sites.each do |site|
EmailWorker.perform_at((day.days.from_now + seconds), {
from: 'Kyle from Neocities <kyle@neocities.org>',
to: site.email,
subject: params[:subject],
body: params[:body]
})
seconds += 0.5
end
day += 1
end
flash[:success] = "#{sites.length} emails have been queued, #{Site::EMAIL_BLAST_MAXIMUM_PER_DAY} per day."
redirect '/'
end
post '/admin/banhammer' do
require_admin
if params[:usernames].empty?
flash[:error] = 'no usernames provided'
redirect '/admin'
end
usernames = params[:usernames].split("\n").collect {|u| u.strip}
deleted_count = 0
ip_deleted_count = 0
usernames.each do |username|
next if username == ''
site = Site[username: username]
next if site.nil? || site.is_banned
if !params[:classifier].empty?
site.untrain 'index.html'
site.train 'index.html', params[:classifier]
end
site.ban!
deleted_count += 1
if !params[:ban_using_ips].empty? && IPAddress.valid?(site.ip)
sites = Site.filter(ip: site.ip, is_banned: false).all
sites.each do |s|
next if usernames.include?(s.username)
s.ban!
end
ip_deleted_count += 1
end
if params[:classifier] == 'spam' || params[:classifier] == 'phishing'
next unless IPAddress.valid?(site.ip)
StopForumSpamWorker.perform_async(
username: site.username,
email: site.email,
ip: site.ip,
classifier: params[:classifier]
)
end
end
flash[:success] = "#{ip_deleted_count + deleted_count} sites have been banned, including #{ip_deleted_count} matching IPs."
redirect '/admin'
end
post '/admin/mark_nsfw' do
require_admin
site = Site[username: params[:username]]
if site.nil?
flash[:error] = 'User not found'
redirect '/admin'
end
site.is_nsfw = true
site.admin_nsfw = true
site.save_changes validate: false
flash[:success] = 'MISSION ACCOMPLISHED'
redirect '/admin'
end
post '/admin/feature' do
require_admin
site = Site[username: params[:username]]
if site.nil?
flash[:error] = 'User not found'
redirect '/admin'
end
site.featured_at = Time.now
site.save_changes(validate: false)
flash[:success] = 'Site has been featured.'
redirect '/admin'
end
get '/admin/masquerade/:username' do
require_admin
site = Site[username: params[:username]]
not_found if site.nil?
session[:id] = site.id
redirect '/'
end
def require_admin
redirect '/' unless is_admin?
end
def is_admin?
signed_in? && current_site.is_admin
end

307
app/api.rb Normal file
View file

@ -0,0 +1,307 @@
require 'base64'
get '/api' do
@title = 'Developers API'
erb :'api'
end
post '/api/upload_hash' do
require_api_credentials
res = {}
files = []
params.each do |k,v|
res[k] = current_site.sha1_hash_match? k, v
end
api_success files: res
end
get '/api/list' do
require_api_credentials
files = []
if params[:path].nil? || params[:path].empty?
file_list = current_site.site_files
else
file_list = current_site.file_list params[:path]
end
file_list.each do |file|
new_file = {}
new_file[:path] = file[:path]
new_file[:is_directory] = file[:is_directory]
new_file[:size] = file[:size] unless file[:is_directory]
new_file[:created_at] = file[:created_at].rfc2822
new_file[:updated_at] = file[:updated_at].rfc2822
new_file[:sha1_hash] = file[:sha1_hash] unless file[:is_directory]
files << new_file
end
files.each {|f| f[:path].sub!(/^\//, '')}
api_success files: files
end
def extract_files(params, files = [])
# Check if the entire input is directly an array of files
if params.is_a?(Array)
params.each do |item|
# Call extract_files on each item if it's an Array or Hash to handle nested structures
if item.is_a?(Array) || item.is_a?(Hash)
extract_files(item, files)
end
end
elsif params.is_a?(Hash)
params.each do |key, value|
# If the value is a Hash and contains a :tempfile key, it's considered an uploaded file.
if value.is_a?(Hash) && value.has_key?(:tempfile) && !value[:tempfile].nil?
files << {filename: value[:name], tempfile: value[:tempfile]}
elsif value.is_a?(Array)
value.each do |val|
if val.is_a?(Hash) && val.has_key?(:tempfile) && !val[:tempfile].nil?
# Directly add the file info if it's an uploaded file within an array
files << {filename: val[:name], tempfile: val[:tempfile]}
elsif val.is_a?(Hash) || val.is_a?(Array)
# Recursively search for more files if the element is a Hash or Array
extract_files(val, files)
end
end
elsif value.is_a?(Hash)
# Recursively search for more files if the value is a Hash
extract_files(value, files)
end
end
end
files
end
post '/api/upload' do
require_api_credentials
files = extract_files params
if !params[:username].blank?
site = Site[username: params[:username]]
if site.nil? || site.is_deleted
api_error 400, 'site_not_found', "could not find site"
end
if site.owned_by?(current_site)
@_site = site
else
api_error 400, 'site_not_allowed', "not allowed to change this site with your current logged in site"
end
end
api_error 400, 'missing_files', 'you must provide files to upload' if files.empty?
uploaded_size = files.collect {|f| f[:tempfile].size}.inject{|sum,x| sum + x }
if current_site.file_size_too_large? uploaded_size
api_error 400, 'too_large', 'files are too large to fit in your space, try uploading smaller (or less) files'
end
if current_site.too_many_files?(files.length)
api_error 400, 'too_many_files', "cannot exceed the maximum site files limit (#{current_site.plan_feature(:maximum_site_files)})"
end
files.each do |file|
file[:filename] = Rack::Utils.unescape file[:filename]
if !current_site.okay_to_upload?(file)
api_error 400, 'invalid_file_type', "#{file[:filename]} is not an allowed file type for free sites, supporter required"
end
if File.directory? file[:filename]
api_error 400, 'directory_exists', "#{file[:filename]} being used by a directory"
end
if current_site.file_size_too_large? file[:tempfile].size
api_error 400, 'file_too_large' "#{file[:filename]} is too large"
end
if SiteFile.path_too_long? file[:filename]
api_error 400, 'file_path_too_long', "#{file[:filename]} path is too long"
end
if SiteFile.name_too_long? file[:filename]
api_error 400, 'file_name_too_long', "#{file[:filename]} filename is too long (exceeds #{SiteFile::FILE_NAME_CHARACTER_LIMIT} characters)"
end
end
results = current_site.store_files files
api_success 'your file(s) have been successfully uploaded'
end
post '/api/rename' do
require_api_credentials
api_error 400, 'missing_arguments', 'you must provide path and new_path' if params[:path].blank? || params[:new_path].blank?
path = current_site.scrubbed_path params[:path]
new_path = current_site.scrubbed_path params[:new_path]
unless path.is_a?(String)
api_error 400, 'bad_path', "#{path} is not a valid path, cancelled renaming"
end
unless new_path.is_a?(String)
api_error 400, 'bad_new_path', "#{new_path} is not a valid new_path, cancelled renaming"
end
site_file = current_site.site_files.select {|sf| sf.path == path}.first
if site_file.nil?
api_error 400, 'missing_file', "could not find #{path}"
end
res = site_file.rename new_path
if res.first == true
api_success "#{path} has been renamed to #{new_path}"
else
api_error 400, 'rename_error', res.last
end
end
post '/api/delete' do
require_api_credentials
api_error 400, 'missing_filenames', 'you must provide files to delete' if params[:filenames].nil? || params[:filenames].empty?
paths = []
params[:filenames].each do |path|
unless path.is_a?(String)
api_error 400, 'bad_filename', "#{path} is not a valid filename, canceled deleting"
end
if current_site.files_path(path) == current_site.files_path
api_error 400, 'cannot_delete_site_directory', 'cannot delete the root directory of the site'
end
if !current_site.file_exists?(path)
api_error 400, 'missing_files', "#{path} was not found on your site, canceled deleting"
end
if path == 'index.html' || path == '/index.html'
api_error 400, 'cannot_delete_index', 'you cannot delete your index.html file, canceled deleting'
end
paths << path
end
paths.each do |path|
current_site.delete_file(path)
end
api_success 'file(s) have been deleted'
end
get '/api/info' do
if params[:sitename]
site = Site[username: params[:sitename]]
api_error 400, 'site_not_found', "could not find site #{params[:sitename]}" if site.nil? || site.is_banned
api_success api_info_for(site)
else
init_api_credentials
api_success api_info_for(current_site)
end
end
get '/api/key' do
require_api_credentials
current_site.generate_api_key! if current_site.api_key.blank?
api_success api_key: current_site.api_key
end
def api_info_for(site)
{
info: {
sitename: site.username,
views: site.views,
hits: site.hits,
created_at: site.created_at.rfc2822,
last_updated: site.site_updated_at ? site.site_updated_at.rfc2822 : nil,
domain: site.domain,
tags: site.tags.collect {|t| t.name}
}
}
end
# Catch-all for missing api calls
get '/api/:name' do
api_not_found
end
post '/api/:name' do
api_not_found
end
def require_api_credentials
return true if current_site && csrf_safe?
if !request.env['HTTP_AUTHORIZATION'].nil?
init_api_credentials
else
api_error_invalid_auth
end
end
def init_api_credentials
auth = request.env['HTTP_AUTHORIZATION']
begin
if bearer_match = auth.match(/^Bearer (.+)/)
api_key = bearer_match.captures.first
api_error_invalid_auth if api_key.nil? || api_key.empty?
else
user, pass = Base64.decode64(auth.match(/Basic (.+)/)[1]).split(':')
end
rescue
api_error_invalid_auth
end
if defined?(api_key) && !api_key.blank?
site = Site[api_key: api_key]
elsif defined?(user) && defined?(pass)
site = Site.get_site_from_login user, pass
else
api_error_invalid_auth
end
if site.nil? || site.is_banned || site.is_deleted || !(site.required_validations_met?)
api_error_invalid_auth
end
DB['update sites set api_calls=api_calls+1 where id=?', site.id].first
session[:id] = site.id
end
def api_success(message_or_obj)
output = {result: 'success'}
if message_or_obj.is_a?(String)
output[:message] = message_or_obj
else
output.merge! message_or_obj
end
api_response(200, output)
end
def api_response(status, output)
halt status, JSON.pretty_generate(output)+"\n"
end
def api_error(status, error_type, message)
api_response(status, result: 'error', error_type: error_type, message: message)
end
def api_error_invalid_auth
api_error 403, 'invalid_auth', 'invalid credentials - please check your username and password (or your api key)'
end
def api_not_found
api_error 404, 'not_found', 'the requested api call does not exist'
end

7
app/blog.rb Normal file
View file

@ -0,0 +1,7 @@
get '/blog/?' do
redirect 'https://blog.neocities.org', 301
end
get '/blog/:article' do |article|
redirect "https://blog.neocities.org/#{article}.html", 301
end

189
app/browse.rb Normal file
View file

@ -0,0 +1,189 @@
get '/browse/?' do
@page = params[:page]
@page = 1 if @page.not_an_integer?
if params[:tag]
params[:tag] = params[:tag].gsub(Tag::INVALID_TAG_REGEX, '').gsub(/\s+/, '').slice(0, Tag::NAME_LENGTH_MAX)
@title = "Sites tagged #{params[:tag]}"
end
if is_education?
ds = education_sites_dataset
else
ds = browse_sites_dataset
end
ds = ds.paginate @page.to_i, Site::BROWSE_PAGINATION_LENGTH
@pagination_dataset = ds
@sites = ds.all
site_ids = @sites.collect {|s| s[:id]}
tags = DB['select site_id,name from tags join sites_tags on tags.id=sites_tags.tag_id where site_id IN ?', site_ids].all
@site_tags = {}
site_ids.each do |site_id|
@site_tags[site_id] = tags.select {|t| t[:site_id] == site_id}.collect {|t| t[:name]}
end
erb :browse
end
def education_sites_dataset
ds = Site.filter is_deleted: false
ds = ds.association_join(:tags).select_all(:sites)
params[:tag] = current_site.tags.first.name
ds = ds.where ['tags.name = ?', params[:tag]]
end
def browse_sites_dataset
ds = Site.browse_dataset
ds = ds.where is_education: false
if current_site
ds = ds.or sites__id: current_site.id
if !current_site.blocking_site_ids.empty?
ds = ds.where(Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocking_site_ids))
end
if current_site.blocks_dataset.count
ds = ds.where(
Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocks_dataset.select(:actioning_site_id).all.collect {|s| s.actioning_site_id})
)
end
end
if current_site && current_site.is_admin && params[:sites]
ds = ds.where sites__username: params[:sites].split(',')
return ds
end
params[:sort_by] ||= 'special_sauce'
case params[:sort_by]
when 'special_sauce'
ds = ds.where{score > 1} unless params[:tag]
ds = ds.order :score.desc, :follow_count.desc, :views.desc, :site_updated_at.desc
when 'random'
ds = ds.where{score > 3} unless params[:tag]
ds = ds.order(Sequel.lit('RANDOM()'))
when 'most_followed'
ds = ds.where{views > Site::BROWSE_MINIMUM_FOLLOWER_VIEWS}
ds = ds.where{follow_count > Site::BROWSE_FOLLOWER_MINIMUM_FOLLOWS}
ds = ds.where{updated_at > Site::BROWSE_FOLLOWER_UPDATED_AT_CUTOFF.ago} unless params[:tag]
ds = ds.order :follow_count.desc, :score.desc, :updated_at.desc
when 'last_updated'
ds = ds.where{score > 3} unless params[:tag]
ds = ds.exclude site_updated_at: nil
ds = ds.order :site_updated_at.desc
when 'newest'
ds = ds.where{views > Site::BROWSE_MINIMUM_VIEWS} unless is_admin?
ds = ds.exclude site_updated_at: nil
ds = ds.order :created_at.desc, :views.desc
when 'oldest'
ds = ds.where{score > 0.4} unless params[:tag]
ds = ds.exclude site_updated_at: nil
ds = ds.order(:created_at, :views.desc)
when 'hits'
ds = ds.where{score > 1}
ds = ds.order(:hits.desc, :site_updated_at.desc)
when 'views'
ds = ds.where{score > 3}
ds = ds.order(:views.desc, :site_updated_at.desc)
when 'featured'
ds = ds.exclude featured_at: nil
ds = ds.order :featured_at.desc
when 'tipping_enabled'
ds = ds.where tipping_enabled: true
ds = ds.where("(tipping_paypal is not null and tipping_paypal != '') or (tipping_bitcoin is not null and tipping_bitcoin != '')")
ds = ds.where{score > 1} unless params[:tag]
ds = ds.group :sites__id
ds = ds.order :follow_count.desc, :views.desc, :updated_at.desc
when 'blocks'
require_admin
ds = ds.select{[sites.*, Sequel[count(site_id)].as(:total)]}
ds = ds.inner_join :blocks, :site_id => :id
ds = ds.group :sites__id
ds = ds.order :total.desc
end
ds = ds.where ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
if params[:tag]
ds = ds.select_all :sites
ds = ds.inner_join :sites_tags, :site_id => :id
ds = ds.inner_join :tags, :id => :sites_tags__tag_id
ds = ds.where ['tags.name = ?', params[:tag]]
ds = ds.where ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
end
ds
end
def daily_search_max?
query_count = $redis_cache.get('search_query_count').to_i
query_count >= $config['google_custom_search_query_limit']
end
get '/browse/search' do
@title = 'Site Search'
@daily_search_max_reached = daily_search_max?
if @daily_search_max_reached
params[:q] = nil
end
if !params[:q].blank?
created = $redis_cache.set('search_query_count', 1, nx: true, ex: 86400)
$redis_cache.incr('search_query_count') unless created
@start = params[:start].to_i
@start = 0 if @start < 0
@resp = JSON.parse HTTP.get('https://www.googleapis.com/customsearch/v1', params: {
key: $config['google_custom_search_key'],
cx: $config['google_custom_search_cx'],
safe: 'active',
start: @start,
q: Rack::Utils.escape(params[:q]) + ' -filetype:pdf -filetype:txt site:*.neocities.org'
})
@items = []
if @total_results != 0 && @resp['error'].nil? && @resp['searchInformation']['totalResults'] != "0"
@total_results = @resp['searchInformation']['totalResults'].to_i
@resp['items'].each do |item|
link = Addressable::URI.parse(item['link'])
unencoded_path = Rack::Utils.unescape(Rack::Utils.unescape(link.path)) # Yes, it needs to be decoded twice
item['unencoded_link'] = unencoded_path == '/' ? link.host : link.host+unencoded_path
item['link'] = link
next if link.host == 'neocities.org'
username = link.host.split('.').first
site = Site[username: username]
next if site.nil? || site.is_deleted || site.is_nsfw
screenshot_path = unencoded_path
screenshot_path << 'index' if screenshot_path[-1] == '/'
['.html', '.htm'].each do |ext|
if site.screenshot_exists?(screenshot_path + ext, '540x405')
screenshot_path += ext
break
end
end
item['screenshot_url'] = site.screenshot_url(screenshot_path, '540x405')
@items << item
end
end
else
@items = nil
@total_results = 0
end
erb :'search'
end

21
app/comment.rb Normal file
View file

@ -0,0 +1,21 @@
post '/comment/:comment_id/toggle_like' do |comment_id|
require_login
content_type :json
comment = Comment[id: comment_id]
return 403 if comment.event.site.is_blocking?(current_site) || current_site.is_blocking?(comment.event.site)
liked_response = comment.toggle_site_like(current_site) ? 'liked' : 'unliked'
{result: liked_response, comment_like_count: comment.comment_likes_dataset.count, liking_site_names: comment.liking_site_usernames}.to_json
end
post '/comment/:comment_id/delete' do |comment_id|
require_login
content_type :json
comment = Comment[id: comment_id]
if comment.event.site == current_site || comment.actioning_site == current_site
comment.delete
return {result: 'success'}.to_json
end
return {result: 'error'}.to_json
end

50
app/contact.rb Normal file
View file

@ -0,0 +1,50 @@
get '/contact' do
erb :'contact'
end
post '/contact' do
@errors = []
if params[:email].empty? || params[:subject].empty? || params[:body].empty?
@errors << 'Please fill out all fields'
end
if params[:faq_check] == 'no'
@errors << 'Please check Frequently Asked Questions before sending a contact message'
end
unless hcaptcha_valid?
@errors << 'Captcha was not filled out (or was filled out incorrectly)'
end
if !@errors.empty?
erb :'contact'
else
body = params[:body]
if current_site
body = "current username: #{current_site.username}\n\n" + body
if parent_site != current_site
body = "parent username: #{parent_site.username}\n\n" + body
end
end
if current_site && current_site.supporter?
subject = "[Neocities Supporter Contact]: #{params[:subject]}"
else
subject = "[Neocities Contact]: #{params[:subject]}"
end
EmailWorker.perform_async({
from: 'web@neocities.org',
reply_to: params[:email],
to: 'contact@neocities.org',
subject: subject,
body: body,
no_footer: true
})
flash[:success] = 'Your contact message has been sent.'
redirect '/'
end
end

154
app/create.rb Normal file
View file

@ -0,0 +1,154 @@
CREATE_MATCH_REGEX = /^username$|^password$|^email$|^new_tags_string$|^is_education$/
def education_whitelist_required?
return true if params[:is_education] == 'true' && $config['education_tag_whitelist']
false
end
def education_whitelisted?
return true if education_whitelist_required? && !$config['education_tag_whitelist'].select {|t| params[:new_tags_string].match(t)}.empty?
false
end
post '/create_validate_all' do
content_type :json
fields = params.select {|p| p.match CREATE_MATCH_REGEX}
begin
site = Site.new fields
rescue ArgumentError => e
if e.message == 'input string invalid'
return {error: 'invalid input'}.to_json
else
raise e
end
end
if site.valid?
return [].to_json if education_whitelisted?
end
resp = site.errors.collect {|e| [e.first, e.last.first]}
resp << ['captcha', 'Please complete the captcha.'] if params[:'h-captcha-response'].empty? && !self.class.test?
resp.to_json
end
post '/create_validate' do
content_type :json
if !params[:field].match CREATE_MATCH_REGEX
return {error: 'not a valid field'}.to_json
end
begin
site = Site.new(params[:field] => params[:value])
rescue ArgumentError => e
if e.message == 'input string invalid'
return {error: 'invalid input'}.to_json
else
raise e
end
end
site.is_education = params[:is_education]
site.valid?
field_sym = params[:field].to_sym
if site.errors[field_sym]
return {error: site.errors[field_sym].first}.to_json
end
{result: 'ok'}.to_json
end
post '/create' do
content_type :json
dashboard_if_signed_in
@site = Site.new(
username: params[:username],
password: params[:password],
email: params[:email],
new_tags_string: params[:new_tags_string],
is_education: params[:is_education] == 'true' ? true : false,
ip: request.ip,
ga_adgroupid: session[:ga_adgroupid]
)
if education_whitelist_required?
if education_whitelisted?
@site.email_confirmed = true
else
flash[:error] = 'The class tag is invalid.'
return {result: 'error'}.to_json
end
else
if !hcaptcha_valid?
flash[:error] = 'The captcha was not valid, please try again.'
return {result: 'error'}.to_json
end
if Site.ip_create_limit?(request.ip)
flash[:error] = 'Your IP address has created too many sites, please try again later or contact support.'
return {result: 'error'}.to_json
end
if Site.disposable_mx_record?(@site.email)
flash[:error] = 'Cannot use a disposable email address.'
return {result: 'error'}.to_json
end
if defined?(BlackBox.create_disabled?) && BlackBox.create_disabled?(@site, request)
flash[:error] = 'Site creation is not currently available from your location, please try again later.'
return {result: 'error'}.to_json
end
if defined?(BlackBox.tutorial_required?) && BlackBox.tutorial_required?(@site, request)
@site.tutorial_required = true
end
if !@site.valid?
flash[:error] = @site.errors.first.last.first
return {result: 'error'}.to_json
end
end
@site.email_confirmed = true if self.class.development?
@site.phone_verified = true if self.class.development?
begin
@site.phone_verification_required = true if self.class.production? && BlackBox.phone_verification_required?(@site)
rescue => e
EmailWorker.perform_async({
from: 'web@neocities.org',
to: 'errors@neocities.org',
subject: "[Neocities Error] Phone verification exception",
body: "#{e.inspect}\n#{e.backtrace}",
no_footer: true
})
end
begin
@site.save
rescue Sequel::UniqueConstraintViolation => e
if e.message =~ /username.+already exists/
flash[:error] = 'Username already exists.'
return {result: 'error'}.to_json
end
raise e
end
unless education_whitelisted?
send_confirmation_email @site
@site.send_email(
subject: "[Neocities] Welcome to Neocities!",
body: Tilt.new('./views/templates/email/welcome.erb', pretty: true).render(self)
)
end
session[:id] = @site.id
{result: 'ok'}.to_json
end

40
app/dashboard.rb Normal file
View file

@ -0,0 +1,40 @@
get '/dashboard' do
require_login
dashboard_init
dont_browser_cache
unless current_site.dashboard_accessed
current_site.dashboard_accessed = true
current_site.save_changes validate: false
end
erb :'dashboard/index'
end
def dashboard_init
if params[:dir] && params[:dir][0] != '/'
params[:dir] = '/'+params[:dir]
end
if !File.directory?(current_site.files_path(params[:dir]))
if !File.directory?(current_site.files_path)
flash[:error] = 'Could not find your web site, please contact support.'
signout
redirect '/'
else
flash[:error] = 'Could not find the requested directory.'
redirect '/dashboard'
end
end
@dir = params[:dir]
@file_list = current_site.file_list @dir
end
get '/dashboard/files' do
require_login
dashboard_init
dont_browser_cache
erb :'dashboard/files', layout: false
end

38
app/dmca.rb Normal file
View file

@ -0,0 +1,38 @@
get '/dmca' do
@title = 'DMCA'
erb :'dmca'
end
get '/dmca/contact_info' do
content_type :json
{data: erb(:'dmca/contact_info', layout: false)}.to_json
end
post '/dmca/contact' do
@title = 'DMCA'
@errors = []
if params[:email].empty? || params[:subject].empty? || params[:urls].empty? || params[:body].empty?
@errors << 'Please fill out all fields'
end
if !hcaptcha_valid?
@errors << 'Captcha was not filled out (or was filled out incorrectly)'
end
if !@errors.empty?
erb :'dmca'
else
EmailWorker.perform_async({
from: 'web@neocities.org',
reply_to: params[:email],
to: 'dmca@neocities.org',
subject: "[Neocities DMCA Notice]: #{params[:subject]}",
body: "#{params[:urls].to_s}\n#{params[:body].to_s}",
no_footer: true
})
flash[:success] = 'Your DMCA notification has been sent.'
redirect '/'
end
end

29
app/domain.rb Normal file
View file

@ -0,0 +1,29 @@
get '/domain/new' do
require_login
@title = 'Register a Domain'
erb :'domain/new'
end
post '/domain/check_availability.json' do
require_login
content_type :json
timer = Time.now.to_i
while true
if (Time.now.to_i - timer) > 60
api_error 200, :contact_fail, 'Error contacting domain server, please try again.'
end
begin
res = $gandi.domain.available([params[:domain]])[params[:domain]]
rescue => Gandi::DataError
api_error 200, :invalid_domain, 'Domain name was invalid, please try another.'
end
api_success res unless res == 'pending'
sleep 0.2
end
end

56
app/event.rb Normal file
View file

@ -0,0 +1,56 @@
post '/event/:event_id/toggle_like' do |event_id|
require_login
content_type :json
event = Event[id: event_id]
return 403 if event.site && event.site.is_blocking?(current_site)
return 403 if event.actioning_site && event.actioning_site.is_blocking?(current_site)
liked_response = event.toggle_site_like(current_site) ? 'liked' : 'unliked'
{result: liked_response, event_like_count: event.likes_dataset.count, liking_site_names: event.liking_site_usernames}.to_json
end
post '/event/:event_id/comment' do |event_id|
require_login
content_type :json
event = Event[id: event_id]
return 403 if event.site && event.site.is_blocking?(current_site)
return 403 if event.actioning_site && event.actioning_site.is_blocking?(current_site)
site = event.site
if(site.is_blocking?(current_site) ||
site.profile_comments_enabled == false ||
current_site.commenting_allowed? == false ||
(current_site.is_a_jerk? && event.site_id != current_site.id && !site.is_following?(current_site)) ||
params[:message].length > Site::MAX_COMMENT_SIZE)
return {result: 'error'}.to_json
end
event.add_site_comment current_site, params[:message]
{result: 'success'}.to_json
end
post '/event/:event_id/update_profile_comment' do |event_id|
require_login
content_type :json
event = Event[id: event_id]
return {result: 'error'}.to_json unless (current_site.id == event.profile_comment.actioning_site_id &&
params[:message].length <= Site::MAX_COMMENT_SIZE)
event.profile_comment.update message: params[:message]
return {result: 'success'}.to_json
end
post '/event/:event_id/delete' do |event_id|
require_login
content_type :json
event = Event[id: event_id]
if event.site_id == current_site.id || event.actioning_site_id == current_site.id
event.delete
return {result: 'success'}.to_json
end
return {result: 'error'}.to_json
end

182
app/index.rb Normal file
View file

@ -0,0 +1,182 @@
get '/?' do
if current_site
require_login
redirect '/dashboard' if current_site.is_education
@page = params[:page]
@page = 1 if @page.not_an_integer?
if params[:activity] == 'mine'
events_dataset = current_site.latest_events(@page)
elsif params[:event_id]
event = Event.select(:id).where(id: params[:event_id]).first
not_found if event.nil?
not_found if event.is_deleted
events_dataset = Event.where(id: params[:event_id]).paginate(1, 1)
else
events_dataset = current_site.news_feed(@page)
end
@pagination_dataset = events_dataset
@events = events_dataset.all
current_site.events_dataset.update notification_seen: true
halt erb :'home', locals: {site: current_site}
end
if SimpleCache.expired?(:sites_count)
@sites_count = SimpleCache.store :sites_count, Site.count.roundup(100), 4.hours
else
@sites_count = SimpleCache.get :sites_count
end
if SimpleCache.expired?(:total_hits_count)
@total_hits_count = SimpleCache.store :total_hits_count, DB['SELECT SUM(hits) AS hits FROM SITES'].first[:hits], 4.hours
else
@total_hits_count = SimpleCache.get :total_hits_count
end
@total_hits_count ||= 0
if SimpleCache.expired?(:total_views_count)
@total_views_count = SimpleCache.store :total_views_count, DB['SELECT SUM(views) AS views FROM SITES'].first[:views], 4.hours
else
@total_views_count = SimpleCache.get :total_views_count
end
@total_views_count ||= 0
if SimpleCache.expired?(:changed_count)
@changed_count = SimpleCache.store :changed_count, DB['SELECT SUM(changed_count) AS changed_count FROM SITES'].first[:changed_count], 4.hours
else
@changed_count = SimpleCache.get :changed_count
end
@changed_count ||= 0
=begin
if SimpleCache.expired?(:blog_feed_html)
@blog_feed_html = ''
begin
xml = HTTP.timeout(global: 2).get('https://blog.neocities.org/feed.xml').to_s
feed = Feedjira::Feed.parse xml
feed.entries[0..2].each do |entry|
@blog_feed_html += %{<a href="#{entry.url}">#{entry.title.split('.').first}</a> <span style="float: right">#{entry.published.strftime('%b %-d, %Y')}</span><br>}
end
rescue
@blog_feed_html = 'The latest news on Neocities can be found on our blog.'
end
@blog_feed_html = SimpleCache.store :blog_feed_html, @blog_feed_html, 8.hours
else
@blog_feed_html = SimpleCache.get :blog_feed_html
end
=end
@blog_feed_html = 'The latest news on Neocities can be found on our blog.'
if SimpleCache.expired?(:featured_sites)
@featured_sites = Site.order(:score.desc).exclude(is_nsfw: true).exclude(is_deleted: true).limit(1000).all.sample(12).collect {|s| {screenshot_url: s.screenshot_url('index.html', '540x405'), uri: s.uri, title: s.title}}
SimpleCache.store :featured_sites, @featured_sites, 1.hour
else
@featured_sites = SimpleCache.get :featured_sites
end
@create_disabled = false
erb :index, layout: :index_layout
end
get '/welcome' do
require_login
redirect '/' if current_site.supporter?
@title = 'Welcome!'
erb :'welcome', locals: {site: current_site}
end
get '/education' do
redirect '/' if signed_in?
erb :education, layout: :index_layout
end
get '/donate' do
erb :'donate'
end
get '/about' do
erb :'about'
end
get '/terms' do
erb :'terms'
end
get '/privacy' do
erb :'privacy'
end
get '/press' do
erb :'press'
end
get '/legal/?' do
@title = 'Legal Guide to Neocities'
erb :'legal'
end
get '/thankyou' do
@title = 'Thank you!'
erb :'thankyou'
end
get '/cli' do
@title = 'Command Line Interface'
erb :'cli'
end
get '/forgot_username' do
@title = 'Forgot Username'
erb :'forgot_username'
end
post '/forgot_username' do
if params[:email].blank?
flash[:error] = 'Cannot use an empty email address!'
redirect '/forgot_username'
end
begin
sites = Site.get_recovery_sites_with_email params[:email]
rescue ArgumentError
redirect '/forgot_username'
end
sites.each do |site|
body = <<-EOT
Hello! This is the Neocities cat, and I have received a username lookup request using this email address.
Your username is #{site.username}
If you didn't request this, you can ignore it. Or hide under a bed. Or take a nap. Your call.
Meow,
the Neocities Cat
EOT
body.strip!
EmailWorker.perform_async({
from: 'web@neocities.org',
to: params[:email],
subject: '[Neocities] Username lookup',
body: body
})
end
flash[:success] = 'If your email was valid, the Neocities Cat will send an e-mail with your username in it.'
redirect '/'
end

37
app/mockup.rb Normal file
View file

@ -0,0 +1,37 @@
=begin
get '/mockup/home' do
erb :'mockup/home'
end
get '/mockup/edit' do
erb :'mockup/edit'
end
get '/mockup/profile' do
require_login
erb :'mockup/profile', locals: {site: current_site}
end
get '/mockup/browse' do
erb :'mockup/browse'
end
get '/mockup/tips' do
erb :'mockup/tips'
end
get '/mockup/welcome' do
require_login
erb :'mockup/welcome', locals: {site: current_site}
end
get '/mockup/stats' do
require_login
erb :'mockup/stats', locals: {site: current_site}
end
get '/mockup/tutorial-c1p2' do
require_login
erb :'mockup/tutorial-c1p2', locals: {site: current_site}
end
=end

86
app/password_reset.rb Normal file
View file

@ -0,0 +1,86 @@
get '/password_reset' do
@title = 'Password Reset'
redirect '/' if signed_in?
erb :'password_reset'
end
post '/send_password_reset' do
if params[:email].blank?
flash[:error] = 'You must enter a valid email address.'
redirect '/password_reset'
end
sites = Site.get_recovery_sites_with_email params[:email]
if sites.length > 0
token = SecureRandom.uuid.gsub('-', '')+'-'+Time.now.to_i.to_s
sites.each do |site|
next unless site.parent?
site.password_reset_token = token
site.save_changes validate: false
body = <<-EOT
Hello! This is the Penelope the Neocities cat, and I have received a password reset request for your e-mail address.
Go to this URL to reset your password: https://neocities.org/password_reset_confirm?username=#{Rack::Utils.escape(site.username)}&token=#{Rack::Utils.escape(token)}
This link will expire in 24 hours.
If you didn't request this password reset, you can ignore it. Or hide under a bed. Or take a nap. Your call.
Meow,
Penelope
EOT
body.strip!
EmailWorker.perform_async({
from: 'web@neocities.org',
to: params[:email],
subject: '[Neocities] Password Reset',
body: body
})
end
end
flash[:success] = "We sent an e-mail with password reset instructions. Check your spam folder if you don't see it in your inbox."
redirect '/'
end
get '/password_reset_confirm' do
@title = 'Password Reset Confirm'
if params[:token].nil? || params[:token].strip.empty?
flash[:error] = 'Token cannot be empty.'
redirect '/'
end
reset_site = Site.where(username: params[:username], password_reset_token: params[:token]).first
if reset_site.nil?
flash[:error] = 'Could not find a site with this username and token.'
redirect '/'
end
timestamp = Time.at(reset_site.password_reset_token.split('-').last.to_i)
if Time.now.to_i - timestamp.to_i > Site::PASSWORD_RESET_EXPIRATION_TIME
flash[:error] = 'Token has expired.'
redirect '/'
end
if reset_site.is_deleted
unless reset_site.undelete!
flash[:error] = "Sorry, we cannot restore this account."
redirect '/'
end
end
reset_site.password_reset_confirmed = true
reset_site.save_changes
session[:id] = reset_site.id
redirect '/settings#password'
end

3
app/plan.rb Normal file
View file

@ -0,0 +1,3 @@
get '/plan/?' do
redirect '/supporter'
end

393
app/settings.rb Normal file
View file

@ -0,0 +1,393 @@
require 'socket'
require 'ipaddr'
get '/settings/?' do
require_login
@site = parent_site
erb :'settings/account'
end
def require_ownership_for_settings
@site = Site[username: params[:username]]
not_found if @site.nil?
unless @site.owned_by? parent_site
flash[:error] = 'Cannot edit this site, you do not have permission.'
redirect request.referrer
end
end
get '/settings/invoices/?' do
require_login
@title = 'Invoices'
@invoices = parent_site.stripe_customer_id ? Stripe::Invoice.list(customer: parent_site.stripe_customer_id) : []
erb :'settings/invoices'
end
get '/settings/:username/?' do |username|
# This is for the email_unsubscribe below
pass if Site.select(:id).where(username: username).first.nil?
require_login
require_ownership_for_settings
@title = "Site settings for #{username}"
erb :'settings/site'
end
post '/settings/:username/delete' do
require_login
require_ownership_for_settings
if params[:confirm_username] != @site.username
flash[:error] = 'Site user name and entered user name did not match.'
redirect "/settings/#{@site.username}#delete"
end
@site.deleted_reason = params[:deleted_reason]
@site.save validate: false
@site.destroy
flash[:success] = 'Site deleted.'
if @site.username == current_site.username
signout
redirect '/'
end
redirect '/settings#sites'
end
post '/settings/:username/profile' do
require_login
require_ownership_for_settings
@site.update(
profile_comments_enabled: params[:site][:profile_comments_enabled],
profile_enabled: params[:site][:profile_enabled]
)
flash[:success] = 'Profile settings changed.'
redirect "/settings/#{@site.username}#profile"
end
post '/settings/:username/change_name' do
require_login
require_ownership_for_settings
old_site = Site[username: @site.username]
old_username = @site.username
if params[:name] == nil || params[:name] == ''
flash[:error] = 'Name cannot be blank.'
redirect "/settings/#{@site.username}#username"
end
if old_username.downcase == params[:name].downcase
flash[:error] = 'You already have this name.'
redirect "/settings/#{@site.username}#username"
end
old_host = @site.host
old_site_file_paths = @site.site_files.collect {|site_file| site_file.path}
@site.username = params[:name]
if @site.valid?
DB.transaction {
@site.save_changes
@site.move_files_from old_username
}
old_site.delete_all_thumbnails_and_screenshots
old_site.purge_all_cache
@site.purge_all_cache
@site.regenerate_thumbnails_and_screenshots
flash[:success] = "Site/user name has been changed. You will need to use this name to login, <b>don't forget it!</b>"
redirect "/settings/#{@site.username}#username"
else
flash[:error] = @site.errors.first.last.first
redirect "/settings/#{old_username}#username"
end
end
post '/settings/:username/tipping' do
require_login
require_ownership_for_settings
current_site.tipping_enabled = params[:site][:tipping_enabled]
current_site.tipping_paypal = params[:site][:tipping_paypal]
current_site.tipping_bitcoin = params[:site][:tipping_bitcoin]
if current_site.valid?
current_site.save_changes
flash[:success] = "Tip settings have been updated."
else
flash[:error] = current_site.errors.first.last.first
end
redirect "/settings/#{current_site.username}#tipping"
end
post '/settings/:username/change_nsfw' do
require_login
require_ownership_for_settings
redirect "/settings/#{@site.username}" if @site.admin_nsfw == true
@site.is_nsfw = params[:is_nsfw]
@site.save_changes validate: false
flash[:success] = @site.is_nsfw ? 'Marked 18+' : 'Unmarked 18+'
redirect "/settings/#{@site.username}#nsfw"
end
post '/settings/:username/custom_domain' do
require_login
require_ownership_for_settings
original_domain = @site.domain
@site.domain = params[:domain]
if params[:domain] =~ /^www\..+$/i
flash[:error] = 'Cannot begin with www - please only enter the domain name.'
redirect "/settings/#{@site.username}/#custom_domain"
end
begin
addr = IPAddr.new @site.values[:domain]
if addr.ipv4? || addr.ipv6?
flash[:error] = 'IP addresses are not allowed. Please enter a valid domain name.'
redirect "/settings/#{@site.username}#custom_domain"
end
rescue IPAddr::InvalidAddressError
end
begin
Socket.gethostbyname @site.values[:domain]
rescue SocketError, ResolutionError => e
flash[:error] = "The domain isn't setup to use Neocities yet, cannot add. Please make the A and CNAME record changes where you registered your domain."
redirect "/settings/#{@site.username}#custom_domain"
end
if @site.valid?
@site.save_changes
if @site.domain != original_domain
LetsEncryptWorker.perform_async @site.id
# Sometimes the www record isn't ready for some reason, so try a delay to fix that.
LetsEncryptWorker.perform_in 40.minutes, @site.id
end
flash[:success] = 'The domain has been successfully updated! Make sure your configuration with the domain registrar is correct. It could take a while for the changes to take effect (15-40 minutes), please be patient.'
redirect "/settings/#{@site.username}#custom_domain"
else
flash[:error] = @site.errors.first.last.first
redirect "/settings/#{@site.username}#custom_domain"
end
end
post '/settings/:username/bluesky_set_did' do
require_login
require_ownership_for_settings
# todo standards based validation
if params[:did].length > 50
flash[:error] = 'DID provided was too long'
elsif !params[:did].match(/^did:plc:([a-z|0-9)]+)$/)
flash[:error] = 'DID was invalid'
else
tmpfile = Tempfile.new 'atproto-did'
tmpfile.write params[:did]
tmpfile.close
@site.store_files [{filename: '.well-known/atproto-did', tempfile: tmpfile}]
$redis_proxy.hdel "dns-_atproto.#{@site.username}.neocities.org", 'TXT'
flash[:success] = 'DID set! You can now verify the handle on the Bluesky app.'
end
redirect "/settings/#{@site.username}#bluesky"
end
post '/settings/:username/generate_api_key' do
require_login
require_ownership_for_settings
is_new = @site.api_key.nil?
@site.generate_api_key!
msg = is_new ? "New API key has been generated." : "API key has been regenerated."
flash[:success] = msg
redirect "/settings/#{@site.username}#api_key"
end
post '/settings/change_password' do
require_login
if !current_site.password_reset_confirmed && !Site.valid_login?(parent_site.username, params[:current_password])
flash[:error] = 'Your provided password does not match the current one.'
redirect "/settings#password"
end
parent_site.password = params[:new_password]
parent_site.valid?
if params[:new_password] != params[:new_password_confirm]
parent_site.errors.add :password, 'New passwords do not match.'
end
parent_site.password_reset_token = nil
parent_site.password_reset_confirmed = false
if parent_site.errors.empty?
parent_site.save_changes
parent_site.send_email(
subject: "[Neocities] Your password has been changed",
body: Tilt.new('./views/templates/email/password_changed.erb', pretty: true).render(self)
)
flash[:success] = 'Successfully changed password.'
redirect "/settings#password"
else
flash[:error] = current_site.errors.first.last.first
redirect '/settings#password'
end
end
post '/settings/change_email' do
require_login
if params[:from_confirm]
redirect_url = "/site/#{parent_site.username}/confirm_email"
else
redirect_url = '/settings#email'
end
if params[:email] == parent_site.email
flash[:error] = 'You are already using this email address for this account.'
redirect redirect_url
end
previous_email = parent_site.email
parent_site.email = params[:email]
parent_site.email_confirmation_token = SecureRandom.hex 3
parent_site.email_confirmed = false
parent_site.password_reset_token = nil
if parent_site.valid?
parent_site.save_changes
send_confirmation_email
parent_site.send_email(
subject: "[Neocities] Your email address has been changed",
body: Tilt.new('./views/templates/email/email_changed.erb', pretty: true).render(self, site: parent_site, previous_email: previous_email)
)
if !parent_site.supporter?
session[:fromsettings] = true
redirect "/site/#{parent_site.email}/confirm_email"
else
flash[:success] = 'Email address changed.'
redirect '/settings#email'
end
end
flash[:error] = parent_site.errors.first.last.first
redirect redirect_url
end
post '/settings/change_email_notification' do
require_login
owner = current_site.owner
owner.send_emails = params[:send_emails]
owner.send_comment_emails = params[:send_comment_emails]
owner.send_follow_emails = params[:send_follow_emails]
owner.email_invoice = params[:email_invoice]
owner.save_changes validate: false
flash[:success] = 'Email notification settings have been updated.'
redirect '/settings#email'
end
post '/settings/change_editor_settings' do
require_login
owner = current_site.owner
owner.editor_autocomplete_enabled = params[:editor_autocomplete_enabled]
owner.editor_font_size = params[:editor_font_size]
owner.editor_keyboard_mode = params[:editor_keyboard_mode]
owner.editor_tab_width = params[:editor_tab_width]
owner.editor_help_tooltips = params[:editor_help_tooltips]
owner.save_changes validate: false
@filename = params[:path]
redirect '/site_files/text_editor?filename=' + Rack::Utils.escape(@filename)
end
post '/settings/create_child' do
require_login
if !current_site.plan_feature(:unlimited_site_creation)
flash[:error] = 'Cannot create a new site with your current plan, please become a supporter.'
redirect '/settings#sites'
end
site = Site.new
site.parent_site_id = parent_site.id
site.username = params[:username]
if site.valid?
site.save
flash[:success] = 'Your new site has been created! To manage it, click your username in the top right and go to "Switch Site".'
redirect '/settings#sites'
else
flash[:error] = site.errors.first.last.first
redirect '/settings#sites'
end
end
get '/settings/unsubscribe_email/?' do
redirect "/settings/#email" if signed_in?
if params[:email] && params[:token] && params[:email] != '' && Site.valid_email_unsubscribe_token?(params[:email], params[:token])
Site.where(email: params[:email]).all.each do |site|
site.send_emails = false
site.save_changes validate: false
end
@message = "You have been successfully unsubscribed from future emails to #{params[:email]}. Our apologies for the inconvenience."
else
@message = 'There was an error unsubscribing your email address. Please contact support.'
end
erb :'settings/account/unsubscribe'
end
post '/settings/update_card' do
require_login
customer = Stripe::Customer.retrieve parent_site.stripe_customer_id
old_card_ids = customer.sources.collect {|s| s.id}
begin
customer.sources.create source: params[:stripe_token]
rescue Stripe::InvalidRequestError, Stripe::CardError => e
if e.message.match /cannot use a.+token more than once/
flash[:error] = 'Card is already being used.'
redirect '/settings#billing'
elsif e.message.match /Your card was declined/
flash[:error] = 'The card was declined. Please contact your bank.'
else
raise e
end
end
old_card_ids.each do |card_id|
customer.sources.retrieve(card_id).delete
end
flash[:success] = 'Card information updated.'
redirect '/settings#billing'
end

80
app/signin.rb Normal file
View file

@ -0,0 +1,80 @@
get '/signin/?' do
dashboard_if_signed_in
@title = 'Sign In'
erb :'signin/index'
end
post '/signin' do
dashboard_if_signed_in
if Site.valid_login? params[:username], params[:password]
site = Site.get_with_identifier params[:username]
if site.is_banned
flash[:error] = 'Invalid login.'
flash[:username] = params[:username]
redirect '/signin'
end
if site.is_deleted
session[:deleted_site_id] = site.id
redirect '/signin/restore'
end
session[:id] = site.id
redirect '/'
else
flash[:error] = 'Invalid login.'
flash[:username] = params[:username]
redirect '/signin'
end
end
get '/signin/restore' do
redirect '/' unless session[:deleted_site_id]
@site = Site[session[:deleted_site_id]]
redirect '/' if @site.nil?
@title = 'Restore Deleted Site'
erb :'signin/restore'
end
get '/signin/cancel_restore' do
session[:deleted_site_id] = nil
flash[:success] = 'Site restore was cancelled.'
redirect '/'
end
post '/signin/restore' do
redirect '/' unless session[:deleted_site_id]
@site = Site[session[:deleted_site_id]]
session[:deleted_site_id] = nil
if @site.undelete!
session[:id] = @site.id
else
flash[:error] = "Sorry, we cannot restore this account."
end
redirect '/'
end
get '/signin/:username' do
require_login
@site = Site[username: params[:username]]
not_found if @site.nil?
if @site.owned_by? current_site
session[:id] = @site.id
redirect request.referrer
end
flash[:error] = 'You do not have permission to switch to this site.'
redirect request.referrer
end
post '/signout' do
require_login
signout
redirect '/'
end

388
app/site.rb Normal file
View file

@ -0,0 +1,388 @@
get '/site/:username.rss' do |username|
site = Site[username: username]
halt 404 if site.nil? || (current_site && site.is_blocking?(current_site))
content_type :xml
site.to_rss
end
get '/site/:username/?' do |username|
site = Site[username: username]
# TODO: There should probably be a "this site was deleted" page.
not_found if site.nil? || site.is_banned || site.is_deleted || (current_site && site.is_blocking?(current_site))
redirect '/' if site.is_education
redirect site.uri unless site.profile_enabled
@title = site.title
@page = params[:page]
@page = 1 if @page.not_an_integer?
if params[:event_id]
not_found if params[:event_id].not_an_integer?
not_found if params[:event_id].to_i > 2_147_483_647 # max integer
event = Event.where(id: params[:event_id]).exclude(is_deleted: true).first
not_found if event.nil?
event_site = event.site
event_actioning_site = event.actioning_site
not_found if current_site && event_site && event_site.is_blocking?(current_site)
not_found if current_site && event_actioning_site && event_actioning_site.is_blocking?(current_site)
events_dataset = Event.where(id: params[:event_id]).paginate(1, 1)
else
events_dataset = site.latest_events(@page, current_site)
end
@page_count = events_dataset.page_count || 1
@pagination_dataset = events_dataset
@latest_events = events_dataset.all
meta_robots 'noindex, follow'
erb :'site', locals: {site: site, is_current_site: site == current_site}
end
MAX_STAT_POINTS = 30
get '/site/:username/stats' do
@default_stat_points = 7
@site = Site[username: params[:username]]
not_found if @site.nil? || @site.is_banned || @site.is_deleted || (current_site && @site.is_blocking?(current_site))
@title = "Site stats for #{@site.host}"
@stats = {}
%i{referrers locations paths}.each do |stat|
@stats[stat] = @site.send("stat_#{stat}_dataset".to_sym).order(:views.desc).limit(100).all
end
@stats[:locations].collect! do |location|
location_name = ''
location_name += location.city_name if location.city_name
if location.region_name
# Some of the region names are numbers for some reason.
begin
Integer(location.region_name)
rescue
location_name += ', ' unless location_name == ''
location_name += location.region_name
end
end
if location.country_code2 && !$country_codes[location.country_code2].nil?
location_name += ', ' unless location_name == ''
location_name += $country_codes[location.country_code2]
end
location_hash = {name: location_name, views: location.views}
if location.latitude && location.longitude
location_hash.merge! latitude: location.latitude, longitude: location.longitude
end
location_hash
end
stats_dataset = @site.stats_dataset.order(:created_at.desc).exclude(created_at: Date.today)
if @site.supporter?
unless params[:days].to_s == 'sincethebigbang'
unless params[:days].not_an_integer?
stats_dataset = stats_dataset.limit params[:days]
else
params[:days] = @default_stat_points
stats_dataset = stats_dataset.limit @default_stat_points
end
end
else
stats_dataset = stats_dataset.limit @default_stat_points
end
stats = stats_dataset.all.reverse
if current_site && @site.owned_by?(current_site) && params[:format] == 'csv'
content_type 'application/csv'
attachment "#{current_site.username}-stats.csv"
return CSV.generate do |csv|
csv << ['day', 'hits', 'views', 'bandwidth']
stats.each do |s|
csv << [s[:created_at].to_s, s[:hits], s[:views], s[:bandwidth]]
end
end
end
if stats.length > MAX_STAT_POINTS
stats = stats.select.with_index {|a, i| (i % (stats.length / MAX_STAT_POINTS.to_f).round) == 0}
end
@stats[:stat_days] = stats
@multi_tooltip_template = "<%= datasetLabel %> - <%= value %>"
erb :'site/stats', locals: {site: @site}
end
post '/site/:username/set_editor_theme' do
require_login
current_site.editor_theme = params[:editor_theme]
current_site.save_changes validate: false
'ok'
end
get '/site/:username/follows' do |username|
@title = "Sites #{username} follows"
@site = Site[username: username]
not_found if @site.nil? || @site.is_deleted || (current_site && (@site.is_blocking?(current_site) || current_site.is_blocking?(@site)))
params[:page] ||= "1"
@pagination_dataset = @site.followings_dataset.paginate(params[:page].to_i, Site::FOLLOW_PAGINATION_LIMIT)
erb :'site/follows'
end
get '/site/:username/followers' do |username|
@title = "Sites that follow #{username}"
@site = Site[username: username]
not_found if @site.nil? || @site.is_deleted || (current_site && (@site.is_blocking?(current_site) || current_site.is_blocking?(@site)))
params[:page] ||= "1"
@pagination_dataset = @site.follows_dataset.paginate(params[:page].to_i, Site::FOLLOW_PAGINATION_LIMIT)
erb :'site/followers'
end
post '/site/:username/comment' do |username|
require_login
site = Site[username: username]
redirect request.referer if current_site && (site.is_blocking?(current_site) || current_site.is_blocking?(site))
last_comment = site.profile_comments_dataset.order(:created_at.desc).first
if last_comment && last_comment.message == params[:message] && last_comment.created_at > 2.hours.ago
redirect request.referer
end
if site.profile_comments_enabled == false ||
params[:message].empty? ||
params[:message].length > Site::MAX_COMMENT_SIZE ||
site.is_blocking?(current_site) ||
current_site.is_blocking?(site) ||
current_site.commenting_allowed? == false ||
(current_site.is_a_jerk? && site.id != current_site.id && !site.is_following?(current_site))
redirect request.referrer
end
site.add_profile_comment(
actioning_site_id: current_site.id,
message: params[:message]
)
redirect request.referrer
end
post '/site/:site_id/toggle_follow' do |site_id|
require_login
content_type :json
site = Site[id: site_id]
return 403 if site.is_blocking?(current_site)
{result: (current_site.toggle_follow(site) ? 'followed' : 'unfollowed')}.to_json
end
post '/site/create_directory' do
require_login
path = "#{params[:dir] || ''}/#{params[:name]}"
result = current_site.create_directory path
if result != true
flash[:error] = result
end
redirect "/dashboard?dir=#{Rack::Utils.escape params[:dir]}"
end
get '/site/:username/confirm_email/:token' do
@title = 'Confirm email'
if current_site && current_site.email_confirmed
return erb(:'site_email_confirmed')
end
site = Site[username: params[:username]]
if site.nil?
return erb(:'site_email_not_confirmed')
end
if site.email_confirmed
return erb(:'site_email_confirmed')
end
if site.email_confirmation_token == params[:token]
site.email_confirmation_token = nil
site.email_confirmation_count = 0
site.email_confirmed = true
site.save_changes
erb :'site_email_confirmed'
else
erb :'site_email_not_confirmed'
end
end
get '/site/:username/confirm_email' do
require_login
@title = 'Confirm your Email Address'
@fromsettings = session[:fromsettings]
redirect '/' if current_site.username != params[:username] || !current_site.parent? || current_site.email_confirmed
erb :'site/confirm_email'
end
post '/site/:username/confirm_email' do
require_login
redirect '/' if current_site.username != params[:username] || !current_site.parent? || current_site.email_confirmed
# Update email, resend token
if params[:email]
send_confirmation_email @site
end
if params[:token].blank?
flash[:error] = 'You must enter a valid token.'
redirect "/site/#{current_site.username}/confirm_email"
end
if current_site.email_confirmation_token == params[:token]
current_site.email_confirmation_token = nil
current_site.email_confirmation_count = 0
current_site.email_confirmed = true
current_site.save_changes
if session[:fromsettings]
session[:fromsettings] = nil
flash[:success] = 'Email address changed.'
redirect '/settings#email'
end
redirect '/tutorial'
else
flash[:error] = 'You must enter a valid token.'
redirect "/site/#{current_site.username}/confirm_email"
end
end
post '/site/:username/block' do |username|
require_login
site = Site[username: username]
redirect request.referer if current_site.id == site.id
current_site.block! site
if request.referer.match /\/site\/#{username}/i
redirect '/'
else
redirect request.referer
end
end
get '/site/:username/unblock' do |username|
require_login
site = Site[username: username]
if site.nil? || current_site.id == site.id
redirect request.referer
end
current_site.unblock! site
redirect request.referer
end
get '/site/:username/confirm_phone' do
require_login
redirect '/' unless current_site.phone_verification_needed?
@title = 'Verify your Phone Number'
erb :'site/confirm_phone'
end
def restart_phone_verification
current_site.phone_verification_sent_at = nil
current_site.phone_verification_sid = nil
current_site.save_changes validate: false
redirect "/site/#{current_site.username}/confirm_phone"
end
post '/site/:username/confirm_phone' do
require_login
redirect '/' unless current_site.phone_verification_needed?
if params[:phone_intl]
phone = Phonelib.parse params[:phone_intl]
if !phone.valid?
flash[:error] = "Invalid phone number, please try again."
redirect "/site/#{current_site.username}/confirm_phone"
end
if phone.types.include?(:premium_rate) || phone.types.include?(:shared_cost)
flash[:error] = 'Neocities does not support this type of number, please use another number.'
redirect "/site/#{current_site.username}/confirm_phone"
end
current_site.phone_verification_sent_at = Time.now
current_site.phone_verification_attempts += 1
if current_site.phone_verification_attempts > Site::PHONE_VERIFICATION_LOCKOUT_ATTEMPTS
flash[:error] = 'You have exceeded the number of phone verification attempts allowed.'
redirect "/site/#{current_site.username}/confirm_phone"
end
current_site.save_changes validate: false
verification = $twilio.verify
.v2
.services($config['twilio_service_sid'])
.verifications
.create(to: phone.e164, channel: 'sms')
current_site.phone_verification_sid = verification.sid
current_site.save_changes validate: false
flash[:success] = 'Validation message sent! Check your phone and enter the code below.'
else
restart_phone_verification if current_site.phone_verification_sent_at < Time.now - Site::PHONE_VERIFICATION_EXPIRATION_TIME
minutes_remaining = ((current_site.phone_verification_sent_at - (Time.now - Site::PHONE_VERIFICATION_EXPIRATION_TIME))/60).round
begin
# Check code
vc = $twilio.verify
.v2
.services($config['twilio_service_sid'])
.verification_checks
.create(verification_sid: current_site.phone_verification_sid, code: params[:code])
# puts vc.status (pending if failed, approved if it passed)
if vc.status == 'approved'
current_site.phone_verified = true
current_site.save_changes validate: false
else
flash[:error] = "Code was not correct, please try again. If the phone number you entered was incorrect, you can re-enter the number after #{minutes_remaining} more minutes have passed."
end
rescue Twilio::REST::RestError => e
if e.message =~ /60202/
flash[:error] = "You have exhausted your check attempts. Please try again in #{minutes_remaining} minutes."
elsif e.message =~ /20404/ # Unable to create record
restart_phone_verification
else
raise e
end
end
end
# Will redirect to / automagically if phone was verified
redirect "/site/#{current_site.username}/confirm_phone"
end

270
app/site_files.rb Normal file
View file

@ -0,0 +1,270 @@
get '/site_files/new_page' do
require_login
@title = 'New Page'
erb :'site_files/new_page'
end
# Redirect from original path
get '/site_files/new' do
require_login
redirect '/site_files/new_page'
end
post '/site_files/create' do
require_login
@errors = []
filename = params[:filename]
filename.gsub!(/[^a-zA-Z0-9_\-.]/, '')
redirect_uri = '/dashboard'
redirect_uri += "?dir=#{Rack::Utils.escape params[:dir]}" if params[:dir]
if filename.nil? || filename.strip.empty?
flash[:error] = 'You must provide a file name.'
redirect redirect_uri
end
name = "#{filename}"
name = "#{params[:dir]}/#{name}" if params[:dir]
name = current_site.scrubbed_path name
if current_site.file_exists?(name)
flash[:error] = %{Web page "#{Rack::Utils.escape_html name}" already exists! Choose another name.}
redirect redirect_uri
end
extname = File.extname name
unless extname.empty? || extname.match(/^\.#{Site::EDITABLE_FILE_EXT}/i)
flash[:error] = "Must be an editable text file type (#{Site::VALID_EDITABLE_EXTENSIONS.join(', ')})."
redirect redirect_uri
end
site_file = current_site.site_files_dataset.where(path: name).first
if site_file
flash[:error] = 'File already exists, cannot create.'
redirect redirect_uri
end
if extname.match(/^\.html|^\.htm/i)
begin
current_site.install_new_html_file name
rescue Sequel::UniqueConstraintViolation
end
else
file_path = current_site.files_path(name)
FileUtils.touch file_path
File.chmod 0640, file_path
site_file ||= SiteFile.new site_id: current_site.id, path: name
site_file.size = 0
site_file.set size: 0
site_file.set sha1_hash: Digest::SHA1.hexdigest('')
site_file.set updated_at: Time.now
site_file.save
end
escaped_name = Rack::Utils.escape_html name
flash[:success] = %{#{escaped_name} was created! <a style="color: #FFFFFF; text-decoration: underline" href="/site_files/text_editor/#{escaped_name}">Click here to edit it</a>.}
redirect redirect_uri
end
def file_upload_response(error=nil)
if error
flash[:error] = error
end
if params[:from_button]
query_string = params[:dir] ? "?"+Rack::Utils.build_query(dir: params[:dir]) : ''
redirect "/dashboard#{query_string}"
else
halt 406, error if error
halt 200, 'File(s) successfully uploaded.'
end
end
def require_login_file_upload_ajax
file_upload_response 'You are not signed in!' unless signed_in?
end
post '/site_files/delete' do
require_login
path = HTMLEntities.new.decode params[:filename]
begin
current_site.delete_file path
rescue Sequel::NoExistingObject
# the deed was presumably already done
end
flash[:success] = "Deleted #{Rack::Utils.escape_html params[:filename]}."
dirname = Pathname(path).dirname
dir_query = dirname.nil? || dirname.to_s == '.' ? '' : "?dir=#{Rack::Utils.escape dirname}"
redirect "/dashboard#{dir_query}"
end
post '/site_files/rename' do
require_login
path = HTMLEntities.new.decode params[:path]
new_path = HTMLEntities.new.decode params[:new_path]
site_file = current_site.site_files.select {|s| s.path == path}.first
escaped_path = Rack::Utils.escape_html path
escaped_new_path = Rack::Utils.escape_html new_path
if site_file.nil?
flash[:error] = "File #{escaped_path} does not exist."
else
res = site_file.rename new_path
if res.first == true
flash[:success] = "Renamed #{escaped_path} to #{escaped_new_path}"
else
flash[:error] = "Failed to rename #{escaped_path} to #{escaped_new_path}: #{Rack::Utils.escape_html res.last}"
end
end
dirname = Pathname(path).dirname
dir_query = dirname.nil? || dirname.to_s == '.' ? '' : "?dir=#{Rack::Utils.escape dirname}"
redirect "/dashboard#{dir_query}"
end
get '/site_files/download' do
require_login
if !current_site.dl_queued_at.nil? && current_site.dl_queued_at > 1.hour.ago
flash[:error] = 'Site downloads are currently limited to once per hour, please try again later.'
redirect request.referer
end
content_type 'application/zip'
attachment "neocities-#{current_site.username}.zip"
current_site.dl_queued_at = Time.now
current_site.save_changes validate: false
directory_path = current_site.files_path
stream do |out|
ZipTricks::Streamer.open(out) do |zip|
Dir["#{directory_path}/**/*"].each do |file|
next if File.directory?(file)
zip_path = file.sub("#{directory_path}/", '')
zip.write_stored_file(zip_path) do |file_writer|
File.open(file, 'rb') do |file|
IO.copy_stream(file, file_writer)
end
end
end
end
end
end
get %r{\/site_files\/download\/(.+)} do
require_login
dont_browser_cache
not_found if params[:captures].nil? || params[:captures].length != 1
filename = params[:captures].first
attachment filename
send_file current_site.current_files_path(filename)
end
get %r{\/site_files\/text_editor\/(.+)} do
require_login
dont_browser_cache
@filename = params[:captures].first
redirect '/site_files/text_editor?filename=' + Rack::Utils.escape(@filename)
end
get '/site_files/text_editor' do
require_login
dont_browser_cache
@filename = params[:filename]
extname = File.extname @filename
@ace_mode = case extname
when /htm|html/ then 'html'
when /js/ then 'javascript'
when /md/ then 'markdown'
when /css/ then 'css'
else
nil
end
file_path = current_site.current_files_path @filename
if File.directory? file_path
flash[:error] = 'Cannot edit a directory.'
redirect '/dashboard'
end
if !File.exist?(file_path)
flash[:error] = 'We could not find the requested file.'
redirect '/dashboard'
end
@title = "Editing #{@filename}"
erb :'site_files/text_editor'
end
get '/site_files/allowed_types' do
@title = 'Allowed File Types'
erb :'site_files/allowed_types'
end
get '/site_files/hotlinking' do
@title = 'Hotlinking Information'
erb :'site_files/hotlinking'
end
get '/site_files/mount_info' do
@title = 'Site Mount Information'
erb :'site_files/mount_info'
end
post '/site_files/chat' do
require_login
dont_browser_cache
headers 'X-Accel-Buffering' => 'no'
halt(403) unless parent_site.supporter?
# Ensure the request is treated as a stream
stream do |out|
url = 'https://api.anthropic.com/v1/messages'
headers = {
"anthropic-version" => "2023-06-01",
"anthropic-beta" => "messages-2023-12-15",
"content-type" => "application/json",
"x-api-key" => $config['anthropic_api_key']
}
body = {
model: "claude-3-haiku-20240307",
system: params[:system],
messages: JSON.parse(params[:messages]),
max_tokens: 4096,
temperature: 0.5,
stream: true
}.to_json
res = HTTP.headers(headers).post(url, body: body)
while(buffer = res.body.readpartial)
out << buffer
end
end
end

199
app/supporter.rb Normal file
View file

@ -0,0 +1,199 @@
get '/supporter/?' do
@title = 'Become a Supporter'
erb :'welcome'
end
post '/supporter/end' do
require_login
redirect '/' unless parent_site.paying_supporter?
parent_site.end_supporter_membership!
flash[:success] = "Your supporter membership has been cancelled. We're sorry to see you go, but thanks again for your support! Remember, you can always become a supporter again in the future."
redirect '/supporter'
end
post '/supporter/update' do
require_login
plan_type = 'supporter'
if is_special_upgrade
require_admin
site = Site[username: params[:username]]
plan_type = 'special'
if site.nil?
flash[:error] = 'Cannot find the requested user.'
redirect '/admin'
end
end
site ||= parent_site
DB.transaction do
if site.stripe_customer_id
customer = Stripe::Customer.retrieve site.stripe_customer_id
customer.cards.each {|card| card.delete}
if !params[:stripe_token].blank?
customer.sources.create source: params[:stripe_token]
end
begin
subscription = customer.subscriptions.create plan: plan_type
rescue Stripe::CardError => e
flash[:error] = "Error: #{Rack::Utils.escape_html e.message}"
redirect '/supporter'
end
site.plan_ended = false
site.plan_type = plan_type
site.stripe_subscription_id = subscription.id
site.save_changes validate: false
else
begin
customer = Stripe::Customer.create(
source: params[:stripe_token],
description: "#{site.username} - #{site.id}",
email: site.email,
plan: plan_type
)
rescue Stripe::CardError => e
flash[:error] = "Error: #{Rack::Utils.escape_html e.message} This is likely caused by incorrect information, or an issue with your credit card. Please try again, or contact your bank."
redirect '/supporter'
end
site.stripe_customer_id = customer.id
site.stripe_subscription_id = customer.subscriptions.first.id
site.plan_ended = false
site.plan_type = plan_type
site.save_changes validate: false
end
end
if site.email
if is_special_upgrade
site.send_email(
subject: "[Neocities] Your site has been upgraded to supporter!",
body: Tilt.new('./views/templates/email/supporter_upgrade.erb', pretty: true).render(self)
)
redirect '/admin'
end
site.send_email(
subject: "[Neocities] You've become a supporter!",
body: Tilt.new('./views/templates/email/subscription.erb', pretty: true).render(
self, {
username: site.username,
plan_name: Site::PLAN_FEATURES[params[:plan_type].to_sym][:name],
plan_space: Site::PLAN_FEATURES[params[:plan_type].to_sym][:space].pretty,
plan_bw: Site::PLAN_FEATURES[params[:plan_type].to_sym][:bandwidth].pretty
})
)
end
if is_special_upgrade
flash[:success] = "#{site.username} has been upgraded to supporter."
redirect '/admin'
end
redirect '/supporter/thanks'
end
get '/supporter/thanks' do
@title = 'Supporter Confirmation'
require_login
erb :'supporter/thanks'
end
get '/supporter/bitcoin/?' do
@title = 'Bitcoin Supporter'
erb :'supporter/bitcoin'
end
get '/supporter/paypal' do
require_login
redirect '/supporter' if parent_site.supporter?
hash = paypal_recurring_authorization_hash
if parent_site.paypal_token
hash.merge! token: parent_site.paypal_token
end
ppr = PayPal::Recurring.new hash
paypal_response = ppr.checkout
if !paypal_response.valid?
flash[:error] = 'There was an issue connecting to Paypal, please contact support.'
redirect '/supporter'
end
redirect paypal_response.checkout_url
end
get '/supporter/paypal/return' do
require_login
if params[:token].nil? || params[:PayerID].nil?
flash[:error] = 'Unknown error, could not complete the request. Please contact Neocities support.'
end
ppr = PayPal::Recurring.new(paypal_recurring_hash.merge(
token: params[:token],
payer_id: params[:PayerID]
))
paypal_response = ppr.request_payment
unless paypal_response.approved? && paypal_response.completed?
flash[:error] = 'Unknown error, could not complete the request. Please contact Neocities support.'
redirect '/supporter'
end
site = current_site.parent || current_site
ppr = PayPal::Recurring.new(paypal_recurring_authorization_hash.merge(
frequency: 1,
token: params[:token],
period: :monthly,
reference: site.id.to_s,
payer_id: params[:PayerID],
start_at: 1.month.from_now,
failed: 3,
outstanding: :next_billing
))
paypal_response = ppr.create_recurring_profile
site.paypal_token = params[:token]
site.paypal_profile_id = paypal_response.profile_id
site.paypal_active = true
site.plan_type = 'supporter'
site.plan_ended = false
site.save_changes validate: false
redirect '/supporter/thanks'
end
def paypal_recurring_hash
{
ipn_url: "https://neocities.org/webhooks/paypal",
description: 'Neocities Supporter - Monthly',
amount: Site::PLAN_FEATURES[:supporter][:price].to_s,
currency: 'USD'
}
end
def paypal_recurring_authorization_hash
paypal_recurring_hash.merge(
return_url: "https://neocities.org/supporter/paypal/return",
cancel_url: "https://neocities.org/supporter",
ipn_url: "https://neocities.org/webhooks/paypal"
)
end
def is_special_upgrade
params[:username] && params[:plan_type] == 'special'
end

85
app/sysops.rb Normal file
View file

@ -0,0 +1,85 @@
require 'base64'
require 'zlib'
require 'rubygems/package'
get '/sysops/proxy/map.txt' do
require_proxy_auth
domains = ''
Site.exclude(domain: nil).
exclude(domain: '').
select(:username,:domain).
all.
collect do |s|
domains << "#{s.domain} #{s.username};\n"
end
content_type :text
domains
end
get '/sysops/proxy/sslcerts.tar.gz' do
require_proxy_auth
sites = Site.ssl_sites
nginx_config = ''
tar = StringIO.new
Gem::Package::TarWriter.new(tar) do |writer|
writer.mkdir 'sslcerts', 0740
writer.mkdir 'sslcerts/certs', 0740
sites.each do |site|
writer.add_file "sslcerts/certs/#{site.username}.key", 0640 do |f|
f.write site.ssl_key
end
writer.add_file "sslcerts/certs/#{site.username}.crt", 0640 do |f|
f.write site.ssl_cert
end
nginx_config << %{
server {
listen 443 ssl;
server_name #{site.domain} *.#{site.domain};
ssl_certificate sslsites/certs/#{site.username}.crt;
ssl_certificate_key sslsites/certs/#{site.username}.key;
location / {
proxy_http_version 1.1;
proxy_set_header Host #{site.username}.neocities.org;
proxy_pass http://127.0.0.1$request_uri;
}
}
}.unindent
end
writer.add_file "sslcerts/sslsites.conf", 0640 do |f|
f.write nginx_config
end
end
tar.rewind
package = StringIO.new 'b'
package.set_encoding 'binary'
gzip = Zlib::GzipWriter.new package
gzip.write tar.read
tar.close
gzip.finish
package.rewind
attachment
package.read
end
class ProxyAccessViolation < StandardError; end
def require_proxy_auth
begin
auth = request.env['HTTP_AUTHORIZATION']
user, pass = Base64.decode64(auth.match(/Basic (.+)/)[1]).split(':')
raise ProxyAccessViolation unless pass == $config['proxy_pass']
rescue
raise ProxyAccessViolation, "Violator: #{request.ip}" unless pass == $config['proxy_pass']
end
end

31
app/tags.rb Normal file
View file

@ -0,0 +1,31 @@
post '/tags/add' do
require_login
current_site.new_tags_string = params[:tags]
if current_site.valid?
current_site.save_tags
else
flash[:errors] = current_site.errors.first.last.first
end
redirect request.referer
end
post '/tags/remove' do
require_login
if params[:tags].is_a?(Array)
DB.transaction {
params[:tags].each do |tag|
tag_to_remove = current_site.tags.select {|t| t.name == tag}.first
current_site.remove_tag(tag_to_remove) if tag_to_remove
end
}
end
redirect request.referer
end
get '/tags/autocomplete/:name.json' do |name|
Tag.autocomplete(name).collect {|t| t[:name]}.to_json
end

52
app/tutorial.rb Normal file
View file

@ -0,0 +1,52 @@
def default_tutorial_html
<<-EOT.strip
<!DOCTYPE html>
<html>
<body>
Hello World!
</body>
</html>
EOT
end
get '/tutorials' do
erb :'tutorials'
end
get '/tutorial/?' do
require_login
erb :'tutorial/index'
end
get '/tutorial/:section/?' do
require_login
not_found unless %w{html}.include?(params[:section])
redirect "/tutorial/#{params[:section]}/1"
end
get '/tutorial/:section/:page/?' do
require_login
@page = params[:page]
not_found unless @page.match?(/\A[1-9]\z|\A10\z/)
not_found unless %w{html}.include?(params[:section])
@section = params[:section]
@title = "#{params[:section].upcase} Tutorial - #{@page}/10"
if @page == '9'
unless csrf_safe?
signout
redirect '/'
end
current_site.tutorial_required = false
current_site.save_changes validate: false
end
erb "tutorial/layout".to_sym
end

153
app/webhooks.rb Normal file
View file

@ -0,0 +1,153 @@
post '/webhooks/paypal' do
EmailWorker.perform_async({
from: 'web@neocities.org',
to: 'errors@neocities.org',
subject: "[Neocities Paypal Webhook] Received a Webhook from Paypal",
body: params.inspect,
no_footer: true
})
'ok'
end
def valid_paypal_webhook_source?
# https://www.paypal.com/us/smarthelp/article/what-are-the-ip-addresses-for-live-paypal-servers-ts1056
request_ip = IPAddress::IPv4.new request.ip
['127.0.0.1', '66.211.170.66', '173.0.81.0/24'].each do |ip|
return true if IPAddress::IPv4.new(ip).include? request_ip
end
false
end
post '/webhooks/paypal/tipping_notify' do
return 403 unless valid_paypal_webhook_source?
payload = JSON.parse Base64.strict_decode64(params[:custom]), symbolize_names: true
site = Site[payload[:site_id]]
@tip_hash = {
message: (params[:memo] ? params[:memo] : nil),
amount: params[:mc_gross],
currency: params[:mc_currency],
fee: params[:mc_fee],
actioning_site: (payload[:actioning_site_id] ? Site[payload[:actioning_site_id]] : nil),
paypal_payer_email: params[:payer_email],
paypal_receiver_email: params[:receiver_email],
paypal_txn_id: params[:txn_id],
created_at: DateTime.strptime(params[:payment_date], "%H:%M:%S %b %e, %Y %Z").to_time
}
@tip = site.add_tip @tip_hash
Event.create(
site_id: @tip.site.id,
actioning_site_id: (@tip.actioning_site ? @tip.actioning_site.id : nil),
tip_id: @tip.id
)
if @tip.actioning_site
subject = "You received a #{@tip.amount_string} tip from #{@tip.actioning_site.username}!"
else
subject = "You received a #{@tip.amount_string} tip!"
end
@tip.site.send_email(
subject: subject,
body: Tilt.new('./views/templates/email/tip_received.erb', pretty: true).render(self)
)
EmailWorker.perform_async({
from: 'web@neocities.org',
to: params[:payer_email],
subject: "You sent a #{@tip.amount_string} tip!",
body: Tilt.new('./views/templates/email/tip_sent.erb', pretty: true).render(self)
})
end
post '/webhooks/stripe' do
event = JSON.parse request.body.read
if event['type'] == 'customer.created'
username = event['data']['object']['description'].split(' - ').first
email = event['data']['object']['email']
EmailWorker.perform_async({
from: 'web@neocities.org',
to: 'contact@neocities.org',
subject: "[Neocities] New customer: #{username}",
body: "#{username}\n#{email}\n#{Site[username: username].uri}",
no_footer: true
})
end
if event['type'] == 'charge.failed'
site = stripe_get_site_from_event event
EmailWorker.perform_async({
from: 'web@neocities.org',
to: site.email,
subject: "[Neocities] There was an issue charging your card",
body: Tilt.new('./views/templates/email/charge_failure.erb', pretty: true).render(self)
})
end
if event['type'] == 'customer.subscription.deleted'
site = stripe_get_site_from_event event
site.stripe_subscription_id = nil
site.plan_type = nil
site.plan_ended = true
site.save_changes validate: false
EmailWorker.perform_async({
from: 'web@neocities.org',
to: site.email,
subject: "[Neocities] Supporter plan has ended",
body: Tilt.new('./views/templates/email/supporter_ended.erb', pretty: true).render(self)
})
end
if event['type'] == 'invoice.payment_succeeded'
site = stripe_get_site_from_event event
if site.email_invoice && site.stripe_paying_supporter?
invoice_obj = event['data']['object']
EmailWorker.perform_async({
from: 'web@neocities.org',
to: site.email,
subject: "[Neocities] Invoice",
body: Tilt.new('./views/templates/email/invoice.erb', pretty: true).render(
self,
site: site,
amount: invoice_obj['amount_due'],
period_start: Time.at(invoice_obj['period_start']),
period_end: Time.at(invoice_obj['period_end']),
date: Time.at(invoice_obj['date'])
)
})
end
end
'ok'
end
def stripe_get_site_from_event(event)
customer_id = event['data']['object']['customer']
halt 'ok' if customer_id.nil? # Likely a fraudulent card report
customer = Stripe::Customer.retrieve customer_id
# Some old accounts only have a username for the desc
desc_split = customer.description.split(' - ')
if desc_split.length == 1
site_where = {username: desc_split.first}
end
if desc_split.last.not_an_integer?
site_where = {username: desc_split.first}
else
site_where = {id: desc_split.last}
end
Site.where(site_where).first
end

138
app_helpers.rb Normal file
View file

@ -0,0 +1,138 @@
def dashboard_if_signed_in
redirect '/dashboard' if signed_in?
end
def csrf_safe?
csrf_token == params[:csrf_token] || csrf_token == request.env['HTTP_X_CSRF_TOKEN']
end
def csrf_token
session[:_csrf_token] ||= SecureRandom.base64(32)
end
def is_education?
current_site && current_site.is_education
end
def require_login
redirect '/' unless signed_in? && current_site
end
def signed_in?
return false if current_site.nil?
true
end
def signout
@_site = nil
@_parent_site = nil
session[:id] = nil
session.clear
response.delete_cookie 'neocities', path: '/'
request.env['rack.session.options'][:drop] = true
end
def current_site
return nil if session[:id].nil?
@_site ||= Site[id: session[:id]]
@_parent_site ||= @_site.parent
if @_site.is_banned || @_site.is_deleted || (@_parent_site && (@_parent_site.is_banned || @_parent_site.is_deleted))
signout
end
@_site
end
def parent_site
@_parent_site || current_site
end
def meta_robots(newtag=nil)
if newtag
@_meta_robots = newtag
end
@_meta_robots
end
def title
out = "Neocities"
return out if request.path == '/'
return "#{out} - #{@title}" if @title
"#{out} - #{request.path.gsub('/', '').capitalize}"
end
def encoding_fix(file)
begin
Rack::Utils.escape_html file
rescue ArgumentError => e
if e.message =~ /invalid byte sequence in UTF-8/ ||
e.message =~ /incompatible character encodings/
return Rack::Utils.escape_html(file.force_encoding('BINARY'))
end
fail
end
end
def send_confirmation_email(site=current_site)
if site.email_confirmation_count > Site::MAXIMUM_EMAIL_CONFIRMATIONS
flash[:error] = 'You sent too many email confirmation requests, cannot continue.'
redirect request.referrer
end
DB['UPDATE sites set email_confirmation_count=email_confirmation_count+1 WHERE id=?', site.id].first
EmailWorker.perform_async({
from: 'web@neocities.org',
reply_to: 'contact@neocities.org',
to: site.email,
subject: "[Neocities] Confirm your email address",
body: Tilt.new('./views/templates/email/confirm.erb', pretty: true).render(self, site: site)
})
end
def dont_browser_cache
headers['Cache-Control'] = 'private, no-store, max-age=0, no-cache, must-revalidate, post-check=0, pre-check=0'
headers['Pragma'] = 'no-cache'
headers['Expires'] = 'Fri, 01 Jan 1990 00:00:00 GMT'
@dont_browser_cache = true
end
def sanitize_comment(text)
Rinku.auto_link Sanitize.fragment(text), :all, 'target="_blank" rel="nofollow"'
end
def flash_display(opts={})
erb :'_flash', layout: false, locals: {opts: opts}
end
def hcaptcha_valid?
return true if ENV['RACK_ENV'] == 'test' || ENV['CI']
return false unless params[:'h-captcha-response']
resp = HTTP.get('https://hcaptcha.com/siteverify', params: {
secret: $config['hcaptcha_secret_key'],
response: params[:'h-captcha-response']
})
resp = JSON.parse resp
if resp['success'] == true
true
else
false
end
end
JS_ESCAPE_MAP = {"\\" => "\\\\", "</" => '<\/', "\r\n" => '\n', "\n" => '\n', "\r" => '\n', '"' => '\\"', "'" => "\\'", "`" => "\\`", "$" => "\\$"}
def escape_javascript(javascript)
javascript = javascript.to_s
if javascript.empty?
result = ""
else
result = javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"']|[`]|[$])/u, JS_ESCAPE_MAP)
end
result
end

9
code-of-conduct.txt Normal file
View file

@ -0,0 +1,9 @@
These guidelines apply to Neocities contributor communications, including
messages in code repositories, collaboration tools, outreach channels, etc.
* Language and actions must be free of personal attacks, harassment,
discrimination, and NSFW content.
Instances of unacceptable behavior can be reported by contacting the project
team at abuse@neocities.org. All complaints will be investigated and reporter
confidentiality will be maintained.

101
config.ru
View file

@ -1,7 +1,104 @@
require 'rubygems'
require './app.rb'
require 'sidekiq/web'
require 'airbrake/sidekiq'
map('/') { run Sinatra::Application }
use Airbrake::Rack::Middleware
map('/') do
run Sinatra::Application
end
map '/webdav' do
use Rack::Auth::Basic do |username, password|
@site = Site.get_site_from_login(username, password)
@site ? true : false
end
run lambda { |env|
request_method = env['REQUEST_METHOD']
path = env['PATH_INFO']
unless @site.owner.supporter?
return [
402,
{
'Content-Type' => 'application/xml',
'X-Upgrade-Required' => 'https://neocities.org/supporter'
},
[
<<~XML
<?xml version="1.0" encoding="utf-8"?>
<error xmlns="DAV:">
<message>WebDAV access requires a supporter account.</message>
</error>
XML
]
]
end
case request_method
when 'OPTIONS'
return [200, {'Allow' => 'OPTIONS, GET, HEAD, PUT, DELETE, PROPFIND, MKCOL, MOVE', 'DAV' => '1,2'}, ['']]
when 'PUT'
tmpfile = Tempfile.new('davfile', encoding: 'binary')
tmpfile.write(env['rack.input'].read)
tmpfile.close
return [507, {}, ['']] if @site.file_size_too_large?(tmpfile.size)
if @site.okay_to_upload?(filename: path, tempfile: tmpfile)
@site.store_files([{ filename: path, tempfile: tmpfile }])
return [201, {}, ['']]
else
return [415, {}, ['']]
end
when 'MKCOL'
@site.create_directory(path)
return [201, {}, ['']]
when 'MOVE'
destination = env['HTTP_DESTINATION'][/\/webdav(.+)$/i, 1]
return [400, {}, ['Bad Request']] unless destination
path.sub!(/^\//, '') # Remove leading slash if present
site_file = @site.site_files.find { |s| s.path == path }
return [404, {}, ['']] unless site_file
site_file.rename(destination)
return [201, {}, ['']]
when 'DELETE'
@site.delete_file(path)
return [201, {}, ['']]
else
unless ['PROPFIND', 'GET', 'HEAD'].include? request_method
return [501, {}, ['Not Implemented']]
end
env['PATH_INFO'] = "/#{@site.scrubbed_path(path)}" unless path.empty?
# Terrible hack to fix WebDAV for the VSC plugin
if env['CONTENT_LENGTH'] == "0"
env['rack.input'] = StringIO.new('<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"><prop>
<getcontentlength xmlns="DAV:"/>
<getlastmodified xmlns="DAV:"/>
<resourcetype xmlns="DAV:"/>
</prop></propfind>')
env['CONTENT_LENGTH'] = env['rack.input'].length.to_s
end
DAV4Rack::Handler.new(
root: @site.files_path,
root_uri_path: '/webdav'
).call(env)
end
}
end
map '/sidekiq' do
use Rack::Auth::Basic, "Protected Area" do |username, password|
@ -9,5 +106,7 @@ map '/sidekiq' do
username == $config['sidekiq_user'] && password == $config['sidekiq_pass']
end
use Rack::Session::Cookie, key: 'sidekiq.session', secret: Base64.strict_decode64($config['session_secret'])
use Rack::Protection::AuthenticityToken
run Sidekiq::Web
end

31
config.yml.ci Normal file
View file

@ -0,0 +1,31 @@
database: 'postgres://postgres:citestpassword@localhost/ci_test'
database_pool: 1
session_secret: 'SSBqdXN0IHdhbnRlZCB0byBzZWUgd2hhdCB5b3UgbG9va2VkIGxpa2UgaW4gYSBkcmVzcywgRGFkZSBNdXJwaHk='
email_unsubscribe_token: "somethingrandomderrrrp"
paypal_api_username: derp
paypal_api_password: ing
paypal_api_signature: tonz
logs_path: "/tmp/neocitiestestlogs"
letsencrypt_key: ./tests/files/letsencrypt.key
letsencrypt_endpoint: https://acme-staging.api.letsencrypt.org/
proxy_ips:
- 10.0.0.1
- 10.0.0.2
education_tag_whitelist:
- mrteacher
stop_forum_spam_api_key: testkey
screenshot_urls:
- http://screenshots:derp@screenshotssite.com
cache_control_ips:
- 1.2.3.4
- 4.5.6.7
hcaptcha_site_key: "10000000-ffff-ffff-ffff-000000000001"
hcaptcha_secret_key: "0x0000000000000000000000000000000000000000"
twilio_account_sid: ACEDERPDERP
twilio_auth_token: derpderpderp
twilio_service_sid: VADERPDERPDERP
minfraud_account_id: 696969420
minfraud_license_key: DERPDERPDERP
google_custom_search_key: herpderp
google_custom_search_cx: herpderp
google_custom_search_query_limit: 69

View file

@ -1,24 +1,70 @@
development:
database: 'postgres://neocities@127.0.0.1/neocities'
database: 'postgres://localhost/neocities'
database_pool: 1
session_secret: SECRET GOES HERE
recaptcha_public_key: ENTER PUBLIC KEY HERE
recaptcha_private_key: ENTER PRIVATE KEY HERE
sidekiq_user: ENTER USER HERE
sidekiq_pass: ENTER PASS HERE
phantomjs_url:
- http://localhost:8910
stripe_publishable_key: fillout
stripe_api_key: fillout
redis_url: "redis://localhost"
session_secret: "SSBqdXN0IHdhbnRlZCB0byBzZWUgd2hhdCB5b3UgbG9va2VkIGxpa2UgaW4gYSBkcmVzcywgRGFkZSBNdXJwaHk="
hcaptcha_site_key: "10000000-ffff-ffff-ffff-000000000001"
hcaptcha_secret_key: "0x0000000000000000000000000000000000000000"
sidekiq_user: "ENTER USER HERE"
sidekiq_pass: "ENTER PASS HERE"
stripe_publishable_key: "ENTER KEY HERE"
stripe_api_key: "ENTER KEY HERE"
ip_hash_salt: "400$8$1$fc21863da5d531c1"
proxy_pass: 'somethinglongandrandom'
email_unsubscribe_token: 'somethingrandom'
logs_path: /path/to/nginx/logs
paypal_api_username: derp
paypal_api_password: ing
paypal_api_signature: tonz
letsencrypt_key: ./tests/files/letsencrypt.key
letsencrypt_endpoint: https://acme-staging.api.letsencrypt.org/
minfraud_account_id: 696969420
minfraud_license_key: DERPDERPDERP
proxy_ips:
- 10.0.0.1
- 10.0.0.2
education_tag_whitelist:
- mrteacher
screenshot_urls:
- http://screenshots:derp@127.0.0.1:12345
stop_forum_spam_api_key: testkey
google_custom_search_key: herpderp
google_custom_search_cx: herpderp
google_custom_search_query_limit: 69
test:
database: 'postgres://neocities@127.0.0.1/neocities_test'
database: 'postgres://localhost/neocities_test'
database_pool: 1
session_secret: SECRET GOES HERE
recaptcha_public_key: ENTER PUBLIC KEY HERE
recaptcha_private_key: ENTER PRIVATE KEY HERE
sidekiq_user: ENTER USER HERE
sidekiq_pass: ENTER PASS HERE
phantomjs_url:
- http://localhost:8910
stripe_publishable_key: fillout
stripe_api_key: fillout
session_secret: "SSBqdXN0IHdhbnRlZCB0byBzZWUgd2hhdCB5b3UgbG9va2VkIGxpa2UgaW4gYSBkcmVzcywgRGFkZSBNdXJwaHk="
hcaptcha_site_key: "10000000-ffff-ffff-ffff-000000000001"
hcaptcha_secret_key: "0x0000000000000000000000000000000000000000"
sidekiq_user: "ENTER USER HERE"
sidekiq_pass: "ENTER PASS HERE"
stripe_publishable_key: "ENTER KEY HERE"
stripe_api_key: "ENTER KEY HERE"
ip_hash_salt: "400$8$1$fc21863da5d531c1"
proxy_pass: 'somethinglongandrandom'
email_unsubscribe_token: 'somethingrandom'
paypal_api_username: derp
paypal_api_password: ing
paypal_api_signature: tonz
letsencrypt_key: ./tests/files/letsencrypt.key
letsencrypt_endpoint: https://acme-staging.api.letsencrypt.org/
proxy_ips:
- 10.0.0.1
- 10.0.0.2
education_tag_whitelist:
- mrteacher
stop_forum_spam_api_key: testkey
screenshot_urls:
- http://screenshots:derp@screenshotssite.com
cache_control_ips:
- 1.2.3.4
- 4.5.6.7
twilio_account_sid: ACEDERPDERP
twilio_auth_token: derpderpderp
twilio_service_sid: VADERPDERPDERP
minfraud_account_id: 696969420
minfraud_license_key: DERPDERPDERP
google_custom_search_key: herpderp
google_custom_search_cx: herpderp
google_custom_search_query_limit: 69

View file

@ -1,7 +0,0 @@
database: 'postgres://postgres@localhost/travis_ci_test'
database_pool: 1
session_secret: 's3cr3t'
recaptcha_public_key: '1234'
recaptcha_private_key: '5678'
phantomjs_url:
- http://localhost:8910

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
RubyVM::YJIT.enable
ENV['RACK_ENV'] ||= 'development'
ENV['TZ'] = 'UTC'
DIR_ROOT = File.expand_path File.dirname(__FILE__)
@ -7,13 +9,25 @@ Encoding.default_external = 'UTF-8'
require 'yaml'
require 'json'
require 'logger'
require 'zip'
Bundler.require
Bundler.require :development if ENV['RACK_ENV'] == 'development'
if ENV['TRAVIS']
$config = YAML.load_file File.join(DIR_ROOT, 'config.yml.travis')
require 'tilt/erubi'
require 'active_support'
require 'active_support/time'
class File
def self.exists?(val)
self.exist?(val)
end
end
Dir['./ext/**/*.rb'].each {|f| require f}
# :nocov:
if ENV['CI']
$config = YAML.load_file File.join(DIR_ROOT, 'config.yml.ci')
else
begin
$config = YAML.load_file(File.join(DIR_ROOT, 'config.yml'))[ENV['RACK_ENV']]
@ -22,90 +36,163 @@ else
exit
end
end
# :nocov:
DB = Sequel.connect $config['database'], sslmode: 'disable', max_connections: $config['database_pool']
DB.extension :pagination
DB.extension :auto_literal_strings
Sequel.split_symbols = true
Sidekiq.strict_args!(false)
Dir.glob('workers/*.rb').each {|w| require File.join(DIR_ROOT, "/#{w}") }
require 'will_paginate/sequel'
# :nocov:
=begin
if defined?(Pry)
Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Pry.commands.alias_command 'f', 'finish'
end
=end
# :nocov:
Sidekiq::Logging.logger = nil unless ENV['RACK_ENV'] == 'production'
unless ENV['RACK_ENV'] == 'production'
Sidekiq.configure_server do |config|
config.logger = nil
end
end
sidekiq_redis_config = {namespace: 'neocitiesworker'}
sidekiq_redis_config = {}
sidekiq_redis_config[:url] = $config['sidekiq_url'] if $config['sidekiq_url']
# :nocov:
Sidekiq.configure_server do |config|
config.redis = sidekiq_redis_config
end
# :nocov:
Sidekiq.configure_client do |config|
config.logger = nil
config.redis = sidekiq_redis_config
end
require File.join(DIR_ROOT, 'workers', 'thumbnail_worker.rb')
require File.join(DIR_ROOT, 'workers', 'screenshot_worker.rb')
require File.join(DIR_ROOT, 'workers', 'email_worker.rb')
if ENV['RACK_ENV'] == 'test'
$redis = MockRedis.new
else
$redis = Redis.new url: $config['redis_url']
end
$redis_cache = Redis::Namespace.new :cache, redis: $redis
if ENV['RACK_ENV'] == 'test'
$redis_proxy = MockRedis.new
else
$redis_proxy = Redis.new url: $config['redis_proxy']
end
# :nocov:
if ENV['RACK_ENV'] == 'development'
# Run async jobs immediately in development.
=begin
module Sidekiq
module Worker
module ClassMethods
def perform_async(*args)
Thread.new {
self.new.perform *args
}
end
end
end
end
=end
end
# :nocov:
Sequel.datetime_class = Time
Sequel.extension :core_extensions
Sequel.extension :migration
Sequel::Model.plugin :validation_helpers
Sequel::Model.plugin :force_encoding, 'UTF-8'
Sequel::Model.plugin :timestamps, create: :created_at, update: :updated_at
Sequel::Model.plugin :defaults_setter
Sequel.default_timezone = 'UTC'
Sequel::Model.plugin :create_timestamp
Sequel.default_timezone = :utc
Sequel::Migrator.apply DB, './migrations'
Stripe.api_key = $config['stripe_api_key']
Dir.glob('models/*.rb').each {|m| require File.join(DIR_ROOT, "#{m}") }
Dir.glob('workers/*.rb').each {|w| require File.join(DIR_ROOT, "/#{w}") }
DB.loggers << Logger.new(STDOUT) if ENV['RACK_ENV'] == 'development'
if ENV['RACK_ENV'] == 'development'
# If new, throw up a random Server for development.
if Server.count == 0
Server.create ip: '127.0.0.1', slots_available: 999999
end
end
Mail.defaults do
#options = { :address => "smtp.gmail.com",
# :port => 587,
# :domain => 'your.host.name',
# :user_name => '<username>',
# :password => '<password>',
# :authentication => 'plain',
# :enable_starttls_auto => true }
options = {}
delivery_method :sendmail, options
end
Sinatra::Application.set :erb, escape_html: true
# Session fix for Internet Fucking Explorer https://github.com/rkh/rack-protection/issues/11
Sinatra::Application.set :protection, except: :session_hijacking
require 'sass/plugin/rack'
Sinatra::Application.use Sass::Plugin::Rack
class Sinatra::Base
alias_method :render_original, :render
def render(engine, data, options = {}, locals = {}, &block)
options.merge!(pretty: self.class.development?) if engine == :slim && options[:pretty].nil?
render_original engine, data, options, locals, &block
end
Sass::Plugin.options[:template_location] = 'sass'
Sass::Plugin.options[:css_location] = './public/css'
Sass::Plugin.options[:style] = :nested
if ENV['RACK_ENV'] != 'development'
Sass::Plugin.options[:style] = :compressed
# Sass::Plugin.options[:never_update] = true
Sass::Plugin.options[:full_exception] = false
end
class Numeric
def roundup(nearest=10)
self % nearest == 0 ? self : self + nearest - (self % nearest)
PayPal::Recurring.configure do |config|
config.sandbox = false
config.username = $config['paypal_api_username']
config.password = $config['paypal_api_password']
config.signature = $config['paypal_api_signature']
end
require 'csv'
$country_codes = {}
CSV.foreach("./files/country_codes.csv") do |row|
$country_codes[row.last] = row.first
end
gandi_opts = {}
gandi_opts[:env] = :test # unless ENV['RACK_ENV'] == 'production'
$gandi = Gandi::Session.new $config['gandi_api_key'], gandi_opts
$image_optim = ImageOptim.new pngout: false, svgo: false
Money.locale_backend = nil
Money.default_currency = Money::Currency.new("USD")
Money.rounding_mode = BigDecimal::ROUND_HALF_UP
$twilio = Twilio::REST::Client.new $config['twilio_account_sid'], $config['twilio_auth_token']
Minfraud.configure do |c|
c.account_id = $config['minfraud_account_id']
c.license_key = $config['minfraud_license_key']
c.enable_validation = true
end
Airbrake.configure do |c|
c.project_id = $config['airbrake_project_id']
c.project_key = $config['airbrake_project_key']
end
Airbrake.add_filter do |notice|
if notice[:params][:password]
# Filter out password.
notice[:params][:password] = '[Filtered]'
end
def rounddown(nearest=10)
self % nearest == 0 ? self : self - (self % nearest)
end
notice.ignore! if notice.stash[:exception].is_a?(Sinatra::NotFound)
end
Airbrake.add_filter Airbrake::Sidekiq::RetryableJobsFilter.new

13
ext/NilClass.rb Normal file
View file

@ -0,0 +1,13 @@
class NilClass
def empty?
true
end
def blank?
true
end
def not_an_integer?
true
end
end

169
ext/ago.rb Normal file
View file

@ -0,0 +1,169 @@
module Ago
module VERSION
MAJOR = 0
MINOR = 1
TINY = 5
class << self
def pretty
"#{MAJOR}.#{MINOR}.#{TINY}"
end
alias_method :print, :pretty
end
end
Ago::Order = [:year, :month, :week, :day, :hour, :minute, :second]
Ago::Units = {
:year => {
:basic => 60 * 60 * 24 * 365,
:gregorian => 86400 * 365.2425,
},
:month => {
:basic => 60 * 60 * 24 * 30,
:gregorian => 86400 * 30.436875,
},
:week => {
:basic => 60 * 60 * 24 * 7,
:gregorian => 86400 * 7.02389423076923,
},
:day => {
:basic => 60 * 60 * 24
},
:hour => {
:basic => 60 * 60
},
:minute => {
:basic => 60
},
:second => {
:basic => 1
}
}
def Ago.calendar_check(calendar)
error = ":calendar => value must be either :basic or :gregorian."
unless calendar == :basic || calendar == :gregorian
raise ArgumentError, error
end
end
module Ago::TimeAgo
# Generate List of valid unit :symbols
valids = ""
Ago::Order.each do |u|
unless u == :second
valids += ":#{u.to_s}, "
else
valids += "and :#{u.to_s}."
end
end
Valids = valids
def ago_in_words(opts={})
# Process options {hash}
focus = opts[:focus] ? opts[:focus] : 0
start_at = opts[:start_at] ? opts[:start_at] : :year
now = opts[:now] ? opts[:now] : Time.now
in_time = opts[:in_time] ? opts[:in_time] : :past
calendar = opts[:calendar] ? opts[:calendar] : :basic
# Filter out invalid arguments for :in_time
in_time_error = ":in_time => value must be either :past or :future, " \
+ "depending on whether the Time object is before or after Time.now."
unless in_time == :past || in_time == :future
raise ArgumentError, in_time_error
end
# Filter out invalid arguments for :calendar
Ago.calendar_check(calendar)
# Filter out invalid arguments for :start_at and :focus
base_error = " => value must either be a number " +
"between 0 and 6 (inclusive),\nor one of the following " +
"symbols: " + Valids
{:focus => focus, :start_at => start_at}.each do |key, opt|
opt_error = ":" + key.to_s + base_error
if opt.class == Integer
raise ArgumentError, opt_error unless opt >= 0 && opt <= 6
elsif opt.class == Symbol
raise ArgumentError, opt_error unless Ago::Units[opt]
else
raise ArgumentError, opt_error
end
end
# Create Variables necessary for processing.
frags = []
output = ""
count = 0
now = calendar == :basic ? now.to_i : now.to_f
my_time = calendar == :basic ? self.to_i : self.to_f
if now > my_time
diff = now - my_time
tail = " ago"
elsif my_time > now
diff = my_time - now
tail = " from now"
else
diff = 0
tail = "just now"
end
# Begin Ago.ago processing
Ago::Order.each do |u|
if calendar == :gregorian && Ago::Units[u][:gregorian]
value = Ago::Units[u][:gregorian]
else
value = Ago::Units[u][:basic]
end
count += 1
# Move further ahead in the Ago::Units array if start_at is farther back than
# the current point in the array.
if start_at.class == Integer
next if count <= start_at
elsif start_at.class == Symbol
next if Ago::Order.index(u) < Ago::Order.index(start_at)
end
n = (diff/value).floor
if n > 0
plural = n > 1 ? "s" : ""
frags << "#{n} #{u.to_s + plural}"
# If the argument passed into ago() is a symbol, focus the ago statement
# down to the level specified in the symbol
if focus.class == Symbol
break if u == focus || u == :second
elsif focus.class == Integer
if focus == 0 || u == :second
break
else
focus -= 1
end
end
diff -= n * value
end
end
# Der Kommissar
frags.size.times do |n|
output += frags[n]
output += ", " unless n == frags.size - 1
end
return output + "#{tail}"
end
def from_now_in_words(opts={})
ago_in_words(opts)
end
end
end
class Time
include Ago::TimeAgo
end

13
ext/float.rb Normal file
View file

@ -0,0 +1,13 @@
class Float
def round_to(x)
(self * 10**x).round.to_f / 10**x
end
def ceil_to(x)
(self * 10**x).ceil.to_f / 10**x
end
def floor_to(x)
(self * 10**x).floor.to_f / 10**x
end
end

5
ext/mock_redis.rb Normal file
View file

@ -0,0 +1,5 @@
class MockRedis
def publish(channel, message)
# TODO make actually useful
end
end

83
ext/numeric.rb Normal file
View file

@ -0,0 +1,83 @@
class Numeric
ONE_MEGABYTE = 1000000
def roundup(nearest=10)
self % nearest == 0 ? self : self + nearest - (self % nearest)
end
def to_mb
self/ONE_MEGABYTE.to_f
end
def to_bytes_pretty
computed = nil
unit = nil
{
'B' => 1000,
'KB' => 1000 * 1000,
'MB' => 1000 * 1000 * 1000,
'GB' => 1000 * 1000 * 1000 * 1000,
'TB' => 1000 * 1000 * 1000 * 1000 * 1000
}.each_pair { |e, s|
if self < s
computed = (self.to_f / (s / 1000)).round(2)
unit = e
break
end
}
computed = computed.to_i if computed.modulo(1) == 0.0
"#{computed} #{unit}"
end
def to_gigabytes_pretty
self.to_gigabytes.to_s + ' GB'
end
def to_gigabytes
self / (1000**3)
end
def to_comma_separated
self.to_i.to_s.chars.to_a.reverse.each_slice(3).map(&:join).join(",").reverse
end
def format_large_number
return self.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
if self > 9999
if self > 999999999
unit_char = 'B' #billion
unit_amount = 1000000000.0
elsif self > 999999
unit_char = 'M' #million
unit_amount = 1000000.0
elsif self > 9999
unit_char = 'K' #thousand
unit_amount = 1000.0
end
self_divided = self.to_f / unit_amount
self_rounded = self_divided.round(1)
if self_rounded.denominator == 1
return sprintf ("%.0f" + unit_char), self_divided
else
return sprintf ("%.1f" + unit_char), self_divided
end
else
if self > 999
return self.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
else
return self
end
end
end
def to_space_pretty
to_bytes_pretty
end
def not_an_integer?
!self.integer?
end
end

View file

@ -0,0 +1,8 @@
module Sequel::Plugins::CreateTimestamp
module InstanceMethods
def before_create
self.created_at = Time.now if respond_to?(:created_at) && !self.created_at
super
end
end
end

View file

@ -0,0 +1,33 @@
module Sequel
module ParanoidDelete
def self.included(base)
base.extend(ClassMethods)
end
# Instead of actually deleting, we just set is_deleted to true,
# and look for it with our default dataset filter.
def delete
self.is_deleted = true
save :validate => false
true
end
module ClassMethods
# There's no hook for setting default filters after inheritance (that I'm aware of),
# so this adds the filter for the first time the class' dataset is accessed for the new model.
def dataset
if @_is_deleted_filter_set.nil?
#KD: I turned this off because I think it's easier to do this manually.
#@dataset.filter! is_deleted: false
@_is_deleted_filter_set = true
end
super
end
end
end
# Model.include ParanoidDelete
end

7
ext/sinatra/base.rb Normal file
View file

@ -0,0 +1,7 @@
class Sinatra::Base
alias_method :render_original, :render
def render(engine, data, options = {}, locals = {}, &block)
options.merge!(pretty: self.class.development?) if engine == :slim && options[:pretty].nil?
render_original engine, data, options, locals, &block
end
end

View file

@ -0,0 +1,5 @@
class Sinatra::IndifferentHash
def not_an_integer?
true
end
end

26
ext/string.rb Normal file
View file

@ -0,0 +1,26 @@
class String
def shorten(length, usedots=true)
if usedots
return self if self.length < length
"#{self[0..length-3]}..."
else
self[0..length]
end
end
def unindent
gsub /^#{scan(/^\s*/).min_by{|l|l.length}}/, ""
end
def blank?
return true if self == ''
false
end
def not_an_integer?
Integer(self)
false
rescue ArgumentError
true
end
end

7
ext/tempfile.rb Normal file
View file

@ -0,0 +1,7 @@
class Tempfile
alias_method :size_original, :size
def size
s = size_original
s.nil? ? 0 : s
end
end

9
ext/time.rb Normal file
View file

@ -0,0 +1,9 @@
class Time
def ago
self.ago_in_words
end
def from_now
self.from_now_in_words
end
end

BIN
files/GeoLiteCity.dat Normal file

Binary file not shown.

250
files/country_codes.csv Normal file
View file

@ -0,0 +1,250 @@
Afghanistan,AF
Åland Islands,AX
Albania,AL
Algeria,DZ
American Samoa,AS
Andorra,AD
Angola,AO
Anguilla,AI
Antarctica,AQ
Antigua and Barbuda,AG
Argentina,AR
Armenia,AM
Aruba,AW
Australia,AU
Austria,AT
Azerbaijan,AZ
Bahamas,BS
Bahrain,BH
Bangladesh,BD
Barbados,BB
Belarus,BY
Belgium,BE
Belize,BZ
Benin,BJ
Bermuda,BM
Bhutan,BT
"Bolivia, Plurinational State of",BO
"Bonaire, Sint Eustatius and Saba",BQ
Bosnia and Herzegovina,BA
Botswana,BW
Bouvet Island,BV
Brazil,BR
British Indian Ocean Territory,IO
Brunei Darussalam,BN
Bulgaria,BG
Burkina Faso,BF
Burundi,BI
Cambodia,KH
Cameroon,CM
Canada,CA
Cape Verde,CV
Cayman Islands,KY
Central African Republic,CF
Chad,TD
Chile,CL
China,CN
Christmas Island,CX
Cocos (Keeling) Islands,CC
Colombia,CO
Comoros,KM
Congo,CG
"Congo, the Democratic Republic of the",CD
Cook Islands,CK
Costa Rica,CR
Côte d'Ivoire,CI
Croatia,HR
Cuba,CU
Curaçao,CW
Cyprus,CY
Czech Republic,CZ
Denmark,DK
Djibouti,DJ
Dominica,DM
Dominican Republic,DO
Ecuador,EC
Egypt,EG
El Salvador,SV
Equatorial Guinea,GQ
Eritrea,ER
Estonia,EE
Ethiopia,ET
Falkland Islands (Malvinas),FK
Faroe Islands,FO
Fiji,FJ
Finland,FI
France,FR
French Guiana,GF
French Polynesia,PF
French Southern Territories,TF
Gabon,GA
Gambia,GM
Georgia,GE
Germany,DE
Ghana,GH
Gibraltar,GI
Greece,GR
Greenland,GL
Grenada,GD
Guadeloupe,GP
Guam,GU
Guatemala,GT
Guernsey,GG
Guinea,GN
Guinea-Bissau,GW
Guyana,GY
Haiti,HT
Heard Island and McDonald Mcdonald Islands,HM
Holy See (Vatican City State),VA
Honduras,HN
Hong Kong,HK
Hungary,HU
Iceland,IS
India,IN
Indonesia,ID
"Iran, Islamic Republic of",IR
Iraq,IQ
Ireland,IE
Isle of Man,IM
Israel,IL
Italy,IT
Jamaica,JM
Japan,JP
Jersey,JE
Jordan,JO
Kazakhstan,KZ
Kenya,KE
Kiribati,KI
"Korea, Democratic People's Republic of",KP
"Korea, Republic of",KR
Kuwait,KW
Kyrgyzstan,KG
Lao People's Democratic Republic,LA
Latvia,LV
Lebanon,LB
Lesotho,LS
Liberia,LR
Libya,LY
Liechtenstein,LI
Lithuania,LT
Luxembourg,LU
Macao,MO
"Macedonia, the Former Yugoslav Republic of",MK
Madagascar,MG
Malawi,MW
Malaysia,MY
Maldives,MV
Mali,ML
Malta,MT
Marshall Islands,MH
Martinique,MQ
Mauritania,MR
Mauritius,MU
Mayotte,YT
Mexico,MX
"Micronesia, Federated States of",FM
"Moldova, Republic of",MD
Monaco,MC
Mongolia,MN
Montenegro,ME
Montserrat,MS
Morocco,MA
Mozambique,MZ
Myanmar,MM
Namibia,NA
Nauru,NR
Nepal,NP
Netherlands,NL
New Caledonia,NC
New Zealand,NZ
Nicaragua,NI
Niger,NE
Nigeria,NG
Niue,NU
Norfolk Island,NF
Northern Mariana Islands,MP
Norway,NO
Oman,OM
Pakistan,PK
Palau,PW
"Palestine, State of",PS
Panama,PA
Papua New Guinea,PG
Paraguay,PY
Peru,PE
Philippines,PH
Pitcairn,PN
Poland,PL
Portugal,PT
Puerto Rico,PR
Qatar,QA
Réunion,RE
Romania,RO
Russian Federation,RU
Rwanda,RW
Saint Barthélemy,BL
"Saint Helena, Ascension and Tristan da Cunha",SH
Saint Kitts and Nevis,KN
Saint Lucia,LC
Saint Martin (French part),MF
Saint Pierre and Miquelon,PM
Saint Vincent and the Grenadines,VC
Samoa,WS
San Marino,SM
Sao Tome and Principe,ST
Saudi Arabia,SA
Senegal,SN
Serbia,RS
Seychelles,SC
Sierra Leone,SL
Singapore,SG
Sint Maarten (Dutch part),SX
Slovakia,SK
Slovenia,SI
Solomon Islands,SB
Somalia,SO
South Africa,ZA
South Georgia and the South Sandwich Islands,GS
South Sudan,SS
Spain,ES
Sri Lanka,LK
Sudan,SD
Suriname,SR
Svalbard and Jan Mayen,SJ
Swaziland,SZ
Sweden,SE
Switzerland,CH
Syrian Arab Republic,SY
"Taiwan, Province of China",TW
Tajikistan,TJ
"Tanzania, United Republic of",TZ
Thailand,TH
Timor-Leste,TL
Togo,TG
Tokelau,TK
Tonga,TO
Trinidad and Tobago,TT
Tunisia,TN
Turkey,TR
Turkmenistan,TM
Turks and Caicos Islands,TC
Tuvalu,TV
Uganda,UG
Ukraine,UA
United Arab Emirates,AE
United Kingdom,GB
United States,US
United States Minor Outlying Islands,UM
Uruguay,UY
Uzbekistan,UZ
Vanuatu,VU
"Venezuela, Bolivarian Republic of",VE
Viet Nam,VN
"Virgin Islands, British",VG
"Virgin Islands, U.S.",VI
Wallis and Futuna,WF
Western Sahara,EH
Yemen,YE
Zambia,ZM
Zimbabwe,ZW
European Union, EU
1 Afghanistan AF
2 Åland Islands AX
3 Albania AL
4 Algeria DZ
5 American Samoa AS
6 Andorra AD
7 Angola AO
8 Anguilla AI
9 Antarctica AQ
10 Antigua and Barbuda AG
11 Argentina AR
12 Armenia AM
13 Aruba AW
14 Australia AU
15 Austria AT
16 Azerbaijan AZ
17 Bahamas BS
18 Bahrain BH
19 Bangladesh BD
20 Barbados BB
21 Belarus BY
22 Belgium BE
23 Belize BZ
24 Benin BJ
25 Bermuda BM
26 Bhutan BT
27 Bolivia, Plurinational State of BO
28 Bonaire, Sint Eustatius and Saba BQ
29 Bosnia and Herzegovina BA
30 Botswana BW
31 Bouvet Island BV
32 Brazil BR
33 British Indian Ocean Territory IO
34 Brunei Darussalam BN
35 Bulgaria BG
36 Burkina Faso BF
37 Burundi BI
38 Cambodia KH
39 Cameroon CM
40 Canada CA
41 Cape Verde CV
42 Cayman Islands KY
43 Central African Republic CF
44 Chad TD
45 Chile CL
46 China CN
47 Christmas Island CX
48 Cocos (Keeling) Islands CC
49 Colombia CO
50 Comoros KM
51 Congo CG
52 Congo, the Democratic Republic of the CD
53 Cook Islands CK
54 Costa Rica CR
55 Côte d'Ivoire CI
56 Croatia HR
57 Cuba CU
58 Curaçao CW
59 Cyprus CY
60 Czech Republic CZ
61 Denmark DK
62 Djibouti DJ
63 Dominica DM
64 Dominican Republic DO
65 Ecuador EC
66 Egypt EG
67 El Salvador SV
68 Equatorial Guinea GQ
69 Eritrea ER
70 Estonia EE
71 Ethiopia ET
72 Falkland Islands (Malvinas) FK
73 Faroe Islands FO
74 Fiji FJ
75 Finland FI
76 France FR
77 French Guiana GF
78 French Polynesia PF
79 French Southern Territories TF
80 Gabon GA
81 Gambia GM
82 Georgia GE
83 Germany DE
84 Ghana GH
85 Gibraltar GI
86 Greece GR
87 Greenland GL
88 Grenada GD
89 Guadeloupe GP
90 Guam GU
91 Guatemala GT
92 Guernsey GG
93 Guinea GN
94 Guinea-Bissau GW
95 Guyana GY
96 Haiti HT
97 Heard Island and McDonald Mcdonald Islands HM
98 Holy See (Vatican City State) VA
99 Honduras HN
100 Hong Kong HK
101 Hungary HU
102 Iceland IS
103 India IN
104 Indonesia ID
105 Iran, Islamic Republic of IR
106 Iraq IQ
107 Ireland IE
108 Isle of Man IM
109 Israel IL
110 Italy IT
111 Jamaica JM
112 Japan JP
113 Jersey JE
114 Jordan JO
115 Kazakhstan KZ
116 Kenya KE
117 Kiribati KI
118 Korea, Democratic People's Republic of KP
119 Korea, Republic of KR
120 Kuwait KW
121 Kyrgyzstan KG
122 Lao People's Democratic Republic LA
123 Latvia LV
124 Lebanon LB
125 Lesotho LS
126 Liberia LR
127 Libya LY
128 Liechtenstein LI
129 Lithuania LT
130 Luxembourg LU
131 Macao MO
132 Macedonia, the Former Yugoslav Republic of MK
133 Madagascar MG
134 Malawi MW
135 Malaysia MY
136 Maldives MV
137 Mali ML
138 Malta MT
139 Marshall Islands MH
140 Martinique MQ
141 Mauritania MR
142 Mauritius MU
143 Mayotte YT
144 Mexico MX
145 Micronesia, Federated States of FM
146 Moldova, Republic of MD
147 Monaco MC
148 Mongolia MN
149 Montenegro ME
150 Montserrat MS
151 Morocco MA
152 Mozambique MZ
153 Myanmar MM
154 Namibia NA
155 Nauru NR
156 Nepal NP
157 Netherlands NL
158 New Caledonia NC
159 New Zealand NZ
160 Nicaragua NI
161 Niger NE
162 Nigeria NG
163 Niue NU
164 Norfolk Island NF
165 Northern Mariana Islands MP
166 Norway NO
167 Oman OM
168 Pakistan PK
169 Palau PW
170 Palestine, State of PS
171 Panama PA
172 Papua New Guinea PG
173 Paraguay PY
174 Peru PE
175 Philippines PH
176 Pitcairn PN
177 Poland PL
178 Portugal PT
179 Puerto Rico PR
180 Qatar QA
181 Réunion RE
182 Romania RO
183 Russian Federation RU
184 Rwanda RW
185 Saint Barthélemy BL
186 Saint Helena, Ascension and Tristan da Cunha SH
187 Saint Kitts and Nevis KN
188 Saint Lucia LC
189 Saint Martin (French part) MF
190 Saint Pierre and Miquelon PM
191 Saint Vincent and the Grenadines VC
192 Samoa WS
193 San Marino SM
194 Sao Tome and Principe ST
195 Saudi Arabia SA
196 Senegal SN
197 Serbia RS
198 Seychelles SC
199 Sierra Leone SL
200 Singapore SG
201 Sint Maarten (Dutch part) SX
202 Slovakia SK
203 Slovenia SI
204 Solomon Islands SB
205 Somalia SO
206 South Africa ZA
207 South Georgia and the South Sandwich Islands GS
208 South Sudan SS
209 Spain ES
210 Sri Lanka LK
211 Sudan SD
212 Suriname SR
213 Svalbard and Jan Mayen SJ
214 Swaziland SZ
215 Sweden SE
216 Switzerland CH
217 Syrian Arab Republic SY
218 Taiwan, Province of China TW
219 Tajikistan TJ
220 Tanzania, United Republic of TZ
221 Thailand TH
222 Timor-Leste TL
223 Togo TG
224 Tokelau TK
225 Tonga TO
226 Trinidad and Tobago TT
227 Tunisia TN
228 Turkey TR
229 Turkmenistan TM
230 Turks and Caicos Islands TC
231 Tuvalu TV
232 Uganda UG
233 Ukraine UA
234 United Arab Emirates AE
235 United Kingdom GB
236 United States US
237 United States Minor Outlying Islands UM
238 Uruguay UY
239 Uzbekistan UZ
240 Vanuatu VU
241 Venezuela, Bolivarian Republic of VE
242 Viet Nam VN
243 Virgin Islands, British VG
244 Virgin Islands, U.S. VI
245 Wallis and Futuna WF
246 Western Sahara EH
247 Yemen YE
248 Zambia ZM
249 Zimbabwe ZW
250 European Union EU

View file

@ -0,0 +1,85 @@
raise 'nope'
Sequel.migration do
up {
raise 'derp'
DB.drop_table :stats
DB.drop_table :stat_referrers
DB.drop_table :stat_paths
DB.drop_table :stat_locations
DB.create_table! :hits do
primary_key :id
Integer :site_id, index: true
Integer :hit_referrer_id
Integer :hit_path_id
Integer :hit_location_id
Bignum :bandwidth
Time :accessed_at, index: true
end
DB.create_table! :hit_referrers do
primary_key :id
String :uri, index: {unique: true}
end
DB.create_table! :hit_locations do
primary_key :id
String :country_code2
String :region_name
String :city_name
Float :latitude
Float :longitude
end
DB.create_table! :hit_paths do
primary_key :id
String :path, index: {unique: true}
end
}
down {
raise 'No.' if ENV['RACK_ENV'] == 'production'
%i{hits hit_referrers hit_locations hit_paths}.each do |t|
DB.drop_table t
end
DB.create_table! :stats do
primary_key :id
Integer :site_id
Date :created_at
Integer :hits
Integer :views
Integer :comments
Integer :follows
Integer :site_updates
end
DB.create_table! :stat_referrers do
primary_key :id
Integer :stat_id
String :url
String :views
end
DB.create_table! :stat_locations do
primary_key :id
Integer :stat_id
String :country_code2
String :region_name
String :city_name
Decimal :latitude
Decimal :longitude
Integer :views
end
DB.create_table :stat_paths do
primary_key :id
Integer :stat_id
String :name
Integer :views
end
}
end

View file

@ -1,73 +0,0 @@
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/neocities.org.crt;
ssl_certificate_key /etc/nginx/certs/neocities.org.key;
server_name www.neocities.org;
rewrite ^(.*)$ $scheme://neocities.org$1 permanent;
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/neocities.org.crt;
ssl_certificate_key /etc/nginx/certs/neocities.org.key;
set $ssl off;
if ($scheme = https) {
set $ssl on;
}
root /home/web/neocities-web/public;
server_name neocities.org;
access_log /var/log/nginx/neocities-web.log;
error_page 500 = /gateway_error.html;
# location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
# expires 60s;
# log_not_found off;
# }
try_files $uri @neocities;
location @neocities {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Ssl $ssl;
proxy_max_temp_file_size 0;
# proxy_pass http://127.0.0.1:20000;
proxy_pass http://unix:/var/run/neocities/neocities.sock;
break;
}
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/neocities.org.crt;
ssl_certificate_key /etc/nginx/certs/neocities.org.key;
server_name ~^(?<subdomain>.+)\.neocities.org$;
access_log /var/log/nginx/neocities-sites.log neocities;
root /home/web/neocities-web/public/sites/$subdomain;
index /index.html;
error_page 404 = @notfound;
location @notfound {
try_files /not_found.html @notfound_root;
}
location @notfound_root {
root /home/web/neocities-web/public;
try_files /web_site_not_found.html =404;
}
location ~* \.(html|jpg|jpeg|png|gif|ico|css|js)$ {
# expires 20s;
log_not_found off;
}
}

View file

@ -1,7 +0,0 @@
/var/log/nginx/neocities-sites.log {
rotate 14
create 0640 www-data adm
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}

View file

@ -1,111 +0,0 @@
user www-data www-data;
worker_processes 8;
pid /var/run/nginx.pid;
events {
worker_connections 4000;
multi_accept on;
use epoll;
}
http {
root /home/web/neocities-web/public;
error_page 404 = /not_found.html;
log_format neocities '$time_iso8601 $subdomain $bytes_sent $request_uri ';
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH;
ssl_prefer_server_ciphers on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
reset_timedout_connection on;
charset utf-8;
client_max_body_size 20m;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_min_length 1024;
# gzip_vary on;
# gzip_proxied any;
gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}

View file

@ -0,0 +1,56 @@
var page = require('webpage').create()
var system = require('system')
var maxTimeout = 15000
if (system.args.length === 1) {
console.log('required args: <siteURL> <outputFilePath>');
phantom.exit(1)
}
var address = system.args[1]
var outputPath = system.args[2]
page.viewportSize = { width: 1280, height: 960 }
page.clipRect = { top: 0, left: 0, width: 1280, height: 960}
/*
In development, not working yet.
page.settings.scriptTimeout = 1000
page.onLongRunningScript = function() {
page.stopJavaScript()
phantom.exit(4)
}
*/
var t = Date.now()
console.log('Loading ' + address)
setTimeout(function() {
console.log('timeout')
phantom.exit(62)
}, maxTimeout)
page.settings.resourceTimeout = maxTimeout
page.onResourceTimeout = function(e) {
console.log(e.errorCode)
console.log(e.errorString)
console.log(e.url)
phantom.exit(3)
}
page.open(address, function(status) {
if(status !== 'success') {
console.log('failed')
phantom.exit(2)
}
page.render(outputPath)
console.log('Loading time ' + (Date.now() - t) + ' msec');
phantom.exit()
})

24
files/root_site_uris.txt Normal file
View file

@ -0,0 +1,24 @@
1,weekly,https://neocities.org
0.9,daily,https://neocities.org/browse
0.9,monthly,https://neocities.org/signin
0.9,hourly,https://neocities.org/activity
0.9,monthly,https://neocities.org/tutorials
0.9,monthly,https://neocities.org/supporter
0.9,monthly,https://neocities.org/cli
0.9,monthly,https://neocities.org/about
0.9,monthly,https://neocities.org/donate
0.9,monthly,https://neocities.org/api
0.9,monthly,https://neocities.org/press
0.8,monthly,https://neocities.org/terms
0.8,weekly,https://blog.neocities.org
0.7,monthly,https://neocities.org/contact
0.6,daily,https://neocities.org/browse?sort_by=special_sauce&tag=
0.6,hourly,https://neocities.org/browse?sort_by=last_updated&tag=
0.6,daily,https://neocities.org/browse?sort_by=supporters&tag=
0.6,weekly,https://neocities.org/browse?sort_by=featured&tag=
0.6,daily,https://neocities.org/browse?sort_by=tipping_enabled&tag=
0.6,weekly,https://neocities.org/browse?sort_by=views&tag=
0.6,weekly,https://neocities.org/browse?sort_by=hits&tag=
0.6,hourly,https://neocities.org/browse?sort_by=newest&tag=
0.6,monthly,https://neocities.org/browse?sort_by=oldest&tag=
0.6,always,https://neocities.org/browse?sort_by=random&tag=

View file

@ -1,70 +0,0 @@
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3
##############################################################3
# Functions previously found in netbase
#
# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1
###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#
net.ipv4.tcp_max_syn_backlog = 3240000
net.core.somaxconn = 3240000
net.ipv4.tcp_max_tw_buckets = 1440000
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = cubic

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 KiB

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.rename_table :changes, :site_changes
}
down {
DB.rename_table :site_changes, :changes
}
end

View file

@ -0,0 +1,19 @@
Sequel.migration do
up {
DB.rename_column :events, :comment_id, :profile_comment_id
DB.create_table! :profile_comments do
primary_key :id
Integer :site_id
Integer :actioning_site_id
Text :message
DateTime :created_at
DateTime :updated_at
end
}
down {
DB.rename_column :events, :profile_comment_id, :comment_id
DB.drop_table :profile_comments
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :is_deleted, :boolean, default: false
}
down {
DB.drop_column :sites, :is_deleted
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :events, :is_deleted, :boolean, default: false
}
down {
DB.drop_column :events, :is_deleted
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :comments, :is_deleted, :boolean, default: false
}
down {
DB.drop_column :comments, :is_deleted
}
end

View file

@ -0,0 +1,15 @@
Sequel.migration do
up {
DB.create_table! :comment_likes do
primary_key :id
Integer :comment_id
Integer :site_id
Integer :actioning_site_id
DateTime :created_at
end
}
down {
DB.drop_table :comment_likes
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.drop_column :comment_likes, :site_id
}
down {
DB.add_column :comment_likes, :site_id, :integer
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :events, :actioning_site_id, :integer
}
down {
DB.drop_column :events, :actioning_site_id
}
end

View file

@ -0,0 +1,11 @@
Sequel.migration do
up {
DB.drop_column :events, :created_at
DB.add_column :events, :created_at, :timestamp, index: true
}
down {
DB.drop_column :events, :created_at
DB.add_column :events, :created_at, :integer, index: true
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.rename_column :events, :site_update_id, :site_change_id
}
down {
DB.rename_column :events, :site_change_id, :site_update_id
}
end

View file

@ -0,0 +1,14 @@
Sequel.migration do
up {
DB.create_table! :site_change_files do
primary_key :id
Integer :site_change_id
String :filename
DateTime :created_at
end
}
down {
DB.drop_table :site_change_files
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :site_change_files, :site_id, :integer
}
down {
DB.drop_column :site_change_files, :site_id
}
end

View file

@ -0,0 +1,18 @@
Sequel.migration do
up {
DB.create_table! :reports do
primary_key :id
Integer :site_id
Integer :reporting_site_id
String :type
Text :comments
Text :action_taken
String :ip
DateTime :created_at
end
}
down {
DB.drop_table :reports
}
end

View file

@ -0,0 +1,10 @@
Sequel.migration do
change do
#alter_table(:events) { add_index :created_at }
alter_table(:sites) { add_index :updated_at }
alter_table(:comment_likes) { add_index :comment_id }
alter_table(:comment_likes) { add_index :actioning_site_id }
alter_table(:sites_tags) { add_index :tag_id }
alter_table(:tags) { add_index :name }
end
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :editor_theme, :text
}
down {
DB.drop_column :sites, :editor_theme
}
end

View file

@ -0,0 +1,11 @@
Sequel.migration do
up {
DB.add_column :sites, :email_confirmation_token, :text
DB.add_column :sites, :email_confirmed, :boolean, default: false
}
down {
DB.drop_column :sites, :email_confirmation_token
DB.drop_column :sites, :email_confirmed
}
end

View file

@ -0,0 +1,12 @@
Sequel.migration do
up {
DB.create_table! :blocked_ips do
String :ip, primary_key: true
DateTime :created_at
end
}
down {
DB.drop_table :blocked_ips
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :profile_comments_enabled, :boolean, default: true
}
down {
DB.drop_column :sites, :profile_comments_enabled
}
end

12
migrations/040_add_ssl.rb Normal file
View file

@ -0,0 +1,12 @@
Sequel.migration do
up {
DB.add_column :sites, :ssl_key, :text
DB.add_column :sites, :ssl_cert, :text
}
down {
DB.drop_column :sites, :ssl_key
DB.drop_column :sites, :ssl_cert
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :ssl_cert_intermediate, :text
}
down {
DB.drop_column :sites, :ssl_cert_intermediate
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.drop_column :sites, :ssl_cert_intermediate
}
down {
DB.add_column :sites, :ssl_cert_intermediate, :text
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :commenting_allowed, :boolean, default: false
}
down {
DB.drop_column :sites, :commenting_allowed
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :plan_type, :text
}
down {
DB.drop_column :sites, :plan_type
}
end

View file

@ -0,0 +1,15 @@
Sequel.migration do
up {
DB.drop_table :servers
}
down {
DB.create_table! :servers do
primary_key :id
String :ip
Integer :slots_available
DateTime :created_at
DateTime :updated_at
end
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :parent_site_id, :integer, index: true
}
down {
DB.drop_column :sites, :parent_site_id
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :tags, :is_nsfw, :boolean, default: false, index: true
}
down {
DB.drop_column :tags, :is_nsfw
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :stripe_subscription_id, :text
}
down {
DB.drop_column :sites, :stripe_subscription_id
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :space_used, :bigint, default: 0, index: true
}
down {
DB.drop_column :sites, :space_used
}
end

View file

@ -0,0 +1,17 @@
Sequel.migration do
up {
DB.create_table! :site_files do
Integer :site_id, index: true
String :path
Bigint :size
String :sha1_hash
Boolean :is_directory, default: false
DateTime :created_at
DateTime :updated_at
end
}
down {
DB.drop_table :site_files
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :site_updated_at, DateTime, index: true
}
down {
DB.drop_column :sites, :site_updated_at
}
end

View file

@ -0,0 +1,30 @@
Sequel.migration do
up {
DB.drop_table :site_files
DB.create_table! :site_files do
Integer :site_id
String :path
Bigint :size
String :sha1_hash
Boolean :is_directory, default: false
DateTime :created_at
DateTime :updated_at
primary_key [:site_id, :path], :name => :site_files_pk
end
}
down {
DB.drop_table :site_files
DB.create_table! :site_files do
Integer :site_id, index: true
String :path
Bigint :size
String :sha1_hash
Boolean :is_directory, default: false
DateTime :created_at
DateTime :updated_at
end
}
end

View file

@ -0,0 +1,13 @@
Sequel.migration do
up {
DB.add_column :sites, :send_emails, :boolean, default: true
DB.add_column :sites, :send_comment_emails, :boolean, default: true
DB.add_column :sites, :send_follow_emails, :boolean, default: true
}
down {
DB.drop_column :sites, :send_emails
DB.drop_column :sites, :send_comment_emails
DB.drop_column :sites, :send_follow_emails
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :deleted_reason, :text
}
down {
DB.drop_column :sites, :deleted_reason
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :featured_at, DateTime, index: true
}
down {
DB.drop_column :sites, :featured_at
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :api_calls, Integer, default: 0, index: true
}
down {
DB.drop_column :sites, :api_calls
}
end

View file

@ -0,0 +1,11 @@
Sequel.migration do
up {
DB.add_column :sites, :paypal_profile_id, String
DB.add_column :sites, :paypal_token, String
}
down {
DB.drop_column :sites, :paypal_profile_id
DB.drop_column :sites, :paypal_token
}
end

View file

@ -0,0 +1,9 @@
Sequel.migration do
up {
DB.add_column :sites, :paypal_active, :boolean, default: false
}
down {
DB.drop_column :sites, :paypal_active
}
end

Some files were not shown because too many files have changed in this diff Show more