- add localhost ports and .onion support
- disable IPv6 names resolution for onion domains by default
- enable LAN pool for clients
This will allow outside router access to mapped hosts, but only with DNS-rebind disabled in case DNSMasq used for names resolution.
- add AvoidDiskWrites option to config
Thanks @tsynik
This commit is to fix a problem that any NVRAM variables that are not in the list of "shared/defaults.c" will not be restored from configuration file including custom variables. So far it’s in all ARM builds. Here’s the detail. For example, the following are not restored:
qos_inuse
rrule1
rrule2
Traced back to nvram_arm/main.c in the source code:
line 216:
if (issyspara(p))
nvram_set(p, v);
What it does is to perform a variable name check, if it either contains "wl", "wan", "lan", or it's in the list of "shared/defaults.c", the variable will be restored using nvram set equivalent command. If not found, then they are ignored. The perfect solution will be putting every single variable names in file "shared/defaults.c". However this is a tremendous and complex work to accomplish and requires highly orchestrated team effort. Before it’s done, the restore process is always flawed by missing some variables, potentially causing unexpected behavior of the router. The less perfect solution would be just skip the check. It seems restoring a complete list of variables in the configuration file is more important. To do this, just comment it out like the following:
// if (issyspara(p))
nvram_set(p, v);
There’s a flaw in the NVRAM encryption process which, by 20% of the chance, will cause the saved configuration file become corrupted. This commit is to fix this problem. Here’s the detail. Whenever NVRAM variables contain any control characters which ASCII values are less than 32(0x20), data corruption may occur when saving configuration file, either by using tomato GUI menu Administration/Backup Configuration or command line: nvram save filename.cfg. This problem will cause restoration failure either in GUI menu Restore Configuration or command line: nvram restore filename.cfg, WITHOUT showing any error messages. When this error occurs, only the NVRAM variables before the corrupted data are restored while any data after it is lost. The most common scenario that control characters are used in nvram is Line Feed(0x0A) and Carriage Return(0x0D), usually appears in custom scripts in firewall, init, etc. The root cause lies in nvram_arm/main.c in the following code:
Line 68:
rand = get_rand() % 30;
Line 88:
if (buf[i] == 0x0)
buf[i] = 0xfd + get_rand() % 3;
else
buf[i] = 0xff - buf[i] + rand;
Line 68 generate a random value from 0 to 29 and store it in “rand”. Starting from line 88, it uses this value to convert the original NVRAM value to the encrypted one. When it meets 0, which is a separator for NVRAM variables, random value of 0xfd, 0xfe, 0xff are used to represent it in the encrypted format. However, when NVRAM contains control characters such as 0x0A, and the random value happens to be 0, 1, or 2 less, in this case, “rand” = 0x08, 0x09 or 0x0A, the encrypted value will be 0xfd, 0xfe, 0xff, which is the same as “0” in the encrypted format. This results in decryption failure because the encrypted value of 0xfd, 0xfe, 0xff not only means 0, it also can be 0x0A, 0x0D, etc. The original values are lost and the data corruption occurs. While the perfect solution could be a complete makeover of this algorithm, the less perfect one is to walk around it. So far, only control characters of 0x0A and 0x0D are found to be used in NVRAM variables. By excluding the random value(in “rand”) from 8 to 13, value 0x0A and 0x0D will never to encrypted to 0xfd, 0xfe and 0xff, thus avoid the problem. The updated code contains a do…while loop to check if “rand” is between 8 to 13, if true, get the random number again until it’s not. This fix only works when the NVRAM contains no other control characters. If it does, corruption still occurs. However, this is quite uncommon. The up side of this fix is: it doesn’t interfere with the decryption algorithm by only use less number of random values in the encryption process. No change has to be made in the restore process for things to work. It’s totally compatible with any existing good configuration file. The fix has been tested in my ARM router and so far so good.
minidlna: switch to -r option
Do rescan not full rebuild on startup, if Scan Media at Startup checked
(also move Tomato notice to the right place)
368b29d0a9
minidlna: cosmetics
Those functions already in begin/end_scan, so don't do it twice on
ReadyNAS
a57272a53f
Thx Nikk Gitanes!
https://github.com/RMerl/asuswrt-merlin
$ git log --oneline | grep samba36
samba36: CVE-2017-7494: rpc_server3: Refuse to open pipe names with / inside
samba36: add a few minor optimizations based on the BRT-AC828's GPL
samba36: re-generated PIDL files
samba36: Update OpenWRT patches to be in sync with the recent CVE patches
samba36: Apply numerous security patches backported to 3.6 by Openwrt
samba36: Update to 3.6.25, which includes security fixes
samba36: Updated Makefile to match recent GPL changes in 3.5.8
samba36: Try finding the account without mangling it in any way at first, otherwise mixed-caps names will never be found at all by Get_pwnam()
samba36: added missing talloc frame handling to smbpasswd; use a copy of the pasw when manipulating it
samba36: also clean auth/*.o objects
samba36: for consistency, move it at the start of the line
samba36: clean multi.o
samba36: Enable libiconv support
samba36: disable dnsupdate
samba36: Enabled by default for ARM devices as well
samba36: Enabled by default on MIPS devices, as this has no impact on performance (bottleneck being at the disk IO level)
samba36: Correct symlinks to multicall binary
samba36: Reverting this for now since we don't have a permanent etc directory. Revert "samba36: Added codepage data"
samba36: Added codepage data
samba36: Use multicall binary, saves 400 KB from trx image
samba36: Removed non-existing configure options
samba36: Renamed RTCONFIG_SAMBA_NEW to RTCONFIG_SAMBA_MODERN
samba36: Go for broke, and compile Samba 3.6 with highest level of optimization to reduce the performance impact of the upgrade. Size difference isn't as bad as expected.
samba36: Replicate Samba 3.5.8's Makefile settings instead of OpenWRT's
samba36: Parallel build support; still compile Samba 3.5.8 since we are unable to port the AiCloud proprietary changes from 3.5.8 to 3.6.24. AiCloud should only use the generated libsmbclient.
samba36: set the correct protocol for SMB1 mode (default)
samba36: Add option to control SMB2 support - disabled by default as it seems to reduce performance rather than improve it
samba36: Implement option to enable building with Samba 3.6.xx; updated default smb.conf
samba36: Disable libtevent
samba36: Updated gitignore
samba36: Reverted smbpasswd syntax to the old one, to maintain full compatibility even with closed source code that might use it
samba36: Add OpenWRT's smbpasswd
samba36: Added root Makefile (from Asus's code)
samba36: Patched getiffadr support (from Asus's 3.5.8 code)
samba36: LibRPC default print (OpenWRT)
samba36: Debug level check (OpenWRT)
samba36: Remove error strings (OpenWRT)
samba36: Assert debug level (OpenWRT)
samba36: Remove lsa support (OpenWRT)
samba36: Remove srvsvc support (OpenWRT)
samba36: Remove registry backend (OpenWRT)
samba36: Remove samr (OpenWRT)
samba36: Remove domain logon (OpenWRT)
samba36: Remove DFS API (OpenWRT)
samba36: Remove winreg support (OpenWRT)
samba36: Remove services support (OpenWRT)
samba36: Remove AD support (OpenWRT)
samba36: Remove printer support (OpenWRT)
samba36: Add missing ifdef (OpenWRT)
samba36: configure patch (OpenWRT)
samba36: initial commit
* Samba3/Makefile: modifications.
* /rc/services.c: smb.conf
- added "passdb backend = smbpasswd", that will take care of the login issue in Samba 3.6
- enabled SMB2 protocol. Both SMB1 and SMB2 are enabled now, client negotiates and selects the fastest protocol.
- added dos/unix/display charsets
* Samba: replace broken getifaddrs() function with a working one
This commit adds the missing code, but also better integrates it into Samba's replacement
system, based on theMIROn's implementation for 3.5.8. This fixes Samba failing to resolve interface names.
114e0c6cf9 (diff-741153c4251c17b92ec54b7dc04baa71)
Thx @RMerlin, @Sean B. and @Edrikk