Commit graph

568 commits

Author SHA1 Message Date
Calvin Montgomery 709724efd4 Warn moderators when a channel exceeds size limit
When the chandump is saved, the size of the file is checked.  If it is over the limit, moderators are displayed a message indicating that the channel is too large and they should remove extra playlist items, filters, and/or emotes.

This is a partial solution for #421.
2014-12-26 11:19:19 -05:00
Calvin Montgomery 3689aafe3b Fix all video adds getting stuck when one fails
Whenever a urlRetrieve() fails due to an unexpected error (ENOTFOUND, ETIMEDOUT, Socket hang up, etc.), the domain handler and the global exception handler would detect this and not crash the server, however the dirty internal state would somehow prevent future HTTP requests from completing successfully.

Removed domain usage since that feature is marked "unstable" and is rumored to be marked for deprecation in future versions of node.  Using the "error" event of the request object itself, which means errors are local in scope and won't pollute global state.  This should have been the solution originally, but when urlRetrieve() was written, I was not as familiar with node.
2014-12-26 10:39:47 -05:00
Calvin Montgomery c39c394f36 Add auto DB conversion for utf8mb4 2014-12-14 21:53:25 -05:00
Calvin Montgomery 9deff9bdb1 Change charset for certain fields to utf8mb4
The underlying cause of #419 is the default utf8 collation in MySQL/MariaDB, which only supports the base plane of Unicode (\u0000-\uffff).  By changing the collation to utf8mb4_general_ci, stuff like ban reasons and profile text may have emoji and other non-base-plane Unicode.

The charset for playlist titles is NOT changed, and non-base-plane characters are replaced by question marks.  This is because switching to utf8mb4 would make the primary key too long.
2014-12-14 21:53:25 -05:00
Calvin Montgomery 4b8681c2a4 Don't break if the profile is corrupt 2014-12-14 21:53:25 -05:00
calzoneman e8a2753e19 Don't log HTTP 413, just send it to the client and be done 2014-12-12 17:35:57 -06:00
calzoneman a3a9fa074e Improve behavior of custom embed w.r.t. https
Instead of silently failing when browser policy blocks HTTP embeds over HTTPS, pre-fill the video div with an error message and attempt to salvage the link with s/http/https/g.
2014-12-10 23:56:17 -06:00
calzoneman 2b800f2a9a Hopefully fix typecheckedOn bug 2014-12-07 00:08:53 -06:00
calzoneman 918b865a9b Slight tweak to urlRetrieve error handler 2014-12-04 00:42:25 -06:00
calzoneman b587da6701 Several fixes
- User playlists should now list correctly (fixed a race condition)
  - Livestream types can autoplay (no longer stuck at currentTime = -3)
  - Playlist items with NaN duration do not break user playlist saving
  - ffmpeg support can handle live media (e.g. icecast)
  - Invalid volume is sanitized and an error message is added
  - JWPlayer displays correctly for both HTML5 and Flash
  - JWPlayer volume synchronization is fixed
  - <audio> and <video> tags are scaled correctly with .embed-responsive-item
2014-12-02 22:21:52 -06:00
calzoneman 2f2ed8aaf9 Fix Twitch not working on HTTPS and allow HTTPS channel page 2014-11-24 19:24:47 -06:00
calzoneman da2d461941 Fix caching and add gzip 2014-11-16 21:06:10 -06:00
calzoneman 4514151ad2 Add a better error message for google drive 1hr 2014-11-13 20:08:01 -06:00
calzoneman 681fc717c3 Fix google+ 2014-11-03 12:56:15 -06:00
calzoneman 318a924b6d Extend blacklist to PMs 2014-10-29 15:07:57 -05:00
calzoneman 575b762ba1 Fix kick behavior 2014-10-25 22:49:22 -05:00
calzoneman 4967e46343 Fix socket.io issue; fix ACP announcements 2014-10-24 10:24:02 -05:00
calzoneman 289807535a Typo 2014-10-24 10:24:02 -05:00
calzoneman b4bcb7637b Reject sockets with no IP 2014-10-24 10:24:02 -05:00
calzoneman 50dd0982a4 Fix IP extraction for socket.io 2014-10-24 10:24:02 -05:00
calzoneman 6e0735f3fe Update to socket.io 1.0 2014-10-24 10:23:30 -05:00
calzoneman 029fa62af2 Don't log errors for bad http requests 2014-10-12 11:36:54 -05:00
calzoneman fa85030524 Fix borrow-rank 2014-10-09 20:46:16 -05:00
calzoneman 4505ca19da Auto unpause after leader is removed 2014-10-07 23:01:36 -05:00
calzoneman e13e695077 Allow limiting # items per user 2014-10-06 11:32:25 -05:00
calzoneman 309e5d8b46 Doing it live 2014-09-13 00:01:54 -05:00
calzoneman d2027d2e5a Fix /unmute with empty name 2014-09-12 11:49:30 -05:00
calzoneman 731ab3f9a5 Ok this should actually fix it 2014-09-11 19:00:27 -05:00
calzoneman 2ea9dbcb75 Fix IP address race condition for logging 2014-09-11 18:56:33 -05:00
calzoneman 2b60ab8e10 Add permission for #402; fix a strange jwplayer issue 2014-09-06 22:59:28 -05:00
calzoneman 71114b0060 Fix: don't search channel library if rank < seeplaylist 2014-09-04 20:53:18 -05:00
calzoneman ea9fa0a95a Fix /smute with 0 args throwing error 2014-09-02 16:46:53 -05:00
calzoneman 12447ce5dc Give up early if username is invalid for rank change 2014-09-01 20:33:11 -05:00
calzoneman 66865f718c Fix Error: Requested Range Not Satisfiable 2014-09-01 14:36:24 -05:00
calzoneman 91c24518c5 Conditionally allow ASCII characters (for Xaekai) 2014-08-29 16:38:57 -05:00
calzoneman 7002874bbb Minor fix for messages with spaces only 2014-08-29 15:49:32 -05:00
calzoneman 484b695965 Disallow ASCII control characters in messages 2014-08-29 15:47:56 -05:00
calzoneman 7b00ba10b9 Fixes at Xaekai's request 2014-08-27 18:45:11 -05:00
calzoneman c8684d58ed Fix handling of /mute with no name 2014-08-22 10:52:15 -05:00
calzoneman b3c3ee93ce Hopefully fix an error case
I have no idea why it's possible for sock.handshake to be defined and then undefined
2014-08-21 14:37:40 -05:00
calzoneman edac89b204 Fix x-forwarded-for resolution in http logging 2014-08-20 10:56:36 -05:00
calzoneman 088c547522 Update dependencies - execute npm update && npm rebuild after pulling 2014-08-19 22:27:59 -05:00
calzoneman ae42ac9c56 Remove ghost httpaccess.log file 2014-08-19 00:52:50 -05:00
calzoneman 6dfeab9657 Update rest of dependencies 2014-08-19 00:46:30 -05:00
calzoneman 4eb81a84d9 Update nodemailer, yamljs, q 2014-08-19 00:36:31 -05:00
calzoneman c693e84a46 Update bcrypt and fix a deprecated reference in auth 2014-08-19 00:25:36 -05:00
calzoneman 020e2326b5 Replace own static and log functions with serve-static and morgan 2014-08-19 00:21:32 -05:00
calzoneman 5f7adc98ba Update express dependency 2014-08-19 00:07:24 -05:00
calzoneman c2ba55ac0f Fail /kick, /ban if the target name is blank 2014-08-18 22:00:51 -05:00
Calvin Montgomery 5d624fa49f Merge pull request #396 from calzoneman/ipcloak
Change IP masking
2014-08-15 11:43:56 -05:00
calzoneman 0f2b93e5c5 Increment version number 2014-08-15 11:41:09 -05:00
calzoneman 3446eb5357 Add Google Docs checks for missing duration/title 2014-08-15 00:27:51 -05:00
calzoneman b82583a79c Remove IP leak from ban log message 2014-08-14 22:07:06 -05:00
calzoneman c255133a2b Fix wrong argument being passed 2014-08-14 22:02:58 -05:00
calzoneman 25ab4b62e5 Update cloaking function so the banlist looks right 2014-08-14 21:57:38 -05:00
calzoneman 722c55e0da Remove reference to maskIP 2014-08-14 21:50:34 -05:00
calzoneman c5a52d2ce5 Fix wrong scope on ipList 2014-08-14 21:45:25 -05:00
calzoneman 6b9968a489 Remove torblocker dependency 2014-08-14 21:44:33 -05:00
calzoneman 8fddbc3e6e Add IP cloaking; make tor bans channel specific 2014-08-14 21:42:13 -05:00
calzoneman ecca806a58 Fix an issue with quality selection 2014-08-14 16:28:44 -05:00
calzoneman dc3efd94c8 Remove JustinTV support as it is no longer in service 2014-08-13 13:51:09 -05:00
calzoneman fae1609a50 Apparently redirector is https sometimes 2014-08-12 18:34:37 -05:00
calzoneman b88f1931c6 Prevent vimeo from logging errors when videos become private/removed 2014-08-11 11:58:03 -05:00
Erik ef921b1f96 Fix logging of customizations 2014-08-09 14:41:12 -04:00
Calvin Montgomery ea79b7d6b1 Remove unused file 2014-08-08 23:29:07 -07:00
Calvin Montgomery 9ff23622a0 Fix a minor matching issue for google docs 2014-08-08 23:27:54 -07:00
Calvin Montgomery 4f7ec228d3 Fix regular expression for google docs parsing 2014-08-07 23:19:07 -07:00
Calvin Montgomery 4a3645e3ed Prevent invalid URI escapes from logging errors 2014-08-07 19:25:34 -07:00
Calvin Montgomery b7edfc31f9 Fix for google docs changing their video player: 2014-08-06 20:12:57 -07:00
Calvin Montgomery d94c596063 Require auth for read-only requests too 2014-08-04 18:01:57 -07:00
Calvin Montgomery 59dd733219 Fix null reference bug 2014-08-02 19:15:49 -07:00
Calvin Montgomery 84a07030d0 Disallow cloning playlist if user doesn't have seeplaylist permission 2014-08-02 19:12:09 -07:00
Calvin Montgomery d9f5c551e3 Fix TypeError due to race condition 2014-07-20 19:36:29 -07:00
Calvin Montgomery 79bb6a96cd Fix exception 2014-07-14 21:13:45 -07:00
Calvin Montgomery 89de33031c Merge pull request #386 from calzoneman/plusvideo
Google+ video support
2014-07-13 22:16:00 -07:00
Calvin Montgomery 35c6a68e5e Remove redundant RegExp constructor 2014-07-13 22:14:37 -07:00
Calvin Montgomery b1709758fd Increment version number 2014-07-13 22:13:16 -07:00
Calvin Montgomery 565e490078 Fix setFlag/waitFlag edge case that was causing duplicate joins 2014-07-13 12:23:04 -07:00
Calvin Montgomery e6d6e3391e Don't log gdocs 'exceeded quota' errors to error.log 2014-07-13 11:33:10 -07:00
Calvin Montgomery 989a737ea4 s/e.trace/e.stack 2014-07-13 11:31:41 -07:00
Calvin Montgomery 69772bf2ec Error handling for google+ 2014-07-13 11:29:50 -07:00
Calvin Montgomery 1e38b05800 Fix minor issue 2014-07-13 11:15:56 -07:00
Calvin Montgomery c213eb2f31 Minor fix 2014-07-12 18:39:48 -07:00
Calvin Montgomery b6a1dd8cb3 Send onMediaChange (fixes voteskip stuff) 2014-07-11 21:09:28 -07:00
Calvin Montgomery 937ad04967 Change meta format so it persists in DB and on disk 2014-07-11 20:42:13 -07:00
Calvin Montgomery c522516b88 Implement serverside Google+ retrieval 2014-07-10 23:03:13 -07:00
Calvin Montgomery 052afaf2f6 Start working on google+ support 2014-07-10 20:10:00 -07:00
Calvin Montgomery b28fd9e4a8 Add permission for /clear and log it 2014-07-10 20:03:47 -07:00
Calvin Montgomery c7ef76c518 Minor change 2014-07-10 19:54:26 -07:00
Calvin Montgomery 0f11615a1f Increment version number 2014-07-10 19:52:16 -07:00
Calvin Montgomery 1c77a24839 Fix activeLock bug 2014-07-09 22:37:11 -07:00
Calvin Montgomery f92d4bc5d4 Fix vimeo with no vimeo-workaround 2014-07-09 22:15:14 -07:00
Calvin Montgomery f36d2b0258 Add onPreChangeMedia and improve refreshing 2014-07-09 21:46:45 -07:00
Calvin Montgomery 3f959087af Initial improvements to playback system 2014-07-09 21:20:14 -07:00
Calvin Montgomery 256a951531 Fix potential race condition 2014-07-01 21:09:20 -07:00
Calvin Montgomery 03ba657783 Fix setting channel js/css 2014-07-01 20:43:34 -07:00
Calvin Montgomery e87ddb473b Require user permission to run channel js 2014-07-01 20:11:54 -07:00
Calvin Montgomery 3661ab1fd9 Update XSS filter 2014-06-25 20:22:54 -07:00
Calvin Montgomery 9ce02c8e6b Merge pull request #380 from calzoneman/tablemerge
Merge channel specific tables into global tables with an indexed channel column
2014-06-25 20:14:03 -07:00
Calvin Montgomery 3dcdaf3045 Update version number 2014-06-25 20:13:03 -07:00
Erik 817c7ad4ba quickfix 2014-06-25 16:13:54 -04:00
Calvin Montgomery f44c9ce51b Fix updater 2014-06-24 20:28:04 -07:00
Calvin Montgomery 36c4e41131 Add console command for deleting old channel tables 2014-06-23 22:15:57 -07:00
Calvin Montgomery c768d9595c Merge ban tables, fix channel create/delete operations 2014-06-23 22:10:15 -07:00
Calvin Montgomery 4afd69b2fb Merge channel ranks tables 2014-06-23 21:40:40 -07:00
Calvin Montgomery 0abaaba690 Merge channel libraries into a single table 2014-06-23 21:09:18 -07:00
Calvin Montgomery 523bdfe065 Handle #377 2014-06-17 19:11:41 -07:00
Erik 5b76d4fb8c fix voteskip not setting afk to false 2014-06-15 21:13:22 -04:00
Calvin Montgomery 8152008466 Crash fix 2014-06-15 16:34:32 -07:00
Calvin Montgomery 0102b92730 Fix wrong variable reference 2014-06-15 12:51:39 -07:00
Calvin Montgomery 8c50655ff2 Disable IP check for password recovery, resolves #376 2014-06-15 10:58:53 -07:00
Calvin Montgomery 7f4e2a8882 Fix a few issues 2014-06-12 20:29:12 -07:00
Erik 6f737349db uncomment 2014-06-11 12:45:55 -04:00
Calvin Montgomery b71d3610f2 Fix #374 2014-06-11 08:56:06 -07:00
Calvin Montgomery f75ffe089c Toss out fluent-ffmpeg in favor of own parser 2014-06-08 21:03:29 -07:00
Calvin Montgomery ac10f05f21 Update ffmpeg loader to work with newer fluent-ffmpeg; fix playlists 2014-06-07 21:25:48 -07:00
Calvin Montgomery 02771e6623 Add raw video/audio playback with ffmpeg 2014-06-07 16:57:25 -07:00
Calvin Montgomery 63e60e65f0 Fix meta clearing on playlist save 2014-06-07 13:00:23 -07:00
Calvin Montgomery 777a87a8e6 Fix meta clearing on playlist save 2014-06-07 12:59:42 -07:00
Calvin Montgomery 19aac29347 Fix large chandump notification 2014-06-07 12:56:12 -07:00
Calvin Montgomery 6adba2f355 Don't run the database updater if the version is higher than current 2014-06-07 10:46:44 -07:00
Calvin Montgomery 5d5bdfc069 Various fixes for raw file playback 2014-06-07 10:45:52 -07:00
Calvin Montgomery 6dde745784 Better error handling, add support for mp3/ogg-vorbis 2014-06-05 22:02:51 -07:00
Calvin Montgomery fdf7900dc8 Send rank packet to target on rank change 2014-06-05 21:12:21 -07:00
Calvin Montgomery 1d1630fb50 Implement raw file queues 2014-06-03 21:21:00 -07:00
Calvin Montgomery 626725031f Fix IPv6 mask regex 2014-06-02 20:59:35 -07:00
Calvin Montgomery ac7f0ac47a Add update function to add meta column 2014-06-02 20:47:21 -07:00
Calvin Montgomery f2769e5062 Start adding file playback queue support 2014-06-01 11:43:18 -07:00
Calvin Montgomery 862a7d876d Fix #372 2014-05-31 22:13:53 -07:00
Erik 13f5e3a2c8 fix? #371 coming out of afk doesn't enable voteskip button if it's on the same media 2014-05-31 10:31:45 -04:00
Calvin Montgomery 1917baa4c3 Fix unregistered channels and jwplayer custom timing 2014-05-26 13:02:03 -07:00
Calvin Montgomery 3cae0b0e57 Prevent server from infinite looping when google docs refresh fails 2014-05-24 11:06:46 -07:00
Calvin Montgomery f3eb999a76 Refactor channel packing 2014-05-23 23:09:36 -07:00
Calvin Montgomery 02ac983fba Start working on channel detail view 2014-05-23 22:40:35 -07:00
Calvin Montgomery ecc5ffc7da Correct filename for channel loggers 2014-05-23 22:00:51 -07:00
Erik af0ddd303d fix #363 2014-05-23 22:07:54 -04:00
Calvin Montgomery ca5ad87414 Fix google docs autorefresh 2014-05-22 20:04:43 -07:00
Calvin Montgomery 738dd3fb75 Fix 'user voteskipped [object Object]
'
2014-05-22 19:51:35 -07:00
Calvin Montgomery 89c94701dc Fix #368 2014-05-22 19:50:26 -07:00
Calvin Montgomery f3dae85b99 Add more useful error logging to google docs refresh 2014-05-22 19:36:01 -07:00
Calvin Montgomery 3994b42444 Add /kickanons; fix handling of kickban commands with no arguments 2014-05-22 19:34:46 -07:00
Erik d004c0bcdd fix poll unvoting 2014-05-22 18:08:24 -04:00
Erik baa8af58bc hopefully fix #366 delete causing change media 2014-05-22 10:28:58 -04:00
Erik 4f7e4ad65e fix #365 parsing media limit 2014-05-22 09:22:58 -04:00
Erik d42fc2eabf fix typo 2014-05-22 02:37:04 -04:00
Erik e19acd2d63 fix enforcement of media limit 2014-05-22 02:35:52 -04:00
Calvin Montgomery 1b3d154055 Prevent empty channel from being loaded on blacklist join 2014-05-21 21:11:15 -07:00
Calvin Montgomery 4e7dcbe7ef Fix for soundcloud returning 302 found instead of 200 OK 2014-05-21 20:53:13 -07:00
Calvin Montgomery 4c1b8e8c1a Add ability to blacklist channels in site config 2014-05-21 20:33:24 -07:00
Calvin Montgomery 7dde8cffe9 Hopefully fix playlist issues 2014-05-21 20:27:49 -07:00