Commit Graph

1291 Commits

Author SHA1 Message Date
Matthew Noorenberghe a97711de89 Replace or sanitize remaining uses of PHP_SELF. Fixes #2446 2019-02-09 22:12:36 -08:00
Matthew Noorenberghe effd609ff7 Escape output of state names. Fixes #2475 2019-02-09 20:40:08 -08:00
Matthew Noorenberghe c9d597dced logger.php: Don't output Panic messages unless debugging is on. Fixes #2460 2019-02-09 18:51:30 -08:00
Matthew Noorenberghe 6d2f3c265f events.php: Remove inline event handlers and enforce CSP 2019-02-09 17:34:59 -08:00
Matthew Noorenberghe fcbc22b6a2 functions.php: Ensure 'limit' request parameter is an integer. Fixes #2456 2019-02-09 17:27:47 -08:00
Matthew Noorenberghe 502f53fad0 functions.php: Fix SQLi in getFormChanges 2019-02-09 17:15:02 -08:00
Matthew Noorenberghe 254b7286b4 monitor.php: Escape SignalCheckColour to prevent XSS. Fixes #2451 2019-02-09 16:41:54 -08:00
Matthew Noorenberghe b2a97ee190 frame.php: Fix multiple XSS from 'show' and 'scale' parameters and enforce CSP.
Fixes #2448, fixes #2449, and fixes #2447.
2019-02-09 15:10:45 -08:00
Matthew Noorenberghe c8066919ff functions.php: Esacepe textContent in htmlOptions() 2019-02-09 14:14:46 -08:00
Matthew Noorenberghe 98e0a0d2c5 Don't output Fatal(...) error messages unless debugging is on to avoid leaking info. Fixes #2459 2019-02-09 02:18:57 -08:00
Matthew Noorenberghe 02f09aad7f view=export: Remove inline event handlers and fix arbitrary URL/XSS usage. Fixes #2443 2019-02-09 02:01:26 -08:00
Matthew Noorenberghe 0b38e72f88 view=download: Remove inline event handlers and fix arbitrary URL/XSS usage. Fixes #2441 2019-02-09 01:16:32 -08:00
Isaac Connor d33e094526 Merge branch 'master' into storageareas 2019-02-06 17:03:41 -05:00
Isaac Connor 8e62c93f5f add to_json function to Storage. 2019-02-06 11:44:36 -05:00
Isaac Connor d121ecab75 Merge branch 'improve_session' into storageareas 2019-02-05 15:48:42 -05:00
Isaac Connor 141f2afc8c Merge branch 'master' into storageareas 2019-02-05 15:46:58 -05:00
Isaac Connor 21702dcc68 Merge branch 'master' into improve_session 2019-02-05 12:35:29 -05:00
Isaac Connor c54fe7e89a fix state actions 2019-02-05 12:35:06 -05:00
Isaac Connor cb0d9325e6 Use session_regenerate_id instead of our broken code to do the same 2019-02-05 11:45:09 -05:00
Isaac Connor 2466d765bf If there is a username in the session, then we are logged in, but we need to load the user object from the db. We can't just trust it from the session. The user may have been deleted and having that data in the session can be a security risk. So load the user object on every request. 2019-02-05 11:44:45 -05:00
Isaac Connor 5a9083fe86 Remove redirect on line. We do it in javascript on postlogin view so that we can say logging in before switching to console 2019-02-05 11:40:58 -05:00
Isaac Connor 97e3a8178a use session_regenerate_id instead of other strange code 2019-01-30 16:08:09 -05:00
Isaac Connor b09a71d0e2 code style 2019-01-30 16:06:16 -05:00
Isaac Connor 71f961d012 remove redirect to console on login, as it is done in javascript after Logging in message is displayed 2019-01-30 16:05:51 -05:00
Isaac Connor 4e10e6f0ae Merge branch 'improve_session' into storageareas 2019-01-30 15:26:37 -05:00
Isaac Connor 9a3aa49bae Merge branch 'fix_bandwidth' into storageareas 2019-01-30 15:18:16 -05:00
Isaac Connor 533d021dea Merge branch 'master' into storageareas 2019-01-30 15:17:27 -05:00
Isaac Connor 604dbf8776 fix state changing/etc 2019-01-30 14:36:46 -05:00
Isaac Connor 2e2404643f Fix bandwidth due to new actions code. Update buttons on bandwidth popup 2019-01-30 13:20:24 -05:00
Isaac Connor cc0b5e0f1f Move is_session_open to session.php. Move code to clear a session into session.php 2019-01-30 12:52:01 -05:00
Isaac Connor 0eba430932 remove duplicate line 2019-01-30 11:05:43 -05:00
Isaac Connor 85bb70df68 Use zm specific session functions, which are now located in includes/session.php. Be more agressive about clearing session on logout. 2019-01-30 11:05:19 -05:00
Matt N 8c5687ca30 Fix name/protocol XSS in controlcaps.php. Fixes #2445 (#2479) 2019-01-25 08:35:07 -05:00
Matt N fd6179d7c8 Enforce CSP on many more views (#2480) 2019-01-25 08:34:29 -05:00
Matthew Noorenberghe 47d8c9b066 plugin.php: Remove undefined onclick function reference and enforce CSP
Also fix tag closing.
2019-01-23 19:47:58 -08:00
Isaac Connor 6eb4d7ae27
Filter improvements (#2438)
* Put back code to close the popup when view is none

* clean up and reduce depth of some logic

* Increase width of user popup

* fix code style

* Make execute_filter work on a filter Id instead of name

* rework logic to reduce code depth. Change view to events to display the results of execute.

* Change the redirect to stay on the new view.  When redirecting from executing a filter, it was redirecting to filter.

* Set a form action for correctness. Change execute button to a button instead of a submit. Stay on the filter view when executing
2019-01-23 11:30:51 -05:00
Isaac Connor cc8de69eba Merge branch 'master' into storageareas 2019-01-22 11:44:42 -05:00
Isaac Connor ae703c45ee Set closePopup=true so that we don't need code in the none view to close the popup. The common code in skin.js will take care of it. 2019-01-22 09:14:33 -05:00
Matt N 0619a4a161 Validate cnj, obr, and cbr arguments in parseFilter (#2434) 2019-01-22 08:03:25 -05:00
Isaac Connor 7260f823cb Merge branch 'master' into storageareas 2019-01-21 13:52:38 -05:00
Isaac Connor a2d4dc974b Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2019-01-21 11:19:07 -05:00
Isaac Connor fbc236128e add a function to format a time into a duration. Can't use date() because 0 doesn't give us 00:00:00 it gives 19:00:00 2019-01-21 11:16:14 -05:00
Isaac Connor b24b930f65 After login go to postlogin, not console. the login view is in a popup so we want to close 2019-01-21 11:15:36 -05:00
Matt N d7ebc85d81 Replace remaining `console` inline event handlers (#2432)
* Use a hidden submit button in _monitor_filters rather than onkeydown

* events/console: Convert checkbox header toggle inline event listeners
2019-01-21 11:11:40 -05:00
Matt N 35fb4366b6 Fix recaptcha support with the CSP (#2420) 2019-01-19 09:47:04 -05:00
Matt N 4e48939660 Add a validateForm event listener and enforce CSP on some views (#2425)
* Add a validateForm event listener and enforce CSP on the controlcap view

* filter.php: Use .validateFormOnSubmit

* server.php: Use .validateFormOnSubmit and fix makePopupButton condition check

* Use .validateFormOnSubmit and enforce CSP on the storage view
2019-01-19 09:41:53 -05:00
Isaac Connor 552e14a971 Merge branch 'master' into storageareas 2019-01-18 10:36:59 -05:00
Matt N 6bb5aa1b87 More inline JS / nonce conversions (#2415)
* monitor.php: Add nonce and move <script> inside </body>

* export_functions.php: Untested: Add @nonce to <script>

* blank.php: Add @nonce to <script> and add to CSP enforced views

* Enforce CSP on login and privacy views

* group.php: Add nonce and move <script> inside </body>

* filter.php: Add @nonce to <script>

* Fix updateButtons argument on the filter page upon change and page load

* events.php: Add @nonce to <script>
2019-01-18 09:51:06 -05:00
Isaac Connor 599769b701 rework logic of functions to be more verbose about errors. Implement javascript Nonce support when view=none 2019-01-17 08:50:33 -05:00
Isaac Connor 87d1390fed Merge branch 'storageareas' into h265 2019-01-16 15:20:17 -05:00
Isaac Connor f49dd93b6a Merge branch 'master' into storageareas 2019-01-16 14:39:56 -05:00
Isaac Connor 1f3da476b8 switch to single quotes 2019-01-16 14:04:24 -05:00
Isaac Connor b1cc0c2b82 add CSP nonce to CSRF rewriting 2019-01-16 14:04:07 -05:00
Isaac Connor d8ef33396a If multi-port is on, we need to output CORS headers 2019-01-16 13:44:57 -05:00
Isaac Connor ba21820fd0 fix typo 2019-01-16 12:10:34 -05:00
Isaac Connor eee1d871e0 get rid of default value for PathToIndex so that it will use PHP_SELF instead 2019-01-16 12:09:26 -05:00
Matt N d33fec9c3f Add a CSP script-src policy with nonce-source and convert more inline event handlers (#2413)
* Add Content-Security-Policy-Report-Only: script-src 'self' 'nonce-' policy

* Use @data-on-click-this to attach inline click event handlers which expect being called with 'this'

Only handle ones that don't return a value.

* Use @data-on-click to attach inline click event handlers with no args and no return value

* Use @data-on-click-true to attach inline click event handlers with 'true' as the only argument

* Enforce a script-src CSP on views without inline JS

* Convert some onchange attributes to data-on-change
2019-01-16 09:59:58 -05:00
Isaac Connor fd696bc066 Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2019-01-15 11:38:56 -05:00
Isaac Connor 3182d8bab7 implement to_json method so that defaults get included 2019-01-15 11:36:56 -05:00
Andrew Bauer 07d8ac1d49 implement timezone check function (#2387)
* implement timezone check function

* remove comment

* also check if the timezone is valid

* whitespace
2019-01-15 09:05:11 -05:00
Matt N 083f284599 Replace onclick inline event handlers for createPopup (#2410)
* Move <script> before </body>

* Change makePopupLink to not use onclick

* Change makePopupButton to not use onclick

* Use .popup-link in control_functions.php

* Use makePopupButton in controlcaps.php

* Prevent double-encoding in makePopup*

* Use makePopupButton in devices.php

* Use makePopupButton in logout.php

* Use makePopupLink in monitor.php

* Use makePopupLink and .popup-link in montage.php

* Use makePopupButton in options.php

* Use makePopupButton, makePopupLink, and .popup-link in zones.php
2019-01-15 09:01:58 -05:00
Isaac Connor f726666f54 Merge branch 'master' into h265 2019-01-14 12:36:11 -05:00
Isaac Connor fc7403fe3d Merge branch 'master' into storageareas 2019-01-13 14:53:34 -05:00
Isaac Connor c834fbe462 the filter action should singular filter, not filters 2019-01-13 14:52:39 -05:00
Isaac Connor b373577589 fix function view after actions cleanup 2019-01-10 12:08:25 -05:00
Isaac Connor f3a807f1f8 Merge branch 'master' into storageareas 2019-01-07 09:21:25 -05:00
Isaac Connor b4f8500cb5 Merge branch 'split_actions' 2019-01-05 18:33:04 -05:00
Isaac Connor 3f10553464 Fix include path to Monitors.php 2019-01-05 18:32:53 -05:00
Isaac Connor 1a75cf333e Merge branch 'master' into storageareas 2019-01-05 11:12:38 -05:00
Isaac Connor e34a5e972a fix missing } 2019-01-05 11:12:26 -05:00
Isaac Connor 8eb61b1c11 Merge branch 'master' into storageareas 2019-01-05 10:16:38 -05:00
Isaac Connor 5b5905c83a We always use markEids[] now 2019-01-04 16:29:16 -05:00
Isaac Connor 0e20666992 fix eventdetail actions being in events 2019-01-04 15:43:31 -05:00
Isaac Connor ab198bfd75 remove master version of actions.php 2019-01-04 15:29:21 -05:00
Isaac Connor 52466c398b Merge branch 'split_actions' into storageareas 2019-01-04 15:28:55 -05:00
Isaac Connor b8d065275b Merge branch 'master' into storageareas 2019-01-04 15:22:18 -05:00
Isaac Connor e2f32ab091 Upgrade config saving 2019-01-04 09:43:36 -05:00
Isaac Connor 7ec96655c3 fix missing ! when testing for permission on editing config 2019-01-04 09:37:26 -05:00
Isaac Connor 5b9bf48945 Merge branch 'master' into split_actions 2019-01-04 09:35:54 -05:00
Isaac Connor 46adcbb66b Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2019-01-04 09:34:51 -05:00
Isaac Connor edeaa07c12 Fix no quotes around Id 2019-01-04 09:34:42 -05:00
Isaac Connor 6cad852e11 fix path to MontageLayout 2019-01-04 09:34:18 -05:00
Isaac Connor dbe9817bc8 Split actions.php into individual files per view 2019-01-04 09:26:34 -05:00
Isaac Connor 874930d8fc Merge branch 'master' into improve_config_efficiency 2019-01-02 13:07:53 -05:00
Isaac Connor 5060358870 Merge branch 'master' into storageareas 2018-12-29 09:56:53 -05:00
Andrew Bauer d14e9ecf74 force overloadframes and ExtendAlarmFrames to int (#2373) 2018-12-29 09:53:31 -05:00
Isaac Connor 1a1231fdaa Merge branch 'master' into storageareas 2018-12-28 10:47:27 -05:00
Andrew Bauer a029909972 fix path to thumb and anal images (#2367) 2018-12-28 10:46:13 -05:00
Andrew Bauer fb37fc48e1 update viewImagePatch (#2370) 2018-12-28 10:38:39 -05:00
Andrew Bauer 5f9a113da1
redirect to montage rather than montagereview 2018-12-26 10:34:01 -06:00
Isaac Connor 2b8fa653ed Merge branch 'small_groups_fixes' into storageareas 2018-12-24 09:48:36 -05:00
Isaac Connor e0cae5709f Group::find is now more powerful so we can just use it to return all Groups to be deleted 2018-12-24 09:39:40 -05:00
Isaac Connor 63199289ad Change depth function to be 0-based. 2018-12-24 09:38:55 -05:00
Isaac Connor 7a8beffdcc Merge branch 'master' into storageareas 2018-12-20 15:10:52 -05:00
Isaac Connor a277f697e9 whitespace 2018-12-20 14:58:38 -05:00
Isaac Connor 0bfe1007c8 Merge branch 'master' into storageareas 2018-12-14 10:16:08 -05:00
Mike Rosack 567b60ffa7 support for forwarded proto/port in Server.php (#2343) 2018-12-13 10:24:32 -05:00
Andrew Bauer 8d74354fcb
Merge pull request #2242 from connortechnology/cleanup_auth
Cleanup auth
2018-12-12 20:53:24 -06:00
Isaac Connor eba8b3327d Merge branch 'master' into cleanup_auth 2018-12-11 16:04:42 -05:00
Andrew Bauer 4d7e98475f
Merge pull request #2297 from connortechnology/introduce_getBodyTopHTML
Introduce get body top html
2018-12-11 09:35:54 -06:00
Isaac Connor c8c34d3f95 Merge branch 'master' into storageareas 2018-12-11 10:21:22 -05:00
Isaac Connor e1ecd47bff Fix missing use of UrlToApi 2018-12-11 09:40:40 -05:00
Isaac Connor a1141d2dc4 remove second use of HTTP_HOST and use a better method of stripping off port from HTTP_HOST 2018-12-07 08:39:23 -05:00
Isaac Connor 757e538550 strip port from HTTP_HOST 2018-12-06 17:12:03 -05:00
Isaac Connor bc5f8d0d8d rework pts/dts of audio stream. Spacing. Fix crash 2018-12-04 18:23:08 -05:00
Isaac Connor 2df6d74a3e Merge branch 'master' into storageareas 2018-12-02 17:15:12 -05:00
Andrew Bauer e327ad100e fix WebSite camera startup issue 2018-12-01 17:03:50 -06:00
Andrew Bauer cae6ffd5a3 use HTTP_HOST instead of SERVER_NAME 2018-12-01 13:27:08 -06:00
Isaac Connor 4272225a17 Merge branch 'master' into h265 2018-11-30 16:42:16 -05:00
Isaac Connor 7d90a56561 Merge branch 'master' into storageareas 2018-11-30 14:46:42 -05:00
Isaac Connor 8c626c984b Need to pass port through all Url functions 2018-11-30 14:45:58 -05:00
Isaac Connor fe45e83bb4 Fix PathToIndex 2018-11-29 15:54:25 -05:00
Isaac Connor 4cf7ff7fe4 Merge branch 'server_path_prefix' into storageareas 2018-11-29 15:53:58 -05:00
Isaac Connor 3bd5774ea1 Default to PathToIndex should have the index.php in it 2018-11-29 15:53:19 -05:00
Isaac Connor af2bb992e9 Merge branch 'server_path_prefix' into storageareas 2018-11-29 14:33:46 -05:00
Isaac Connor 1c17f334d3 fix missing bits. Implement UrlToIndex in Monitor and fix use of Url(). Implement PathToApi as well 2018-11-29 14:26:30 -05:00
Isaac Connor 4625f7c879 Merge branch 'master' into storageareas 2018-11-28 10:46:49 -05:00
Isaac Connor 1e915e9567 Merge branch 'master' into server_path_prefix 2018-11-28 10:45:36 -05:00
Isaac Connor 57acb2aac6 Merge branch 'server_path_prefix' into storageareas 2018-11-28 10:41:11 -05:00
Isaac Connor f8b2ff5c77 rework from Url() to PathToIndex(), PathToZMS(), UrlToIndex() and UrlToZMS() 2018-11-27 17:35:25 -05:00
Isaac Connor 17c1933913 remove an extra l 2018-11-26 16:20:15 -05:00
Isaac Connor 19f3cce41f Dont auto-guess pathPrefix 2018-11-23 13:54:14 -05:00
Isaac Connor 7ad19be0d7 Merge branch 'server_path_prefix' into storageareas 2018-11-23 13:29:01 -05:00
Isaac Connor dea5db9dd9 Merge branch 'zmaudit_check_other_storageareas' into storageareas 2018-11-23 11:11:39 -05:00
Isaac Connor c5f7fb7b18 Merge branch 'master' into server_path_prefix 2018-11-22 10:04:33 -05:00
Isaac Connor 62e511cfd1 Merge branch 'master' into h265 2018-11-17 10:41:20 -05:00
Isaac Connor 415d43fafb Include Server Name when testing for CORS. Also be case insensitive. 2018-11-15 12:23:52 -05:00
Isaac Connor e24a308481 Merge branch 'master' into h265 2018-11-14 17:15:37 -05:00
Isaac Connor 9d5772b517 Merge branch 'fix_multiserver_daemon_restarting' into storageareas 2018-11-14 13:02:30 -05:00
Isaac Connor 786ca5b22a implement remove service restart for zma. Use daemonControl instead of saving the monitor when restarting zmc 2018-11-14 13:00:19 -05:00
Isaac Connor e8ed1367d7 Merge branch 'master' into storageareas 2018-11-13 14:22:00 -05:00
Isaac Connor ec09a71ba0 Include defaults for all the missing Monitor Columns 2018-11-07 13:18:53 -05:00
Isaac Connor 702143e51b Create a function called getBodyTopHTML that outputs the body tag and anything else that should go at the top.
Things like the we require javascript message, and any other messages like error messages.
Use this on the monitor and console view to stick an error message at the top when saving a monitor fails.

This is a pretty quick, crude implementation.
2018-11-07 12:33:54 -05:00
Isaac Connor a066968aca fix dbError and cause it to return the error string instead of just logging it. Add error logging of db errors that don't throw exceptions. 2018-11-07 12:33:18 -05:00
Isaac Connor eb6d978927 Merge branch 'master' into storageareas 2018-10-31 14:47:43 -04:00
Isaac Connor bdb50567df fix disk_event_space to event_disk_space 2018-10-31 11:56:08 -04:00
Isaac Connor 461ce3c1f8 Merge branch 'master' into storageareas 2018-10-29 12:52:06 -04:00
Isaac Connor 6691b5fb52 Include CORS headers when there is a Server defined, instead of requiring there to be more than 1 2018-10-29 12:50:50 -04:00
Isaac Connor 95a6d0666a Improve behaviour and reduce extra logging when db goes away 2018-10-29 09:59:26 -04:00
Isaac Connor 91d83a89fa include semaphore function replacements 2018-10-25 15:40:12 -04:00
Isaac Connor d025adab6d Need to load Config Categories in options save 2018-10-25 09:13:07 -04:00
Isaac Connor 875bc3caf9 Merge branch 'master' into storageareas 2018-10-24 10:17:27 -04:00
Isaac Connor ca8770bd5a Merge branch 'fix_rce' into storageareas 2018-10-24 10:17:16 -04:00
Isaac Connor 115141bf9f add caching to Group::find 2018-10-24 10:02:42 -04:00
Isaac Connor a8329465fb Merge branch 'master' into h265 2018-10-22 10:30:01 -04:00
Isaac Connor c47b4a5a04 Merge branch 'improve_config_efficiency' into storageareas 2018-10-19 15:03:00 -04:00
Isaac Connor e30b100e8e Don't load & process categories in initial config loading 2018-10-19 15:00:30 -04:00
Isaac Connor 17a5519dd6
Include the remoteAddr in the session authhash cache, so that a change of ip won't allow the same useless auth hash. (#2264) 2018-10-19 13:39:37 -04:00
Isaac Connor 98579fc02a Merge branch 'master' into storageareas 2018-10-19 11:27:43 -04:00
Isaac Connor f9b1453705 Include SERVER_PORT when not doing multi-server or multi-port but are running on a port other than 80. 2018-10-19 10:59:16 -04:00
Isaac Connor c2af380e29 Merge branch 'master' into storageareas 2018-10-16 11:39:26 -04:00
Isaac Connor 37065d15ac fix url to api in monitor restart. 2018-10-16 09:47:24 -04:00
Isaac Connor 7149576a7c Merge branch 'smarter_packetqueue' into storageareas 2018-10-15 10:59:50 -04:00
Isaac Connor f2b38f175d Update Frame::find_one so that we can specify an ordering for find_one and so that semantics match other objects find methods 2018-10-11 09:14:40 -04:00
Isaac Connor c4c8a728f2 Handle no controls found more gracefully 2018-10-10 19:04:00 -04:00
Isaac Connor 2881d2af3f Merge branch 'master' into storageareas 2018-10-10 14:13:27 -04:00
Isaac Connor 6ed146b4dd Use Hostname instead of Url in test for CORS access. 2018-10-10 14:01:36 -04:00
Isaac Connor e268264761 Merge branch 'cleanup_auth' into storageareas 2018-10-09 10:24:32 -04:00
Isaac Connor 1958351a13 Merge branch 'master' into storageareas 2018-10-09 10:24:24 -04:00
Isaac Connor cbc26e0cec cleanup trailing whitespace 2018-10-09 10:07:40 -04:00
Isaac Connor a3d0cb42ea Move GOOGLE RECAPCHA to includes/auth.php, clean login actions. 2018-10-09 10:05:50 -04:00
Isaac Connor 918d5fd469 move utility functions for doing get/post requests into functions.php from actions.php 2018-10-09 09:39:04 -04:00
Isaac Connor 52b1439d51 fix the lack of /zm/index.php in url in Server->Url() and multiport 2018-10-08 09:55:47 -04:00
Isaac Connor 1eb8e9ed9e Include PHP_SELF in url to Server. This will assume that all servers in a multi-server setup use the same path 2018-10-08 09:45:03 -04:00
Isaac Connor 5dba17e1fc Merge branch 'master' into storageareas 2018-09-21 10:50:10 -04:00
Isaac Connor 999e4c6c43 Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2018-09-20 13:37:46 -04:00
Isaac Connor 90d1d79e9a Add missing AutoUpload field to Filter 2018-09-20 13:37:36 -04:00
Isaac Connor 7fe2749de6 Merge branch 'master' into storageareas 2018-09-20 10:58:36 -04:00
Isaac Connor ba4878d2b5 fix use of instead of ['limit'] 2018-09-20 10:11:55 -04:00
Isaac Connor 503b40cb62 Need to cache the object not the row 2018-09-20 10:07:15 -04:00
Isaac Connor 520d1bb7bf Merge branch 'master' into storageareas 2018-09-20 09:08:29 -04:00
Isaac Connor c6e953c4a9 if Monitor is not found, return empty Monitor instead of null 2018-09-20 09:02:20 -04:00
Isaac Connor c4108a2610 Fix missing quotes inc Event::Monitor 2018-09-20 08:59:15 -04:00
Isaac Connor 7f98277571 Merge updated Monitor.php that does caching 2018-09-15 09:52:08 -04:00
Isaac Connor b0c555599c Merge updated objects from sa. Implements caching of objects and fixes logged errors when using the default storage group. Fixes #2209 2018-09-15 09:42:59 -04:00
Isaac Connor 5dc852132e Add defaults to Server, getting rid of error log when loading the default non existent storage area 2018-09-15 09:39:40 -04:00
Isaac Connor 246b50be9c add caching to Server 2018-09-15 09:39:04 -04:00
Isaac Connor 02403c4c30 add caching to Monitor 2018-09-15 09:38:52 -04:00
Isaac Connor 27bc9d0a50 fix $limit should be $options['limit'] 2018-09-15 09:38:36 -04:00
Isaac Connor 1db59283e3 use find_one when loading Monitor to take advantage of caching 2018-09-15 09:38:09 -04:00
Isaac Connor 2b66b28689 fix $limit should be $options['limit'] 2018-09-15 09:37:44 -04:00
Isaac Connor fa55cec12c fix error when scale is auto 2018-09-14 16:57:28 -04:00
Isaac Connor 77edb8f74b Add test for auto scale and don't rescale. Use find_one when loading StorageArea so as to use caching 2018-09-14 16:19:29 -04:00
Isaac Connor 34c7ee32ee Merge branch 'master' into storageareas 2018-09-14 15:13:57 -04:00
Isaac Connor f1442eba90 once we have found a match for our origin, break out of loop 2018-09-14 14:56:26 -04:00
Isaac Connor d9b1d3ec11 fix CORS Headers when we are coming from a non-standard port. Use a regexp instead of == so that we match regardless of port 2018-09-14 14:52:33 -04:00
Isaac Connor b5b71edbf6 Make a Url function in the Monitor object to use the Server->Url + Port. Default to port used in current url. Fixes problems with using something other than port 80 2018-09-14 14:26:45 -04:00
Isaac Connor 03f769eacc Rough in codec specification for Events 2018-09-10 12:22:55 -04:00
Isaac Connor 5eec7e00c5 Merge branch 'master' into storageareas 2018-09-09 14:09:52 -04:00
Isaac Connor 55dcb161ae find should always return an array 2018-09-09 13:59:10 -04:00
Isaac Connor b4f80fbe11 Always return an array from find 2018-09-09 13:56:29 -04:00
Isaac Connor e4c87ce256 Merge branch 'master' into storageareas 2018-09-09 11:36:52 -04:00
Isaac Connor dfdac2ed70 make find and find_one functions consistent across Objects 2018-09-07 16:31:11 -04:00
Isaac Connor c9b4f14171 fix deleting events 2018-09-04 09:57:32 -04:00
Isaac Connor 2858564155 Merge branch 'master' into storageareas 2018-08-31 16:06:13 -04:00
Isaac Connor 7ee80e7cca Debug lines should be debug, not warning 2018-08-31 11:58:03 -04:00
Isaac Connor 4b30ea7877 cleanup, whitespace 2018-08-31 10:35:23 -04:00
Isaac Connor 4e32089a48 Merge branch 'master' into storageareas 2018-08-30 14:51:27 -04:00
Andrew Bauer 8f0fb0843a Add Privacy Statement (#2194)
* initial implementation of privacy popup

* split the privacy text and run it through translate

* change style of toggle button, validate the form

* fix copy/paste error

* fix typos

* display privacy view inline rather than popup

* display privacy inline if show_privacy flag set

* redirect to console after selection is made

* typo

* css formatting

* update privacy verbiage

* create and load default.php

* fix typos

* fix erroneous copy/paste
2018-08-30 13:25:02 -04:00
Isaac Connor 4be2a0501c Merge branch 'master' into storageareas 2018-08-22 17:22:54 -04:00
Isaac Connor 21d193294f Log errors shouldn't be fatal 2018-08-22 17:22:40 -04:00
Isaac Connor 6e5472d305 Merge branch 'master' into server_path_prefix 2018-08-22 12:57:16 -04:00
Isaac Connor d768f5f7fc Merge branch 'master' into storageareas 2018-08-13 15:35:55 -04:00
Isaac Connor 15a6eb7e78
Revert "Add Privacy Statement (#2176)" (#2179)
This reverts commit 56f4d768c2.
2018-08-13 15:33:43 -04:00
Isaac Connor 026390ccd8 Merge branch 'master' into storageareas 2018-08-13 15:26:29 -04:00
Andrew Bauer 56f4d768c2 Add Privacy Statement (#2176)
* initial implementation of privacy popup

* split the privacy text and run it through translate

* change style of toggle button, validate the form

* fix copy/paste error

* fix typos

* display privacy view inline rather than popup

* display privacy inline if show_privacy flag set

* redirect to console after selection is made

* typo

* css formatting

* update privacy verbiage

* push privacy text to all language files
2018-08-13 15:23:44 -04:00
Isaac Connor 3ab542199c Merge branch 'master' into storageareas 2018-08-13 11:17:04 -04:00
Andrew Bauer 3dc424282b Support quoting config variables (#2175)
* allow handling of quotes in config files

* copy paste error

* surround zm_arptool in quotes
2018-08-11 12:56:16 -04:00
Isaac Connor 683789eb41 Merge branch 'master' into storageareas 2018-08-03 10:27:48 -04:00
Isaac Connor b72d520e02 implement the ability to pass a disabled option to htmlSelect. Use it to disable the h264 passthrough option for non-ffmpeg monitors. Instead of disappearing it. 2018-08-03 10:02:42 -04:00
Isaac Connor c934295bf9 we shall always pass width & height as pixels without units. 2018-07-31 16:55:13 -04:00
Isaac Connor d50e95fe9b redirect to montage instead of montagereview 2018-07-31 16:46:36 -04:00
Isaac Connor 588ca2cf62 Merge branch 'master' into storageareas 2018-07-31 10:52:24 -04:00
Isaac Connor 886391a547 Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2018-07-31 10:16:05 -04:00
Isaac Connor 363e1dda97 Add some more Monitor defaults, mainly Refresh which gets called in watch.js.php 2018-07-31 10:15:26 -04:00
Roman Dissertori 48b91c5544 Bugfix in Control and added new Camera (#2171)
* fixed control typos

missing word "s" for "Controls" Table for database queries

* added Dericam P2 camera Control

* fixed missing CanReset column

* Update DericamP2.pm

* added some more missing controls

CanSleep, CanWake

* Update DericamP2.pm

* Update DericamP2.pm

* Update DericamP2.pm

* Update DericamP2.pm

* Update DericamP2.pm

* Update DericamP2.pm

* Update DericamP2.pm

* Update zm_create.sql.in
2018-07-28 09:26:02 -04:00
Isaac Connor a12c7d90ab Merge branch 'master' into add_export_to_filter 2018-07-17 08:26:58 -04:00
Pliable Pixels 0ff9002adf 2156 api login (#2157)
* error can be due to bad user or password

* added login/logout and related private functions

* handle case when userLogin fails, current code returns PHP error for  and API throw is not called

* formatting

* converted login params to POST, removed user=&pass= for other APIs

* formatting

* add auth check back but leave out login/out

* fixes to make it work across zmN, postman and curl

* added back enabled check
2018-07-15 21:17:35 -04:00
Isaac Connor 95e4341d28 test for existence of DiskSpace in array 2018-07-12 14:05:43 -04:00
Isaac Connor 4aa289cd66 fix reCaptcha failure still allowing login 2018-07-12 11:44:20 -04:00
Isaac Connor 0acad44b4a test for existence of Storage path before trying things like disk_total_space which will fill the html output with php errors. 2018-07-11 17:21:44 -04:00
Isaac Connor 05615c5cf4 We should not use a hard path in cache bust 2018-07-11 15:48:01 -04:00
Isaac Connor b8691e4654 Don't need global cookies. Only open session if needed in userLogin 2018-07-11 11:45:19 -04:00
Isaac Connor c6ded845d0 Return the user db row ifrom userLogin instead of assuming it will be accessed as a global. Add is_session_started function and use it to detect when we need to start/stop the session in generateAuthHash 2018-07-11 10:34:45 -04:00
Isaac Connor 3ecf0055b5 spacing 2018-07-09 13:07:16 -04:00
Isaac Connor 7ef43a0684 Merge ../ZoneMinder.master into server_path_prefix 2018-07-09 12:10:48 -04:00
Isaac Connor 62f45b430e Add PathPrefix and use it in Url. Make Url() smarter so it can do more of the heavy lifting. 2018-07-09 12:09:57 -04:00
Isaac Connor 661876b998 Use Server->Url() more,, moving the logic into Server->Url() 2018-07-09 12:09:29 -04:00
Isaac Connor 90e4c2632d Use Server->Url() more,, moving the logic into Server->Url() 2018-07-09 12:08:50 -04:00
Isaac Connor cf4a1c73fd Always us /zm in cache_bust 2018-07-04 14:46:22 -04:00
Isaac Connor d271d8bf1d Fix my botched change to generateAuthHash 2018-06-25 14:50:54 -04:00
Andrew Bauer 741267bd6c
Merge pull request #2135 from connortechnology/fix_auth_hash_with_zmu
Rework generateAuthHash to take a force parameter so that it can be u…
2018-06-25 13:01:20 -05:00
Isaac Connor 99a97543f1 Rework generateAuthHash to take a force parameter so that it can be used to generate auth hashes for zmu 2018-06-25 13:43:08 -04:00
Andrew Bauer 3ffd30ffbd Allow selection of different source column filtering on the console (#2132) 2018-06-20 11:12:43 -04:00
Isaac Connor 67155e98eb add debug message when no changes are being made to a monitor 2018-06-11 16:34:40 -04:00
Isaac Connor 73555edfdc Add Error message when a monitor has no server assigned in a multi-server setup 2018-06-11 16:34:23 -04:00
Isaac Connor 9050ffaf92 spacing, remove some debug lines 2018-06-06 12:57:35 -04:00
Andrew Bauer c30992be3f fixes #2105
A more simplified approach to fixing #2105, compared to previous attempts.
2018-06-06 08:18:33 -05:00
Isaac Connor af3ce3660f Only unlink if file exists, removing warning. Always return a Storage object in Monitor->Storage() fixes Monitor Delete. 2018-05-24 09:54:45 -04:00
Isaac Connor be424f46f0 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-05-18 12:07:22 -04:00
Isaac af63619ce6 Fix Messages=>Messaged 2018-05-15 21:56:17 +02:00
Isaac Connor 49d75ce039 handle Width and Height not being in ->{} and returnining defaults. Include Path in Source 2018-05-15 10:45:47 -07:00
Isaac Connor 63e6cb1d62 remove parenthesis that confuse older php 2018-05-14 13:56:55 -04:00
Isaac Connor 47ba435471 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-05-12 19:44:40 -04:00
Isaac Connor b20cb5d0ae Add all the other Event columns to fields 2018-05-11 10:36:14 -04:00
Isaac Connor 8b8bcbd1e2 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-05-10 17:47:12 -04:00
Isaac Connor 62edca6dcb add fileSize to the api, and use it to add remote fileSize reporting in includes/Event 2018-05-08 13:33:56 -07:00
Isaac Connor da7c953e3d adda blank line 2018-05-07 14:08:32 -07:00
Isaac Connor 9127eb63dc Implement file_exists function to determine either locally or through remote api calls whether the file for an event exists. 2018-05-07 14:07:30 -07:00
Isaac Connor 5772ff9161 return default values for Width and Height 2018-05-05 12:49:00 -04:00
Isaac Connor 3fd953a4eb Move code to generate Source from console into Monitor Object 2018-05-04 06:46:46 -07:00
Isaac Connor 769d4a8693 DB connect can die, so put it in an eval 2018-05-03 09:50:54 -07:00
Isaac Connor f76827a450 redo thumbnail code. Always link to server they event is located on 2018-05-03 09:36:50 -07:00
Isaac Connor bbe0025641 correct sort order default 2018-05-01 09:43:09 -04:00
Isaac Connor 3bb1a5b544 Whitespace 2018-04-30 13:02:53 -04:00
Isaac Connor a4da624f4c break out of loops when zm-terminate is set 2018-04-27 13:20:38 -07:00
Isaac Connor 348468a98d Merge branch 'storageareas' of github.com:ConnorTechnology/ZoneMinder into storageareas 2018-04-26 22:09:48 -04:00
Isaac Connor 8a80cf686b Merge branch 'master' into storageareas 2018-04-26 21:58:34 -04:00
Andrew Bauer 86b2f6a12e New Monitor Type - Website (#2065)
* implement website monitor

* don't check certain fields when using website monitor

* continue to fix javascript errors for website monitors

* check $monitor, not $new_monitor here

* add website monitor documentation

was somehow left out of the initial commit

* fix corruption of functions.php

* add missing comma

* remove errors by testing for existence of key.  If it's a new monitor, then none of the keys will be valid

* If the monitor type is WebSite, then default Status to Running.

* put back start function that got lost in merge.  Don't start StreamCmd's if it's a WebSite

* Add midding comma

* Hide unrelated tabs when type is WebSite. Put back input fields for Type=WebSite

* Don't show control or any of the status fields for WebSite type monitors

* add some parenthesis to ensure order of operations, seems to fix fps and status fields not being shown for regular monitors
2018-04-26 17:18:36 -04:00
Isaac Connor 00e82fb751 Implement MonitoServerId,StorageServerId,FilterServerID in Filters 2018-04-25 13:05:19 -07:00
Isaac Connor dd6683f0be Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-04-25 10:31:47 -07:00
Isaac Connor 117555a857 Merge branch 'storageareas' of github.com:/connortechnology/ZoneMinder into storageareas 2018-04-25 09:39:10 -04:00
Isaac Connor 161fc94496 remove useless () 2018-04-25 09:33:12 -04:00
Isaac Connor dfae6661ab use isset when determining if a column exists, otherwise we throw warnings 2018-04-25 09:32:40 -04:00
Isaac Connor 5f415873d4 Update GroupIds regardless of changes returned from getFormChanges on Monitor save 2018-04-25 09:32:15 -04:00
Isaac Connor 2a81877664 spacing 2018-04-25 09:31:40 -04:00
Isaac Connor 80803a164c in set(), check to see if there is a method and if there is call it to set the value. Implement using GroupIds to set the GroupIds value. If the new value is a scalar, then turn it into an array. 2018-04-25 09:27:43 -04:00
Isaac Connor 28921a653b Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-04-24 11:22:48 -07:00
Isaac Connor 20f6985dff implement capturing bandwidth 2018-04-24 14:11:27 -04:00
Isaac Connor de149c1328 spacing 2018-04-24 08:48:35 -07:00
Isaac Connor 9fd2c12765 DB Logging is a Debug level 2018-04-24 08:42:52 -04:00
Isaac Connor fac3cde1e7 Merge branch 'master' of github.com:ZoneMinder/ZoneMinder 2018-04-20 15:23:23 -04:00
Isaac Connor 3ea39ad417 whitespace 2018-04-20 15:22:45 -04:00
Isaac Connor ac775f13f6 always return an array from find_all 2018-04-20 14:23:27 -04:00
Isaac Connor 9de3c44702 Add find_one and caching 2018-04-20 14:23:04 -04:00
Andrew Bauer 3c225c9f1c Migrate Webcache out of webroot (#2083)
* migrate webcache folder out of webroot, migrate htaccess files

* rpm specfile - add missing reference to cache folder

* fix submodule mixup
2018-04-19 15:01:46 -04:00
Isaac Connor bbee7fd0f2 fix array_key_exists 2018-04-18 14:17:41 -07:00
Isaac Connor 75248e7465 use array_key_exists instead of isset so that we can return nulls 2018-04-18 14:21:27 -04:00
Isaac Connor 88a2c0d953 spacing 2018-04-18 12:30:32 -04:00
Isaac Connor 940c791d4f GroupIds won't be set if no groups are selected 2018-04-18 12:14:49 -04:00
Isaac Connor e3afa5e309 handle scale not being defined when using mpeg streaming 2018-04-18 11:28:19 -04:00
Isaac Connor f620781f7e Merge branch 'storageareas' of github.com:ConnorTechnology/ZoneMinder into storageareas 2018-04-17 21:07:00 -04:00
Isaac Connor aaa7844350 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-04-17 14:18:01 -07:00
Isaac Connor 10a191ae5b add event_disk_space to storage to differentiate between real used space versus event used disk space. Use this in the navbar to show actual disk use and also event disk use 2018-04-17 14:14:40 -07:00
Isaac Connor fd1c69d48a switch to uint64_t for event_id because long long can actually be 128 bit 2018-04-17 13:51:20 -04:00
Isaac Connor c043a157ad spacing and add Server function 2018-04-17 12:37:30 -04:00
Isaac Connor 92c8b9038c fix to group caching and group deleting 2018-04-17 12:36:35 -04:00
Isaac Connor 196b8c52dc Apply multiport to event viewing as well 2018-04-17 12:35:59 -04:00
Isaac Connor ef70ff86e9 cleanup zmaControl 2018-04-17 11:36:14 -04:00
Isaac Connor 2860e067bc Fix caching when an array is passed to new 2018-04-15 10:26:57 -04:00
Isaac Connor bef7098cb4 Fix Event->Storage() 2018-04-15 10:26:38 -04:00
Isaac Connor 998d60a4b2 whitespace 2018-04-14 22:26:57 -04:00
Isaac Connor ce5e484f2a Work harder to ensure we return a Storage object 2018-04-14 21:50:27 -04:00
Isaac Connor 0b0fbae1c5 Add output of paused image when paused 2018-04-12 18:43:57 -04:00
Isaac Connor 47b871ed9f implement MIN_STREAMING_PORT for Multi-server 2018-04-11 13:50:35 -07:00
Isaac Connor 03ff2fcde4 add caching and find_one to Storage and Groups 2018-04-10 13:05:37 -07:00
Isaac Connor 74fb8db5e2 make configvals global 2018-04-06 14:52:39 -04:00
Isaac Connor 530ac15344 remove csrf_startup 2018-04-06 14:46:33 -04:00
Isaac Connor 7076ff1b1b Merge branch 'storageareas' of github.com:ConnorTechnology/ZoneMinder into storageareas 2018-04-06 14:42:30 -04:00
Isaac Connor 53ce8c008a move auth functions into it's own file 2018-04-06 14:36:23 -04:00
Isaac Connor 7b23ef80a4 blah 2018-04-06 14:31:11 -04:00
Mike Brown c4a00e0657 changing the querySep in Event.php to allow gapless playback 2018-04-05 20:42:15 -05:00
Isaac Connor 140f11fd58 fix clearing groups 2018-04-05 13:10:25 -04:00
Isaac Connor 2a000cb5f8 fix clearing groups 2018-04-05 13:09:14 -04:00
Isaac Connor 6faf9b5c35 fix including auth on remote restart 2018-04-05 11:24:47 -04:00
Isaac Connor 1033755dc8 add missing { 2018-04-04 16:46:38 -04:00
Isaac Connor 6ebedff2e1 If using MIN_STREAMING_PORT then use ['SERVER_NAME'] instead of HTTP_HOST because HTTP_HOST may contain a custom port 2018-04-04 16:45:25 -04:00
Isaac Connor 48ff480907 whitespace 2018-04-03 10:36:14 -07:00
Isaac Connor b26707b647 fix resetting DiskSpace 2018-04-03 09:57:14 -07:00
Isaac Connor 793f630ee0 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-04-02 10:43:07 -07:00
Isaac Connor df3a5b7d58 must reopen the session before destorying it 2018-03-29 19:19:08 -04:00
Isaac Connor 3fe5bb6fe2 open and close the session around user login 2018-03-29 11:30:20 -04:00
Isaac Connor f8457e04e2 clean out commented out code 2018-03-29 11:30:09 -04:00
Isaac Connor 914de097db Fix typo 2018-03-23 13:34:46 -07:00
Isaac Connor 61d438511f Fixes to delete 2018-03-21 11:32:54 -07:00
Isaac Connor a037974e26 Fix automatic server selection 2018-03-21 11:25:42 -07:00
Isaac Connor f64ef370c9 Merge branch 'storageareas' of github.com:connortechnology/ZoneMinder into storageareas 2018-03-20 12:18:42 -07:00
Isaac Connor eade5316b9 Move Monitor delete logic to the object. Don't fixSequences when deleting monitors 2018-03-20 12:18:07 -07:00
Isaac Connor 27736fb5d9 Merge ../ZoneMinder.master into storageareas 2018-03-15 11:04:41 -04:00
Andrew Bauer 16a2c173cb
fix Column 'Method' cannot be null 2018-03-10 20:29:25 -06:00
Andrew Bauer 0df59c26b8
fix typo
Fix unable to enable camera
2018-03-10 19:48:53 -06:00
Andrew Bauer ed4dac761a
Merge pull request #2049 from ZoneMinder/fix_2044
Fix 2044
2018-03-03 12:49:57 -06:00
Isaac Connor 3fc7ebee6c Merge ../ZoneMinder.master into storageareas 2018-03-03 09:32:23 -08:00
Isaac Connor 2864876d28 fix spacing, add code comment 2018-03-03 09:25:04 -08:00
Isaac Connor 9a157bf4ca add Type, MaxFPS, AlarmMaxFPS to field defaults 2018-03-01 19:23:27 -08:00
Isaac Connor debe4607bc add Parent and Parents functions 2018-03-01 19:23:03 -08:00
Isaac Connor 0312dc3c2d Add Group saving to Monitor saving 2018-02-27 11:20:52 -08:00
Isaac Connor 67cc7dcf7c Add a GroupIds function to return the groups 2018-02-27 11:20:41 -08:00
Isaac Connor 735e36c2a8 split htmlSelect into htmlOptions 2018-02-26 17:08:30 -08:00
Isaac Connor 944298428a break out get_groups_dropdown to call a function called get_dropdown_options to populate thje options 2018-02-26 16:10:10 -08:00
Isaac Connor bfbefc4c32 Use our new Control object to do the saving instead of a generic function 2018-02-26 07:31:48 -08:00
Isaac Connor c6f632325e create an object for Controls entries, with appropriate defaults 2018-02-26 07:31:22 -08:00
Isaac Connor 464b588f08 add a case for toggle, which are booleans and default them to false 2018-02-26 07:29:49 -08:00
Isaac Connor 9480adcc31 include authentication info when building the link to mp4 2018-02-22 13:05:53 -05:00
Isaac Connor c5081d1e4e drop session before executing filter 2018-02-21 13:54:06 -05:00
Isaac Connor 7d88e25ef9 simplify thumbnail/snapshot usage a bit 2018-02-19 17:25:49 -05:00
Isaac Connor 505e726636 turn off debug 2018-02-14 13:51:49 -05:00
Isaac Connor a09bf3b097 slightly improve auth debugging 2018-02-14 11:58:00 -05:00
Isaac Connor 9fa28106e5 return proper hostname when not using multiple servers 2018-02-12 14:44:58 -05:00
Isaac Connor 6b6fdc7cee Log the sql before running it 2018-02-09 07:29:10 -08:00
Isaac Connor 93996402d9 turn off debug 2018-02-02 13:24:07 -05:00
Isaac Connor b0f755b5fc put unarchive, archive, delete in a transaction for speed 2018-02-02 12:14:01 -05:00
Isaac Connor 68521aa0d4 spacing, remove debug lines 2018-02-02 10:27:50 -05:00
Isaac Connor 929e49c301 early return if there is no rows returned. Improve debug when there is a row but the specified column isn't present 2018-02-02 10:27:30 -05:00
Isaac Connor 212882efb9 db errors should NOT BE FATAL! 2018-02-01 11:31:25 -05:00
Isaac Connor 018523134e use ZM_BASE_PROTOCOL when loading plugins. https can't load http content 2018-01-31 14:35:23 -05:00
Isaac Connor 31b7deb101 Return NULL on error in dbQuery 2018-01-29 10:41:24 -08:00
Isaac Connor c9e32fb344 Check for successful Monitor db Insertion 2018-01-29 10:41:09 -08:00
Isaac Connor e638817cb9 Check for ServerId exists in MonitorObject 2018-01-29 10:40:50 -08:00
Isaac Connor 73d84c6b08 fix typo 2018-01-29 07:53:48 -08:00