Compare commits

...

445 commits

Author SHA1 Message Date
Jo-Philipp Wich
7cf9ed27e0 luci-0.8: update wireless schema 2009-09-25 13:40:18 +00:00
Jo-Philipp Wich
097fb5f7df luci-0.8: implement doth (802.11h) and wmm (802.11e) options for broadcom 2009-09-25 13:29:49 +00:00
Jo-Philipp Wich
005ca44075 luci-0.8: fix syntax errors in russian, greek and japanese translations 2009-09-25 13:07:01 +00:00
Jo-Philipp Wich
d4644a3a73 luci-0.8: drop lpk, unused 2009-09-25 13:05:06 +00:00
Jo-Philipp Wich
280e9f296c luci-0.8: drop lpeg and luacurses, unused 2009-09-25 13:04:32 +00:00
Jo-Philipp Wich
16572ca099 luci-0.8: remove -Werror from CFLAGS, prevents SDK from working on most hosts 2009-09-25 13:03:30 +00:00
Jo-Philipp Wich
3358db7faf luci-0.8: merge r4809 2009-06-08 20:40:55 +00:00
Jo-Philipp Wich
e2e0b2cfd2 luci-0.8: merge r4806 2009-06-08 20:01:52 +00:00
Jo-Philipp Wich
0c30bf5ffa luci-0.8: merge r4804 2009-06-08 18:37:18 +00:00
Jo-Philipp Wich
f6ecf917bf luci-0.8: merge r4802 2009-06-07 22:09:44 +00:00
Jo-Philipp Wich
679f02d14b luci-0.8: add translations for p2pblock 2009-06-07 20:49:06 +00:00
Jo-Philipp Wich
b4a92d368e luci-0.8: merge r4794 2009-06-07 20:27:01 +00:00
Jo-Philipp Wich
a44de71eda luci-0.8: merge r4793 2009-06-07 20:24:15 +00:00
Jo-Philipp Wich
fee5fa10bf luci-0.8: merge r4792 2009-06-07 20:23:08 +00:00
Jo-Philipp Wich
351fc5886a luci-0.8: merge r4790 2009-06-07 17:59:17 +00:00
Jo-Philipp Wich
aef0391657 luci-0.8: merge r4787 2009-06-07 13:45:30 +00:00
Jo-Philipp Wich
4ca5275a9b luci-0.8: merge r4785 2009-06-07 13:37:51 +00:00
Jo-Philipp Wich
249e236ab7 luci-0.8: merge r4783 2009-06-07 13:30:02 +00:00
Jo-Philipp Wich
6f9723640b luci-0.8: merge r4780 2009-06-07 13:19:41 +00:00
Jo-Philipp Wich
0f60f1be22 luci-0.8: merge r4776-r4777 2009-06-07 13:06:54 +00:00
Jo-Philipp Wich
76ba4dff83 luci-0.8: merge r4771 2009-06-07 11:58:40 +00:00
Jo-Philipp Wich
cf22d01f09 luci-0.8: merge r4768-r4769 2009-06-07 11:54:34 +00:00
Jo-Philipp Wich
d42861c922 luci-0.8: merge r4758 2009-06-06 15:56:54 +00:00
Jo-Philipp Wich
aa3857dd55 luci-0.8: splash: add german translations 2009-06-06 09:31:20 +00:00
Jo-Philipp Wich
3411f32d58 luci-0.8: splash: add i18n tags to splash status template 2009-06-06 09:20:31 +00:00
Jo-Philipp Wich
22dafeac57 luci-0.8: freifunk: add public splash status page 2009-06-06 09:08:41 +00:00
Jo-Philipp Wich
1a75b5f103 luci-0.8: splash: add admin status template 2009-06-06 09:04:37 +00:00
Jo-Philipp Wich
5988427fa2 luci-0.8: splash: add controller actions for new interactive status page 2009-06-06 09:02:37 +00:00
Jo-Philipp Wich
b4729018ac luci-0.8: splash: clean up cli utility, preserver black- and whitelist entries on sync, use iptparser to find rules 2009-06-06 09:01:12 +00:00
Jo-Philipp Wich
c2c366ab61 luci-0.8: splash: add counter rules, implement temporary bans 2009-06-06 08:58:44 +00:00
Jo-Philipp Wich
2322d876af luci-0.8: merge r4743 2009-06-05 19:54:11 +00:00
Jo-Philipp Wich
a37d9f8d34 luci-0.8: merge r4734 2009-05-30 22:39:30 +00:00
Jo-Philipp Wich
a89c1fa5d2 applications/luci-splash: fix mac address detection in mixed IPv4/IPv6 environments 2009-05-30 18:06:08 +00:00
Jo-Philipp Wich
aae312e759 luci-0.8: merge r4729 2009-05-30 01:31:51 +00:00
Jo-Philipp Wich
5a2c8db890 luci-0.8: merge r4727 2009-05-30 01:20:50 +00:00
Jo-Philipp Wich
b24c8aa25f luci-0.8: merge r4725 2009-05-30 00:45:27 +00:00
Jo-Philipp Wich
1782db2a22 luci-0.8: merge r4723 2009-05-29 23:04:21 +00:00
Jo-Philipp Wich
daa3f92c16 luci-0.8: merge r4721 2009-05-29 22:56:46 +00:00
Jo-Philipp Wich
aed9483e4b luci-0.8: merge r4719 2009-05-29 22:55:26 +00:00
Jo-Philipp Wich
1699850552 luci-0.8: merge r4715 2009-05-29 22:48:57 +00:00
Jo-Philipp Wich
c629629c16 luci-0.8: merge r4712 2009-05-29 21:23:07 +00:00
Jo-Philipp Wich
5afd00ec90 luci-0.8: merge r4711 2009-05-29 20:19:42 +00:00
Jo-Philipp Wich
9f6b7550e4 luci-0.8: merge r4520 2009-05-29 19:56:47 +00:00
Jo-Philipp Wich
318c7831ba luci-0.8: merge r4708 2009-05-29 19:54:59 +00:00
Jo-Philipp Wich
5e481381d5 luci-0.8: remove obsolete code 2009-05-29 19:27:10 +00:00
Jo-Philipp Wich
f698890d2e luci-0.8: remove luci and webuci sgi, drop luci-httpd and fastindex library - we don't support them on 0.8.x and they have been obsoleted in trunk 2009-05-29 19:24:00 +00:00
Jo-Philipp Wich
563f22c831 luci-0.8: merge r4540 2009-05-29 19:18:18 +00:00
Jo-Philipp Wich
8183a8f4de luci-0.8: merge missing parts of r4293 2009-05-29 19:09:27 +00:00
Jo-Philipp Wich
a27a6291f4 luci-0.8: merge r4476, r4477, r4585 and r4587 2009-05-29 18:58:38 +00:00
Jo-Philipp Wich
b5e913024b luci-0.8: merge r4693 2009-05-27 20:45:26 +00:00
Jo-Philipp Wich
8b4ed85b7d luci-0.8: merge r4649? 2009-05-26 18:30:32 +00:00
Jo-Philipp Wich
ce74e82973 luci-0.8: fix last commit 2009-05-25 14:13:48 +00:00
Jo-Philipp Wich
0a75fda7ce luci-0.8: merge r4609 2009-05-25 14:11:57 +00:00
Jo-Philipp Wich
26336c5eda luci-0.8: merge r4605 and r4606 2009-05-25 14:01:31 +00:00
Jo-Philipp Wich
7253f64bcb luci-0.8: merge r4599 and r4600 2009-05-25 14:00:30 +00:00
Jo-Philipp Wich
ce7fe7297c luci-0.8: merge r4596 2009-05-24 15:24:34 +00:00
Jo-Philipp Wich
df932b8989 luci-0.8: merge r4594 2009-05-24 14:05:08 +00:00
Jo-Philipp Wich
30ccc03e8f luci-0.8: merge r4592 2009-05-24 01:12:18 +00:00
Jo-Philipp Wich
463bfccc7e luci-0.8/modules/admin-full: fix madwifi turbo modes 2009-05-23 01:58:36 +00:00
Jo-Philipp Wich
56f41d6393 luci-0.8: merge r4534 2009-05-16 18:00:18 +00:00
Jo-Philipp Wich
73ebad06da luci-0.8: merge r4532 2009-05-16 17:30:35 +00:00
Jo-Philipp Wich
0ff2553ea2 luci-0.8: merge init script changes from r4530 2009-05-16 17:20:50 +00:00
Jo-Philipp Wich
5723346226 contrib/package/freifunk-watchdog: only monitor ad-hoc interfaces 2009-05-16 17:15:11 +00:00
Jo-Philipp Wich
e928518ba7 luci-0.8: merge r4527 2009-05-15 14:25:05 +00:00
Jo-Philipp Wich
10a73eb41a luci-0.8: merge r4521-r4525 2009-05-14 21:20:46 +00:00
Jo-Philipp Wich
8f660635c2 luci-0.8: merge r4515-r4518 2009-05-13 18:58:32 +00:00
Jo-Philipp Wich
d27ff9d2d9 luci-0.8: merge r4514 2009-05-13 10:11:08 +00:00
Jo-Philipp Wich
0c978dc697 luci-0.8: merge r4512 2009-05-13 00:45:43 +00:00
Jo-Philipp Wich
90b2eeb9fd luci-0.8: merge r4510 2009-05-13 00:19:59 +00:00
Jo-Philipp Wich
8fdf06b232 luci-0.8: merge r4508 2009-05-12 22:17:37 +00:00
Jo-Philipp Wich
626e9999ba luci-0.8: make luci-app-splash depend on iptables-mod-nat-extra 2009-05-09 22:22:24 +00:00
Jo-Philipp Wich
a262e3dfe2 luci-0.8: merge r4504 2009-05-09 21:28:51 +00:00
Jo-Philipp Wich
a928465fda luci-0.8: merge r4500 and r4501 2009-05-09 18:23:02 +00:00
Jo-Philipp Wich
832a13f485 contrib/package: make watchdog dependency conditional 2009-05-09 16:20:54 +00:00
Jo-Philipp Wich
54c33b7083 contrib/package: make freifunk-community depend on freifunk-watchdog 2009-05-09 16:19:09 +00:00
Jo-Philipp Wich
ef4275b89b luci-0.8: merge r4493 2009-05-09 15:53:09 +00:00
Jo-Philipp Wich
6067bc9f52 luci-0.8: merge r4218 and r4221 2009-05-09 15:52:23 +00:00
Jo-Philipp Wich
8ecde162ba luci-0.8: merge r4491 2009-05-09 15:29:15 +00:00
Jo-Philipp Wich
6c811156af luci-0.8: merge r4489 2009-05-09 04:02:48 +00:00
Jo-Philipp Wich
667d88fb27 luci-0.8: merge r4482 - r4487 2009-05-09 03:28:40 +00:00
Jo-Philipp Wich
9edf0dbb7c luci-0.8: fix collectd-mod-interface dependency for luci-app-statistics 2009-05-07 20:38:01 +00:00
Jo-Philipp Wich
3637f6adc7 luci-0.8: merge r4479 2009-05-07 17:24:36 +00:00
Jo-Philipp Wich
c2aada24ac luci-0.8: merge r4474 2009-05-06 18:25:05 +00:00
Jo-Philipp Wich
84f0d1bf02 luci-0.8: Merge r4472 2009-05-05 19:59:44 +00:00
Jo-Philipp Wich
96c4451b1a luci-0.8: Merge r4470 2009-05-04 20:05:18 +00:00
Jo-Philipp Wich
0ddb6064a3 luci-0.8: Merge r4467, r4468 2009-05-04 17:31:32 +00:00
Jo-Philipp Wich
684dc1a1aa luci-0.8: merge r4465 2009-05-03 18:16:10 +00:00
Jo-Philipp Wich
c213621fd7 luci-0.8: merge r4463 2009-05-01 14:17:03 +00:00
Jo-Philipp Wich
b87c0f469d luci-0.8: Merge r4461 2009-05-01 14:10:00 +00:00
Jo-Philipp Wich
933210b681 luci-0.8: add missing ff_rdate 2009-05-01 13:28:16 +00:00
Jo-Philipp Wich
a7a532d8cc luci-0.8: Merge r4458 2009-05-01 13:23:09 +00:00
Jo-Philipp Wich
239801927d luci-0.8: Merge r4453 2009-04-29 13:23:11 +00:00
Jo-Philipp Wich
703b52d256 luci-0.8/contrib: change Makefile to always checkout latest revision 2009-04-29 06:22:13 +00:00
Jo-Philipp Wich
3ed8c6364b luci-0.8: Merge r4449 2009-04-28 22:01:29 +00:00
Jo-Philipp Wich
3c4485c22d luci-0.8: Merge r4380-r4381 2009-04-27 21:51:48 +00:00
Jo-Philipp Wich
5fecc84ad8 luci-0.8: Merge r4446 2009-04-27 21:41:49 +00:00
Jo-Philipp Wich
7e2dc277dc luci-0.8: Merge r4443 2009-04-27 00:26:28 +00:00
Jo-Philipp Wich
3cb72545bb luci-0.8: Merge r4441 2009-04-27 00:18:40 +00:00
Jo-Philipp Wich
92ed481813 luci-0.8: merge r3952 2009-04-16 20:58:36 +00:00
Jo-Philipp Wich
dc1e631be8 luci-0.8: merge r4424 2009-04-12 22:14:04 +00:00
Jo-Philipp Wich
777597468b luci-0.8: merge r4419-r4422 2009-04-12 20:07:17 +00:00
Jo-Philipp Wich
2aff7e13fc luci-0.8: merge r4417 2009-04-09 14:12:51 +00:00
Steven Barth
fb57c6fd37 Freufunk: I CAN HAZ ZEROES PLZKTHX 2009-04-09 14:01:07 +00:00
Jo-Philipp Wich
0f47987d1a Merge r4373, r4374, r4378 2009-03-27 17:53:21 +00:00
Jo-Philipp Wich
add843cc3f Merge r4371 2009-03-25 16:56:45 +00:00
Jo-Philipp Wich
49454b8334 Merge r4367-r4369 2009-03-25 16:50:45 +00:00
Jo-Philipp Wich
90e80d9f06 Merge r4365 2009-03-23 23:03:16 +00:00
Steven Barth
85cbbf0029 Fix WPA2-EAP support 2009-03-23 13:44:17 +00:00
Jo-Philipp Wich
0f95453276 Merge r4351 2009-03-21 00:27:17 +00:00
Jo-Philipp Wich
f617f8f8a4 Merge r4349 2009-03-18 22:25:31 +00:00
Jo-Philipp Wich
99edb71f4c Merge r4347 2009-03-18 22:11:20 +00:00
Jo-Philipp Wich
db3d4fbb5e Merge r4345 2009-03-16 21:05:32 +00:00
Jo-Philipp Wich
04ffae93f5 Merge r4342 2009-03-16 17:58:45 +00:00
Jo-Philipp Wich
0bdf302f9f Merge r4338-r4341 2009-03-16 17:57:27 +00:00
Jo-Philipp Wich
907f27f8b2 Merge r4331, r4332 2009-03-15 18:52:11 +00:00
Jo-Philipp Wich
24b099ef0c Merge r4299 2009-03-06 13:53:17 +00:00
Steven Barth
147badd0b5 Introduce luci.dispatcher.get(...) which works like node(...) but does
not disable the autocreated flag and does not overwrite the target
controller so that call()-targets won't loose their binding to their
controller
2009-02-26 17:09:31 +00:00
Steven Barth
a813f9532b Enable stack tracebacks for 500 errors 2009-02-26 16:45:43 +00:00
Steven Barth
ad1af012ed Fix option dependencies, this was lost in some IE fixing stuff 2009-02-23 22:54:17 +00:00
Steven Barth
2515ecbc26 Sync with OpenWrt 2009-02-21 18:31:33 +00:00
Steven Barth
adaed27551 Fixes UVLdoc generation, thanks ffrrrr (closes #49) 2009-02-20 11:47:52 +00:00
Jo-Philipp Wich
2c34f6d366 Merge r4060, r4061 2009-02-20 04:17:57 +00:00
Jo-Philipp Wich
3f0436713d Merge r4258 2009-02-20 01:56:02 +00:00
Jo-Philipp Wich
75bad86cab Merge r4249-r4256 2009-02-20 01:48:11 +00:00
Jo-Philipp Wich
0e41ce82a8 luci-0.8: add missing template for interface status 2009-02-17 18:03:58 +00:00
Jo-Philipp Wich
8208d68ff4 Merge r4225-r4229, r4232, r4234 and r4244 2009-02-17 17:59:02 +00:00
Jo-Philipp Wich
eae5ea40f6 Merge r4245 2009-02-17 01:38:14 +00:00
Jo-Philipp Wich
66fc38228c Merge r4241 2009-02-15 00:24:06 +00:00
Jo-Philipp Wich
09fce67d9a Merge r4239 2009-02-15 00:05:00 +00:00
Steven Barth
260cbe6340 Tag 0.8.6 2009-02-05 09:34:55 +00:00
Steven Barth
1058b052e0 modules/admin-full: also show bssid option in ad-hoc mode for broadcom cards 2009-02-04 19:20:23 +00:00
Steven Barth
66ee1a8c92 Fix Wifi-Client mode for devices without standard default network configuration 2009-02-04 19:20:17 +00:00
Jo-Philipp Wich
1f88711e2c luci-0.8: bump base version 2009-01-31 18:07:43 +00:00
Jo-Philipp Wich
5b9bad1f07 Merge r4213 2009-01-31 17:32:35 +00:00
Jo-Philipp Wich
ee96cb2dfd Merge r4211 2009-01-31 16:32:41 +00:00
Steven Barth
ba30e75719 Fix ff_olsr_test_gw 2009-01-31 16:31:01 +00:00
Jo-Philipp Wich
df9ca2c72d Merge r4207 2009-01-31 16:27:58 +00:00
Jo-Philipp Wich
3c6c27f93e Merge r4206 2009-01-31 04:20:36 +00:00
Jo-Philipp Wich
e50137c73c Merge r4203 2009-01-31 03:02:57 +00:00
Jo-Philipp Wich
22827dbef4 Merge r4201 2009-01-31 02:22:48 +00:00
Steven Barth
2cdeb9dbf6 Lost without translation... 2009-01-30 18:57:14 +00:00
Steven Barth
ea925d4bfc Lost in translation... 2009-01-30 18:49:42 +00:00
Steven Barth
90d7bd84e5 Cleanup Freifunk defaults
Remove RTS, fallback to default
Disable Fledermaus theme
Disable forced German language, fallback to autodetect
2009-01-30 17:59:03 +00:00
Jo-Philipp Wich
410886fea5 Merge r4191 2009-01-30 16:07:24 +00:00
Jo-Philipp Wich
38ed02962c Merge r4192 2009-01-30 16:05:44 +00:00
Jo-Philipp Wich
9856a5f602 Merge r4097 2009-01-30 15:36:49 +00:00
Steven Barth
6c83242d9d Fix autodetection for extended language identifiers 2009-01-30 15:29:53 +00:00
Jo-Philipp Wich
e7234befc3 Merge r4186 2009-01-30 15:07:36 +00:00
Jo-Philipp Wich
be29cd90da Merge r4184 2009-01-30 14:00:35 +00:00
Jo-Philipp Wich
15e2fbca3f Merge r4182 2009-01-30 13:51:20 +00:00
Steven Barth
f2b3332d3f Set default target to ACCEPT 2009-01-29 15:04:16 +00:00
Jo-Philipp Wich
242bffe894 Merge r4178 2009-01-28 18:32:47 +00:00
Jo-Philipp Wich
1b4d4ff11a Merge r4176 2009-01-28 18:26:07 +00:00
Jo-Philipp Wich
27109e5245 Merge r4174 2009-01-28 18:18:48 +00:00
Jo-Philipp Wich
279d1cadd0 Merge r4172 2009-01-27 21:00:18 +00:00
Steven Barth
5cfe67624b Add MSS Clamping option for Essentials (closes #45)
Rename "MSS correction" to the correct term "MSS Clamping" in Firewall
Automatically set "defaultroute" and "peerdns" when PPP is selected in
Essentials
2009-01-27 20:50:28 +00:00
Jo-Philipp Wich
aa5a88985d Merge r4168 2009-01-27 17:15:58 +00:00
Jo-Philipp Wich
1b460753ad Merge r4166 2009-01-27 16:49:56 +00:00
Jo-Philipp Wich
7cfd5cd27e Merge r4157 2009-01-26 23:39:29 +00:00
Jo-Philipp Wich
ce4811f128 luci-0.8: fix olsrd init script for new version 2009-01-26 19:40:40 +00:00
Jo-Philipp Wich
e4eacc60f3 luci-0.8: bump olsrd-luci to most recent hg rev (a7316f987848/2227) 2009-01-26 14:36:02 +00:00
Steven Barth
a7acecc2f7 Remove dependency between luci-admin-full and firewall on user request 2009-01-26 14:00:04 +00:00
Steven Barth
f9893376b7 Add versioning information to Freifunk status 2009-01-26 10:21:20 +00:00
Jo-Philipp Wich
f33ae6e8cd Merge r4149 2009-01-26 02:10:02 +00:00
Jo-Philipp Wich
b7479f61a0 Merge r4147 2009-01-25 21:22:53 +00:00
Jo-Philipp Wich
fc7d1e62a9 Merge r4145 2009-01-25 20:25:05 +00:00
Jo-Philipp Wich
88ac7d2475 Merge r4143 2009-01-25 20:15:29 +00:00
Steven Barth
740c4bec4b FF-Wizard: Accept ICMP by default 2009-01-25 19:56:58 +00:00
Jo-Philipp Wich
a498bb51a8 Merge r4139 2009-01-25 19:38:41 +00:00
Steven Barth
097ccf2502 Bump UCI 2009-01-25 19:01:42 +00:00
Steven Barth
ca7c50624f It's kiloByte not kilobit... 2009-01-25 17:52:36 +00:00
Jo-Philipp Wich
eceeed951f Merge r4132 2009-01-25 17:31:48 +00:00
Steven Barth
1b42cbb63f Add unit for UPNP (closes #39) 2009-01-25 17:30:30 +00:00
Jo-Philipp Wich
d158c5b9f0 Merge r4128 2009-01-25 17:28:46 +00:00
Steven Barth
bcb9241d46 FF-Wiazrd: Add OLSR DNS to dnsmasq 2009-01-25 17:15:09 +00:00
Jo-Philipp Wich
a65451fcff Merge r4092 r4120 r4124 2009-01-25 16:54:42 +00:00
Jo-Philipp Wich
66c1cf92f7 Merge r4121 2009-01-25 15:06:55 +00:00
Jo-Philipp Wich
fbd63dafcc Merge r4115 r4118 2009-01-25 13:14:29 +00:00
Steven Barth
13f51f1521 Push translations 2009-01-25 12:35:34 +00:00
Steven Barth
5be014ef72 Fix PPP support (closes #41) 2009-01-25 12:16:33 +00:00
Steven Barth
767e03b575 Disable siitwizard for stable 2009-01-24 15:55:42 +00:00
Steven Barth
f41f564091 urldecode path_info before using it 2009-01-20 19:41:01 +00:00
Steven Barth
119a545ffc Replace Dos line endings with Unix ones where needed 2009-01-20 11:33:33 +00:00
Steven Barth
9d0a49fb4b Merge r4103 2009-01-20 10:19:22 +00:00
Jo-Philipp Wich
82c9c00115 Merge r4099 r4100 r4101 2009-01-20 00:54:28 +00:00
Jo-Philipp Wich
796204cd58 Merge r4086 2009-01-18 00:02:52 +00:00
Jo-Philipp Wich
8d2626f0fd Merge r4084 2009-01-17 23:51:28 +00:00
Jo-Philipp Wich
7e1a2a94ae branches/luci-0.8: bump version to 0.8.4 2009-01-17 23:31:18 +00:00
Jo-Philipp Wich
2b2bdac371 Merge r4080 2009-01-17 18:21:20 +00:00
Steven Barth
d79c187fcd Merge r4076 r4077 r4078 2009-01-17 17:59:11 +00:00
Steven Barth
7df44a6215 Merge r4074 2009-01-17 16:20:20 +00:00
Steven Barth
19b3320a9f Merge r4072 2009-01-17 13:53:03 +00:00
Jo-Philipp Wich
7dab1b3303 Merge r4070 2009-01-17 13:31:24 +00:00
Steven Barth
60646f63cc Merge r4068 2009-01-17 13:26:07 +00:00
Jo-Philipp Wich
ef3b58f760 Merge r4066 2009-01-17 13:22:51 +00:00
Steven Barth
2160131d66 Merge r4064 2009-01-17 13:21:50 +00:00
Steven Barth
65beeabab5 Merge r4062 2009-01-17 13:07:52 +00:00
Jo-Philipp Wich
08f7b36130 Merge r4052 2009-01-16 20:37:20 +00:00
Steven Barth
0ab8119bf2 Merge r4050 r4049 r4046 r4039 r4026 2009-01-16 20:29:47 +00:00
Steven Barth
fa9f794755 Merge r4047 2009-01-16 19:14:15 +00:00
Steven Barth
491f6af135 Merge r4044 2009-01-16 18:27:32 +00:00
Steven Barth
8565a58930 Fix saving of ipkg configuration file 2009-01-16 18:18:53 +00:00
Steven Barth
1ebccd440f Merge r4040 2009-01-16 12:39:50 +00:00
Steven Barth
62cba232e5 Automatic language detection 2009-01-14 23:48:51 +00:00
Steven Barth
5407471378 Merge r4027 2009-01-13 11:18:40 +00:00
Steven Barth
88a826934c Merge 4008 2009-01-11 19:15:54 +00:00
Steven Barth
09ef00ec1c Resolve dependencies when a combobox is updated. 2009-01-09 10:58:31 +00:00
Steven Barth
9649d061c6 Firewall GUI optimizations 2009-01-09 10:05:59 +00:00
Steven Barth
3aae2b5775 Make protocol selection in Firewall and QoS a combobox
closes #29
2009-01-08 21:19:11 +00:00
Jo-Philipp Wich
5c018b446a luci-0.8: marge r4001 2009-01-07 20:50:02 +00:00
Steven Barth
cd5a6fe9d3 Fix disabling of WiFi
closes #22
2009-01-05 21:14:33 +00:00
Steven Barth
ea361d9d2c Introduce active (pulling) JSON-Decoder 2009-01-04 20:09:13 +00:00
Steven Barth
e703d536cc Cleanup overview / details nodes 2009-01-04 15:47:53 +00:00
Steven Barth
0cc5fdd394 Add extended dispatching targets, optimize dispatching behaviour 2009-01-04 15:47:45 +00:00
Jo-Philipp Wich
f3157bc759 branches/luci-0.8, tags/luci-0.8: mark xrelayd as broken 2009-01-03 23:37:26 +00:00
Steven Barth
9ffa9958d8 HTTP is sufficient for plain checkouts, Schäuble could also do checkouts before by himself 2009-01-02 21:43:12 +00:00
Steven Barth
dc73daa720 Use luci.fs.access instead of luci.fs.isfile where applicable 2009-01-02 21:35:25 +00:00
Steven Barth
8887bed8b6 Merge conditional dependencies 2009-01-02 14:29:53 +00:00
Jo-Philipp Wich
0b46add42e branches/luci-0.8: backport probereq iwpriv support
tags/0.8.3: backport probereq iwpriv support
2009-01-01 18:41:47 +00:00
Jo-Philipp Wich
7429b91e4b branches/luci-0.8: backport wifi and olsr fixes
rags/0.8.3: backport wifi and olsr fixes
2009-01-01 14:33:36 +00:00
Steven Barth
0cab54fb46 Fix samba "read only" and "guest ok" settings not applied correctly. 2009-01-01 13:33:45 +00:00
Steven Barth
300590e66d Rename wireless.wifi-device.mode to wireless.wifi-device.hwmode 2008-12-31 20:29:28 +00:00
Steven Barth
93fca713e6 Add support for MSS correction 2008-12-31 20:29:19 +00:00
Steven Barth
c1e213a535 Bump UCI 2008-12-29 14:56:52 +00:00
Steven Barth
84710e742d Bump Stable version to 0.8.3 2008-12-23 22:19:32 +00:00
Jo-Philipp Wich
5536480cde branches/luci-0.8: remove broken apps from makefile 2008-12-23 22:01:41 +00:00
Jo-Philipp Wich
14b64e45c5 branches/luci-0.8: remove broken apps 2008-12-23 22:00:17 +00:00
Jo-Philipp Wich
293173f1a8 branches/luci-0.8: remove bitrot 2008-12-23 21:57:11 +00:00
Jo-Philipp Wich
4081526ba7 luci-0.8: merge complete trunk 2008-12-23 21:39:38 +00:00
Steven Barth
8b1ddef6a4 French translation fixes, thanks for contribution (closes #13) 2008-12-18 12:29:44 +00:00
Steven Barth
2fa1cc30c5 Merge italian translation 2008-12-18 12:29:37 +00:00
Steven Barth
c7852861cf i18n: .xml should not overwrite .lua files if they are older 2008-12-14 17:47:08 +00:00
Jo-Philipp Wich
e1224f7bd0 luci-0.8: add missing upload field 2008-12-13 15:37:17 +00:00
Steven Barth
4e8472ebbb Correct r3885 2008-12-10 23:17:52 +00:00
Steven Barth
8d007f3a1c Fixed an overflow error with IPv6 route metric 2008-12-10 21:46:22 +00:00
Steven Barth
c78457ff89 Don't apply network configuration if user clicks on "Scan" button 2008-12-10 20:34:11 +00:00
Steven Barth
741acaec8f Distro-Compatibility 2008-12-09 21:03:46 +00:00
Jo-Philipp Wich
c0a970d7a8 luci-0.8: merge r3880 2008-12-09 00:07:48 +00:00
Jo-Philipp Wich
e2dbd2a66b luci-0.8: backport polipo application 2008-12-08 00:50:23 +00:00
Jo-Philipp Wich
b3a866f0c9 luci-0.8: switch back to branch - will affect openwrt trunk builds, enable all packages 2008-12-08 00:35:39 +00:00
Jo-Philipp Wich
47268f5533 luci-0.8: merge r3872 2008-12-07 23:44:22 +00:00
Jo-Philipp Wich
57f8e6acd3 luci-0.8: merge r3870 2008-12-07 21:27:52 +00:00
Steven Barth
338391eacb Backported LuCI Livestats 2008-12-07 19:50:02 +00:00
Steven Barth
973771c9d3 Make luci.sys.wifi.getiwconfig more compatible 2008-12-07 19:49:45 +00:00
Steven Barth
06514656f1 System Password: Prevent error when both password fields are empty 2008-12-07 13:44:25 +00:00
Jo-Philipp Wich
1b41df2c29 luci-0.8: merge r3858 2008-12-05 22:20:37 +00:00
Steven Barth
4ef86cacad Reload luci.config for each thread 2008-12-05 15:37:39 +00:00
Jo-Philipp Wich
b5bbc5041f luci-0.8: merge r3854 2008-12-02 14:19:07 +00:00
Jo-Philipp Wich
c1d9107be8 luci-0.8: merge r3851 2008-11-30 19:15:16 +00:00
Steven Barth
3ec8d04c66 Don't fail if we do not have v6 support 2008-11-30 18:43:38 +00:00
Steven Barth
a10c57ca0a Optimized conntrack (thanks to Joe Burpee) 2008-11-30 17:23:05 +00:00
Jo-Philipp Wich
b405f14dfa luci.0.8: merge r3839 2008-11-29 22:08:00 +00:00
Steven Barth
499981160b Scope compatibility fixes 2008-11-29 21:59:06 +00:00
Steven Barth
285b78a4b4 IPKG würgaround 2008-11-29 21:58:58 +00:00
Jo-Philipp Wich
4f6a244c70 luci-0.8: merge r3714, r3716, r3750 and r3833-r3834 2008-11-29 21:37:29 +00:00
Jo-Philipp Wich
fdcdb98f8d luci-0.8: merge r3831 2008-11-29 01:54:31 +00:00
Jo-Philipp Wich
6d23bc3c1e luci-0.8: merge r3828-r3829 2008-11-29 01:45:20 +00:00
Jo-Philipp Wich
5d6651be86 luci-0.8: merge r3826 2008-11-28 21:57:03 +00:00
Jo-Philipp Wich
4c84e15d79 luci-0.8: remove 100-olsrd-timer-fix.patch from olsrd package 2008-11-28 20:35:44 +00:00
Jo-Philipp Wich
3f8ce1ad10 luci-0.8: merge r3809-r3822 2008-11-27 14:26:37 +00:00
Steven Barth
d37f5bedf1 Revert "Add ahdemo mode to mac80211"
Not supported until now
2008-11-22 14:44:58 +00:00
Steven Barth
586b4a9e37 Add ahdemo mode to mac80211 2008-11-21 08:00:21 +00:00
Steven Barth
413ac9895e Fix behaviour of dynamicdhcp field (thanks to Fabio Mercuri) 2008-11-18 12:29:25 +00:00
Jo-Philipp Wich
203af0504b * luci-0.8: merge r3793 2008-11-18 00:11:41 +00:00
Jo-Philipp Wich
fa5b0a5a3e * luci-0.8: merge r3791 2008-11-16 22:46:25 +00:00
Jo-Philipp Wich
67fd838640 * luci-0.8: merge r3788 2008-11-16 20:09:45 +00:00
Jo-Philipp Wich
f373b657c5 * luci-0.8: merge r3785 and r3786 2008-11-16 18:46:28 +00:00
Steven Barth
1ecec8981c Assign correct path attribute to nodes 2008-11-16 13:52:39 +00:00
Steven Barth
173ceeecd0 Remove UCI changes workaround 2008-11-15 11:27:26 +00:00
Steven Barth
70ab4f8329 Bump UCI 2008-11-15 11:26:48 +00:00
Steven Barth
fc9260a0e5 Added nosbeacon flags to wifi configuration 2008-11-12 21:36:39 +00:00
Steven Barth
2bef86c824 Add support for NanoFoo antenna settings 2008-11-12 18:37:16 +00:00
Steven Barth
e861e7bffc Detect IXP4xx processors correctly 2008-11-12 18:06:21 +00:00
Jo-Philipp Wich
c61cfb3e16 * luci-0.8: merge r3755 2008-11-12 16:06:11 +00:00
Steven Barth
4114169f2c Make luci.fs.rename work across fielsystems 2008-11-12 12:53:20 +00:00
Jo-Philipp Wich
69a117b090 * luci-0.8: merge r3748 2008-11-11 18:38:14 +00:00
Jo-Philipp Wich
392b115870 * luci-0.8: merge r3745 & r3746 2008-11-09 22:53:19 +00:00
Steven Barth
2fd21d049a Include backup date and hostname in backup archive name 2008-11-09 20:09:31 +00:00
Steven Barth
cde0e671a7 Ensure hotdeploying 2008-11-09 18:01:19 +00:00
Steven Barth
27adbcf125 Increase compatibility of SGI-CGI with CGI1.1 standard 2008-11-08 20:25:49 +00:00
Jo-Philipp Wich
00465c9a4b * luci-0.8: merge r3731-r3735 2008-11-06 23:10:43 +00:00
Steven Barth
c6affb6a7e Interet Suxplorer sends invalid HTTP-headers, ignore them 2008-11-06 17:35:17 +00:00
Jo-Philipp Wich
27350b7a77 * luci-0.8: merge r3727 2008-11-06 14:54:31 +00:00
Jo-Philipp Wich
bb2def3940 * luci-0.8: merge r3724, r3725 2008-11-06 14:49:28 +00:00
Jo-Philipp Wich
e77637b96e * luci-0.8: merge r3718 2008-11-05 22:07:44 +00:00
Jo-Philipp Wich
4dfa176aad * luci-0.8: merge r3712 2008-11-04 23:56:21 +00:00
Jo-Philipp Wich
cfdfa4ea1a * luci-0.8: merge r3710 2008-11-04 23:50:14 +00:00
Jo-Philipp Wich
2f4957fc3c * luci-0.8: merge r3692, r3695 and r3699-r3702 2008-11-04 21:28:07 +00:00
Jo-Philipp Wich
fbeebdac7e * luci-0.8: merge mmc_over_gpio app 2008-11-04 21:19:41 +00:00
Jo-Philipp Wich
bf93ade61c * luci-0.8: merge r3703-r3706 2008-11-04 20:30:16 +00:00
Jo-Philipp Wich
8fb1ea2a32 * luci-0.8: remove dependency on luci-theme-base from openwrt themes for now 2008-11-02 00:49:23 +00:00
Steven Barth
2f78d8c81c Publish request args 2008-11-01 18:49:54 +00:00
Steven Barth
36ea3e54ec Show ARP-Cache on "Active Connections" page 2008-11-01 11:43:22 +00:00
Steven Barth
ea1346519a Remove overload protection from SDK httpd 2008-11-01 10:53:51 +00:00
Steven Barth
9fb0f37769 Wifi devices should not be deletable (UVL override) 2008-10-31 10:03:48 +00:00
Steven Barth
b74e8cfb22 UVL related override fixes for Essentials 2008-10-31 09:36:00 +00:00
Steven Barth
a5c6e56adf Removed UCI Save/Apply cache from Essentials
Made CBI controllers configurable
2008-10-31 09:35:53 +00:00
Steven Barth
023880275f Add luci.util.append 2008-10-30 19:13:15 +00:00
Steven Barth
462d4572d9 luci.util.combine now also accepts single objects 2008-10-30 19:13:06 +00:00
Steven Barth
4f68b04b9c Publish status data
Conflicts:

	libs/web/luasrc/dispatcher.lua
2008-10-30 19:12:56 +00:00
Steven Barth
9c9c78be10 Fix rewrite and alias functions 2008-10-30 19:12:35 +00:00
Steven Barth
7a9c3efcec Replace some makes-you-want-to-slash-your-wrists-Code with something less harmful 2008-10-30 13:13:50 +00:00
Steven Barth
8ab62a9e0a Fixed a typo in luci.sys.httpget 2008-10-30 13:13:45 +00:00
Steven Barth
04cac6936e Use uname instead of /proc for reading the system hostname 2008-10-30 13:13:38 +00:00
Jo-Philipp Wich
d69e2df945 * luci-0.8: backport cbi fix 2008-10-30 02:41:25 +00:00
Jo-Philipp Wich
d951b66b45 * luci-0.8: merge further changes 2008-10-29 19:54:59 +00:00
Jo-Philipp Wich
3f414ad694 * luci-0.8: merge credits 2008-10-29 19:42:15 +00:00
Jo-Philipp Wich
faef90cae0 * luci-0.8: backport translation fixes 2008-10-29 19:41:59 +00:00
Jo-Philipp Wich
bb63ae4647 * luci-0.8: backport library fixes 2008-10-29 19:41:33 +00:00
Jo-Philipp Wich
8a690a0614 * luci-0.8: backport application fixes 2008-10-29 19:41:03 +00:00
Jo-Philipp Wich
3d0ed18228 * luci-0.8: backport admin shell fixes 2008-10-29 19:40:40 +00:00
Jo-Philipp Wich
4b20e81132 * luci-0.8: backport build system fixes 2008-10-29 19:40:15 +00:00
Jo-Philipp Wich
9c53825afb * luci-0.8: backport statistics fixes 2008-10-29 19:11:54 +00:00
Jo-Philipp Wich
3a72402097 * luci-0.8: fix luci config 2008-10-29 18:58:50 +00:00
Jo-Philipp Wich
d7fdd89030 * luci-0.8: merge template changes from trunk 2008-10-29 18:54:56 +00:00
Jo-Philipp Wich
13288521ec * luci-0.8: merge r3634 2008-10-29 05:55:09 +00:00
Jo-Philipp Wich
f967cc34d6 * luci-0.8: revert olsrd version for now 2008-10-29 05:49:49 +00:00
Jo-Philipp Wich
1fb3e99614 * luci-0.8: merge translation fixes, theme changes, selective port handling and others 2008-10-29 05:34:34 +00:00
Jo-Philipp Wich
fc93ba2c0e * luci-0.8: backport r3638-3641 2008-10-29 05:08:03 +00:00
Jo-Philipp Wich
332b98918c * luci-0.8: backport dns server fix 2008-10-24 21:31:05 +00:00
Jo-Philipp Wich
cc85e4fd05 * luci-0.8: disable theme-base package for now 2008-10-22 14:19:28 +00:00
Jo-Philipp Wich
85fbb033cf * luci-0.8: merge r3607, r3608, r3611 and r3612 2008-10-21 01:56:50 +00:00
Steven Barth
4e8af56ac1 Rearrange output of luci.sys.wifi.*, luci.sys.net.conntrack 2008-10-18 07:44:21 +00:00
Steven Barth
24fdb77e8e Added support for PXE boot configuration 2008-10-17 16:20:01 +00:00
Jo-Philipp Wich
87efdcc59d * luci: adept INSTALL readme files to new repository location 2008-10-16 13:08:24 +00:00
Jo-Philipp Wich
5c6a1b6268 * luci: change svn repo location for package feeds 2008-10-16 13:06:02 +00:00
Jo-Philipp Wich
e4d5abb00d * rename ff-luci project folder to luci 2008-10-16 12:52:11 +00:00
Jo-Philipp Wich
7d5fd78c99 * luci: tag 0.8.1, bump package feed to 0.8.1 2008-10-14 23:47:09 +00:00
Jo-Philipp Wich
52e1cfd4f9 * luci-0.8: backport fix for interface config bug 2008-10-14 23:43:30 +00:00
Steven Barth
8960741927 Prepare 0.8.0 tag 2008-10-13 18:35:57 +00:00
Jo-Philipp Wich
6385f4b6ba * luci-0.8: backport translation updates 2008-10-13 18:07:03 +00:00
Jo-Philipp Wich
b55cab10b1 * luci-0.8: backport interface config tweaks 2008-10-13 00:54:42 +00:00
Jo-Philipp Wich
1962c906b8 * luci-0.8: backport 3G support 2008-10-13 00:06:34 +00:00
Jo-Philipp Wich
2da8f3324e * luci-0.8: merge ppp config support (r3562-r3568) 2008-10-12 22:38:30 +00:00
Jo-Philipp Wich
6576ff9a05 * luci-0.8: backport password authentication fixes 2008-10-12 00:13:50 +00:00
Jo-Philipp Wich
d2d07e348f * luci-0.8: backport forgotten html fixes from r3323 to stable branch 2008-10-10 23:04:49 +00:00
Steven Barth
24cc552788 Optimized IPKG info parser 2008-10-08 23:36:14 +00:00
Steven Barth
38d6f14c9b Fixed a typo 2008-10-08 22:44:06 +00:00
Steven Barth
fa40172915 Backported conntrack page 2008-10-08 21:48:44 +00:00
Jo-Philipp Wich
c8170941b9 * luci-0.8: backport statistics dns plugin fix 2008-10-08 15:59:10 +00:00
Jo-Philipp Wich
9a02c8634e * luci-0.8: backport luci-app-initmgr 2008-10-06 20:09:06 +00:00
Jo-Philipp Wich
2c8ed3f1ea * luci-0.8: backported shadow password support and luci.sys.init api 2008-10-06 20:01:20 +00:00
Jo-Philipp Wich
cf5fbff0a2 * luci-0.8: merge translation fixes 2008-10-06 19:41:11 +00:00
Jo-Philipp Wich
cda77e18f6 * luci-0.8: backport cbi upload fix 2008-10-06 19:03:31 +00:00
Jo-Philipp Wich
82730423e4 * luci-0.8: backport portuguese-brazilian translation to luci-0.8 2008-10-06 17:55:08 +00:00
Steven Barth
b9110f3fa3 Rules should not be removed / created from the detailed rule configuration 2008-10-04 17:56:19 +00:00
Steven Barth
f64a0200f6 Made distinction between INPUT and FORWARD rules less ambiguous 2008-10-04 11:44:03 +00:00
Steven Barth
3a450ce9bc Backported back references 2008-10-03 16:58:05 +00:00
Jo-Philipp Wich
b53da072e4 * luci-0.8: backport hd-idle multiple instances fix 2008-10-03 16:49:00 +00:00
Steven Barth
35f3c60956 Backported Tinyproxy application 2008-10-03 16:28:28 +00:00
Steven Barth
e729187444 Redesigned firewall configuration 2008-10-03 16:23:43 +00:00
Jo-Philipp Wich
d75a5cc9d1 * luci-0.8: backport hd-idle i18n fix 2008-10-03 15:04:49 +00:00
Jo-Philipp Wich
5912b88021 * luci-0.8: backport hd-idle application 2008-10-03 12:24:57 +00:00
Jo-Philipp Wich
1096c222c5 * luci-0.8: backport olsr translation fixes 2008-10-01 15:53:23 +00:00
Jo-Philipp Wich
452498f9bc * luci-0.8: backport firewall fixes 2008-09-30 21:20:01 +00:00
Steven Barth
662217d7e5 Fixed a typo which prevented proper dependency tracking for additional fields 2008-09-30 21:13:33 +00:00
Jo-Philipp Wich
bd9ce36daa * luci-0.8: backport p910nd translation fix 2008-09-29 19:21:47 +00:00
Steven Barth
3768aadd98 Fallback to working theme if selected one does not exist 2008-09-29 15:39:01 +00:00
Jo-Philipp Wich
564c363e9d * luci-0.8: remove doubled line breaks from cbi dynlist template 2008-09-28 22:59:10 +00:00
Jo-Philipp Wich
b9cf0e6355 * luci-0.8: backport new layout for apply messages 2008-09-25 14:37:51 +00:00
Jo-Philipp Wich
29052f08df * luci-0.8: backport uvl scheme reorganisation 2008-09-25 14:09:58 +00:00
Steven Barth
0b93c1cd50 Remove unneeded dependencies 2008-09-25 12:53:43 +00:00
Steven Barth
f5aa042f47 Push luaposix to 5.1.4 2008-09-25 09:57:52 +00:00
Jo-Philipp Wich
41aeb0d56b * luci-0.8: backport luci_hosts init order fix 2008-09-24 22:45:20 +00:00
Steven Barth
56885c203a Broadcom should handle keep_avail now 2008-09-24 22:37:49 +00:00
Steven Barth
6f837e8f82 some BSD compatibility stuff 2008-09-24 22:02:51 +00:00
Jo-Philipp Wich
7507056762 * luci-0.8: backport ushare updates 2008-09-24 21:13:42 +00:00
Steven Barth
d99a7020e8 Added REJECT target to firewall zone configuration 2008-09-24 19:15:25 +00:00
Jo-Philipp Wich
d2df455f79 * luci-0.8: backport ushare application 2008-09-24 12:47:43 +00:00
Steven Barth
b70d78d41c httpd sections are not unique anymore 2008-09-23 23:08:47 +00:00
Steven Barth
8e7544e059 Optimize return value checks for luci-reload 2008-09-23 23:07:04 +00:00
Jo-Philipp Wich
c9bbacbbcc * luci-0.8: backport multiple httpd instance enhancement 2008-09-23 17:29:05 +00:00
Jo-Philipp Wich
9319ae924c * luci-0.8: backport conffiles fix 2008-09-23 13:59:11 +00:00
Steven Barth
7d9d8fe624 Kill luci-addons package 2008-09-23 13:16:25 +00:00
Jo-Philipp Wich
93dc16c976 * luci-0.8: backport olsr and wireless scheme fixes 2008-09-22 19:01:17 +00:00
Steven Barth
8dce2f16ee Better descriptions for firewall pages 2008-09-22 12:22:08 +00:00
Jo-Philipp Wich
63a3a887f6 * luci-0.8: backport statistics translation fixes 2008-09-19 21:11:58 +00:00
Steven Barth
6764141650 Fixed a typo in english translations 2008-09-19 19:16:13 +00:00
Steven Barth
e190a99be1 admin-full/admin-mini: Fixed backup module 2008-09-19 17:51:25 +00:00
Steven Barth
27bee8b23d Change source URLs to local mirror 2008-09-19 14:45:45 +00:00
Steven Barth
7f48a879a2 libs/http: Updated inline documentation for mimedecode_message_body 2008-09-19 13:56:50 +00:00
Steven Barth
4770351d7d Push full metadata to the file callback (parsed and unparsed) - not only the unparsed mime headers 2008-09-19 12:20:43 +00:00
Steven Barth
0e7016a528 Remove default latlon_file specification 2008-09-19 11:02:45 +00:00
Steven Barth
5805267164 Fixed a typo for broadcom maclist, Improved general maclist handling 2008-09-19 10:44:45 +00:00
Steven Barth
1999bfc066 Overall CBI improvements: DummyValue handling, dependency conflicts, ... 2008-09-19 10:44:35 +00:00
Steven Barth
e20ee5ca00 olsrd-luci: Enable position independent code for certain platforms 2008-09-18 18:32:10 +00:00
Steven Barth
e96f838644 admin-mini: Merge MAC-Address detection from admin-full 2008-09-18 14:51:30 +00:00
Steven Barth
4f354ea95a Work around an ugly Opera and Internet Explorer event handling bug. 2008-09-18 14:36:53 +00:00
Jo-Philipp Wich
5679f19503 * luci-0.8: backport dhcp scheme fix 2008-09-17 23:15:59 +00:00
Jo-Philipp Wich
5d103ba1a9 * luci-0.8: backport fstab fix 2008-09-17 22:22:45 +00:00
Steven Barth
3915eb48ae Don't validate dependencies for fields which are not part of the form 2008-09-17 12:07:09 +00:00
Steven Barth
244dfe0711 admin-mini: Override UVL values for wireless mode 2008-09-16 22:01:37 +00:00
Steven Barth
24fc615353 Fixed UCI save support for LuCI SDK 2008-09-16 19:51:11 +00:00
Steven Barth
64f835a291 More IE compatibility fixes 2008-09-16 15:51:35 +00:00
Jo-Philipp Wich
a175a17761 * luci-0.8: backport p910nd application 2008-09-16 11:23:56 +00:00
Steven Barth
0f3e734ef4 admin-full: Override UVL values for mode field 2008-09-16 10:09:25 +00:00
Steven Barth
5761b6e2dc Internet suXplorer JavaScript compatibility fixes 2008-09-16 10:09:14 +00:00
Jo-Philipp Wich
924ae9c404 * luci-0.8: backport fix for wrapped lines in df 2008-09-16 02:23:20 +00:00
Jo-Philipp Wich
5c03d681b2 * luci-0.8: backport second fstab fix 2008-09-16 02:01:05 +00:00
Jo-Philipp Wich
bc257d4275 * luci-0.8: backport fstab fix 2008-09-16 01:37:23 +00:00
Jo-Philipp Wich
0b8afcfece * luci-0.8: backport freifunk contact page translation fixes 2008-09-16 01:29:14 +00:00
Steven Barth
b900125140 Fixed statistics 2008-09-15 23:46:07 +00:00
Jo-Philipp Wich
ebb2e0ecb6 * luci-0.8: backport olsrd dyngw patch 2008-09-15 23:25:52 +00:00
Steven Barth
18ad45afe6 luci-flash does not need to by verbose 2008-09-15 23:13:33 +00:00
Jo-Philipp Wich
5162ea9277 * luci-0.8: backport olsr translation fixes 2008-09-15 21:45:23 +00:00
Steven Barth
de06412668 Fixed some typos in the english translation 2008-09-15 21:37:49 +00:00
Jo-Philipp Wich
354ea05067 * luci-0.8: merge freifunk translations 2008-09-15 21:03:26 +00:00
Steven Barth
d61d0795a1 Tuned dispatcher behaviour 2008-09-15 17:03:55 +00:00
Steven Barth
0dbf2f171b Optimized caching behaviour, automatically flush caches in dev environment 2008-09-15 17:03:04 +00:00
Jo-Philipp Wich
f2a70398f2 * luci-0.8: backport init and ucitrack fixes 2008-09-14 23:59:28 +00:00
Jo-Philipp Wich
379ec16b1e * luci-0.8: backport olsrd config and layout fixes 2008-09-14 23:21:14 +00:00
Jo-Philipp Wich
edd5f20c2a * luci-0.8: backport olsrd init fix 2008-09-14 22:54:55 +00:00
Steven Barth
c6793efe93 libs/cbi: Fix option initialisation errors 2008-09-14 22:02:03 +00:00
Jo-Philipp Wich
61d2797a15 * luci-0.8: backport olsr translations 2008-09-14 21:35:09 +00:00
Steven Barth
1932ef3294 Backport scheme and uci fixes 2008-09-14 19:12:23 +00:00
Jo-Philipp Wich
e81501aed4 * luci-0.8: backport luci-app-olsr improvements 2008-09-13 23:21:39 +00:00
Jo-Philipp Wich
a730476b78 * luci-0.8: backport updated olsrd package 2008-09-13 23:18:13 +00:00
Steven Barth
11482835c8 Backport: Overall CBI-UVL ineraction fixes 2008-09-13 12:24:33 +00:00
Steven Barth
c41f8343d9 Backported WiFi configuration: "override section validation if we create a new network on demand" 2008-09-13 09:09:55 +00:00
Steven Barth
078e6212d3 Backported UVL schemes 2008-09-13 09:09:48 +00:00
Steven Barth
1fe083b59a Backported UVL optimizations 2008-09-13 09:09:38 +00:00
Steven Barth
8f8da32d7e libs/core: Backported code optimizations 2008-09-12 07:48:36 +00:00
Steven Barth
78a3ecd136 UVC-Streamer: Upstream configuration file is named uvc-streamer not uvc_streamer 2008-09-11 18:54:51 +00:00
Steven Barth
a843884d86 luci-ntpc: Fixed option definitions 2008-09-11 17:25:44 +00:00
Steven Barth
b5cd786bc1 Backported wpa_supplicant/hostapd checks for WiFi Encryption configuration 2008-09-07 23:56:32 +00:00
Steven Barth
4d1d384f52 Fixed DHCP-Options and some CBI stuff 2008-09-07 23:53:20 +00:00
Jo-Philipp Wich
3ec269b8d0 * luci-0.8: backport network scheme fix 2008-09-07 23:08:58 +00:00
Steven Barth
39c3569a36 libs/cbi: Fixed DynamicLists 2008-09-07 23:03:35 +00:00
Steven Barth
2bf6516a7f Backported dynamic section optional field generating 2008-09-07 22:57:59 +00:00
Steven Barth
20ebf826d2 libs/cbi: Catch errors while creating named sections 2008-09-07 22:00:06 +00:00
Steven Barth
24ede00c83 * luci/modules/admin-full: fix character encoding in package descriptions, fixes #121 2008-09-07 21:59:48 +00:00
Steven Barth
314f7e8fe5 Remove "done." message from luci-reload 2008-09-07 18:55:16 +00:00
Jo-Philipp Wich
3373bdfca6 * luci-0.8: backport fix for reparse bug in cbi which caused invalidation of sections 2008-09-07 16:59:42 +00:00
Jo-Philipp Wich
f95576cd57 * luci-0.8: backport firewall scheme fix 2008-09-07 15:28:02 +00:00
Jo-Philipp Wich
59c72ebc0e * luci-0.8: backport luci-addons conffiles fix 2008-09-07 14:59:31 +00:00
Steven Barth
37b79596bb Backported UCI-Dependency Tracking and Responsiveness Improvements 2008-09-07 14:17:29 +00:00
Jo-Philipp Wich
0d12944af5 * luci-0.8: backport firewall scheme fixes 2008-09-07 13:39:16 +00:00
Jo-Philipp Wich
61e25ee927 * luci-0.8: register on_commit action for luci_hosts 2008-09-06 23:38:34 +00:00
Jo-Philipp Wich
094f2fa534 * luci-0.8: backport /etc/hosts configuration pages 2008-09-06 23:29:58 +00:00
Jo-Philipp Wich
c3d41e6cba * luci-0.8: merge cbi error handling fixes 2008-09-06 22:42:55 +00:00
Steven Barth
6941d64884 Remove unstable packages from menuconfig 2008-09-06 17:23:20 +00:00
Steven Barth
71b7fcb7e9 Backported network scheme 2008-09-06 17:06:53 +00:00
Steven Barth
456ece8064 Pushed version to 0.8, adapted Makefile 2008-09-06 16:23:40 +00:00
Steven Barth
97d4eddc43 Fixed Luasocket build
(cherry picked from commit 37ef79dc601bc34489bcab56d653f5d91e8526c8)
2008-09-06 16:12:34 +00:00
Jo-Philipp Wich
1773c2e54c * luci: create 0.8 branch 2008-09-06 00:26:59 +00:00
763 changed files with 46814 additions and 12966 deletions

221
.cproject Normal file
View file

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject>
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="luci" buildProperties="" description="" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" name="Preference Configuration" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051.1470931541" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.823611263" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1685234798" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.570824141" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.491129717" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
<listOptionValue builtIn="false" value="/usr/include"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.858094059" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.344617955" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.564526987" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
<listOptionValue builtIn="false" value="/usr/include"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1426860237" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.869454750" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.838425449" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
<listOptionValue builtIn="false" value="/usr/include"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1755775295" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" moduleId="org.eclipse.cdt.core.settings" name="Preference Configuration">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="luci.null.949486034" name="luci"/>
</storageModule>
</cproject>

View file

@ -5,8 +5,74 @@
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.dltk.lua.core.nature</nature>
</natures>
</projectDescription>

10
INSTALL
View file

@ -6,10 +6,10 @@ TOC:
1. Kamikaze Feed
1. Change to your OpenWRT buildroot
1. Change to your OpenWrt buildroot
2. Add the following line to your OpenWRT feeds.conf:
src-svn luci https://dev.leipzig.freifunk.net/svn/ff-luci/trunk/contrib/package
2. Add the following line to your OpenWrt feeds.conf:
src-svn luci http://svn.luci.subsignal.org/luci/trunk/contrib/package
3. Run ./scripts/feeds update
@ -21,7 +21,7 @@ TOC:
2. Kamikaze Packages
1. cd to the "package" directory of your kamikaze buildroot
3. Type: ln -s /path/to/ff-luci/contrib/package/* ./
3. Type: ln -s /path/to/luci/contrib/package/* ./
4. cd to your kamikaze build root and type: make menuconfig
You will find luci in the menu "Administration"
You will find luci in the menu "Administration"

View file

@ -1,6 +1,6 @@
include build/config.mk
MODULES = applications/* libs/* modules/* themes/* i18n/* contrib/*
MODULES = contrib/* applications/* libs/* modules/* themes/* i18n/*
OS:=$(shell uname)
export OS
@ -12,7 +12,7 @@ all: build
build: gccbuild luabuild
gccbuild:
for i in $(MODULES); do make -C$$i compile; done
for i in $(MODULES); do make -C$$i compile; done
luabuild:
for i in $(MODULES); do make -C$$i luabuild; done
@ -29,23 +29,24 @@ gcchost: gccbuild hostcopy
luahost: luabuild hostcopy
hostcopy:
mkdir -p host
for i in $(MODULES); do cp -a $$i/dist/* host/ -R 2>/dev/null || true; done
for i in $(MODULES); do cp -a $$i/hostfiles/* host/ -R 2>/dev/null || true; done
mkdir -p host/tmp
for i in $(MODULES); do cp -pR $$i/dist/* host/ 2>/dev/null || true; done
for i in $(MODULES); do cp -pR $$i/hostfiles/* host/ 2>/dev/null || true; done
rm -f host/luci
ln -s .$(LUCI_MODULEDIR) host/luci
rm -rf /tmp/luci-* || true
hostenv: host ucidefaults
ucidefaults:
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host)/bin/uci-defaults --exclude luci-community-*"
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host)/bin/uci-defaults --exclude luci-freifunk-*"
runboa: hostenv
libs/sgi-webuci/host/buildconfig.sh $(realpath host) > host/etc/boa/boa.conf
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host/usr/bin/boa) -c $(realpath host/etc/boa) -d"
runhttpd: hostenv
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath libs/httpd/host/runluci) $(realpath host) $(HTDOCS)"
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host/usr/bin/lucittpd) $(realpath host)/usr/lib/lucittpd/plugins"
runluci: luahost
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath libs/httpd/host/runluci) $(realpath host) $(HTDOCS)"
@ -62,11 +63,21 @@ hostclean: clean
apidocs: hostenv
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "build/makedocs.sh host/luci/ docs"
uvldocs: hostenv
build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) \
"build/uvldoc $(realpath host) $(UVL_SCHEMEDIR) uvldocs $(DOCS)"
po: host
for L in $${LANGUAGE:-$$(find i18n/ -path 'i18n/*/luasrc/i18n/*' -name 'default.*.lua' | \
sed -e 's!.*/default\.\(.*\)\.lua!\1!')}; do \
build/i18n-lua2po.pl . $(realpath host)/po $$L; \
done
run:
# make run is deprecated #
# Please use: #
# #
# To run LuCI WebUI using LuCI HTTPD #
# To run LuCI WebUI using LuCIttpd #
# make runhttpd #
# #
# To run LuCI WebUI using Boa/Webuci #

View file

@ -3,11 +3,14 @@ I'd like to thank the following people for contributing to this software:
* Anton Popov
- for rewriting the openwrt.org theme
* Florian Fainelli (OpenWRT)
* Florian Fainelli (OpenWrt)
- for the french translation
* Alina Friedrichsen
- for the reworked translation system, help on standards compliance and accessibility
* Yanira
- several applications and bugreports
Also a big thank you goes to:
@ -19,5 +22,5 @@ Also a big thank you goes to:
- for donating several boards for testing and his feedback
* Mickey (Freifunk Hannover)
- for his feedback and fixes for the OpenWRT builds
- for his feedback and fixes for the OpenWrt builds

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-augsburg ) && rm -f /etc/uci-defaults/luci-community-augsburg
}

View file

@ -1,16 +0,0 @@
#!/bin/sh
uci batch <<-EOF
set freifunk.community.name='Freifunk Augsburg'
set freifunk.community.homepage=http://augsburg.freifunk.net
set freifunk.community.essid=augsburg.freifunk.net
set freifunk.community.bssid=02:CA:FF:EE:BA:BE
set freifunk.community.channel=1
set freifunk.community.net=191.161.0.0
set freifunk.community.mask=255.255.0.0
set freifunk.community.dns='88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222'
set luci.main.mediaurlbase=/luci-static/fledermaus
set luci.main.lang=de
commit freifunk
commit luci
EOF

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-berlin ) && rm -f /etc/uci-defaults/luci-community-berlin
}

View file

@ -1,16 +0,0 @@
#!/bin/sh
uci batch <<-EOF
set freifunk.community.name='Freifunk Berlin'
set freifunk.community.homepage=http://berlin.freifunk.net
set freifunk.community.essid=olsr.freifunk.net
set freifunk.community.bssid=02:CA:FF:EE:BA:BE
set freifunk.community.channel=10
set freifunk.community.net=104.0.0.0
set freifunk.community.mask=255.0.0.0
set freifunk.community.dns='88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222'
set luci.main.mediaurlbase=/luci-static/fledermaus
set luci.main.lang=de
commit freifunk
commit luci
EOF

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-halle ) && rm -f /etc/uci-defaults/luci-community-halle
}

View file

@ -1,19 +0,0 @@
#!/bin/sh
uci batch <<-EOF
set freifunk.community.name='Freifunk Halle'
set freifunk.community.homepage=http://halle.freifunk.net
set freifunk.community.essid=halle.freifunk.net
set freifunk.community.bssid=02:CA:FF:EE:BA:BE
set freifunk.community.realm=pool.freifunk-halle.net
set freifunk.community.channel=1
set freifunk.community.net=104.0.0.0
set freifunk.community.mask=255.0.0.0
set freifunk.community.dhcp=10.0.0.0
set freifunk.community.dhcpmask=255.255.255.0
set freifunk.community.dns='88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222'
set luci.main.mediaurlbase=/luci-static/fledermaus
set luci.main.lang=de
commit freifunk
commit luci
EOF

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-hannover ) && rm -f /etc/uci-defaults/luci-community-hannover
}

View file

@ -1,16 +0,0 @@
#!/bin/sh
uci batch <<-EOF
set freifunk.community.name='Freifunk Hannover'
set freifunk.community.homepage=http://www.freifunk-hannover.de
set freifunk.community.essid=hannover.freifunk.net
set freifunk.community.bssid=CA:FF:EE:CA:FF:EE
set freifunk.community.realm=db.freifunk-hannover.de
set freifunk.community.channel=1
set freifunk.community.net=10.2.0.0
set freifunk.community.mask=255.255.0.0
set luci.main.mediaurlbase=/luci-static/fledermaus
set luci.main.lang=de
commit freifunk
commit luci
EOF

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-leipzig ) && rm -f /etc/uci-defaults/luci-community-leipzig
}

View file

@ -1,19 +0,0 @@
#!/bin/sh
uci batch <<-EOF
set freifunk.community.name='Freifunk Leipzig'
set freifunk.community.homepage=http://leipzig.freifunk.net
set freifunk.community.essid=leipzig.freifunk.net
set freifunk.community.bssid=02:CA:FF:EE:BA:BE
set freifunk.community.realm=db.leipzig.freifunk.net
set freifunk.community.channel=1
set freifunk.community.net=104.0.0.0
set freifunk.community.mask=255.0.0.0
set freifunk.community.dhcp=10.0.0.0
set freifunk.community.dhcpmask=255.255.255.0
set freifunk.community.dns='88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222'
set luci.main.mediaurlbase=/luci-static/fledermaus
set luci.main.lang=de
commit freifunk
commit luci
EOF

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/freifunk/olsr" />
</head>
<body style="background-color: black">
<a style="color: white; text-decoration: none" href="/cgi-bin/luci/freifunk/olsr">LuCI - Lua Configuration Interface</a>
</body>
</html>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/freifunk/olsr" />
</head>
<body style="background-color: black">
<a style="color: white; text-decoration: none" href="/cgi-bin/luci/freifunk/olsr">LuCI - Lua Configuration Interface</a>
</body>
</html>

View file

@ -17,7 +17,7 @@ module("luci.controller.ddns", package.seeall)
function index()
require("luci.i18n")
luci.i18n.loadc("ddns")
if not luci.fs.isfile("/etc/config/ddns") then
if not luci.fs.access("/etc/config/ddns") then
return
end
@ -26,7 +26,7 @@ function index()
page.dependent = true
local page = entry({"mini", "network", "ddns"}, cbi("ddns/ddnsmini"), luci.i18n.translate("ddns"), 60)
local page = entry({"mini", "network", "ddns"}, cbi("ddns/ddnsmini", {autoapply=true}), luci.i18n.translate("ddns"), 60)
page.i18n = "ddns"
page.dependent = true
end

View file

@ -0,0 +1,8 @@
ddns = 'DNS Dynamique'
ddns_desc = 'Le DNS Dynamique permet au routeur d&#39;être joint avec un nom d&#39;hôte fixe bien que changeant dynamiquement d&#39;adresse IP.'
ddns_service_ipsource = 'Source de l&#39;adresse IP'
ddns_service_checkinterval = 'Vérifier l&#39;adresse IP toutes les'
ddns_service_checkunit = 'Unité de temps'
ddns_service_forceinterval = 'Vérification forcée toutes les'
ddns_service_forceunit = 'Unité de temps'
ddns_service_updateurl = 'Url de mise à jour personnalisée'

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="ddns">DNS Dynamique</i18n:msg>
<i18n:msg xml:id="ddns_desc">Le DNS Dynamique permet au routeur d'être joint avec un nom d'hôte fixe bien que changeant dynamiquement d'adresse IP.</i18n:msg>
<i18n:msg xml:id="ddns_service_ipsource">Source de l'adresse IP</i18n:msg>
<i18n:msg xml:id="ddns_service_checkinterval">Vérifier l'adresse IP toutes les</i18n:msg>
<i18n:msg xml:id="ddns_service_checkunit">Unité de temps</i18n:msg>
<i18n:msg xml:id="ddns_service_forceinterval">Vérification forcée toutes les</i18n:msg>
<i18n:msg xml:id="ddns_service_forceunit">Unité de temps</i18n:msg>
<i18n:msg xml:id="ddns_service_updateurl">Url de mise à jour personnalisée</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,8 @@
ddns = 'DNS Dinâmico'
ddns_desc = 'DNS dinâmico permite que o seu router possa ser encontrado a partir de um hostname fixo, mesmo usando um Endereço-IP dinâmico.'
ddns_service_ipsource = 'Origem do Endereço-IP'
ddns_service_checkinterval = 'Verificar a cada mudança de IP'
ddns_service_checkunit = 'Unidade de tempo para verificação'
ddns_service_forceinterval = 'Forçar atualização a cada'
ddns_service_forceunit = 'Unidade de tempo para atualização forçada'
ddns_service_updateurl = 'URL para atualização customizada'

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="ddns">DNS Dinâmico</i18n:msg>
<i18n:msg xml:id="ddns_desc">DNS dinâmico permite que o seu router possa ser encontrado a partir de um hostname fixo, mesmo usando um Endereço-IP dinâmico.</i18n:msg>
<i18n:msg xml:id="ddns_service_ipsource">Origem do Endereço-IP</i18n:msg>
<i18n:msg xml:id="ddns_service_checkinterval">Verificar a cada mudança de IP</i18n:msg>
<i18n:msg xml:id="ddns_service_checkunit">Unidade de tempo para verificação</i18n:msg>
<i18n:msg xml:id="ddns_service_forceinterval">Forçar atualização a cada</i18n:msg>
<i18n:msg xml:id="ddns_service_forceunit">Unidade de tempo para atualização forçada</i18n:msg>
<i18n:msg xml:id="ddns_service_updateurl">URL para atualização customizada</i18n:msg>
</i18n:msgs>

View file

@ -31,7 +31,9 @@ svc:value("freedns.afraid.org")
s:option(Value, "domain", translate("hostname")).rmempty = true
s:option(Value, "username", translate("username")).rmempty = true
s:option(Value, "password", translate("password")).rmempty = true
pw = s:option(Value, "password", translate("password"))
pw.rmempty = true
pw.password = true
src = s:option(ListValue, "ip_source")
src:value("network", translate("network"))
@ -69,4 +71,4 @@ unit:value("minutes", "min")
unit:value("hours", "h")
return m
return m

View file

@ -29,7 +29,9 @@ svc:value("freedns.afraid.org")
s:option(Value, "domain", translate("hostname")).rmempty = true
s:option(Value, "username", translate("username")).rmempty = true
s:option(Value, "password", translate("password")).rmempty = true
pw = s:option(Value, "password", translate("password"))
pw.rmempty = true
pw.password = true
s.defaults.ip_source = "network"
s.defaults.ip_network = "wan"
@ -47,4 +49,4 @@ unit:value("minutes", "min")
unit:value("hours", "h")
return m
return m

View file

@ -1,5 +1,8 @@
package ddns
config package
option title 'Dynamic DNS configuration'
config section
option name 'service'
option title 'DynDNS service entry'

View file

@ -17,5 +17,5 @@ $Id$
module "luci.controller.ffwizard"
function index()
entry({"admin", "index", "ffwizard"}, form("ffwizard"), "Freifunkassistent", 50)
entry({"admin", "freifunk", "ffwizard"}, form("ffwizard"), "Freifunkassistent", 50)
end

View file

@ -17,6 +17,8 @@ $Id$
local uci = require "luci.model.uci".cursor()
local tools = require "luci.tools.ffwizard"
local util = require "luci.util"
local sys = require "luci.sys"
-------------------- View --------------------
@ -33,11 +35,13 @@ uci:foreach("wireless", "wifi-device",
main = f:field(Flag, "wifi", "Freifunkzugang einrichten")
net = f:field(Value, "net", "Freifunknetz")
net = f:field(Value, "net", "Freifunknetz", "1. Teil der IP-Adresse")
net.rmempty = true
net:depends("wifi", "1")
net:value("104.61", "Leipzig (104.61)")
net:value("104.62", "Halle (104.62)")
uci:foreach("freifunk", "community", function(s)
net:value(s[".name"], "%s (%s)" % {s.name, s.prefix})
end)
function net.cfgvalue(self, section)
return uci:get("freifunk", "wizard", "net")
end
@ -47,12 +51,9 @@ function net.write(self, section, value)
end
subnet = f:field(ListValue, "subnet", "Subnetz (Projekt)")
subnet = f:field(Value, "subnet", "Subnetz (Projekt)", "2. Teil der IP-Adresse")
subnet.rmempty = true
subnet:depends("wifi", "1")
for i=0, 255 do
subnet:value(i)
end
function subnet.cfgvalue(self, section)
return uci:get("freifunk", "wizard", "subnet")
end
@ -61,7 +62,7 @@ function subnet.write(self, section, value)
uci:save("freifunk")
end
node = f:field(Value, "node", "Knoten")
node = f:field(Value, "node", "Knoten", "3. Teil der IP-Adresse")
node.rmempty = true
node:depends("wifi", "1")
for i=1, 51 do
@ -77,14 +78,19 @@ end
client = f:field(Flag, "client", "WLAN-DHCP anbieten")
client:depends("wifi", "1")
client.rmempty = true
olsr = f:field(Flag, "olsr", "OLSR einrichten")
olsr.rmempty = true
share = f:field(ListValue, "sharenet", "Eigenen Internetzugang freigeben")
share:value("maybe", "-- keine Aktion --")
share:value("yes", "einschalten")
share:value("no", "ausschalten")
lat = f:field(Value, "lat", "Latitude")
lat:depends("olsr", "1")
lon = f:field(Value, "lon", "Longitude")
lon:depends("olsr", "1")
share = f:field(Flag, "sharenet", "Eigenen Internetzugang freigeben")
share.rmempty = true
@ -114,17 +120,22 @@ function main.write(self, section, value)
if value == "0" then
return
end
local device = dev:formvalue(section)
local community, external
-- Collect IP-Address
local inet = net:formvalue(section)
local isubnet = subnet:formvalue(section)
local inode = node:formvalue(section)
-- Invalidate fields
if not inet then
net.tag_missing[section] = true
else
community = inet
external = uci:get("freifunk", community, "external") or ""
inet = uci:get("freifunk", community, "prefix") or inet
end
if not isubnet then
subnet.tag_missing[section] = true
@ -132,58 +143,119 @@ function main.write(self, section, value)
if not inode then
node.tag_missing[section] = true
end
if not inet or not isubnet or not inode then
return
end
local ip = "%s.%s.%s" % {inet, isubnet, inode}
-- Cleanup
luci.util.perror("1")
tools.wifi_delete_ifaces(device)
luci.util.perror("2")
tools.network_remove_interface(device)
luci.util.perror("3")
tools.firewall_zone_remove_interface("freifunk", device)
-- Tune community settings
if community and uci:get("freifunk", community) then
uci:tset("freifunk", "community", uci:get_all("freifunk", community))
end
-- Tune wifi device
local devconfig = _strip_internals(uci:get_all("freifunk", "wifi_device"))
local devconfig = uci:get_all("freifunk", "wifi_device")
util.update(devconfig, uci:get_all(external, "wifi_device") or {})
uci:tset("wireless", device, devconfig)
-- Create wifi iface
local ifconfig = _strip_internals(uci:get_all("freifunk", "wifi_iface"))
local ifconfig = uci:get_all("freifunk", "wifi_iface")
util.update(ifconfig, uci:get_all(external, "wifi_iface") or {})
ifconfig.device = device
ifconfig.network = device
ifconfig.ssid = uci:get("freifunk", community, "ssid")
uci:section("wireless", "wifi-iface", nil, ifconfig)
-- Save wifi
uci:save("wireless")
uci:save("wireless")
-- Create firewall zone and add default rules (first time)
local newzone = tools.firewall_create_zone("freifunk", "DROP", "ACCEPT", "DROP", true)
local newzone = tools.firewall_create_zone("freifunk", "REJECT", "ACCEPT", "REJECT", true)
if newzone then
uci:foreach("freifunk", "fw_forwarding", function(section)
uci:section("firewall", "forwarding", nil, _strip_internals(section))
uci:section("firewall", "forwarding", nil, section)
end)
uci:foreach(external, "fw_forwarding", function(section)
uci:section("firewall", "forwarding", nil, section)
end)
uci:foreach("freifunk", "fw_rule", function(section)
uci:section("firewall", "rule", nil, _strip_internals(section))
uci:section("firewall", "rule", nil, section)
end)
uci:foreach(external, "fw_rule", function(section)
uci:section("firewall", "rule", nil, section)
end)
uci:save("firewall")
end
-- Crate network interface
local netconfig = _strip_internals(uci:get_all("freifunk", "interface"))
-- Enforce firewall include
local has_include = false
uci:foreach("firewall", "include",
function(section)
if section.path == "/etc/firewall.freifunk" then
has_include = true
end
end)
if not has_include then
uci:section("firewall", "include", nil,
{ path = "/etc/firewall.freifunk" })
end
-- Allow state: invalid packets
uci:foreach("firewall", "defaults",
function(section)
uci:set("firewall", section[".name"], "drop_invalid", "0")
end)
-- Prepare advanced config
local has_advanced = false
uci:foreach("firewall", "advanced",
function(section) has_advanced = true end)
if not has_advanced then
uci:section("firewall", "advanced", nil,
{ tcp_ecn = "0", ip_conntrack_max = "8192", tcp_westwood = "1" })
end
uci:save("firewall")
-- Create network interface
local netconfig = uci:get_all("freifunk", "interface")
util.update(netconfig, uci:get_all(external, "interface") or {})
netconfig.proto = "static"
netconfig.ipaddr = ip
uci:section("network", "interface", device, netconfig)
uci:save("network")
tools.firewall_zone_add_interface("freifunk", device)
local new_hostname = ip:gsub("%.", "-")
local old_hostname = sys.hostname()
uci:foreach("system", "system",
function(s)
-- Make crond silent
uci:set("system", s['.name'], "cronloglevel", "10")
-- Set hostname
if old_hostname == "OpenWrt" or old_hostname:match("^%d+-%d+-%d+-%d+$") then
uci:set("system", s['.name'], "hostname", new_hostname)
sys.hostname(new_hostname)
end
end)
uci:save("system")
end
@ -191,31 +263,86 @@ function olsr.write(self, section, value)
if value == "0" then
return
end
local device = dev:formvalue(section)
local community = net:formvalue(section)
local external = community and uci:get("freifunk", community, "external") or ""
local latval = tonumber(lat:formvalue(section))
local lonval = tonumber(lon:formvalue(section))
-- Delete old interface
uci:delete_all("freifunk", "Interface", {Interface=device})
uci:delete_all("olsrd", "Interface", {interface=device})
-- Write new interface
local olsrbase = _strip_internals(uci:get_all("freifunk", "olsr_interface"))
olsrbase.Interface = device
uci:section("olsr", "Interface", nil, olsrbase)
uci:save("olsr")
local olsrbase = uci:get_all("freifunk", "olsr_interface")
util.update(olsrbase, uci:get_all(external, "olsr_interface") or {})
olsrbase.interface = device
olsrbase.ignore = "0"
uci:section("olsrd", "Interface", nil, olsrbase)
-- Delete old watchdog settings
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_watchdog.so.0.1"})
-- Write new watchdog settings
uci:section("olsrd", "LoadPlugin", nil, {
library = "olsrd_watchdog.so.0.1",
file = "/var/run/olsrd.watchdog",
interval = "30"
})
-- Delete old nameservice settings
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_nameservice.so.0.3"})
-- Write new nameservice settings
uci:section("olsrd", "LoadPlugin", nil, {
library = "olsrd_nameservice.so.0.3",
suffix = ".olsr",
hosts_file = "/var/etc/hosts.olsr",
latlon_file = "/var/run/latlon.js",
lat = latval and string.format("%.15f", latval) or "",
lon = lonval and string.format("%.15f", lonval) or ""
})
-- Save latlon to system too
if latval and lonval then
uci:foreach("system", "system", function(s)
uci:set("system", s[".name"], "latlon",
string.format("%.15f %.15f", latval, lonval))
end)
else
uci:foreach("system", "system", function(s)
uci:delete("system", s[".name"], "latlon")
end)
end
-- Import hosts
uci:foreach("dhcp", "dnsmasq", function(s)
uci:set("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
end)
-- Make sure that OLSR is enabled
sys.exec("/etc/init.d/olsrd enable")
uci:save("olsrd")
uci:save("dhcp")
end
function share.write(self, section, value)
if value == "maybe" then
return
end
uci:delete_all("firewall", "forwarding", {src="freifunk", dest="wan"})
if value == "yes" then
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw_plain.so.0.4"})
if value == "1" then
uci:section("firewall", "forwarding", nil, {src="freifunk", dest="wan"})
uci:section("olsrd", "LoadPlugin", nil, {library="olsrd_dyn_gw_plain.so.0.4"})
end
uci:save("firewall")
uci:save("olsrd")
uci:save("system")
end
@ -223,50 +350,96 @@ function client.write(self, section, value)
if value == "0" then
return
end
local device = dev:formvalue(section)
-- Collect IP-Address
local inet = net:formvalue(section)
local isubnet = subnet:formvalue(section)
local inode = node:formvalue(section)
if not inet or not isubnet or not inode then
return
end
local dhcpbeg = 48 + tonumber(inode) * 4
local community = inet
local external = community and uci:get("freifunk", community, "external") or ""
inet = uci:get("freifunk", community, "prefix") or inet
local dhcpbeg = 48 + tonumber(inode) * 4
local dclient = "%s.%s.%s" % {inet:gsub("^[0-9]+", "10"), isubnet, dhcpbeg}
local limit = dhcpbeg < 252 and 3 or 2
-- Delete old alias
uci:delete("network", device .. "dhcp")
-- Create alias
local aliasbase = _strip_internals(uci:get_all("freifunk", "alias"))
local aliasbase = uci:get_all("freifunk", "alias")
util.update(aliasbase, uci:get_all(external, "alias") or {})
aliasbase.interface = device
aliasbase.ipaddr = dclient
aliasbase.proto = "static"
uci:section("network", "alias", device .. "dhcp", aliasbase)
uci:save("network")
-- Create dhcp
local dhcpbase = _strip_internals(uci:get_all("freifunk", "dhcp"))
local dhcpbase = uci:get_all("freifunk", "dhcp")
util.update(dhcpbase, uci:get_all(external, "dhcp") or {})
dhcpbase.interface = device .. "dhcp"
dhcpbase.start = dhcpbeg
dhcpbase.limit = limit
dhcpbase.force = 1
uci:section("dhcp", "dhcp", device .. "dhcp", dhcpbase)
uci:save("dhcp")
uci:delete_all("firewall", "rule", {
src="freifunk",
proto="udp",
dest_port="53"
})
uci:section("firewall", "rule", nil, {
src="freifunk",
proto="udp",
dest_port="53",
target="ACCEPT"
})
uci:delete_all("firewall", "rule", {
src="freifunk",
proto="udp",
src_port="68",
dest_port="67"
})
uci:section("firewall", "rule", nil, {
src="freifunk",
proto="udp",
src_port="68",
dest_port="67",
target="ACCEPT"
})
uci:delete_all("firewall", "rule", {
src="freifunk",
proto="tcp",
dest_port="8082",
})
uci:section("firewall", "rule", nil, {
src="freifunk",
proto="tcp",
dest_port="8082",
target="ACCEPT"
})
uci:save("firewall")
-- Delete old splash
uci:delete_all("luci_splash", "iface", {net=device, zone="freifunk"})
uci:delete_all("luci_splash", "iface", {network=device.."dhcp", zone="freifunk"})
-- Register splash
uci:section("luci_splash", "iface", nil, {net=device, zone="freifunk"})
uci:section("luci_splash", "iface", nil, {network=device.."dhcp", zone="freifunk"})
uci:save("luci_splash")
-- Make sure that luci_splash is enabled
sys.exec("/etc/init.d/luci_splash enable")
end
return f
return f

View file

@ -32,35 +32,35 @@ end
-- Deletes a network interface and all occurences of it in firewall zones and dhcp
function network_remove_interface(iface)
local cursor = uci.cursor()
if not cursor:delete("network", iface) then
return false
end
local aliases = {iface}
cursor:foreach("network", "alias",
cursor:foreach("network", "alias",
function(section)
if section.interface == iface then
table.insert(aliases, section[".name"])
end
end)
-- Delete Aliases and Routes
cursor:delete_all("network", "route", {interface=iface})
cursor:delete_all("network", "alias", {interface=iface})
-- Delete DHCP sections
cursor:delete_all("dhcp", "dhcp",
function(section)
return util.contains(aliases, section.interface)
end)
-- Remove OLSR sections
cursor:delete_all("olsr", "Interface", {Interface=iface})
cursor:delete_all("olsrd", "Interface", {Interface=iface})
-- Remove Splash sections
cursor:delete_all("luci-splash", "iface", {network=iface})
cursor:save("network")
cursor:save("olsr")
cursor:save("dhcp")
@ -88,7 +88,8 @@ function firewall_zone_add_interface(name, interface)
local cursor = uci.cursor()
local zone = firewall_find_zone(name)
local net = cursor:get("firewall", zone, "network")
cursor:set("firewall", zone, "network", (net or name .. " ") .. interface)
local old = net or (cursor:get("network", name) and name)
cursor:set("firewall", zone, "network", (old and old .. " " or "") .. interface)
cursor:save("firewall")
end
@ -114,14 +115,14 @@ end
-- Finds the firewall zone with given name
function firewall_find_zone(name)
local find
uci.cursor():foreach("firewall", "zone",
uci.cursor():foreach("firewall", "zone",
function (section)
if section.name == name then
find = section[".name"]
end
end)
return find
end
@ -134,15 +135,15 @@ function remove_list_entry(value, entry)
if type(value) == "nil" then
return nil
end
local result = type(value) == "table" and value or util.split(value, " ")
local key = util.contains(result, entry)
while key do
table.remove(result, key)
key = util.contains(result, entry)
end
result = type(value) == "table" and result or table.concat(result, " ")
return result ~= value and result
end
return result ~= value and result
end

View file

@ -3,20 +3,11 @@ module("luci.controller.luci_fw.luci_fw", package.seeall)
function index()
require("luci.i18n").loadc("luci-fw")
local i18n = luci.i18n.translate
local nodes = {}
table.insert(nodes, entry({"admin", "network", "firewall"}, alias("admin", "network", "firewall", "zones"), i18n("fw_fw"), 60))
table.insert(nodes, entry({"admin", "network", "firewall", "zones"}, cbi("luci_fw/general"), i18n("fw_zones"), 10))
table.insert(nodes, entry({"admin", "network", "firewall", "portfw"}, cbi("luci_fw/portfw"), i18n("fw_portfw"), 20))
table.insert(nodes, entry({"admin", "network", "firewall", "forwarding"}, cbi("luci_fw/routing"), i18n("fw_forwarding"), 30))
table.insert(nodes, entry({"admin", "network", "firewall", "rules"}, cbi("luci_fw/firewall"), i18n("fw_rules"), 40))
table.insert(nodes, entry({"admin", "network", "firewall", "customfwd"}, cbi("luci_fw/customfwd"), i18n("fw_custfwd"), 50))
entry({"admin", "network", "firewall"}, alias("admin", "network", "firewall", "zones"), i18n("fw_fw"), 60).i18n = "luci-fw"
entry({"admin", "network", "firewall", "zones"}, cbi("luci_fw/zones"), i18n("fw_zones"), 10)
entry({"admin", "network", "firewall", "redirect"}, arcombine(cbi("luci_fw/redirect"), cbi("luci_fw/rrule")), i18n("fw_redirect"), 30).leaf = true
entry({"admin", "network", "firewall", "rule"}, arcombine(cbi("luci_fw/traffic"), cbi("luci_fw/trule")), i18n("fw_traffic"), 20).leaf = true
table.insert(nodes, entry({"mini", "network", "portfw"}, cbi("luci_fw/miniportfw"), i18n("fw_portfw", "Portweiterleitung"), 70))
for i,n in ipairs(nodes) do
n.i18n = "luci-fw"
n.dependent = true
end
entry({"mini", "network", "portfw"}, cbi("luci_fw/miniportfw", {autoapply=true}), i18n("fw_portfw", "Portweiterleitung"), 70).i18n = "luci-fw"
end

View file

@ -1,12 +1,19 @@
fw_portfw = 'Portweiterleitung'
fw_forwarding = 'Weiterleitung'
fw_redirect = 'Umleitungen'
fw_redirect_desc = 'Umleitungen erlauben es das Ziel von weitergeleiteten Paketen zu verändern.'
fw_forwarding = 'Zone-zu-Zone Verkehr'
fw_fw = 'Firewall'
fw_zone = 'Zone'
fw_zones = 'Zonen'
fw_custfwd = 'Eigene Weiterleitungen'
fw_rules = 'Eigene Regeln'
fw_rules1 = 'An dieser Stelle können benutzerdefinierte Firewallregeln eingestellt werden um den Netzverkehr zu kontrollieren.'
fw_custfwd = 'Erweiterte Weiterleitung'
firewall_rule = 'Erweiterte Regeln'
firewall_rule_desc = 'Mit erweiterten Regeln kann die Firewall an die eigenen Bedürfnisse angepasst werden. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert.'
fw_fw1 = 'Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um den Netzverkehr zu trennen.'
fw_src = 'Quelle'
fw_dest = 'Ziel'
fw_traffic = 'Verkehrskontrolle'
fw_mtufix = 'MSS Clamping'
fw_dropinvalid = 'Ungültige Pakete verwerfen'
firewall_rule_src = 'Eingangszone'
firewall_rule_dest = 'Ausgangszone'
firewall_rule_srcip = 'Quelladresse'
@ -26,7 +33,9 @@ firewall_redirect_destip = 'Interne Adresse'
firewall_redirect_destip_desc = 'IP-Adresse'
firewall_redirect_destport = 'Interner Port (optional)'
firewall_redirect_destport_desc = 'Port od. Erster-Letzter Port'
fw_forwarding1 = 'An dieser Stelle kann festgelegt zwischen welchen Zonen Netzverkehr hin und her fließen kann. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert.'
firewall_redirect_srcip = 'Quelladresse'
firewall_redirect_srcmac = 'Quell-MAC-Adresse'
fw_forwarding1 = 'An dieser Stelle kann festgelegt zwischen welchen Zonen Netzverkehr hin und her fließen kann. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert. Bei gelegentlich auftretenden Verbindungsproblemen kann MSS Clamping helfen, ansonsten sollte dies aus Performancegründen deaktiviert bleiben.'
firewall_forwarding_src = 'Eingang'
firewall_forwarding_dest = 'Ausgang'
firewall_defaults = 'Grundeinstellungen'

View file

@ -3,14 +3,21 @@
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="fw_portfw">Portweiterleitung</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Weiterleitung</i18n:msg>
<i18n:msg xml:id="fw_redirect">Umleitungen</i18n:msg>
<i18n:msg xml:id="fw_redirect_desc">Umleitungen erlauben es das Ziel von weitergeleiteten Paketen zu verändern.</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Zone-zu-Zone Verkehr</i18n:msg>
<i18n:msg xml:id="fw_fw">Firewall</i18n:msg>
<i18n:msg xml:id="fw_zone">Zone</i18n:msg>
<i18n:msg xml:id="fw_zones">Zonen</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Eigene Weiterleitungen</i18n:msg>
<i18n:msg xml:id="fw_rules">Eigene Regeln</i18n:msg>
<i18n:msg xml:id="fw_rules1">An dieser Stelle können benutzerdefinierte Firewallregeln eingestellt werden um den Netzverkehr zu kontrollieren.</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Erweiterte Weiterleitung</i18n:msg>
<i18n:msg xml:id="firewall_rule">Erweiterte Regeln</i18n:msg>
<i18n:msg xml:id="firewall_rule_desc">Mit erweiterten Regeln kann die Firewall an die eigenen Bedürfnisse angepasst werden. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert.</i18n:msg>
<i18n:msg xml:id="fw_fw1">Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um den Netzverkehr zu trennen.</i18n:msg>
<i18n:msg xml:id="fw_src">Quelle</i18n:msg>
<i18n:msg xml:id="fw_dest">Ziel</i18n:msg>
<i18n:msg xml:id="fw_traffic">Verkehrskontrolle</i18n:msg>
<i18n:msg xml:id="fw_mtufix">MSS Clamping</i18n:msg>
<i18n:msg xml:id="fw_dropinvalid">Ungültige Pakete verwerfen</i18n:msg>
<i18n:msg xml:id="firewall_rule_src">Eingangszone</i18n:msg>
<i18n:msg xml:id="firewall_rule_dest">Ausgangszone</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcip">Quelladresse</i18n:msg>
@ -31,8 +38,11 @@
<i18n:msg xml:id="firewall_redirect_destip_desc">IP-Adresse</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport">Interner Port (optional)</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport_desc">Port od. Erster-Letzter Port</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcip">Quelladresse</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcmac">Quell-MAC-Adresse</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">An dieser Stelle kann festgelegt zwischen welchen Zonen Netzverkehr hin und her fließen kann. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert.</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">An dieser Stelle kann festgelegt zwischen welchen Zonen Netzverkehr hin und her fließen kann. Es werden nur neue Verbindungen betrachtet. Pakete, die zu bereits bestehenden Verbindungen gehören werden automatisch akzeptiert. Bei gelegentlich auftretenden Verbindungsproblemen kann MSS Clamping helfen, ansonsten sollte dies aus Performancegründen deaktiviert bleiben.</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_src">Eingang</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_dest">Ausgang</i18n:msg>

View file

@ -1,12 +1,14 @@
fw_portfw = 'Port forwarding'
fw_forwarding = 'Forwarding'
fw_redirect = 'Traffic Redirection'
fw_redirect_desc = 'Traffic redirection allows you to change the destination address of forwarded packets.'
fw_forwarding = 'Zone-to-Zone traffic'
fw_fw = 'Firewall'
fw_zone = 'Zone'
fw_zones = 'Zones'
fw_custfwd = 'Custom redirect'
fw_rules = 'Custom Rules'
fw_rules1 = 'Here you can create custom firewall rules to control your network traffic.'
fw_custfwd = 'Custom forwarding'
fw_fw1 = 'The firewall creates zones over your network interfaces to control network traffic flow.'
firewall_rule = 'Advanced Rules'
firewall_rule_desc = 'Advanced rules let you customize the firewall to your needs. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall.'
firewall_rule_src = 'Input Zone'
firewall_rule_dest = 'Output Zone'
firewall_rule_srcip = 'Source address'
@ -18,15 +20,22 @@ firewall_rule_target = 'Action'
fw_accept = 'accept'
fw_reject = 'reject'
fw_drop = 'drop'
fw_src = 'Source'
fw_dest = 'Destination'
fw_traffic = 'Traffic Control'
fw_mtufix = 'MSS Clamping'
fw_dropinvalid = 'Drop invalid packets'
fw_portfw1 = 'Port forwarding allows to provide network services in the internal network to an external network.'
firewall_redirect_src_desc = 'External Zone'
firewall_redirect_srcdport = 'External port'
firewall_redirect_srcdport_desc = 'port or range as first-last'
firewall_redirect_srcip = 'Source address'
firewall_redirect_srcmac = 'Source MAC'
firewall_redirect_destip = 'Internal address'
firewall_redirect_destip_desc = 'IP-Address'
firewall_redirect_destport = 'Internal port (optional)'
firewall_redirect_destport_desc = 'port or range as first-last'
fw_forwarding1 = 'Here you can specify which network traffic is allowed to flow between network zones. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall.'
fw_forwarding1 = 'Here you can specify which network traffic is allowed to flow between network zones. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall. If you experience occasional connection problems try enabling MSS Clamping otherwise disable it for performance reasons.'
firewall_forwarding_src = 'Input'
firewall_forwarding_dest = 'Output'
firewall_defaults = 'Defaults'

View file

@ -3,14 +3,16 @@
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="fw_portfw">Port forwarding</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Forwarding</i18n:msg>
<i18n:msg xml:id="fw_redirect">Traffic Redirection</i18n:msg>
<i18n:msg xml:id="fw_redirect_desc">Traffic redirection allows you to change the destination address of forwarded packets.</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Zone-to-Zone traffic</i18n:msg>
<i18n:msg xml:id="fw_fw">Firewall</i18n:msg>
<i18n:msg xml:id="fw_zone">Zone</i18n:msg>
<i18n:msg xml:id="fw_zones">Zones</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Custom redirect</i18n:msg>
<i18n:msg xml:id="fw_rules">Custom Rules</i18n:msg>
<i18n:msg xml:id="fw_rules1">Here you can create custom firewall rules to control your network traffic.</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Custom forwarding</i18n:msg>
<i18n:msg xml:id="fw_fw1">The firewall creates zones over your network interfaces to control network traffic flow.</i18n:msg>
<i18n:msg xml:id="firewall_rule">Advanced Rules</i18n:msg>
<i18n:msg xml:id="firewall_rule_desc">Advanced rules let you customize the firewall to your needs. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall.</i18n:msg>
<i18n:msg xml:id="firewall_rule_src">Input Zone</i18n:msg>
<i18n:msg xml:id="firewall_rule_dest">Output Zone</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcip">Source address</i18n:msg>
@ -22,17 +24,24 @@
<i18n:msg xml:id="fw_accept">accept</i18n:msg>
<i18n:msg xml:id="fw_reject">reject</i18n:msg>
<i18n:msg xml:id="fw_drop">drop</i18n:msg>
<i18n:msg xml:id="fw_src">Source</i18n:msg>
<i18n:msg xml:id="fw_dest">Destination</i18n:msg>
<i18n:msg xml:id="fw_traffic">Traffic Control</i18n:msg>
<i18n:msg xml:id="fw_mtufix">MSS Clamping</i18n:msg>
<i18n:msg xml:id="fw_dropinvalid">Drop invalid packets</i18n:msg>
<i18n:msg xml:id="fw_portfw1">Port forwarding allows to provide network services in the internal network to an external network.</i18n:msg>
<i18n:msg xml:id="firewall_redirect_src_desc">External Zone</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport">External port</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport_desc">port or range as first-last</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcip">Source address</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcmac">Source MAC</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip">Internal address</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip_desc">IP-Address</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport">Internal port (optional)</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport_desc">port or range as first-last</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">Here you can specify which network traffic is allowed to flow between network zones. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall.</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">Here you can specify which network traffic is allowed to flow between network zones. Only new connections will be matched. Packets belonging to already open connections are automatically allowed to pass the firewall. If you experience occasional connection problems try enabling MSS Clamping otherwise disable it for performance reasons.</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_src">Input</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_dest">Output</i18n:msg>

View file

@ -0,0 +1,56 @@
fw_portfw = 'Redirection de port'
fw_redirect = 'Redirection de trafic'
fw_redirect_desc = 'La redirection de trafic vous permet de changer l&#39;adresse de destination des paquets transférés.'
fw_forwarding = 'Trafic inter-zone'
fw_fw = 'Pare-Feu'
fw_zone = 'Zone'
fw_zones = 'Zones'
fw_custfwd = 'Transfert particulière'
fw_fw1 = 'Le pare-feu crée des zone à partir des interfaces réseaux pour controller le trafic réseau.'
firewall_rule = 'Règles Avancées'
firewall_rule_desc = 'Les règles avancées vous laisse personnaliser le pare-feu selon vos besoins. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.'
firewall_rule_src = 'Zone d&#39;Entrée (Input)'
firewall_rule_dest = 'Zone de Sortie (Output)'
firewall_rule_srcip = 'Adresse source'
firewall_rule_destip = 'Adresse de destination'
firewall_rule_srcmac = 'Adresse MAC source'
firewall_rule_srcport = 'Port source'
firewall_rule_destport = 'Port de destination'
firewall_rule_target = 'Action'
fw_accept = 'accepter'
fw_reject = 'rejeter'
fw_drop = 'ignorer (drop)'
fw_src = 'Source'
fw_dest = 'Destination'
fw_traffic = 'Contrôle de Trafic'
fw_mtufix = 'MSS-Correction'
fw_dropinvalid = 'Drop incorrect packets'
fw_portfw1 = 'La redirection de port vous permet d&#39;exposer des services réseaux de votre réseau local au réseau externe.'
firewall_redirect_src_desc = 'Zone externe'
firewall_redirect_srcdport = 'Port externe'
firewall_redirect_srcdport_desc = 'port ou plage de ports (premier-dernier)'
firewall_redirect_srcip = 'Adresse source'
firewall_redirect_srcmac = 'MAC source'
firewall_redirect_destip = 'Adresse interne'
firewall_redirect_destip_desc = 'Adresse IP'
firewall_redirect_destport = 'Port interne'
firewall_redirect_destport_desc = 'port ou plage de ports (premier-dernier)'
fw_forwarding1 = 'Ici, vous pouvez spécifier quel trafic réseau est autorisé à transiter entre les zones réseaux. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.'
firewall_forwarding_src = 'Entrée (Input)'
firewall_forwarding_dest = 'Sortie (Output)'
firewall_defaults = 'Défauts'
firewall_defaults_desc = 'Ceci sont les paramètres par défaut qui sont utilisés si aucune autre règle ne s&#39;applique.'
firewall_defaults_synflood = 'Protection anti SYN-flood'
firewall_defaults_input = 'Trafic Entrant'
firewall_defaults_output = 'Trafic Sortant'
firewall_defaults_forward = 'Trafic Transféré'
firewall_zone_desc = 'Les zones partagent les interfaces réseaux en régions isolées pour séparer les trafic réseaux. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.'
firewall_zone_input = 'Trafic Entrant'
firewall_zone_input_desc = 'Politique par Défaut'
firewall_zone_output = 'Trafic Sortant'
firewall_zone_output_desc = 'Politique par Défaut'
firewall_zone_forward = 'Trafic Transféré'
firewall_zone_forward_desc = 'Politique par Défaut'
firewall_zone_masq = 'MASQ'
firewall_zone_network = 'Réseaux'
firewall_zone_network_desc = 'réseaux compris'

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="fw_portfw">Redirection de port</i18n:msg>
<i18n:msg xml:id="fw_redirect">Redirection de trafic</i18n:msg>
<i18n:msg xml:id="fw_redirect_desc">La redirection de trafic vous permet de changer l'adresse de destination des paquets transférés.</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Trafic inter-zone</i18n:msg>
<i18n:msg xml:id="fw_fw">Pare-Feu</i18n:msg>
<i18n:msg xml:id="fw_zone">Zone</i18n:msg>
<i18n:msg xml:id="fw_zones">Zones</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Transfert particulière</i18n:msg>
<i18n:msg xml:id="fw_fw1">Le pare-feu crée des zone à partir des interfaces réseaux pour controller le trafic réseau.</i18n:msg>
<i18n:msg xml:id="firewall_rule">Règles Avancées</i18n:msg>
<i18n:msg xml:id="firewall_rule_desc">Les règles avancées vous laisse personnaliser le pare-feu selon vos besoins. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.</i18n:msg>
<i18n:msg xml:id="firewall_rule_src">Zone d'Entrée (Input)</i18n:msg>
<i18n:msg xml:id="firewall_rule_dest">Zone de Sortie (Output)</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcip">Adresse source</i18n:msg>
<i18n:msg xml:id="firewall_rule_destip">Adresse de destination</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcmac">Adresse MAC source</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcport">Port source</i18n:msg>
<i18n:msg xml:id="firewall_rule_destport">Port de destination</i18n:msg>
<i18n:msg xml:id="firewall_rule_target">Action</i18n:msg>
<i18n:msg xml:id="fw_accept">accepter</i18n:msg>
<i18n:msg xml:id="fw_reject">rejeter</i18n:msg>
<i18n:msg xml:id="fw_drop">ignorer (drop)</i18n:msg>
<i18n:msg xml:id="fw_src">Source</i18n:msg>
<i18n:msg xml:id="fw_dest">Destination</i18n:msg>
<i18n:msg xml:id="fw_traffic">Contrôle de Trafic</i18n:msg>
<i18n:msg xml:id="fw_mtufix">MSS-Correction</i18n:msg>
<i18n:msg xml:id="fw_dropinvalid">Drop incorrect packets</i18n:msg>
<i18n:msg xml:id="fw_portfw1">La redirection de port vous permet d'exposer des services réseaux de votre réseau local au réseau externe.</i18n:msg>
<i18n:msg xml:id="firewall_redirect_src_desc">Zone externe</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport">Port externe</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport_desc">port ou plage de ports (premier-dernier)</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcip">Adresse source</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcmac">MAC source</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip">Adresse interne</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip_desc">Adresse IP</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport">Port interne</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport_desc">port ou plage de ports (premier-dernier)</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">Ici, vous pouvez spécifier quel trafic réseau est autorisé à transiter entre les zones réseaux. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_src">Entrée (Input)</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_dest">Sortie (Output)</i18n:msg>
<i18n:msg xml:id="firewall_defaults">Défauts</i18n:msg>
<i18n:msg xml:id="firewall_defaults_desc">Ceci sont les paramètres par défaut qui sont utilisés si aucune autre règle ne s'applique.</i18n:msg>
<i18n:msg xml:id="firewall_defaults_synflood">Protection anti SYN-flood</i18n:msg>
<i18n:msg xml:id="firewall_defaults_input">Trafic Entrant</i18n:msg>
<i18n:msg xml:id="firewall_defaults_output">Trafic Sortant</i18n:msg>
<i18n:msg xml:id="firewall_defaults_forward">Trafic Transféré</i18n:msg>
<i18n:msg xml:id="firewall_zone_desc">Les zones partagent les interfaces réseaux en régions isolées pour séparer les trafic réseaux. Seules les nouvelles connexions seront prises en compte. Les paquets appartenant à des connexions déjà ouvertes sont automatiquement admises à passer le pare-feu.</i18n:msg>
<i18n:msg xml:id="firewall_zone_input">Trafic Entrant</i18n:msg>
<i18n:msg xml:id="firewall_zone_input_desc">Politique par Défaut</i18n:msg>
<i18n:msg xml:id="firewall_zone_output">Trafic Sortant</i18n:msg>
<i18n:msg xml:id="firewall_zone_output_desc">Politique par Défaut</i18n:msg>
<i18n:msg xml:id="firewall_zone_forward">Trafic Transféré</i18n:msg>
<i18n:msg xml:id="firewall_zone_forward_desc">Politique par Défaut</i18n:msg>
<i18n:msg xml:id="firewall_zone_masq">MASQ</i18n:msg>
<i18n:msg xml:id="firewall_zone_network">Réseaux</i18n:msg>
<i18n:msg xml:id="firewall_zone_network_desc">réseaux compris</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,56 @@
fw_portfw = 'Redirecionamento de portas'
fw_redirect = 'Redirecionamento de Tráfego'
fw_redirect_desc = 'Redirecionamento do tráfego permite que você altere o endereço de destino dos pacotes enviados.'
fw_forwarding = 'Tráfego de Zona-para-Zona'
fw_fw = 'Firewall'
fw_zone = 'Zona'
fw_zones = 'Zonas'
fw_custfwd = 'Redirecionamento customizado'
fw_fw1 = 'O firewall cria zonas sobre suas interfaces de rede para controlar o fluxo do tráfego.'
firewall_rule = 'Regras Avançadas'
firewall_rule_desc = 'As regras avançadas permitem que você personalize o firewall de acordo com suas necessidades. Somente novas conexões serão processadas. Pacotes pertencentes às conexões já abertas estão automaticamente permitidos para passar pelo firewall.'
firewall_rule_src = 'Zona de Entrada'
firewall_rule_dest = 'Zona de Saída'
firewall_rule_srcip = 'Endereço de origem'
firewall_rule_destip = 'Endereço de destino'
firewall_rule_srcmac = 'Endereço-MAC de origem'
firewall_rule_srcport = 'Porta de origem'
firewall_rule_destport = 'Porta de destino'
firewall_rule_target = 'Ação'
fw_accept = 'aceitar'
fw_reject = 'rejeitar'
fw_drop = 'dropar'
fw_src = 'Origem'
fw_dest = 'Destino'
fw_traffic = 'Controle de Tráfego'
fw_mtufix = 'MSS-Correction'
fw_dropinvalid = 'Drop invalid packets'
fw_portfw1 = 'O redirecionamento de portas permite prover serviços de rede na rede interna para uma rede externa.'
firewall_redirect_src_desc = 'Zona Externa'
firewall_redirect_srcdport = 'Porta Externa'
firewall_redirect_srcdport_desc = 'porta ou intervalo primeira-última'
firewall_redirect_srcip = 'Endereço de origem'
firewall_redirect_srcmac = 'MAC de origem'
firewall_redirect_destip = 'Endereço interno'
firewall_redirect_destip_desc = 'Endereço-IP'
firewall_redirect_destport = 'Porta interna (opcional)'
firewall_redirect_destport_desc = 'porta ou intervalo primeira-última'
fw_forwarding1 = 'Aqui você pode especificar qual tráfego de rede será permitido para o fluxo entre zonas das redes. Somente novas conexões serão processadas. Pacotes pertencentes à conexões já abertas estão automaticamente permitidos para passar pelo firewall.'
firewall_forwarding_src = 'Entrada'
firewall_forwarding_dest = 'Saída'
firewall_defaults = 'Padrões'
firewall_defaults_desc = 'Estas são as configurações padrões, que serão usadas se não houver outras regras.'
firewall_defaults_synflood = 'Proteção SYN-flood'
firewall_defaults_input = 'Tráfego de Entrada'
firewall_defaults_output = 'Tráfego de Saída'
firewall_defaults_forward = 'Tráfego Redirecionado'
firewall_zone_desc = 'Zonas são interfaces de redes usadas para separar o tráfego da rede. Uma ou mais redes podem pertencer a uma zona. A flag-MASQ ativa o mascaramento NAT para todo o tráfego de saída desta zona.'
firewall_zone_input = 'Tráfego de Entrada'
firewall_zone_input_desc = 'Política Padrão'
firewall_zone_output = 'Tráfego de Saída'
firewall_zone_output_desc = 'Política Padrão'
firewall_zone_forward = 'Tráfego Redirecionado'
firewall_zone_forward_desc = 'Política Padrão'
firewall_zone_masq = 'MASQ'
firewall_zone_network = 'Redes'
firewall_zone_network_desc = 'redes contidas'

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="fw_portfw">Redirecionamento de portas</i18n:msg>
<i18n:msg xml:id="fw_redirect">Redirecionamento de Tráfego</i18n:msg>
<i18n:msg xml:id="fw_redirect_desc">Redirecionamento do tráfego permite que você altere o endereço de destino dos pacotes enviados.</i18n:msg>
<i18n:msg xml:id="fw_forwarding">Tráfego de Zona-para-Zona</i18n:msg>
<i18n:msg xml:id="fw_fw">Firewall</i18n:msg>
<i18n:msg xml:id="fw_zone">Zona</i18n:msg>
<i18n:msg xml:id="fw_zones">Zonas</i18n:msg>
<i18n:msg xml:id="fw_custfwd">Redirecionamento customizado</i18n:msg>
<i18n:msg xml:id="fw_fw1">O firewall cria zonas sobre suas interfaces de rede para controlar o fluxo do tráfego.</i18n:msg>
<i18n:msg xml:id="firewall_rule">Regras Avançadas</i18n:msg>
<i18n:msg xml:id="firewall_rule_desc">As regras avançadas permitem que você personalize o firewall de acordo com suas necessidades. Somente novas conexões serão processadas. Pacotes pertencentes às conexões já abertas estão automaticamente permitidos para passar pelo firewall.</i18n:msg>
<i18n:msg xml:id="firewall_rule_src">Zona de Entrada</i18n:msg>
<i18n:msg xml:id="firewall_rule_dest">Zona de Saída</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcip">Endereço de origem</i18n:msg>
<i18n:msg xml:id="firewall_rule_destip">Endereço de destino</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcmac">Endereço-MAC de origem</i18n:msg>
<i18n:msg xml:id="firewall_rule_srcport">Porta de origem</i18n:msg>
<i18n:msg xml:id="firewall_rule_destport">Porta de destino</i18n:msg>
<i18n:msg xml:id="firewall_rule_target">Ação</i18n:msg>
<i18n:msg xml:id="fw_accept">aceitar</i18n:msg>
<i18n:msg xml:id="fw_reject">rejeitar</i18n:msg>
<i18n:msg xml:id="fw_drop">dropar</i18n:msg>
<i18n:msg xml:id="fw_src">Origem</i18n:msg>
<i18n:msg xml:id="fw_dest">Destino</i18n:msg>
<i18n:msg xml:id="fw_traffic">Controle de Tráfego</i18n:msg>
<i18n:msg xml:id="fw_mtufix">MSS-Correction</i18n:msg>
<i18n:msg xml:id="fw_dropinvalid">Drop invalid packets</i18n:msg>
<i18n:msg xml:id="fw_portfw1">O redirecionamento de portas permite prover serviços de rede na rede interna para uma rede externa.</i18n:msg>
<i18n:msg xml:id="firewall_redirect_src_desc">Zona Externa</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport">Porta Externa</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcdport_desc">porta ou intervalo primeira-última</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcip">Endereço de origem</i18n:msg>
<i18n:msg xml:id="firewall_redirect_srcmac">MAC de origem</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip">Endereço interno</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destip_desc">Endereço-IP</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport">Porta interna (opcional)</i18n:msg>
<i18n:msg xml:id="firewall_redirect_destport_desc">porta ou intervalo primeira-última</i18n:msg>
<i18n:msg xml:id="fw_forwarding1">Aqui você pode especificar qual tráfego de rede será permitido para o fluxo entre zonas das redes. Somente novas conexões serão processadas. Pacotes pertencentes à conexões já abertas estão automaticamente permitidos para passar pelo firewall.</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_src">Entrada</i18n:msg>
<i18n:msg xml:id="firewall_forwarding_dest">Saída</i18n:msg>
<i18n:msg xml:id="firewall_defaults">Padrões</i18n:msg>
<i18n:msg xml:id="firewall_defaults_desc">Estas são as configurações padrões, que serão usadas se não houver outras regras.</i18n:msg>
<i18n:msg xml:id="firewall_defaults_synflood">Proteção SYN-flood</i18n:msg>
<i18n:msg xml:id="firewall_defaults_input">Tráfego de Entrada</i18n:msg>
<i18n:msg xml:id="firewall_defaults_output">Tráfego de Saída</i18n:msg>
<i18n:msg xml:id="firewall_defaults_forward">Tráfego Redirecionado</i18n:msg>
<i18n:msg xml:id="firewall_zone_desc">Zonas são interfaces de redes usadas para separar o tráfego da rede. Uma ou mais redes podem pertencer a uma zona. A flag-MASQ ativa o mascaramento NAT para todo o tráfego de saída desta zona.</i18n:msg>
<i18n:msg xml:id="firewall_zone_input">Tráfego de Entrada</i18n:msg>
<i18n:msg xml:id="firewall_zone_input_desc">Política Padrão</i18n:msg>
<i18n:msg xml:id="firewall_zone_output">Tráfego de Saída</i18n:msg>
<i18n:msg xml:id="firewall_zone_output_desc">Política Padrão</i18n:msg>
<i18n:msg xml:id="firewall_zone_forward">Tráfego Redirecionado</i18n:msg>
<i18n:msg xml:id="firewall_zone_forward_desc">Política Padrão</i18n:msg>
<i18n:msg xml:id="firewall_zone_masq">MASQ</i18n:msg>
<i18n:msg xml:id="firewall_zone_network">Redes</i18n:msg>
<i18n:msg xml:id="firewall_zone_network_desc">redes contidas</i18n:msg>
</i18n:msgs>

View file

@ -1,64 +0,0 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
m = Map("firewall", translate("fw_rules"), translate("fw_rules1"))
s = m:section(TypedSection, "rule", "")
s.addremove = true
s.anonymous = true
iface = s:option(ListValue, "src")
iface:value("")
iface.rmempty = true
oface = s:option(ListValue, "dest")
oface.optional = true
luci.model.uci.cursor():foreach("firewall", "zone",
function (section)
iface:value(section.name)
oface:value(section.name)
end)
proto = s:option(ListValue, "proto", translate("protocol"))
proto.optional = true
proto:value("")
proto:value("tcpudp", "TCP+UDP")
proto:value("tcp", "TCP")
proto:value("udp", "UDP")
proto:value("icmp", "ICMP")
s:option(Value, "src_ip").optional = true
s:option(Value, "dest_ip").optional = true
s:option(Value, "src_mac").optional = true
sport = s:option(Value, "src_port")
sport.optional = true
sport:depends("proto", "tcp")
sport:depends("proto", "udp")
sport:depends("proto", "tcpudp")
dport = s:option(Value, "dest_port")
dport.optional = true
dport:depends("proto", "tcp")
dport:depends("proto", "udp")
dport:depends("proto", "tcpudp")
jump = s:option(ListValue, "target")
jump.rmempty = true
jump:value("DROP", translate("fw_drop"))
jump:value("ACCEPT", translate("fw_accept"))
jump:value("REJECT", translate("fw_reject"))
return m

View file

@ -12,13 +12,14 @@ You may obtain a copy of the License at
$Id$
]]--
require("luci.sys")
m = Map("firewall", translate("fw_portfw"), translate("fw_portfw1"))
m = Map("firewall", translate("fw_redirect"), translate("fw_redirect_desc"))
s = m:section(TypedSection, "redirect", "")
s.template = "cbi/tblsection"
s.addremove = true
s.anonymous = true
s.extedit = luci.dispatcher.build_url("admin", "network", "firewall", "redirect", "%s")
name = s:option(Value, "_name", translate("name"), translate("cbi_optional"))
name.size = 10

View file

@ -1,30 +0,0 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
m = Map("firewall", translate("fw_forwarding"), translate("fw_forwarding1"))
s = m:section(TypedSection, "forwarding", "")
s.template = "cbi/tblsection"
s.addremove = true
s.anonymous = true
iface = s:option(ListValue, "src")
oface = s:option(ListValue, "dest")
luci.model.uci.cursor():foreach("firewall", "zone",
function (section)
iface:value(section.name)
oface:value(section.name)
end)
return m

View file

@ -12,12 +12,18 @@ You may obtain a copy of the License at
$Id$
]]--
require("luci.sys")
m = Map("firewall", translate("fw_portfw"), translate("fw_portfw1"))
arg[1] = arg[1] or ""
m = Map("firewall", translate("fw_redirect"), translate("fw_redirect_desc"))
s = m:section(TypedSection, "redirect", "")
s.addremove = true
s = m:section(NamedSection, arg[1], "redirect", "")
s.anonymous = true
s.addremove = false
back = s:option(DummyValue, "_overview", translate("overview"))
back.value = ""
back.titleref = luci.dispatcher.build_url("admin", "network", "firewall", "redirect")
name = s:option(Value, "_name", translate("name"))
name.rmempty = true
@ -30,11 +36,10 @@ luci.model.uci.cursor():foreach("firewall", "zone",
iface:value(section.name)
end)
s:option(Value, "src_ip").optional = true
s:option(Value, "src_mac").optional = true
s:option(Value, "src_ip", translate("firewall_redirect_srcip")).optional = true
s:option(Value, "src_mac", translate("firewall_redirect_srcmac")).optional = true
sport = s:option(Value, "src_port")
sport.optional = true
sport = s:option(Value, "src_port", translate("firewall_rule_srcport"))
sport:depends("proto", "tcp")
sport:depends("proto", "udp")
sport:depends("proto", "tcpudp")
@ -46,19 +51,18 @@ proto:value("tcp", "TCP")
proto:value("udp", "UDP")
proto:value("tcpudp", "TCP+UDP")
dport = s:option(Value, "src_dport")
dport = s:option(Value, "src_dport", translate("firewall_redirect_srcdport"))
dport.size = 5
dport.optional = true
dport:depends("proto", "tcp")
dport:depends("proto", "udp")
dport:depends("proto", "tcpudp")
to = s:option(Value, "dest_ip")
to = s:option(Value, "dest_ip", translate("firewall_redirect_destip"))
for i, dataset in ipairs(luci.sys.net.arptable()) do
to:value(dataset["IP address"])
end
toport = s:option(Value, "dest_port")
toport = s:option(Value, "dest_port", translate("firewall_redirect_destport"))
toport.optional = true
toport.size = 5

View file

@ -0,0 +1,82 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
m = Map("firewall", translate("fw_traffic"))
s = m:section(TypedSection, "forwarding", translate("fw_forwarding"), translate("fw_forwarding1"))
s.template = "cbi/tblsection"
s.addremove = true
s.anonymous = true
iface = s:option(ListValue, "src", translate("fw_src"))
oface = s:option(ListValue, "dest", translate("fw_dest"))
s:option(Flag, "mtu_fix", translate("fw_mtufix"))
luci.model.uci.cursor():foreach("firewall", "zone",
function (section)
iface:value(section.name)
oface:value(section.name)
end)
s = m:section(TypedSection, "rule")
s.addremove = true
s.anonymous = true
s.template = "cbi/tblsection"
s.extedit = luci.dispatcher.build_url("admin", "network", "firewall", "rule", "%s")
s.defaults.target = "ACCEPT"
local created = nil
function s.create(self, section)
created = TypedSection.create(self, section)
end
function s.parse(self, ...)
TypedSection.parse(self, ...)
if created then
m.uci:save("firewall")
luci.http.redirect(luci.dispatcher.build_url(
"admin", "network", "firewall", "rule", created
))
end
end
s:option(DummyValue, "_name", translate("name"))
s:option(DummyValue, "proto", translate("protocol"))
src = s:option(DummyValue, "src", translate("fw_src"))
function src.cfgvalue(self, s)
return "%s:%s:%s" % {
self.map:get(s, "src") or "*",
self.map:get(s, "src_ip") or "0.0.0.0/0",
self.map:get(s, "src_port") or "*"
}
end
dest = s:option(DummyValue, "dest", translate("fw_dest"))
function dest.cfgvalue(self, s)
return "%s:%s:%s" % {
self.map:get(s, "dest") or translate("device", "device"),
self.map:get(s, "dest_ip") or "0.0.0.0/0",
self.map:get(s, "dest_port") or "*"
}
end
s:option(DummyValue, "target")
return m

View file

@ -0,0 +1,72 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
arg[1] = arg[1] or ""
m = Map("firewall", translate("firewall_rule"), translate("firewall_rule_desc"))
s = m:section(NamedSection, arg[1], "rule", "")
s.anonymous = true
s.addremove = false
back = s:option(DummyValue, "_overview", translate("overview"))
back.value = ""
back.titleref = luci.dispatcher.build_url("admin", "network", "firewall", "rule")
name = s:option(Value, "_name", translate("name")..translate("cbi_optional"))
name.rmempty = true
iface = s:option(ListValue, "src", translate("fw_src"))
iface.rmempty = true
oface = s:option(ListValue, "dest", translate("fw_dest"))
oface:value("", translate("device", "device"))
oface.rmempty = true
luci.model.uci.cursor():foreach("firewall", "zone",
function (section)
iface:value(section.name)
oface:value(section.name)
end)
proto = s:option(Value, "proto", translate("protocol"))
proto.optional = true
proto:value("")
proto:value("tcpudp", "TCP+UDP")
proto:value("tcp", "TCP")
proto:value("udp", "UDP")
proto:value("icmp", "ICMP")
s:option(Value, "src_ip", translate("firewall_rule_srcip")).optional = true
s:option(Value, "dest_ip", translate("firewall_rule_destip")).optional = true
s:option(Value, "src_mac", translate("firewall_rule_srcmac")).optional = true
sport = s:option(Value, "src_port", translate("firewall_rule_srcport"))
sport:depends("proto", "tcp")
sport:depends("proto", "udp")
sport:depends("proto", "tcpudp")
dport = s:option(Value, "dest_port", translate("firewall_rule_destport"))
dport:depends("proto", "tcp")
dport:depends("proto", "udp")
dport:depends("proto", "tcpudp")
jump = s:option(ListValue, "target", translate("firewall_rule_target"))
jump.rmempty = true
jump.default = "ACCEPT"
jump:value("DROP", translate("fw_drop"))
jump:value("ACCEPT", translate("fw_accept"))
jump:value("REJECT", translate("fw_reject"))
return m

View file

@ -19,12 +19,19 @@ s.anonymous = true
s:option(Flag, "syn_flood")
local di = s:option(Flag, "drop_invalid", translate("fw_dropinvalid"))
di.rmempty = false
function di.cfgvalue(...)
return AbstractValue.cfgvalue(...) or "1"
end
p = {}
p[1] = s:option(ListValue, "input")
p[2] = s:option(ListValue, "output")
p[3] = s:option(ListValue, "forward")
for i, v in ipairs(p) do
v:value("REJECT", translate("fw_reject"))
v:value("DROP", translate("fw_drop"))
v:value("ACCEPT", translate("fw_accept"))
end
@ -44,6 +51,7 @@ p[2] = s:option(ListValue, "output")
p[3] = s:option(ListValue, "forward")
for i, v in ipairs(p) do
v:value("REJECT", translate("fw_reject"))
v:value("DROP", translate("fw_drop"))
v:value("ACCEPT", translate("fw_accept"))
end
@ -54,10 +62,10 @@ net = s:option(MultiValue, "network")
net.widget = "select"
net.rmempty = true
luci.tools.webadmin.cbi_add_networks(net)
function net.cfgvalue(self, section)
local value = MultiValue.cfgvalue(self, section)
return value or name:cfgvalue(section)
end
return m
return m

View file

@ -1,5 +1,8 @@
package firewall
config package
option title 'Firewall configuration'
config section
option name 'zone'
option title 'Firewall zones'
@ -7,13 +10,13 @@ config section
config variable
option name 'name'
option title 'Name of this firewall zone'
option title 'Name'
option section 'firewall.zone'
option required true
config variable
option name 'network'
option title 'Associated network of this firewall zone'
option title 'Networks belonging to this zone'
option section 'firewall.zone'
option valueof 'network.interface'
option multival true
@ -75,11 +78,17 @@ config variable
option section 'firewall.defaults'
option datatype 'boolean'
config variable
option name 'drop_invalid'
option title 'Do not drop packages with state invalid'
option section 'firewall.defaults'
option datatype 'boolean'
config section
option name 'forwarding'
option title 'Firewall traffic forwarding rules'
option title 'Forwarding rules'
option package 'firewall'
config variable
@ -96,14 +105,26 @@ config variable
option valueof 'firewall.zone.name'
option required true
config variable
option name 'mtu_fix'
option title 'Fixup MTU of outgoing packages'
option section 'firewall.forwarding'
option datatype 'boolean'
config section
option name 'rule'
option title 'Custom rule specification'
option title 'Custom rules'
option package 'firewall'
list depends 'target, src'
list depends 'target, dest'
list depends 'target, src_ip'
list depends 'target, src_port'
list depends 'target, src_mac'
list depends 'target, dest_ip'
list depends 'target, dest_port'
list depends 'target, proto'
config variable
option name 'src'
@ -158,13 +179,12 @@ config variable
option title 'Option target'
option section 'firewall.rule'
option datatype 'string'
option required true
config section
option name 'redirect'
option title 'Traffic redirection rule definition'
option title 'Redirection rules'
option package 'firewall'
config variable

View file

@ -0,0 +1,5 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-hd_idle ) && rm -f /etc/uci-defaults/luci-hd_idle
/etc/init.d/hd-idle enabled || /etc/init.d/hd-idle enable
}

View file

@ -0,0 +1,28 @@
--[[
LuCI hd-idle
(c) 2008 Yanira <forum-2008@email.de>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
module("luci.controller.hd_idle", package.seeall)
function index()
require("luci.i18n")
luci.i18n.loadc("hd_idle")
if not luci.fs.access("/etc/config/hd-idle") then
return
end
local page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), luci.i18n.translate("hd_idle", "hd-idle"), 60)
page.i18n = "hd_idle"
page.dependent = true
end

View file

@ -0,0 +1,7 @@
disk = 'Festplatte'
enable_debug = 'Debug-Ausgaben aktivieren'
hd_idle = 'hd-idle'
hd_idle_desc = 'hd-idle ist ein Hilfsprogramm um externe Festplatten nach einer festgelegten Leerlaufzeit herunter zu fahren.'
idle_time_interval = 'Leerlaufzeit'
idle_time_unit = 'Leerlaufzeiteinheit'
settings = 'Einstellungen'

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="disk">Festplatte</i18n:msg>
<i18n:msg xml:id="enable_debug">Debug-Ausgaben aktivieren</i18n:msg>
<i18n:msg xml:id="hd_idle">hd-idle</i18n:msg>
<i18n:msg xml:id="hd_idle_desc">hd-idle ist ein Hilfsprogramm um externe Festplatten nach einer festgelegten Leerlaufzeit herunter zu fahren.</i18n:msg>
<i18n:msg xml:id="idle_time_interval">Leerlaufzeit</i18n:msg>
<i18n:msg xml:id="idle_time_unit">Leerlaufzeiteinheit</i18n:msg>
<i18n:msg xml:id="settings">Einstellungen</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,7 @@
disk = 'Disk'
enable_debug = 'Enable debug'
hd_idle = 'hd-idle'
hd_idle_desc = 'hd-idle is a utility program for spinning-down external disks after a period of idle time.'
idle_time_interval = 'Idle-Time'
idle_time_unit = 'Idle-Time unit'
settings = 'Settings'

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="disk">Disk</i18n:msg>
<i18n:msg xml:id="enable_debug">Enable debug</i18n:msg>
<i18n:msg xml:id="hd_idle">hd-idle</i18n:msg>
<i18n:msg xml:id="hd_idle_desc">hd-idle is a utility program for spinning-down external disks after a period of idle time.</i18n:msg>
<i18n:msg xml:id="idle_time_interval">Idle-Time</i18n:msg>
<i18n:msg xml:id="idle_time_unit">Idle-Time unit</i18n:msg>
<i18n:msg xml:id="settings">Settings</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,7 @@
disk = 'Disco'
enable_debug = 'Habilitar debug'
hd_idle = 'Hd-idle'
hd_idle_desc = 'Hd-idle é um programa utilitário para ativar o modo &quot;economia de energia&quot; (spinning-down) de discos externos após um período de ociosidade.'
idle_time_interval = 'Tempo de ociosidade'
idle_time_unit = 'Unidade do tempo de ociosidade'
settings = 'Configurações'

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="disk">Disco</i18n:msg>
<i18n:msg xml:id="enable_debug">Habilitar debug</i18n:msg>
<i18n:msg xml:id="hd_idle">Hd-idle</i18n:msg>
<i18n:msg xml:id="hd_idle_desc">Hd-idle é um programa utilitário para ativar o modo "economia de energia" (spinning-down) de discos externos após um período de ociosidade.</i18n:msg>
<i18n:msg xml:id="idle_time_interval">Tempo de ociosidade</i18n:msg>
<i18n:msg xml:id="idle_time_unit">Unidade do tempo de ociosidade</i18n:msg>
<i18n:msg xml:id="settings">Configurações</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,41 @@
--[[
LuCI hd-idle
(c) 2008 Yanira <forum-2008@email.de>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
require("luci.fs")
m = Map("hd-idle", translate("hd_idle"), translate("hd_idle_desc"))
s = m:section(TypedSection, "hd-idle", translate("settings"))
s.anonymous = true
s:option(Flag, "enabled", translate("enable", "Enable"))
disk = s:option(Value, "disk", translate("disk"))
disk.rmempty = true
for _, dev in ipairs(luci.fs.glob("/dev/[sh]d[a-z]")) do
disk:value(luci.fs.basename(dev))
end
s:option(Value, "idle_time_interval", translate("idle_time_interval")).default = 10
s.rmempty = true
unit = s:option(ListValue, "idle_time_unit", translate("idle_time_unit"))
unit.default = "minutes"
unit:value("minutes", "min")
unit:value("hours", "h")
unit.rmempty = true
s:option(Flag, "enable_debug", translate("enable_debug"))
return m

View file

@ -0,0 +1,7 @@
#!/bin/sh
uci batch <<-EOF
add ucitrack hd-idle
set ucitrack.@hd-idle[-1].init=hd-idle
commit ucitrack
EOF

View file

@ -0,0 +1,29 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
module("luci.controller.init", package.seeall)
function index()
if not luci.fs.access("/etc/rc.common") then
return
end
require("luci.i18n")
luci.i18n.loadc("initmgr")
entry(
{"admin", "system", "init"}, form("init/init"),
luci.i18n.translate("initmgr", "Init Scripts")
).i18n = "initmgr"
end

View file

@ -0,0 +1,5 @@
initmgr = 'Startscripte'
initmgr_desc = 'Hier können installierte Startscripte aktiviert oder deaktiviert werden. Änderungen werden erst mit einem Geräteneustart angewendet.<br /><strong>Warnung: Wenn essentialle Startscripte wie &quot;network&quot; deaktiviert werden könnte das Gerät unerreichbar werden!</strong>'
initmgr_index = 'Startpriorität'
initmgr_name = 'Startscript'
initmgr_enabled = 'Aktivieren/Deaktivieren'

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="initmgr">Startscripte</i18n:msg>
<i18n:msg xml:id="initmgr_desc">Hier können installierte Startscripte aktiviert oder deaktiviert werden. Änderungen werden erst mit einem Geräteneustart angewendet.<br /><strong>Warnung: Wenn essentialle Startscripte wie "network" deaktiviert werden könnte das Gerät unerreichbar werden!</strong></i18n:msg>
<i18n:msg xml:id="initmgr_index">Startpriorität</i18n:msg>
<i18n:msg xml:id="initmgr_name">Startscript</i18n:msg>
<i18n:msg xml:id="initmgr_enabled">Aktivieren/Deaktivieren</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,5 @@
initmgr = 'Σενάρια Εκκίνησης'
initmgr_desc = 'Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε σενάρια εκκίνησης εδώ. Οι αλλαγές θα εφαρμοστούν αφού επανεκκινήσετε τη συσκευή.<br /><strong>Προειδοποίηση: Αν απενεργοποιήσετε απαραίτητα σενάρια εκκίνησης όπως το &quot;network&quot;, η συσκευή σας μπορεί να γίνει μη-προσβάσιμη!</strong>'
initmgr_index = 'Προτεραιότητα εκκίνησης'
initmgr_name = 'Σενάριο εκκίνησης'
initmgr_enabled = 'Ενεργοποίηση/Απενεργοποίηση'

View file

@ -0,0 +1,5 @@
initmgr = 'Initscripts'
initmgr_desc = 'You can enable or disable installed init scripts here. Changes will applied after a device reboot.<br /><strong>Warning: If you disable essential init scripts like &quot;network&quot;, your device might become inaccesable!</strong>'
initmgr_index = 'Start priority'
initmgr_name = 'Initscript'
initmgr_enabled = 'Enable/Disable'

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="initmgr">Initscripts</i18n:msg>
<i18n:msg xml:id="initmgr_desc">You can enable or disable installed init scripts here. Changes will applied after a device reboot.<br /><strong>Warning: If you disable essential init scripts like "network", your device might become inaccesable!</strong></i18n:msg>
<i18n:msg xml:id="initmgr_index">Start priority</i18n:msg>
<i18n:msg xml:id="initmgr_name">Initscript</i18n:msg>
<i18n:msg xml:id="initmgr_enabled">Enable/Disable</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,5 @@
initmgr = 'Scripts de Inicialização'
initmgr_desc = 'Você pode ativar ou desativar os scripts de inicialização instalados aqui. As mudanças serão aplicadas após a reinicialização do equipamento.<br /><strong>Aviso: Se você desativar algum script de inicialização essencial como por exemplo &quot;rede/network&quot;, o dispositivo poderá tornar-se inacessível!</strong>'
initmgr_index = 'Prioridade de inicialização'
initmgr_name = 'Script de inicialização'
initmgr_enabled = 'Ativar/Desativar'

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="initmgr">Scripts de Inicialização</i18n:msg>
<i18n:msg xml:id="initmgr_desc">Você pode ativar ou desativar os scripts de inicialização instalados aqui. As mudanças serão aplicadas após a reinicialização do equipamento.<br /><strong>Aviso: Se você desativar algum script de inicialização essencial como por exemplo "rede/network", o dispositivo poderá tornar-se inacessível!</strong></i18n:msg>
<i18n:msg xml:id="initmgr_index">Prioridade de inicialização</i18n:msg>
<i18n:msg xml:id="initmgr_name">Script de inicialização</i18n:msg>
<i18n:msg xml:id="initmgr_enabled">Ativar/Desativar</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,58 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
require("luci.sys")
require("luci.util")
local inits = { }
for _, name in ipairs(luci.sys.init.names()) do
local index = luci.sys.init.index(name)
local enabled = luci.sys.init.enabled(name)
inits["%02i.%s" % { index, name }] = {
name = name,
index = tostring(index),
enabled = enabled
}
end
m = SimpleForm("initmgr", translate("initmgr"), translate("initmgr_desc"))
m.reset = false
s = m:section(Table, inits)
i = s:option(DummyValue, "index", translate("initmgr_index"))
n = s:option(DummyValue, "name", translate("initmgr_name"))
e = s:option(Flag, "enabled", translate("initmgr_enabled"))
e.cfgvalue = function(self, section)
return inits[section].enabled and "1" or "0"
end
e.write = function(self, section, value)
if value == "1" and not inits[section].enabled then
inits[section].enabled = true
return luci.sys.init.enable(inits[section].name)
elseif value == "0" and inits[section].enabled then
inits[section].enabled = false
return luci.sys.init.disable(inits[section].name)
end
return true
end
return m

View file

@ -0,0 +1,19 @@
if(!window.CanvasRenderingContext2D){(function(){var I=Math,i=I.round,L=I.sin,M=I.cos,m=10,A=m/2,Q={init:function(a){var b=a||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var c=this;b.attachEvent("onreadystatechange",function(){c.r(b)})}},r:function(a){if(a.readyState=="complete"){if(!a.namespaces["s"]){a.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var b=a.createStyleSheet();b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}";
var c=a.getElementsByTagName("canvas");for(var d=0;d<c.length;d++){if(!c[d].getContext){this.initElement(c[d])}}}},q:function(a){var b=a.outerHTML,c=a.ownerDocument.createElement(b);if(b.slice(-2)!="/>"){var d="/"+a.tagName,e;while((e=a.nextSibling)&&e.tagName!=d){e.removeNode()}if(e){e.removeNode()}}a.parentNode.replaceChild(c,a);return c},initElement:function(a){a=this.q(a);a.getContext=function(){if(this.l){return this.l}return this.l=new K(this)};a.attachEvent("onpropertychange",V);a.attachEvent("onresize",
W);var b=a.attributes;if(b.width&&b.width.specified){a.style.width=b.width.nodeValue+"px"}else{a.width=a.clientWidth}if(b.height&&b.height.specified){a.style.height=b.height.nodeValue+"px"}else{a.height=a.clientHeight}return a}};function V(a){var b=a.srcElement;switch(a.propertyName){case "width":b.style.width=b.attributes.width.nodeValue+"px";b.getContext().clearRect();break;case "height":b.style.height=b.attributes.height.nodeValue+"px";b.getContext().clearRect();break}}function W(a){var b=a.srcElement;
if(b.firstChild){b.firstChild.style.width=b.clientWidth+"px";b.firstChild.style.height=b.clientHeight+"px"}}Q.init();var R=[];for(var E=0;E<16;E++){for(var F=0;F<16;F++){R[E*16+F]=E.toString(16)+F.toString(16)}}function J(){return[[1,0,0],[0,1,0],[0,0,1]]}function G(a,b){var c=J();for(var d=0;d<3;d++){for(var e=0;e<3;e++){var g=0;for(var h=0;h<3;h++){g+=a[d][h]*b[h][e]}c[d][e]=g}}return c}function N(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit=
a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.d=a.d;b.e=a.e}function O(a){var b,c=1;a=String(a);if(a.substring(0,3)=="rgb"){var d=a.indexOf("(",3),e=a.indexOf(")",d+1),g=a.substring(d+1,e).split(",");b="#";for(var h=0;h<3;h++){b+=R[Number(g[h])]}if(g.length==4&&a.substr(3,1)=="a"){c=g[3]}}else{b=a}return[b,c]}function S(a){switch(a){case "butt":return"flat";case "round":return"round";
case "square":default:return"square"}}function K(a){this.a=J();this.m=[];this.k=[];this.c=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=m*1;this.globalAlpha=1;this.canvas=a;var b=a.ownerDocument.createElement("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.overflow="hidden";b.style.position="absolute";a.appendChild(b);this.j=b;this.d=1;this.e=1}var j=K.prototype;j.clearRect=function(){this.j.innerHTML=
"";this.c=[]};j.beginPath=function(){this.c=[]};j.moveTo=function(a,b){this.c.push({type:"moveTo",x:a,y:b});this.f=a;this.g=b};j.lineTo=function(a,b){this.c.push({type:"lineTo",x:a,y:b});this.f=a;this.g=b};j.bezierCurveTo=function(a,b,c,d,e,g){this.c.push({type:"bezierCurveTo",cp1x:a,cp1y:b,cp2x:c,cp2y:d,x:e,y:g});this.f=e;this.g=g};j.quadraticCurveTo=function(a,b,c,d){var e=this.f+0.6666666666666666*(a-this.f),g=this.g+0.6666666666666666*(b-this.g),h=e+(c-this.f)/3,l=g+(d-this.g)/3;this.bezierCurveTo(e,
g,h,l,c,d)};j.arc=function(a,b,c,d,e,g){c*=m;var h=g?"at":"wa",l=a+M(d)*c-A,n=b+L(d)*c-A,o=a+M(e)*c-A,f=b+L(e)*c-A;if(l==o&&!g){l+=0.125}this.c.push({type:h,x:a,y:b,radius:c,xStart:l,yStart:n,xEnd:o,yEnd:f})};j.rect=function(a,b,c,d){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath()};j.strokeRect=function(a,b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.stroke()};j.fillRect=function(a,
b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.fill()};j.createLinearGradient=function(a,b,c,d){var e=new H("gradient");return e};j.createRadialGradient=function(a,b,c,d,e,g){var h=new H("gradientradial");h.n=c;h.o=g;h.i.x=a;h.i.y=b;return h};j.drawImage=function(a,b){var c,d,e,g,h,l,n,o,f=a.runtimeStyle.width,k=a.runtimeStyle.height;a.runtimeStyle.width="auto";a.runtimeStyle.height="auto";var q=a.width,r=a.height;a.runtimeStyle.width=
f;a.runtimeStyle.height=k;if(arguments.length==3){c=arguments[1];d=arguments[2];h=(l=0);n=(e=q);o=(g=r)}else if(arguments.length==5){c=arguments[1];d=arguments[2];e=arguments[3];g=arguments[4];h=(l=0);n=q;o=r}else if(arguments.length==9){h=arguments[1];l=arguments[2];n=arguments[3];o=arguments[4];c=arguments[5];d=arguments[6];e=arguments[7];g=arguments[8]}else{throw"Invalid number of arguments";}var s=this.b(c,d),t=[],v=10,w=10;t.push(" <g_vml_:group",' coordsize="',m*v,",",m*w,'"',' coordorigin="0,0"',
' style="width:',v,";height:",w,";position:absolute;");if(this.a[0][0]!=1||this.a[0][1]){var x=[];x.push("M11='",this.a[0][0],"',","M12='",this.a[1][0],"',","M21='",this.a[0][1],"',","M22='",this.a[1][1],"',","Dx='",i(s.x/m),"',","Dy='",i(s.y/m),"'");var p=s,y=this.b(c+e,d),z=this.b(c,d+g),B=this.b(c+e,d+g);p.x=Math.max(p.x,y.x,z.x,B.x);p.y=Math.max(p.y,y.y,z.y,B.y);t.push("padding:0 ",i(p.x/m),"px ",i(p.y/m),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",x.join(""),", sizingmethod='clip');")}else{t.push("top:",
i(s.y/m),"px;left:",i(s.x/m),"px;")}t.push(' ">','<g_vml_:image src="',a.src,'"',' style="width:',m*e,";"," height:",m*g,';"',' cropleft="',h/q,'"',' croptop="',l/r,'"',' cropright="',(q-h-n)/q,'"',' cropbottom="',(r-l-o)/r,'"'," />","</g_vml_:group>");this.j.insertAdjacentHTML("BeforeEnd",t.join(""))};j.stroke=function(a){var b=[],c=O(a?this.fillStyle:this.strokeStyle),d=c[0],e=c[1]*this.globalAlpha,g=10,h=10;b.push("<g_vml_:shape",' fillcolor="',d,'"',' filled="',Boolean(a),'"',' style="position:absolute;width:',
g,";height:",h,';"',' coordorigin="0 0" coordsize="',m*g," ",m*h,'"',' stroked="',!a,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',d,'"',' path="');var l={x:null,y:null},n={x:null,y:null};for(var o=0;o<this.c.length;o++){var f=this.c[o];if(f.type=="moveTo"){b.push(" m ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="lineTo"){b.push(" l ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="close"){b.push(" x ")}else if(f.type=="bezierCurveTo"){b.push(" c ");
var k=this.b(f.x,f.y),q=this.b(f.cp1x,f.cp1y),r=this.b(f.cp2x,f.cp2y);b.push(i(q.x),",",i(q.y),",",i(r.x),",",i(r.y),",",i(k.x),",",i(k.y))}else if(f.type=="at"||f.type=="wa"){b.push(" ",f.type," ");var k=this.b(f.x,f.y),s=this.b(f.xStart,f.yStart),t=this.b(f.xEnd,f.yEnd);b.push(i(k.x-this.d*f.radius),",",i(k.y-this.e*f.radius)," ",i(k.x+this.d*f.radius),",",i(k.y+this.e*f.radius)," ",i(s.x),",",i(s.y)," ",i(t.x),",",i(t.y))}if(k){if(l.x==null||k.x<l.x){l.x=k.x}if(n.x==null||k.x>n.x){n.x=k.x}if(l.y==
null||k.y<l.y){l.y=k.y}if(n.y==null||k.y>n.y){n.y=k.y}}}b.push(' ">');if(typeof this.fillStyle=="object"){var v={x:"50%",y:"50%"},w=n.x-l.x,x=n.y-l.y,p=w>x?w:x;v.x=i(this.fillStyle.i.x/w*100+50)+"%";v.y=i(this.fillStyle.i.y/x*100+50)+"%";var y=[];if(this.fillStyle.p=="gradientradial"){var z=this.fillStyle.n/p*100,B=this.fillStyle.o/p*100-z}else{var z=0,B=100}var C={offset:null,color:null},D={offset:null,color:null};this.fillStyle.h.sort(function(T,U){return T.offset-U.offset});for(var o=0;o<this.fillStyle.h.length;o++){var u=
this.fillStyle.h[o];y.push(u.offset*B+z,"% ",u.color,",");if(u.offset>C.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset<D.offset||D.offset==null){D.offset=u.offset;D.color=u.color}}y.pop();b.push("<g_vml_:fill",' color="',D.color,'"',' color2="',C.color,'"',' type="',this.fillStyle.p,'"',' focusposition="',v.x,", ",v.y,'"',' colors="',y.join(""),'"',' opacity="',e,'" />')}else if(a){b.push('<g_vml_:fill color="',d,'" opacity="',e,'" />')}else{b.push("<g_vml_:stroke",' opacity="',
e,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',S(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',d,'" />')}b.push("</g_vml_:shape>");this.j.insertAdjacentHTML("beforeEnd",b.join(""));this.c=[]};j.fill=function(){this.stroke(true)};j.closePath=function(){this.c.push({type:"close"})};j.b=function(a,b){return{x:m*(a*this.a[0][0]+b*this.a[1][0]+this.a[2][0])-A,y:m*(a*this.a[0][1]+b*this.a[1][1]+this.a[2][1])-A}};j.save=function(){var a={};N(this,a);
this.k.push(a);this.m.push(this.a);this.a=G(J(),this.a)};j.restore=function(){N(this.k.pop(),this);this.a=this.m.pop()};j.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];this.a=G(c,this.a)};j.rotate=function(a){var b=M(a),c=L(a),d=[[b,c,0],[-c,b,0],[0,0,1]];this.a=G(d,this.a)};j.scale=function(a,b){this.d*=a;this.e*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];this.a=G(c,this.a)};j.clip=function(){};j.arcTo=function(){};j.createPattern=function(){return new P};function H(a){this.p=a;this.n=0;this.o=
0;this.h=[];this.i={x:0,y:0}}H.prototype.addColorStop=function(a,b){b=O(b);this.h.push({offset:1-a,color:b})};function P(){}G_vmlCanvasManager=Q;CanvasRenderingContext2D=K;CanvasGradient=H;CanvasPattern=P})()};

View file

@ -0,0 +1,204 @@
function Graph(container, id, options, transform, legend) {
if( !options ) options = { };
this.id = id;
this.cols = 100;
this.type = "line";
this.options = options;
this.transform = transform;
this.dataset = {};
this.legend = legend;
this.lastvalue = {};
var name = (options.instanceNames && options.instanceNames[id])
? options.instanceNames[id] : id;
var graph = document.createElement('div');
var label = document.createElement('h2');
label.innerHTML = options.title
? options.title.replace("%s", name) : name;
container.appendChild( label );
container.appendChild( graph );
this.canvas = document.createElement('canvas');
graph.appendChild( this.canvas );
this.canvas.id = id;
this.canvas.width = ( options.width || graph.offsetWidth - 20 );
this.canvas.height = ( options.height || 300 );
}
Graph.prototype.addDataset = function(name, ds) {
if( !this.layout ) {
this.layout = new PlotKit.Layout( this.type, this.options );
}
if( !ds ) {
ds = new Array();
for( var i = 0; i < this.cols; i++ )
ds[i] = new Array( i, 0 );
}
this.dataset[name] = ds;
this.layout.addDataset(name, ds);
}
Graph.prototype.updateDataset = function(name, value) {
if( this.dataset[name] ) {
var ds = this.dataset[name];
for( var i = 1; i < this.cols; i++ )
ds[i-1][1] = ds[i][1];
value = Math.abs( parseFloat(value) || 0 );
if( this.transform ) {
var orgvalue = value;
value = (this.lastvalue[name]) ? this.transform(value, this.lastvalue[name]) : 0;
this.lastvalue[name] = orgvalue;
}
ds[this.cols-1][1] = value;
this.layout.addDataset(name, ds);
}
}
Graph.prototype.draw = function( options ) {
if( this.layout ) {
this.plotter = new PlotKit.CanvasRenderer(
this.canvas, this.layout, this.options || options || {}
);
this.layout.evaluate();
this.plotter.render();
legend_opt = {
"legendStyle": 'li'
};
legend = new LegendRenderer(this.legend, this.layout, legend_opt);
legend.render();
}
}
Graph.prototype.redraw = function() {
if( this.layout && this.plotter ) {
this.layout.evaluate();
this.plotter.clear();
this.plotter.render();
}
}
function GraphRPC(container, uri, action, interval, datasources, options, transform, legend) {
this.ds = datasources;
this.uri = uri
this.action = action;
this.options = options || { };
this.container = container;
this.transform = transform;
this.proxy = new MochiKit.JsonRpc.JsonRpcProxy(uri, [action]);
this.graphs = new Object();
this.legend = legend;
this.requestData();
if( interval ) {
var self = this;
window.setInterval(function(){self.requestData()}, interval);
}
}
GraphRPC.prototype.requestData = function() {
var r = this.proxy[this.action](); var self = this;
r.addCallback(function(r){ self.dispatchResponse(r) });
r.addErrback(function(e){ throw('Error: ' + e) });
}
GraphRPC.prototype.dispatchResponse = function(response) {
var instances;
if( this.options.instances ) {
instances = this.options.instances;
}
else {
instances = new Array();
for( var instance in response ) {
instances[instances.length] = instance;
}
}
for( var j = 0; j < instances.length; j++ ) {
var instance = instances[j];
if( this.options.separateDS ) {
for( var i = 0; i < this.ds.length; i += 2 ) {
var name = this.ds[i+1] || this.ds[i];
var gid = instance + '-' + name;
var otle = this.options.title || instance;
if( !this.graphs[gid] ) {
this.options.title = otle.replace('%s', instance) + ': ' + name;
this.graphs[gid] = new Graph(
this.container, gid, this.options, this.transform, this.legend
);
this.graphs[gid].addDataset(name);
this.graphs[gid].draw();
this.options.title = otle;
}
else
{
var datum = null;
if (typeof (this.ds[i]) == "function") {
datum = this.ds[i](
instance ? response[instance] : response
);
} else {
datum = instance
? response[instance][this.ds[i]]
: response[this.ds[i]]
}
this.graphs[gid].updateDataset(
name, datum
);
this.graphs[gid].redraw();
}
}
}
else {
var gid = instance || 'livegraph';
if( !this.graphs[gid] ) {
this.graphs[gid] = new Graph(
this.container, gid, this.options, this.transform, this.legend
);
for( var i = 0; i < this.ds.length; i += 2 ) {
var name = this.ds[i+1] || this.ds[i];
this.graphs[gid].addDataset(name);
}
this.graphs[gid].draw();
}
else {
for( var i = 0; i < this.ds.length; i += 2 ) {
var name = this.ds[i+1] || this.ds[i];
var datum = null;
if (typeof (this.ds[i]) == "function") {
datum = this.ds[i](
instance ? response[instance] : response
);
} else {
datum = instance
? response[instance][this.ds[i]]
: response[this.ds[i]]
}
this.graphs[gid].updateDataset(
name, datum
);
}
this.graphs[gid].redraw();
}
}
}
}

View file

@ -0,0 +1,220 @@
/* MochiKit.JsonRpc */
if (typeof(dojo) != 'undefined') {
dojo.provide("MochiKit.JsonRpc");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Async");
}
if (typeof(JSAN) != 'undefined') {
JSAN.use("MochiKit.Base", []);
JSAN.use("MochiKit.DOM", []);
JSAN.use("MochiKit.Async", []);
}
try {
if (typeof(MochiKit.Base) == 'undefined' ||
typeof(MochiKit.DOM) == 'undefined' ||
typeof(MochiKit.Async) == 'undefined') {
throw "";
}
} catch (e) {
throw "MochiKit.JsonRpc depends on MochiKit.Base, MochiKit.DOM and MochiKit.Async";
}
if (typeof(MochiKit.JsonRpc) == 'undefined') {
MochiKit.JsonRpc = {};
}
MochiKit.JsonRpc.NAME = "MochiKit.JsonRpc";
MochiKit.JsonRpc.VERSION = "0.90";
MochiKit.JsonRpc.__repr__ = function () {
return "[" + this.NAME + " " + this.VERSION + "]";
}
MochiKit.JsonRpc.toString = function () {
return this.__repr__();
}
MochiKit.JsonRpc.JsonRpcError = function (message) {
this.message = message;
this.name = 'JsonRpcError';
}
MochiKit.JsonRpc.JsonRpcError.prototype = new Error();
MochiKit.JsonRpc.JsonRpcError.prototype.repr = function () {
return 'JsonRpcError(' + this.message + ')';
}
MochiKit.JsonRpc.JsonRpcError.prototype.toString = function () {
return this.repr();
}
MochiKit.JsonRpc.jsonObject = function (o) {
var attrs=[];
for(attr in o){
if(typeof o[attr] != "function"){
attrs.push('"' + attr + '": ' + json(o[attr]));
}
}
return "{" + attrs.join(", ") + "}";
}
MochiKit.JsonRpc.isObject = function (o) {
return true;
}
MochiKit.JsonRpc.jsonArray = function (o) {
return "[" + MochiKit.Base.map(json, o).join(", ") + "]";
}
var MB = MochiKit.Base
MochiKit.JsonRpc.jsonRegistry = new MochiKit.Base.AdapterRegistry();
MochiKit.JsonRpc.jsonRegistry.register('arrayLike',MB.isArrayLike,MochiKit.JsonRpc.jsonArray);
MochiKit.JsonRpc.jsonRegistry.register("string", MB.typeMatcher("string"), MB.reprString);
MochiKit.JsonRpc.jsonRegistry.register("numbers", MB.typeMatcher("number", "boolean"), MB.reprNumber);
MochiKit.JsonRpc.jsonRegistry.register("undefined", MB.isUndefined, MB.reprUndefined);
MochiKit.JsonRpc.jsonRegistry.register("null", MB.isNull, MB.reprNull);
MochiKit.JsonRpc.jsonRegistry.register("objectLike", MochiKit.JsonRpc.isObject, MochiKit.JsonRpc.jsonObject);
MochiKit.JsonRpc.json = function (o) {
try {
if (typeof(o.__json__) == 'function') {
return o.__json__();
} else if (typeof(o.json) == 'function' && o.json != arguments.callee) {
return o.json();
}
return jsonRegistry.match(o);
} catch (e) {
if (typeof(o.NAME) == 'string' && (
o.toString == Function.prototype.toString ||
o.toString == Object.prototype.toString
)) {
return o.NAME;
}
return o;
}
}
MochiKit.JsonRpc.JsonRpcCall = function (method,params) {
this.method = method;
this.params = params;
this.id = '0';
}
MochiKit.JsonRpc.JsonRpcProxy = function (url,methNames) {
MochiKit.Base.bindMethods(this);
this.url = url;
if (methNames) {
MochiKit.Base.map(this._proxyMethod,methNames);
}
}
update(MochiKit.JsonRpc.JsonRpcProxy.prototype, {
'call': function () {
var arglist = MochiKit.Base.map(null,arguments)
var methname = arglist.shift()
log(arglist);
var callobj = new MochiKit.JsonRpc.JsonRpcCall(methname,arglist);
var callstr = json(callobj);
var req = MochiKit.Async.getXMLHttpRequest();
req.open("POST",this.url,true);
req.setRequestHeader("Content-Type","text/plain");
req.setRequestHeader("Content-Length",callstr.length);
var d = MochiKit.Async.sendXMLHttpRequest(req,callstr);
d.addCallback(MochiKit.Async.evalJSONRequest);
d.addCallback(this._extractResult);
return d
},
'addSingleMethod': function (methName) {
if (methName) {
this._proxyMethod(methName);
}
},
'addMethods': function (methNames) {
if (methNames) {
MochiKit.Base.map(this._proxyMethod,methNames);
}
},
'_extractResult': function (resp) {
if (!resp.error){
return resp.result;
} else {
throw new MochiKit.JsonRpc.JsonRpcError(resp.error);
}
},
'_proxyMethod': function (methname) {
this[methname] = MochiKit.Base.partial(this.call,methname);
}
});
MochiKit.JsonRpc.DomObjectFromJson = function (){
var retval = false;
if (arguments.length == 1) {
var arg = arguments[0];
if (typeof(arg) == 'string'){
retval = MochiKit.DOM.SPAN(null,arg);
} else {
var objrepr = arguments[0];
var elem = document.createElement(objrepr[0]);
var attrs = objrepr[1];
if (attrs) {
MochiKit.DOM.updateNodeAttributes(elem, attrs);
}
if (objrepr.length >= 3){
var extraobj = objrepr[2]
for (var i=0;i<extraobj.length;i++) {
var value = MochiKit.JsonRpc.DomObjectFromJson(extraobj[i]);
if (value) {
elem.appendChild(value);
}
}
}
retval = elem;
}
}
return retval;
};
MochiKit.JsonRpc.EXPORT = [
"JsonRpcError",
"JsonRpcProxy",
];
MochiKit.JsonRpc.EXPORT_OK = [
"jsonObject",
"jsonArray",
"jsonRegistry",
"json",
"JsonRpcCall",
"DomObjectFromJson",
];
MochiKit.JsonRpc.__new__ = function () {
this.EXPORT_TAGS = {
":common": this.EXPORT,
":all": MochiKit.Base.concat(this.EXPORT, this.EXPORT_OK)
};
MochiKit.Base.nameFunctions(this);
};
MochiKit.JsonRpc.__new__();
if ((typeof(JSAN) == 'undefined' && typeof(dojo) == 'undefined')
|| (typeof(MochiKit.__compat__) == 'boolean' && MochiKit.__compat__)) {
(function (self) {
var all = self.EXPORT_TAGS[":all"];
for (var i = 0; i < all.length; i++) {
this[all[i]] = self[all[i]];
}
})(MochiKit.JsonRpc);
}

View file

@ -0,0 +1,228 @@
/*
PlotKit Legend
==============
Handles laying out legend into a DIV element.
Design taken from comments of Julien Wajsberg (http://
groups.google.com/group/plotkit/browse_thread/thread/2494bd88e6e9956d)
and Niel Domingo (http://nieldomingo.blogspot.com/2007/03/legend-
for-plotkit-bar-charts.html).
Copyright
---------
Copyright 2007 (c) Ashley Martens <ashleym_72^yahoo.com>
For use under the BSD license. <http://www.liquidx.net/plotkit>
*/
try {
if (typeof(MochiKit.Base) == 'undefined' ||
typeof(MochiKit.DOM) == 'undefined' ||
typeof(MochiKit.Color) == 'undefined' ||
typeof(MochiKit.Format) == 'undefined' ||
typeof(PlotKit.Layout) == 'undefined' ||
typeof(PlotKit.Base) == 'undefined')
{
throw "";
}
}
catch (e) {
throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format}"
}
if (typeof(PlotKit.LegendRenderer) == 'undefined') {
PlotKit.LegendRenderer = {};
}
PlotKit.LegendRenderer = function(element, layout, options) {
if (arguments.length > 0)
this.__init__(element, layout, options);
};
PlotKit.LegendRenderer.NAME = "PlotKit.LegendRenderer";
PlotKit.LegendRenderer.VERSION = PlotKit.VERSION;
PlotKit.LegendRenderer.__repr__ = function() {
return "[" + this.NAME + " " + this.VERSION + "]";
};
PlotKit.LegendRenderer.toString = function() {
return this.__repr__();
}
PlotKit.LegendRenderer.prototype.__init__ = function(element, layout,
options) {
var isNil = MochiKit.Base.isUndefinedOrNull;
var Color = MochiKit.Color.Color;
this.options = {
"colorScheme": PlotKit.Base.palette(PlotKit.Base.baseColors()
[0]),
"legendStyle": "table",
"tableColumns": 1
};
MochiKit.Base.update(this.options, options ? options : {});
this.layout = layout;
this.element = MochiKit.DOM.getElement(element);
// --- check whether everything is ok before we return
if (isNil(this.element))
throw "CRILegend() - passed legend is not found";
};
PlotKit.LegendRenderer.prototype.render = function() {
var colorScheme = this.options.colorScheme;
var setNames = PlotKit.Base.keys(this.layout.datasets);
MochiKit.DOM.updateNodeAttributes(this.element,
{"style":
{"margin":"0"
,"padding":"0"
}
});
var ul = null;
if (this.options.legendStyle == "table")
ul = this._renderListTable(colorScheme, setNames);
else
ul = this._renderList(colorScheme, setNames);
MochiKit.DOM.appendChildNodes(this.element, ul);
};
PlotKit.LegendRenderer.prototype._renderList = function(colorScheme,
setNames) {
var ul = document.createElement("ul");
ul.style.listStyle="none";
ul.style.margin="0";
ul.style.padding="0";
var colorCount = colorScheme.length;
var setCount = setNames.length;
for (var i = 0; i < setCount; i++) {
var setName = setNames[i];
var color = colorScheme[i%colorCount];
var le = this._renderElement(setName, color.toRGBString());
ul.appendChild(le);
}
return ul;
};
PlotKit.LegendRenderer.prototype._renderElement = function(title,
color) {
var le = MochiKit.DOM.createDOM("li");
le.style.listStyle="none";
le.style.margin="0 0 5px 0";
le.style.padding="0";
var box = MochiKit.DOM.createDOM("div");
box.style.backgroundColor=color;
box.style.width="2em";
box.style.height=".9em";
box.style.border="1px solid black";
box.style.margin="0 5px 0 0";
box.style.padding="0";
box.style.float="left";
box.style.cssFloat="left";
box.style.clear="left";
box.style.cssClear="left";
var span = MochiKit.DOM.createDOM("span");
MochiKit.DOM.appendChildNodes(span,
document.createTextNode(title));
MochiKit.DOM.appendChildNodes(le, box, span);
return le;
};
PlotKit.LegendRenderer.prototype._renderListTable =
function(colorScheme, setNames) {
var tabhead = THEAD(null);
var tabfoot = TFOOT(null);
var tabbody = partial(TBODY, null);
var i = 0;
var colorcount = colorScheme.length;
var tabrow;
var columns = this.options.tableColumns;
for (var label in setNames)
{
var legendcolor = colorScheme[i%colorcount];
var legendbox = DIV({'class': 'legendbox', 'className':
'legendbox'});
legendbox.style.width = "10px";
legendbox.style.height = "10px";
legendbox.style.backgroundColor = legendcolor.toHexString();
legendbox.style.borderWidth = "1px";
legendbox.style.borderStyle = "solid";
legendbox.style.borderColor = "#000000";
var boxcell = TD(null, legendbox);
var labelcell = TD({'class': 'legendlabel', 'className':
'legendlabel'}, setNames[i]);
labelcell.style.font = 'normal 10pt arial';
if (!(i % columns))
{
tabrow = partial(TR, null);
}
tabrow = partial(tabrow, boxcell, labelcell);
if (i % columns)
{
tabrow = tabrow(null);
tabbody = partial(tabbody, tabrow);
}
i++;
}
if ((setNames % columns))
{
tabrow = tabrow(TD(null), TD(null));
tabbody = partial(tabbody, tabrow);
}
tabbody = tabbody(null);
tab = TABLE({'class': 'legendcontainer', 'className':
'legendcontainer'}, tabhead, tabfoot, tabbody);
tab.style.marginTop = '1em';
tab.style.marginLeft = '1.5em';
tab.style.marginBottom = '1em';
tab.style.borderWidth = '1px';
tab.style.borderStyle = 'solid';
tab.style.borderColor = '#000000';
return tab;
};
// Namespace Iniitialisation
PlotKit.Legend = {}
PlotKit.Legend.LegendRenderer = PlotKit.LegendRenderer;
PlotKit.Legend.EXPORT = [
"LegendRenderer"
];
PlotKit.Legend.EXPORT_OK = [
"LegendRenderer"
];
PlotKit.Legend.__new__ = function() {
var m = MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS = {
":common": this.EXPORT,
":all": m.concat(this.EXPORT, this.EXPORT_OK)
};
};
PlotKit.Legend.__new__();
MochiKit.Base._exportSymbols(this, PlotKit.Legend);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,29 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
module("luci.controller.livestats", package.seeall)
function index()
require("luci.i18n")
luci.i18n.loadc("livestats")
entry( {"admin", "status", "wifistat"}, template("livestats/wireless"), luci.i18n.translate("livestats_stat_wireless"), 90 ).i18n = "livestats"
entry( {"admin", "status", "trafstat"}, template("livestats/traffic"), luci.i18n.translate("livestats_stat_traffic"), 91 ).i18n = "livestats"
entry( {"admin", "status", "loadavg"}, template("livestats/loadavg"), luci.i18n.translate("livestats_stat_loadavg"), 92 ).i18n = "livestats"
entry( {"mini", "network", "wifistat"}, template("livestats/wireless"), luci.i18n.translate("livestats_stat_wireless"), 90 ).i18n = "livestats"
entry( {"mini", "network", "trafstat"}, template("livestats/traffic"), luci.i18n.translate("livestats_stat_traffic"), 91 ).i18n = "livestats"
entry( {"mini", "system", "loadavg"}, template("livestats/loadavg"), luci.i18n.translate("livestats_stat_loadavg"), 92 ).i18n = "livestats"
end

View file

@ -0,0 +1,8 @@
livestats_incoming = "eingehend"
livestats_outgoing = "ausgehend"
livestats_traffic = "Netzverkehr auf"
livestats_wifi = "Signal-Rauschabstand für"
livestats_loadavg = "Durchschnittliche Systemlast"
livestats_stat_wireless = "Echtzeit-Drahtlosstatus"
livestats_stat_traffic = "Echtzeit-Netzwerkverkehr"
livestats_stat_loadavg = "Echtzeit-Systemlast"

View file

@ -0,0 +1,8 @@
livestats_incoming = "εισερχόμενα"
livestats_outgoing = "εξερχόμενα"
livestats_traffic = "κίνηση σε"
livestats_wifi = "σηματοθορυβικός λόγος για"
livestats_loadavg = "μέσος όρος φόρτου"
livestats_stat_wireless = "Στατιστικά Ασύρματου σε Πραγμ. Χρόνο"
livestats_stat_traffic = "Κίνηση Δικτύου σε Πραγμ. Χρόνο"
livestats_stat_loadavg = "Φόρτος Συστήματος σε Πραγμ. Χρόνο"

View file

@ -0,0 +1,8 @@
livestats_incoming = "incoming"
livestats_outgoing = "outgoing"
livestats_traffic = "traffic on"
livestats_wifi = "signal-to-noise ratio for"
livestats_loadavg = "load average"
livestats_stat_wireless = "Realtime Wireless Status"
livestats_stat_traffic = "Realtime Network Traffic"
livestats_stat_loadavg = "Realtime System Load"

View file

@ -0,0 +1,33 @@
<%+header%>
<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]-->
<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/Legend.js"></script>
<script type="text/javascript">
function initGraphs() {
var rpc = new GraphRPC(
document.getElementById('live_graphs'),
'<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'loadavg',
2000,
// Data sources
[ 0, "1 min", 1, "5 min", 2, "15 min" ],
// Graph layout options
{ title: '<%:livestats_loadavg%>', strokeWidth: 2.5, shouldFill: false, strokeColor: null,
padding: { left: 70, right: 10, top: 10, bottom: 20 },
instances: [ false ], yAxis: [ 0, 2 ], drawBackground: false },
null,
'live_graphs'
);
}
MochiKit.DOM.addLoadEvent(initGraphs);
</script>
<div id="live_graphs"></div>
<%+footer%>

View file

@ -0,0 +1,66 @@
<%+header%>
<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]-->
<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/Legend.js"></script>
<%
local interfaces = { }
local ifnames = {}
local uci = luci.model.uci.cursor_state()
uci:foreach("network", "interface",
function(s)
if s.ifname ~= "lo" then
table.insert( interfaces,
"'" .. ( s.ifname or s['.name'] ) .. "'"
)
ifnames[s.ifname or s['.name']] = s['.name']
end
end
)
-%>
<script type="text/javascript">
function initGraphs() {
var rpc = new GraphRPC(
document.getElementById('live_graphs'),
'<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'net.deviceinfo',
2000,
// Data sources
[ "0", "<%:livestats_incoming%> (kiB/s)", "8", "<%:livestats_outgoing%> (kiB/s)" ],
// Graph layout options
{
shouldFill: false,
drawBackground: false,
strokeColor: null,
title: '<%:livestats_traffic%> %s',
strokeWidth: 2.5, height: 140,
padding: { left: 70, right: 10, top: 10, bottom: 20 },
instances: [ <%=table.concat(interfaces, ", ") %> ],
instanceNames: {
<%- for iface, network in pairs(ifnames) do %>
<%-="%q:%q," % {iface, network}-%>
<% end %>
"0": ""
}},
// transform function
function (cur, last) {
return (cur - last) / 2048;
},
'live_graphs'
);
}
MochiKit.DOM.addLoadEvent(initGraphs);
</script>
<div id="live_graphs"></div>
<%+footer%>

View file

@ -0,0 +1,43 @@
<%+header%>
<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]-->
<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script>
<script type="text/javascript" src="<%=resource%>/livestats/Legend.js"></script>
<script type="text/javascript">
function initGraphs() {
var rpc = new GraphRPC(
document.getElementById('live_graphs'),
'<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'wifi.getiwconfig',
1500,
// Data sources
[ function(data) {
return parseFloat(data["Signal level"])
- parseFloat(data["Noise level"]);
}, "S/N (dBm)"],
// Graph layout options
{ drawBackground: false, yAxis: [ 0, 50 ],
title: '<%:livestats_wifi%> %s',
padding: { left: 40, right: 10, top: 10, bottom: 20 },
instanceNames: {
<%- for k,v in pairs(luci.sys.wifi.getiwconfig()) do %>
<%-="%q:%q," % {k, "%s (%s)" % {k, luci.util.pcdata(tostring(v.ESSID))}}-%>
<% end %>
"0": ""
}},
null,
'live_graphs'
);
}
MochiKit.DOM.addLoadEvent(initGraphs);
</script>
<div id="live_graphs"></div>
<%+footer%>

View file

@ -0,0 +1,5 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-mmc_over_gpio ) && rm -f /etc/uci-defaults/luci-mmc_over_gpio
/etc/init.d/mmc_over_gpio enabled || /etc/init.d/mmc_over_gpio enable
}

View file

@ -0,0 +1,28 @@
--[[
LuCI mmc_over_gpio
(c) 2008 Yanira <forum-2008@email.de>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
module("luci.controller.mmc_over_gpio", package.seeall)
function index()
require("luci.i18n")
luci.i18n.loadc("mmc_over_gpio")
if not luci.fs.access("/etc/config/mmc_over_gpio") then
return
end
local page = entry({"admin", "system", "mmc_over_gpio"}, cbi("mmc_over_gpio"), luci.i18n.translate("mmc_over_gpio", "mmc_over_gpio"), 60)
page.i18n = "mmc_over_gpio"
page.dependent = true
end

View file

@ -0,0 +1,3 @@
mmc_over_gpio = 'MMC/SD Treiberkonfiguration'
mmc_over_gpio_desc = 'Konfiguriert die Einstellungen des MMC/SD Karten Treibers'
settings = 'Einstellungen'

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="mmc_over_gpio">MMC/SD Treiberkonfiguration</i18n:msg>
<i18n:msg xml:id="mmc_over_gpio_desc">Konfiguriert die Einstellungen des MMC/SD Karten Treibers</i18n:msg>
<i18n:msg xml:id="settings">Einstellungen</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,3 @@
mmc_over_gpio = 'MMC/SD driver configuration'
mmc_over_gpio_desc = 'MMC/SD driver configuration'
settings = 'Settings'

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="mmc_over_gpio">MMC/SD driver configuration</i18n:msg>
<i18n:msg xml:id="mmc_over_gpio_desc">MMC/SD driver configuration</i18n:msg>
<i18n:msg xml:id="settings">Settings</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,3 @@
mmc_over_gpio = 'Configuração do driver MMC/SD'
mmc_over_gpio_desc = 'Configuração do driver MMC/SD'
settings = 'Configurações'

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="mmc_over_gpio">Configuração do driver MMC/SD</i18n:msg>
<i18n:msg xml:id="mmc_over_gpio_desc">Configuração do driver MMC/SD</i18n:msg>
<i18n:msg xml:id="settings">Configurações</i18n:msg>
</i18n:msgs>

View file

@ -0,0 +1,41 @@
--[[
LuCI mmc_over_gpio
(c) 2008 Yanira <forum-2008@email.de>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
m = Map("mmc_over_gpio", translate("mmc_over_gpio"),
translate("mmc_over_gpio_desc"))
s = m:section(TypedSection, "mmc_over_gpio", translate("settings"))
s.addremove = true
s.anonymous = true
s:option(Flag, "enabled", translate("enabled", "Enable"))
s:option(Value, "name", translate("name"))
pin = s:option(Value, "DI_pin", translate("DI_pin"))
for i = 0,7 do pin:value(i) end
pin = s:option(Value, "DO_pin", translate("DO_pin"))
for i = 0,7 do pin:value(i) end
pin = s:option(Value, "CLK_pin", translate("CLK_pin"))
for i = 0,7 do pin:value(i) end
pin = s:option(Value, "CS_pin", translate("CS_pin"))
for i = 0,7 do pin:value(i) end
s:option(Value, "mode", translate("mode"))
return m

View file

@ -0,0 +1,7 @@
#!/bin/sh
uci batch <<-EOF
add ucitrack mmc_over_gpio
set ucitrack.@mmc_over_gpio[-1].init=mmc_over_gpio
commit ucitrack
EOF

View file

@ -17,7 +17,7 @@ module("luci.controller.ntpc", package.seeall)
function index()
require("luci.i18n")
luci.i18n.loadc("ntpc")
if not luci.fs.isfile("/etc/config/ntpclient") then
if not luci.fs.access("/etc/config/ntpclient") then
return
end
@ -26,7 +26,7 @@ function index()
page.dependent = true
local page = entry({"mini", "system", "ntpc"}, cbi("ntpc/ntpcmini"), luci.i18n.translate("ntpc"), 50)
local page = entry({"mini", "system", "ntpc"}, cbi("ntpc/ntpcmini", {autoapply=true}), luci.i18n.translate("ntpc"), 50)
page.i18n = "ntpc"
page.dependent = true
end

View file

@ -0,0 +1,9 @@
ntpc = 'Συγχρονισμός Ώρας'
ntpc_desc = 'Συγχρονίζει την ώρα του συστήματος'
ntpc_timeserver = 'Εξυπηρετητής Ώρας'
ntpc_interval = 'Περίοδος Ενημέρωσης (σε s)'
ntpc_count = 'Αριθμός Μετρήσεων Ώρας'
ntpc_count_desc = 'άδειο = άπειρος'
ntpc_drift = 'Ρύθμιση Ρολογιού'
ntpc_drift_freq = 'Συχνότητα Μετάθεσης'
ntpc_current = 'Τρέχουσα ώρα συστήματος'

View file

@ -0,0 +1,9 @@
ntpc = 'Sincronização de Horário'
ntpc_desc = 'Sincroniza a hora do sistema'
ntpc_timeserver = 'Servidor de Hora'
ntpc_interval = 'Intervalo de Atualização (em s)'
ntpc_count = 'Quantas vezes irá atualizar'
ntpc_count_desc = 'vazio = infinito'
ntpc_drift = 'Ajuste do Relógio'
ntpc_drift_freq = 'Frequência do Offset'
ntpc_current = 'Hora atual do sistema'

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">
<i18n:msg xml:id="ntpc">Sincronização de Horário</i18n:msg>
<i18n:msg xml:id="ntpc_desc">Sincroniza a hora do sistema</i18n:msg>
<i18n:msg xml:id="ntpc_timeserver">Servidor de Hora</i18n:msg>
<i18n:msg xml:id="ntpc_interval">Intervalo de Atualização (em s)</i18n:msg>
<i18n:msg xml:id="ntpc_count">Quantas vezes irá atualizar</i18n:msg>
<i18n:msg xml:id="ntpc_count_desc">vazio = infinito</i18n:msg>
<i18n:msg xml:id="ntpc_drift">Ajuste do Relógio</i18n:msg>
<i18n:msg xml:id="ntpc_drift_freq">Frequência do Offset</i18n:msg>
<i18n:msg xml:id="ntpc_current">Hora atual do sistema</i18n:msg>
</i18n:msgs>

View file

@ -19,13 +19,13 @@ s.anonymous = true
s:option(DummyValue, "_time", translate("ntpc_current")).value = os.date("%c")
s:option(Value, "interval", translate("ntpc_interval"))
s:option(Value, "count", translate("ntpc_count"), translate("ntpc_count_desc"))
s:option(Value, "interval", translate("ntpc_interval")).rmempty = true
s:option(Value, "count", translate("ntpc_count"), translate("ntpc_count_desc")).rmempty = true
s2 = m:section(TypedSection, "ntpdrift", translate("ntpc_drift"))
s2.anonymous = true
s2:option(Value, "freq", translate("ntpc_drift_freq"))
s2:option(Value, "freq", translate("ntpc_drift_freq")).rmempty = true
s3 = m:section(TypedSection, "ntpserver", translate("ntpc_timeserver"))

View file

@ -20,7 +20,7 @@ s.anonymous = true
s:option(DummyValue, "_time", translate("ntpc_current")).value = os.date("%c")
s:option(Value, "interval", translate("ntpc_interval"))
s:option(Value, "interval", translate("ntpc_interval")).rmempty = true
s3 = m:section(TypedSection, "ntpserver", translate("ntpc_timeserver"))

View file

@ -0,0 +1,53 @@
package ntpclient
config package
option title 'Time Synchronisation'
config section
option name 'ntpclient'
option package 'ntpclient'
option title 'General'
option unique true
option required true
config variable
option name 'interval'
option section 'ntpclient.ntpclient'
option title 'Update Interval (in s)'
option datatype uint
config variable
option name 'count'
option section 'ntpclient.ntpclient'
option title 'Count of Time Measurements'
option datatype uint
config section
option name 'ntpdrift'
option package 'ntpclient'
option title 'Clock Adjustment'
option unique true
config variable
option name 'freq'
option section 'ntpclient.ntpdrift'
option title 'Offset Frequency'
option datatype float
config section
option name 'ntpserver'
option package 'ntpclient'
option title 'Time Server'
config variable
option name 'hostname'
option section 'ntpclient.ntpserver'
option title 'Hostname'
option required true
option datatype host
config variable
option name 'port'
option section 'ntpclient.ntpserver'
option title 'Port'
option datatype port

View file

@ -0,0 +1,5 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-olsr ) && rm -f /etc/uci-defaults/luci-olsr
/etc/init.d/olsrd enabled || /etc/init.d/olsrd enable
}

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