Commit Graph

813 Commits

Author SHA1 Message Date
Steve eb631e4819
set min field widths on ports page (#544) 2022-11-04 21:54:04 -05:00
Steve 80a6da9276
give cleaner lines to the scan table (#543) 2022-11-01 09:49:47 -05:00
Steve 644ec1d595
give cleaner lines to adv config table (#542) 2022-11-01 09:49:14 -05:00
Steve 133ab928b5
give cleaner lines to the setup table (#541) 2022-11-01 09:48:48 -05:00
Steve ff20a9932f
fix current neighbor service search and add new search fields 11/01/2022 (#538) 2022-11-01 09:47:52 -05:00
Tim Wilkinson 4b305db099
Line up the columns on the mesh display (#534) 2022-10-26 20:55:36 -05:00
Steve 0b4ec4f1af
fix description alignment (#532) 2022-10-23 14:49:03 -05:00
Tim Wilkinson f7909823ec
Handle names missing .local.mesh (#528) 2022-10-20 15:43:55 -05:00
Steve 27115894ab
add search capability to Mesh Status page (#527)
* add search capability to Mesh Status page

* put filters in column header
2022-10-18 21:37:34 -05:00
Steve 4e02cd5044
add warnings to 32mb nodes (#521) 2022-10-14 15:32:22 -05:00
Tim Wilkinson caaafc3831
Protect against missing hosts_olsr.stable (#523) 2022-10-14 15:31:09 -05:00
Tim Wilkinson 93ad1f5ee7
Strip out as many dependncies from Lua Manager as possible to save memory (#522) 2022-10-13 12:07:36 -05:00
Tim Wilkinson 1a0d51ff59
Fix limiting nr of route shows with low memory (#518) 2022-10-11 22:22:11 -05:00
Tim Wilkinson c7538884ca
Display and correct from olsr_hosts totals rather than olsr json (#520)
* Display hosts totals rather than olsr totals
* Don't count hostname beginning mid<nr>.
2022-10-11 16:46:39 -07:00
Steve 10bedbaf48
fix retrieval of ntp_period (#517) 2022-10-11 09:14:46 -05:00
Steve 7f4342ffb7
add help link to pages missing it (#513) 2022-10-03 20:49:26 -05:00
Steve 72572034be
add ntp update period to basic setup page (#510)
* add ntp update period to basic setup page

* ensure current value as selected

* include case where reverts to daily after upgrade

* persist ntp_period across upgrades
2022-10-02 18:46:57 -05:00
Tim Wilkinson 808f4b1aa1
Remove an old "Lua version" display tag (#509) 2022-09-20 18:26:44 -05:00
Steve e37708641e
simplify AdvConfig display (#501) 2022-09-09 09:41:52 -05:00
Tim Wilkinson 6ba17b8e5a
Snapshot hostnames after updates so we have a consistent copy to display (#488) 2022-09-06 09:58:18 -05:00
Tim Wilkinson 3f89bb4290
Fix bad match for NAT dhcp address. (#500) 2022-09-06 09:57:06 -05:00
Steve b6a4ee6bb2
add units to setup and advconf pages (#499) 2022-09-04 11:05:54 -05:00
Steve cb62d5bf49
change support link to button (#496) 2022-08-29 16:49:45 -05:00
Tim Wilkinson 471f200782 Added missing callbacks 2022-08-15 11:16:24 -07:00
Tim Wilkinson a8d3be4403 Make the options booleans 2022-08-15 11:16:24 -07:00
Tim Wilkinson e1ddbabb85 Migrate LAN-to-WAN options to advance configuration 2022-08-15 11:16:24 -07:00
Steve AB7PA 9214a749b8
reorder advconfig settings (#477) 2022-08-09 21:44:45 -05:00
Tim Wilkinson 4426aa8016
Remove spectal scan (#441) 2022-08-02 21:27:31 -05:00
Tim Wilkinson 102c4112c0
Prefix 'WiFi' to WAN address when WiFi wan is enabled (#470) 2022-08-02 18:57:44 -05:00
Tim Wilkinson c3a317d424
Provide status about state of wan wifi connection (#472)
* Provide status about state of wan wifi connection

* Updated icons

* One more icon
2022-08-02 18:56:27 -05:00
Tim Wilkinson 47fc5f78ef
Password visible toggle (#469)
* Add toggle to show password fields

* Fix permissions
2022-08-02 18:55:08 -05:00
Steve AB7PA 7b768e6ce1
add svc alert icon (#461) 2022-07-31 14:12:17 -05:00
Tim Wilkinson 665fa4924f Fix missing "http" proto when checking non-links 2022-07-27 12:22:10 -07:00
Tim Wilkinson e8d90a9404 Add a visual indicator when a service is not being published. 2022-07-27 12:22:10 -07:00
Tim Wilkinson 1e78f85edc Immediatley run service check code when installing/removing package 2022-07-26 23:48:24 -07:00
Tim Wilkinson e591ffa801 Also include AR750 2022-07-25 14:39:24 -07:00
Tim Wilkinson d9ef1423c2 Add WAN VLAN support to the Mikrotik hAP 2022-07-25 14:39:24 -07:00
Steve AB7PA 6272209324
adjust admin categories (#455) 2022-07-25 16:38:18 -05:00
Paul K3PGM b859a79127
Fully validate node and tactical names; give better messages when invalid. (#450) 2022-07-22 18:49:58 -05:00
Tim Wilkinson 9993244143 Fix issues with tactical names 2022-07-21 15:15:47 -07:00
Tim Wilkinson f0bfad55d0 wifi_chanbw should always be a string 2022-07-21 15:15:05 -07:00
Tim Wilkinson 43fe20f2bd
Fix random iperf failures (#445) 2022-07-21 09:50:28 -05:00
Steve AB7PA 02ec015d90
allow long filename display (#444) 2022-07-20 18:15:13 -05:00
Tim Wilkinson cf8abafd65
iPerf3 as part of the api (#443) 2022-07-20 14:42:05 -05:00
Tim Wilkinson d166393bb8
Ping tool (to complement the iperf3 tool) (#440)
* Ping tool (to complement the iperf3 tool)

* Make ping-tool part of the api (like traceroute)

* Bump api version
2022-07-19 20:27:44 -05:00
Steve AB7PA ce67430b45
make Keep Settings more prominent (#439) 2022-07-19 17:47:12 -05:00
Tim Wilkinson 675beca8f8
Prevent < and > being used in service names (#437) 2022-07-18 08:46:01 -05:00
Tim Wilkinson ba55aed754
Arrays are 1-indexed (not zero) (#432) 2022-07-14 13:05:33 -05:00
dman776 f55cdee1d2
Initial framework api for read/write 07/13/2022 (#359)
* add login page controller

* update copyright

* initial update

* add options method

* add setup_basic controller

* initial pass of rework of setup_basic

* add stubs for setup_optional and setup_advanced

* setup_basic get mesh_rf functions complete

* add additional properties for setup_basic

* add maxpower for setup_basic

* add error checking for controllers

* cleanup

* add /apriprotected to basic auth list

* change to dot notation style
2022-07-13 16:36:53 -05:00
Tim Wilkinson abee30e537
Reduce colors and improve scan information (#429)
* Reduce colors

* Noise -> Ambient noise
2022-07-13 16:21:39 -05:00
Tim Wilkinson 79a63e8ad8
Default DHCP limits in NAT mode if fields are blank (#430) 2022-07-13 16:19:24 -05:00
dman776 2e09886d4b
Fix tacticalname (#426)
* fix tactical node names fixes#420

* make / optional

* revert last change
2022-07-13 16:18:08 -05:00
dman776 55642e05be
rename supportdata extention from tgz to gz (#427) 2022-07-06 15:27:08 -05:00
Tim Wilkinson 82b0cb5903
Heatmap spectral view (#423) 2022-07-01 09:53:18 -05:00
Steve Lewis AB7PA 4e6b68c612 allow zero length wan wifi client passphrase 2022-06-30 08:55:41 -07:00
Steve AB7PA 480185bd0b
set default non-nil values on setup (#417) 2022-06-29 15:45:54 -05:00
Tim Wilkinson 7887497cb3 Allow auto-distance to be overridden when LQM cannot determine the
distance to other nodes
2022-06-27 15:29:39 -07:00
Tim Wilkinson afe30ffc6e
Graph in SNR + fixes (#412)
Feedback from Joe and others to adjust the noise floor (which is lower
for subchannels). Label with SNR because that's easier to compare to the
SNR values people are already familiar with.
2022-06-25 20:45:28 -05:00
Tim Wilkinson b4c5691110
3GHz fixes and optimizations (#411) 2022-06-24 22:24:28 -05:00
Tim Wilkinson 4b37c6a033
Spectral wifi information (#410)
* Add spectral channel information

* Add spectral graph
2022-06-24 16:50:05 -05:00
Tim Wilkinson b006c1040a Stop map update claiming success when it actually fails 2022-06-23 14:46:15 -07:00
Tim Wilkinson ad441ba600 Fix error when re-enabling wifi mesh with lqm on 2022-06-17 14:27:48 -07:00
Tim Wilkinson 28f25cf951 Allow user to force certain macs to be accepted 2022-06-16 20:34:39 -07:00
Tim Wilkinson c57d384ca6 LQM on by default 2022-06-16 20:34:39 -07:00
Tim Wilkinson fb2ec36bb6 LQM2 2022-06-16 20:34:39 -07:00
Tim Wilkinson 8dc74c117f Fix display of unknown radio model 2022-06-13 14:49:24 -07:00
Tim Wilkinson 0a6f4a7a48 Missing channels -4 and -3 2022-06-08 11:45:03 -07:00
Tim Wilkinson 40fb320290 Fix 5GHz AP bad channel dropdown 2022-06-07 21:49:30 -07:00
Steve AB7PA 6aff2636c0
report node hardware better on Status page 06/07/2022 (#383)
* report hwtype better for UBNT nodes

* add Ubiquiti mfg to radios.json

* change field name

* edit field name to model
2022-06-07 21:31:30 -05:00
Steve AB7PA c4bd018a5c
restrict msg banner to nonprotected pages (#384)
* restrict aredn messages to non-protected pages

* fix typo
2022-06-07 21:30:27 -05:00
Steve AB7PA bf8c6ee093
add hardware type to Status page (#382) 2022-06-04 22:45:00 -05:00
Tim Wilkinson b86213a66f
LQM fixes 6 (#379) 2022-05-31 21:54:02 -05:00
Tim Wilkinson 0faf41072a
Restart manager when we restart the firewall (#378) 2022-05-30 14:56:50 -05:00
Steve Lewis AB7PA 086aeb18e3 add qmark to RF Neigh status column 2022-05-25 12:33:18 -05:00
Tim Wilkinson 53632d322d
LQM fixes 4 (#370)
* Tidy LQM status
Remove TX Estimate which was duplicating information on the mesh page and
confusing folk.
Sort by name to stop the display jumping around.

* Split out ping and tx qualities and use average of both.

* Improve keeping re-discovered nodes in pending

* Remove .local.mesh from hostname (they're there sometimes)

* Identify why poor quality traffic is blocked
2022-05-24 10:35:36 -05:00
Steve AB7PA 2fb911948a
update the onboard node help file (#367) 2022-05-23 07:45:16 -05:00
Tim Wilkinson b680d2019e
LQM fixes 3 (#366) 2022-05-22 21:06:02 -05:00
Tim Wilkinson a8b7f8a216
LQM improvements (#364) 2022-05-20 08:10:01 -05:00
Tim Wilkinson 3f3b71b10c
Add missing .local.mesh to neighbor links (#363) 2022-05-19 10:51:41 -05:00
Tim Wilkinson b23ab5ee8a
Link Quality Management (#360)
* Link Quality Management experiment (built in)

* Protect LQM pages

* Omit "empty" mac addresses

* Integrate LQM v0.2
Includes proposed UI if this were built-in.
When LQM is enabled (advanced settings) the usual distance inputs are
replaced with "min snr' and "max distance" inputs which are the major
ones you might tweak, as well as a link to the LQM status page.
Other controls are now available (so protected) in advanced settings.

* Improve LQM updating

* Use running snr averages

* Merge app changes

* AREDN-ize the UI

* Improve status language

* Improved DtD detection

* Improve quality reporting

* Link Quality category

* Enable by default

* Better intergration

* Link => Neighbor

* Formatting

* Make sure initial page is populated without extra fetch

* Handle empty lqm.info

* Update with latest experiment algorithm changes

* Validate LQM settings before applying them

* Algorithm updates

* Improve quality reporting

* %% -> %

* Default max distance now 50 miles

* Get actual noise if radio will provide it

* low_snr => min_snr

* Dont print node description if we dont have one

* Remove properties duplicated from setup page

* Localize max distance. Miles in GB and US, Kilometers everywhere else.

* Ping link quality testing

* UDP 'ping' for quality check

* Change Active Settings title

* Expand ping test

* Improve messaging

* Add a ping penalty for neighbors which cannot be contacted in a timely manner.

* Remove user_blocks config option. No one needs to use this anymore.

* Localize distances on lqm page

* Improve status reporting

* First run emergency node setup.
When a node first runs LQM, if the default settings fail to connect to
a node we will now adjust them so that at least one node is viable.

* Restore blocking of mac addresses

* LQM now off by default
fixed #47
2022-05-18 12:49:00 -05:00
Tim Wilkinson 15b4ff734a
Firmware sideload support (#358) 2022-05-08 11:13:11 -05:00
dman776 f09b38c6d2
enhancement: advanced config categories 05/06/2022 (#357) 2022-05-06 21:03:03 -05:00
Tim Wilkinson 77c88f2738
Wait for iperf3 daemon to startup before returning. (#350) 2022-04-29 13:26:48 -05:00
Tim Wilkinson ac78a4a40a
succssfully -> successfully (#349) 2022-04-28 09:05:29 -05:00
Tim Wilkinson 3660b26fbb
Add cross origin access to remove remote access limitation. (#347) 2022-04-27 19:39:14 -05:00
Tim Wilkinson e3558c02de
Only preserve wan_intf if set (#348) 2022-04-27 19:38:16 -05:00
Tim Wilkinson 3f2adcc002
Tiny iperf3 UI (#338) 04/26/2022
* Tiny iperf3 UI

* Added advancedconfig switch

* Add udp/tcp protocol selection

* Validate server names
Add .local.mesh if missing
2022-04-26 21:08:46 -05:00
Tim Wilkinson 7515d6f841 Set WAN VLAN by number rather than by device.
This is more obviously what you want to do, and it makes supporting
devices with switches easier.
2022-04-19 17:24:46 -07:00
Tim Wilkinson 4f1b13deb6 Dont support this feature on devices with switch chips. 2022-04-19 17:24:46 -07:00
Tim Wilkinson 7b77f111ce Support changing the VLAN tag on WAN 2022-04-19 17:24:46 -07:00
Tim Wilkinson d707ca89ac Add port dump to supporttool data 2022-04-19 15:25:42 -07:00
Tim Wilkinson aec90d47ae
Missing lanlimit when print port in nat mode (#328) 2022-04-08 04:15:13 -05:00
Tim Wilkinson c3f2fcd400
Optimize getRemoteNodes (#326) 2022-04-05 19:30:36 -05:00
Tim Wilkinson b26476f5e2
Fix displaying "Previous neighbors" with empty hostnames (#325)
* Dont display previous neighbors with empty hostnames
* Use IP address when name missing
* Fix bug where missing names became ever growing string of whitespace
2022-04-04 22:16:35 -04:00
Tim Wilkinson e0ac3e9349
Fix bad gateway when switching to LAN NAT mode (#321) 03/30/2022 2022-03-30 15:14:01 -05:00
Steve AB7PA b13e04b2d8
reduce slider chunkiness (#316) 2022-03-22 06:33:00 -05:00
Tim Wilkinson 6b4ccbf5ad
advancedconfig: tun wan only (#310)
* Prevent tunnel traffic being sent over the mesh (unless explicitly enabled)
* Boolean settings will use default value if value not yet set
2022-03-20 22:55:11 -03:00
Tim Wilkinson 69c0d51216
Add @ back in as a valid password character (#312) 2022-03-20 17:46:56 -05:00
Tim Wilkinson ce2f47e06d
Improve history matching as poor history entries could break "Previous Neighbors" (#307) 2022-03-19 09:21:22 -05:00
Tim Wilkinson 85edc542fc Fix uploading data to AREDN Servers 2022-03-18 17:57:05 -07:00
Tim Wilkinson 321e58bd37
Include tunnels by default (#302)
* Include tunnels by default

* Tunnels are always installed so no longer need this flag
2022-03-17 20:57:48 -05:00
Tim Wilkinson caebaea106
Automatically update package dependencies if package install fails (#303) 2022-03-17 20:36:08 -05:00
Tim Wilkinson ebd4a9e07e
Fix use of coordinate to center map (#304)
* Fix use of coordinate to center map

* Typo
2022-03-17 20:35:35 -05:00
Tim Wilkinson 57f81e48cc
Automatically update package dependencies if package install fails (#300) 2022-03-17 14:28:20 -05:00
Tim Wilkinson 3595dd3ac2
Make sure we copy /etc/config/vtun to /etc/config.mesh/vtun when installing tunnels. (#299) 2022-03-17 06:23:40 -05:00
Tim Wilkinson ad78e077f0
Improve the firmware upgrade process (#294)
* Improve the firmware upgrade process

The old firmware upgrade process attempted to free up RAM by reusing
the 'upgrade_kill_prep' script which is later used by '/sbin/sysupgrade'.
Unfortuantely this doesn't work as intented. While the script will go about
killing various services, 'procd' just goes and starts them up again using
quite a bit more memory in the process. Instead this script just kills
the various daemons 'no questions asked' and then runs the associated
'/etc/init.d/xxx stop' script to instruct 'procd' not the start them up again.
This gets us to the place the original script was trying to go.

+ A syntax fix in '007' patch (need spaces around the [ .. ])

* Inline the style for the firmware page to avoid sleep before flash

* Minor reliability improvements

* Clear away services even earlier
2022-03-16 21:45:26 -05:00
Tim Wilkinson 8947e6f23c
Migrate LeafletJS to new URL (#298) 2022-03-16 21:42:26 -05:00
Tim Wilkinson f613b078d7 Add /var/run/services_olsr to support tool data 2022-03-15 22:57:53 -07:00
Tim Wilkinson 09985d3c57
Completely remove perl from the build DUMP_PERL (#291)
* And finally ... remove perl from the images

* Remove two more than came from the Admin merge

* Remove perl from perm packages
2022-03-15 21:23:39 -05:00
Tim Wilkinson 7dde68bbb5
Lua page: Admin (#290)
* Fix scripts to fail gracefully if tunnel software not configured.
* Add 'manager.lua' to restart list
* Admin page in Lua (+associated upgrade script)
* Rename bbhn-postupgrade -> aredn_postupgrade
* Add missing 'uploadctlservices' call before package upload
2022-03-13 20:19:04 -07:00
Tim Wilkinson 74ba25c909
Add missing escapes for contact and node descriptions (#289) 2022-03-13 08:11:22 -07:00
Tim Wilkinson 64d315ada5
Ignore 'iw phy' command if no phy device (#287) 2022-03-13 07:48:10 -07:00
Tim Wilkinson 8409ffe6ea
Fix tunnel disply order (#286) 2022-03-11 15:59:50 -06:00
Tim Wilkinson d03be0c2ae Fix broken wifi sorting 2022-03-11 10:57:54 -08:00
Tim Wilkinson 93e8d0a53d Cron is only running to poll AREDN messages, so kill it.
And move polling into the Lua Manager
2022-03-09 19:18:19 -08:00
Tim Wilkinson 66ee2fc9a2
Fix active tunnel indicator for tunnel server (#277) 2022-03-09 20:26:07 -06:00
Tim Wilkinson 7a5d15fd09
Tunnel's default IP is explicityly based on eth0's MAC (not 'lan') (#278) 2022-03-09 20:25:35 -06:00
Tim Wilkinson 36c3e054ac
Dont truncate /etc/config/vtun on tunnel install (#275) 2022-03-09 15:34:33 -06:00
Tim Wilkinson a0e7749b1e
Lua stragglers (#274)
* Final bits of perl replaced by lua

* Use iwinfo during first boot (api I was using fails this early)

* Retry getting phy device (it can fail as the node is booting up)
2022-03-08 21:22:07 -06:00
Tim Wilkinson 922a74d574
Lua userpages: Tunnels (#271)
* Lua vpn server and client pages

* Lua vpn server and client pages

* Fix reporting of daemon restart errors

* Lua olsrd-config

* Fix reversed client/server ip assignments

* Fix patterns for finding active tunnels
2022-03-08 21:07:58 -06:00
Tim Wilkinson f41fff889d
Mesh ignore bad linkquality (#273) 2022-03-08 17:47:08 -06:00
Tim Wilkinson b17f52c27d
Fix suffix and bad protocol suffix service url name checks (#269) 2022-03-07 21:41:47 -08:00
Tim Wilkinson ceec7a6fa5
Fix mis-reporting of changed LAN subnet on reboot (#268) 2022-03-06 18:15:07 -06:00
Steve AB7PA 6087149914
add advanced WAN help (#259) 2022-03-05 21:52:41 -06:00
Tim Wilkinson eae5908148
Add channel -3 & -4 (from original fix #210) (#262) 2022-03-05 21:51:45 -06:00
Tim Wilkinson 50d4671be5
Make wifi scanning produce the same results as the perl version. (#263) 2022-03-05 21:50:54 -06:00
Tim Wilkinson 17d76bed07
Fix wifi power offset calculation. (#265) 2022-03-05 21:50:06 -06:00
Tim Wilkinson c1ab4f9a51
Setting POE or USB to off caused 'Bad Gateway' (#264) 2022-03-05 17:31:44 -06:00
Steve AB7PA 125f49d640
remove trunk from urlprefix (#261) 2022-03-05 11:46:57 -06:00
Tim Wilkinson d3b67ddbb8
Fix broken cursor use. (#258) 2022-03-04 20:57:16 -06:00
Tim Wilkinson 46a4420a3d Remove the potentially problematic 'filecopy("/etc/config/aredn", "/etc/config.mesh/aredn")'
/etc/config.mesh/aredn sometimes gets truncated, although reproducing it is difficult. This
is one of the few places this file is mindlessly written to, so instead use cursors to update it.
2022-03-03 19:47:25 -08:00
Tim Wilkinson 4eaeb1d220
Advancedconfig improvement (#255) 2022-03-03 17:03:08 -06:00
Tim Wilkinson 10a7be36fe
Fix broken auto-reboot on initial setup (#256) 2022-03-03 17:01:57 -06:00
Tim Wilkinson bdba0c2910
tx power => txpower (typo) (#250) 2022-03-02 17:28:06 -06:00
Tim Wilkinson 2a263fce4f
Fix noprop color (typo in pattern match) (#251) 2022-03-02 17:27:39 -06:00
Tim Wilkinson 6877cb326f Fix WAN IP check (check was inverted) 2022-03-02 00:32:47 -08:00
Tim Wilkinson af53c47d57 Fix timezone management 2022-03-01 21:49:02 -08:00
Tim Wilkinson 3dbb83fcab
Lua userpages: ports (#244)
* Ports page in Lua

* Minor fixes

* Fix adding current leases to dhcp reservations

* Show correct dns alias ip address
2022-03-01 21:13:53 -06:00
Tim Wilkinson 5a47d39b3b
Fix map when lat/lon unknown (#245) 2022-03-01 21:06:55 -06:00
Tim Wilkinson 3f2efd1c91
Fixes for first boot setup (#242) 2022-03-01 08:19:19 -06:00
Tim Wilkinson 7600284487
Fix broken reboot on advancedconfig page (#239) 2022-02-28 14:38:05 -06:00
Tim Wilkinson 253b23d303
Missing cursor during reboot (#238) 2022-02-28 14:37:36 -06:00
Tim Wilkinson 4f720b4afc
Submit on setup.pl should return to setup.pl (#227) 2022-02-24 11:05:33 -06:00
Tim Wilkinson 149b698d31
Lua userpages: setup (#220)
* Lua 'setup' page + backend node-setup
Moved old perl verison to .pl

* Make sure perl code continues to use node-setup.pl
2022-02-22 19:25:01 -06:00
Steve AB7PA ab241979bb
vpn send details in new browser window fixes #218 (#222) 2022-02-16 13:38:59 -06:00
Tim Wilkinson c3e586c60c
Migrate advancedconfig page to lua (#217) 2022-02-15 21:07:46 -06:00
Chris 2ce0e15083 Fix local variable in local neighbors 2022-02-12 04:41:24 -08:00
Tim Wilkinson c6c0244d94
Fix node count (similar fix to status page) (#213) 2022-01-31 08:45:05 -06:00
Joe AE6XE ce4f694563
aredn: extend 2G band adding ch -3 and ch -4 (#210) 2022-01-21 21:52:26 -06:00
Tim Wilkinson 781425ad59 Add missing piece of markup 2022-01-20 18:29:17 -08:00