summaryrefslogtreecommitdiffhomepage
path: root/libs
AgeCommit message (Collapse)Author
2012-01-09[PATCH] Explicit Cache-Control for lucid.http static contentJo-Philipp Wich
The Chrome web browser revalidates every resource if no explicit Cache-Control or Expires HTTP/1.1 header is sent. This makes the page loads appear to take a long time on pages with a few external resources, adding 300-500ms per item. This includes the XHR json responses that set page images, like wireless signal indicators and the like-- the images are revalidated on every XHR response. As an example, the Network -> Interfaces page generates 16 requests to the lucid http server: Main HTML cascade.css xhr.js tabbg.png cbi.js loading.gif ethernet_disabled.png reload.png reset.gif edit.gif remove.gif add.gif bridge.png vlan.png wifi.png iface_status Of those, 14 should be pulled from cache but they are all valdiated. The lucid server returns the correct 304 (Not Modified) responses but it delays the apparent page load time because of the backlog it creates at the http server. I would suggest setting explicit cache control on all files returned by the lucid http directory dispatcher. The "Expires" header is reportedly more widely supported, however this relies on the clock on the OpenWrt? system being accurate, which may not be the case. The "Cache-Control: max-age=" allows the server to set a timeout in seconds. I've included a patch that sets revalidate interval to 1 year, which is the value recommended by google. Reference: http://code.google.com/speed/page-speed/docs/caching.html Note this could create an issue if there are luci application which are generating files which change that are being served by the lucid http DirectoryPublisher?. I'm not sure if there is anyone doing that. If needed, this can probably be created as an option to the DirectoryPublisher? config stanza for each vhost. Finally, this only affects the Google Chrome browser, as both IE9 and Firefox seem to have their own revalidation interval in the absence of explicit cache control which may be based on the last modified time of the resource. Even in Chrome, this change doesn't take effect until the item is re-served with a 200 HTTP response so Chrome's cache should be cleared after this patch is applied. The patch can be extended to include cache control on 304 responses, but I'd not worry about cluttering the code with it because the problem will solve itself once chrome redownloads the resource.
2012-01-08libs/web: remove debugging codeJo-Philipp Wich
2012-01-08libs/web: allow zero-length string literals when parsing datatypesJo-Philipp Wich
2012-01-08libs/web: introduce recursive expression support for datatypes, introduce ↵Jo-Philipp Wich
"or" and "and" datatypes The commit adds a recursive parser for datatype expressions which allows nesting of validators, this allows for complex expressions like "list(or(range(0,65535),'infinite'))" to allow a list of values which are either integers between 0 and 65535 or the literal string "inifinite". That change also deprecates combined datatypes like "ipaddr" ["or(ip4addr,ip6addr)"] or "host" ["or(hostname,ip4addr,ip6addr)"]
2012-01-07libs/web: remove neg_ipaddr, neg_ip4addr and neg_network_ip4addr datatypes, ↵Jo-Philipp Wich
can be represented with neg(type)
2012-01-01libs/core: remove various uses of global vars in luci.ipJo-Philipp Wich
2011-12-20libs/core: rework luci.model.uci.apply() to return the commandline as table, ↵Jo-Philipp Wich
suitable for passing to nixio.exec()
2011-12-20[PATCH] Naive fix for bug #208Jo-Philipp Wich
For SimpleSection, use the section name (always "1") instead of the section type in the CBI-like string used to identify the upload. This allows upload fields to be placed in SimpleSections. The fix changes a minimal number of lines, but does introduce some unnecessary confusion, it may or may not be better than a more thorough/invasive fix. Set the enctype for the form element in the simpleform view to be multipart/form-data because the default application/x-www-form-urlencoded does not support input files. Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2011-12-20libs/web: show input/forward hints in zonelist widget only if bnoth allowany ↵Jo-Philipp Wich
and allowlocal are enabled
2011-12-20libs/web: prevent break between action buttons in tblsection templateJo-Philipp Wich
2011-12-20libs/web: fix placeholder attribute for DynListJo-Philipp Wich
2011-12-20libs/web: fix undesired autofocus of DynamicList widgetJo-Philipp Wich
2011-12-20libs/web: improve ip6addr datype validation, accept both CIDR and IP/Mask ↵Jo-Philipp Wich
notation
2011-12-19libs/web: add "any" option to firewall_zonelist widgetJo-Philipp Wich
2011-12-19libs/web: rework DynamicList widget to support dynamic lists composed of ↵Jo-Philipp Wich
comboboxes
2011-12-16libs/web: rework hostname match to not allow arbritary sequences of numbers ↵Jo-Philipp Wich
and dots
2011-12-16libs/web: add list(...) datatype for space separated lists of arbritary ↵Jo-Philipp Wich
datatypes
2011-12-16[PATCH] Abstract address UNIX sockets not binding properly (by ↵Jo-Philipp Wich
capnbry@gmail.com, #366) In #274, I stated abstract namespace and autobound abstract namespace datagram UNIX domain sockets work perfectly with nixio. However, I may have jumped the gun on that conclusion. Turns out they work perfectly for only one concurrent connection. The problem is that when binding to an abstract address socket, which begins with a NULL byte, nixio strncpy's the name into the sockaddr_un structure, which effectively copies nothing. It then binds to an address of 180 NULLs, which is completely legal, but obviously you run into problems when a second client tries to bind to the same address. The rules are as follows ( http://linux.die.net/man/7/unix) for the names: * If the name is blank, bind() should pass that the addrlen of sizeof(sa_family_t) and Linux will autobind a name that begins with null and is followed by 5 digits. * If the first character of the name is non-null, the name is a pathname and is null-terminated. addrlen should be sizeof(sockaddr_un), but the length can also be the pathname len + sizeof(sa_family_t) as the value will be null-terminated by the kernel unix socket driver * If the first character is null, the address is abstract and the value should not be null-terminated and addrlen is pathname + sizeof(sa_family_t) The attached patch fixes bind/connect/sendto by shortening the addrlen passed to be pathname len + sizeof(sa_family_t), which generates the correct socket names for all 3 cases above. It also fixes the address returned by recvfrom, which currently returns a blank string for any abstract address socket (as they begin with a null).
2011-12-16libs/web: add missing parts of previous commitJo-Philipp Wich
2011-12-16libs/web: implement "network" cbi datatypeJo-Philipp Wich
2011-12-14libs/web: allow one-character hostnamesJo-Philipp Wich
2011-12-05libs/core: fix undefined tostring() in network modelJo-Philipp Wich
2011-12-05libs/core: expose txpower offset values in network modelJo-Philipp Wich
2011-12-05From c63e369d57cb6862a8890c7b2ee1b6b449b2c42d Mon Sep 17 00:00:00 2001Jo-Philipp Wich
From: Gabor Juhos <juhosg@openwrt.org> Date: Mon, 5 Dec 2011 14:36:34 +0100 Subject: [PATCH] libs/sys: read model name from /tmp/sysinfo/model if present Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
2011-11-30libs/web: add assert() statements for unresolvable function caseJo-Philipp Wich
2011-11-20libs/nixio: link with libcrypto when using OpenSSL as digest backendJo-Philipp Wich
2011-11-12libs/core: fix removal of wifi networks without interface attached (OpenWrt ↵Jo-Philipp Wich
#10400)
2011-11-10libs/sys: update zoneinfo data to version 2011n (#345)Jo-Philipp Wich
2011-10-30libs/web: dispatcher: fix access to template properties in attr() and ↵Jo-Philipp Wich
ifattr() helpers (#10317)
2011-10-28libs/core: fix status reporting of standalone wifi iface in network modelJo-Philipp Wich
2011-10-26libs/sys: recent busybox versions changed top output from %MEM to %VSZ, fix ↵Jo-Philipp Wich
luci.sys.process.list() accordingly
2011-10-26libs/web: fix possible dispatcher crashJo-Philipp Wich
2011-10-26libs/web: move ifattr() and attr() helpers into dispatcher scope to make ↵Jo-Philipp Wich
them avilable to all templates, remove duplicate exports in cbi tempalte scope
2011-10-26libs/web: dispatcher add node_childs() and node_visible() helper functions ↵Jo-Philipp Wich
for templates
2011-10-25libs/web: dispatcher: implement a "firstchild()" target which simply ↵Jo-Philipp Wich
redirects to the first child of a node, useful for menus that are empty by default and may gain arbritary childs
2011-10-24libs/nixio: remove forgotten stamp fileJo-Philipp Wich
2011-10-23libs/web: cbi: support description attribute in nullsection instancesJo-Philipp Wich
2011-10-21libs/web: fix package name in error suggestionJo-Philipp Wich
2011-10-15libs/ipkg: give caller more control over filter patternJo-Philipp Wich
2011-10-14libs/ipkg: don't --autoremove; its dangeros. Attempting to uninstall ↵Jo-Philipp Wich
kmod-ipt-nat with it will remove half of luci too, additionally opkg segfaults and corrupts the status database
2011-10-11move protocol support into a new protocols/ subdirJo-Philipp Wich
2011-10-11libs/web: handle .redirect property for SimpleForm widgetsJo-Philipp Wich
2011-10-11libs/core: more fixes for network modelJo-Philipp Wich
2011-10-10libs/core: mark relay protocol as floatingJo-Philipp Wich
2011-10-10libs/web: add network_netlist widget option to filter virtual networksJo-Philipp Wich
2011-10-09libs/core: remove uneeded error importJo-Philipp Wich
2011-10-09libs/core: add more heuristics to infer device name from switch nameJo-Philipp Wich
2011-10-09libs/core: add luci.model.network.get_protocol(protoname[, networkname])Jo-Philipp Wich
2011-10-09libs/web: sent origin section id encoded in cbi.cts. requestsJo-Philipp Wich
2011-10-09libs/web: pass origin section id to :create() callback, needed when ↵Jo-Philipp Wich
multiple, filtered TypedSection instances of the same type are used within a single Map