mirror of
https://github.com/coolsnowwolf/luci
synced 2025-01-05 09:26:42 +08:00
first commit
This commit is contained in:
parent
4dcb300802
commit
fc7e088a3b
5
.buildpath
Normal file
5
.buildpath
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<buildpath>
|
||||
<buildpathentry kind="src" path="src"/>
|
||||
<buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
|
||||
</buildpath>
|
221
.cproject
Normal file
221
.cproject
Normal 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>
|
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
dist/
|
||||
/host
|
||||
*.o
|
||||
*.so
|
||||
*.swp
|
||||
*.po~
|
||||
/docs
|
||||
modules/luci-base/src/po2lmo
|
78
.project
Normal file
78
.project
Normal file
@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>luci</name>
|
||||
<comment></comment>
|
||||
<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>
|
62
CONTRIBUTING.md
Normal file
62
CONTRIBUTING.md
Normal file
@ -0,0 +1,62 @@
|
||||
# Contributing Guidelines
|
||||
|
||||
## Patches and Pull requests:
|
||||
|
||||
If you want to contribute a change to LuCI, please either send a patch using git send-email
|
||||
or open a "pull request" against the openwrt/luci repository.
|
||||
|
||||
Regardless of whether you send a patch or open a pull request, please try to follow these rules:
|
||||
|
||||
* Have a useful subject prefixed with the component name
|
||||
(E.g.: "luci-mod-admin-full: fix wifi channel selection on multiple STA networks")
|
||||
* Shortly explain the changes made and - if applicable - the reasoning behind them
|
||||
* Commit message of each commit should include a Signed-off-by line
|
||||
(See <https://dev.openwrt.org/wiki/SubmittingPatches#a10.Signyourwork>)
|
||||
|
||||
In case you like to send patches by mail, please use the [LuCI mailinglist](https://lists.subsignal.org/mailman/listinfo/luci)
|
||||
or the [OpenWrt Development List](https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel).
|
||||
|
||||
If you send via the OpenWrt list, include a "[luci]" tag in your subject line.
|
||||
For general information on patch submission, follow the [OpenWrt patch submission guideline](https://dev.openwrt.org/wiki/SubmittingPatches).
|
||||
|
||||
## Advice on pull requests:
|
||||
|
||||
Pull requests are the easiest way to contribute changes to git repos at Github. They are the preferred contribution method, as they offer a nice way for commenting and amending the proposed changes.
|
||||
|
||||
* You need a local "fork" of the Github repo.
|
||||
* Use a "feature branch" for your changes. That separates the changes in the pull request from your other changes and makes it easy to edit/amend commits in the pull request. Workflow using "feature_x" as the example:
|
||||
- Update your local git fork to the tip (of the master, usually)
|
||||
- Create the feature branch with `git checkout -b feature_x`
|
||||
- Edit changes and commit them locally
|
||||
- Push them to your Github fork by `git push -u origin feature_x`. That creates the "feature_x" branch at your Github fork and sets it as the remote of this branch
|
||||
- When you now visit Github, you should see a proposal to create a pull request
|
||||
|
||||
* If you later need to add new commits to the pull request, you can simply commit the changes to the local branch and then use `git push` to automatically update the pull request.
|
||||
|
||||
* If you need to change something in the existing pull request (e.g. to add a missing signed-off-by line to the commit message), you can use `git push -f` to overwrite the original commits. That is easy and safe when using a feature branch. Example workflow:
|
||||
- Checkout the feature branch by `git checkout feature_x`
|
||||
- Edit changes and commit them locally. If you are just updating the commit message in the last commit, you can use `git commit --amend` to do that
|
||||
- If you added several new commits or made other changes that require cleaning up, you can use `git rebase -i HEAD~X` (X = number of commits to edit) to possibly squash some commits
|
||||
- Push the changed commits to Github with `git push -f` to overwrite the original commits in the "feature_x" branch with the new ones. The pull request gets automatically updated
|
||||
|
||||
## If you have commit access:
|
||||
|
||||
* Do NOT use git push --force.
|
||||
* Use Pull Requests if you are unsure and to suggest changes to other developers.
|
||||
|
||||
## Gaining commit access:
|
||||
|
||||
* Commit access will be granted to responsible contributors who have made
|
||||
useful pull requests and / or feedback or patches to this repository or
|
||||
OpenWrt in general. Please include your request for commit access in your
|
||||
next pull request or ticket.
|
||||
|
||||
## Release Branches:
|
||||
|
||||
* Branches named "for-XX.YY" or "luci-X.Y" (e.g. "for-15.05") are release branches.
|
||||
* These branches are built with the respective OpenWrt release and are created
|
||||
during the release stabilisation phase.
|
||||
* Please ONLY cherry-pick or commit security and bug-fixes to these branches.
|
||||
* Do NOT add new packages and do NOT do major upgrades of packages here.
|
||||
* If you are unsure if your change is suitable, please use a pull request.
|
||||
|
875
LICENSE
875
LICENSE
@ -1,674 +1,201 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
9
NOTICE
Normal file
9
NOTICE
Normal file
@ -0,0 +1,9 @@
|
||||
LuCI - Lua Configuration Interface
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
Licensed under the Apache License, Version 2.0.
|
||||
|
||||
Contains code from:
|
||||
coxpcall - Copyright 2005 - Kepler Project (www.keplerproject.org)
|
||||
ltn12/luasocket - Copyright 2004-2007 Diego Nehab
|
||||
axTLS - Copyright 2008 Cameron Rich
|
34
README.md
Normal file
34
README.md
Normal file
@ -0,0 +1,34 @@
|
||||
# OpenWrt luci feed
|
||||
|
||||
## Description
|
||||
|
||||
This is the OpenWrt "luci"-feed containing LuCI - OpenWrt Configuration Interface.
|
||||
|
||||
## Usage
|
||||
|
||||
This feed is enabled by default. Your feeds.conf.default (or feeds.conf) should contain a line like:
|
||||
```
|
||||
src-git luci https://github.com/openwrt/luci.git
|
||||
```
|
||||
|
||||
To install all its package definitions, run:
|
||||
```
|
||||
./scripts/feeds update luci
|
||||
./scripts/feeds install -a -p luci
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
You can browse the generated API documentation [directly on Github](http://htmlpreview.github.io/?http://raw.githubusercontent.com/openwrt/luci/master/documentation/api/index.html).
|
||||
|
||||
## Development
|
||||
|
||||
Documentation for developing and extending LuCI can be found [in the Wiki](https://github.com/openwrt/luci/wiki)
|
||||
|
||||
## License
|
||||
|
||||
See [LICENSE](LICENSE) file.
|
||||
|
||||
## Package Guidelines
|
||||
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) file.
|
26
THANKYOU
Normal file
26
THANKYOU
Normal file
@ -0,0 +1,26 @@
|
||||
I'd like to thank the following people for contributing to this software:
|
||||
|
||||
* Anton Popov
|
||||
- for rewriting the openwrt.org theme
|
||||
|
||||
* 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:
|
||||
|
||||
* Mono (Freifunk Halle)
|
||||
- for donating a Linksys WRT54GL for development purposes
|
||||
|
||||
* tetzlav (Freifunk Leipzig)
|
||||
- for donating several boards for testing and his feedback
|
||||
|
||||
* Mickey (Freifunk Hannover)
|
||||
- for his feedback and fixes for the OpenWrt builds
|
||||
|
12
applications/luci-app-adblock/Makefile
Normal file
12
applications/luci-app-adblock/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
# Copyright 2017 Dirk Brenken (dev@brenken.org)
|
||||
# This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for Adblock
|
||||
LUCI_DEPENDS:=+adblock +luci-lib-jsonc
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
include ../../luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
53
applications/luci-app-adblock/luasrc/controller/adblock.lua
Normal file
53
applications/luci-app-adblock/luasrc/controller/adblock.lua
Normal file
@ -0,0 +1,53 @@
|
||||
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
|
||||
-- This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
module("luci.controller.adblock", package.seeall)
|
||||
|
||||
local util = require("luci.util")
|
||||
local templ = require("luci.template")
|
||||
local i18n = require("luci.i18n")
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/adblock") then
|
||||
return
|
||||
end
|
||||
entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
|
||||
entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
|
||||
entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
|
||||
entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
|
||||
entry({"admin", "services", "adblock", "advanced", "blacklist"}, form("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
|
||||
entry({"admin", "services", "adblock", "advanced", "whitelist"}, form("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
|
||||
entry({"admin", "services", "adblock", "advanced", "configuration"}, form("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
|
||||
entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true
|
||||
entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
|
||||
end
|
||||
|
||||
function logread()
|
||||
local logfile
|
||||
|
||||
if nixio.fs.access("/var/log/messages") then
|
||||
logfile = util.trim(util.exec("grep -F 'adblock-' /var/log/messages"))
|
||||
else
|
||||
logfile = util.trim(util.exec("logread -e 'adblock-'"))
|
||||
end
|
||||
templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
|
||||
end
|
||||
|
||||
function queryData(domain)
|
||||
if domain then
|
||||
luci.http.prepare_content("text/plain")
|
||||
local cmd = "/etc/init.d/adblock query %s 2>&1"
|
||||
local util = io.popen(cmd % util.shellquote(domain))
|
||||
if util then
|
||||
while true do
|
||||
local line = util:read("*l")
|
||||
if not line then
|
||||
break
|
||||
end
|
||||
luci.http.write(line)
|
||||
luci.http.write("\n")
|
||||
end
|
||||
util:close()
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,52 @@
|
||||
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
|
||||
-- This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
local fs = require("nixio.fs")
|
||||
local util = require("luci.util")
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local adbinput = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
|
||||
|
||||
if not nixio.fs.access(adbinput) then
|
||||
m = SimpleForm("error", nil,
|
||||
translate("Input file not found, please check your configuration."))
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
return m
|
||||
end
|
||||
|
||||
if nixio.fs.stat(adbinput).size > 524288 then
|
||||
m = SimpleForm("error", nil,
|
||||
translate("The file size is too large for online editing in LuCI (> 512 KB). ")
|
||||
.. translate("Please edit this file directly in a terminal session."))
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
return m
|
||||
end
|
||||
|
||||
m = SimpleForm("input", nil)
|
||||
m:append(Template("adblock/config_css"))
|
||||
m.submit = translate("Save")
|
||||
m.reset = false
|
||||
|
||||
s = m:section(SimpleSection, nil,
|
||||
translatef("This form allows you to modify the content of the adblock blacklist (%s).<br />", adbinput)
|
||||
.. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
|
||||
|
||||
f = s:option(TextValue, "data")
|
||||
f.datatype = "string"
|
||||
f.rows = 20
|
||||
f.rmempty = true
|
||||
|
||||
function f.cfgvalue()
|
||||
return nixio.fs.readfile(adbinput) or ""
|
||||
end
|
||||
|
||||
function f.write(self, section, data)
|
||||
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
|
||||
end
|
||||
|
||||
function s.handle(self, state, data)
|
||||
return true
|
||||
end
|
||||
|
||||
return m
|
@ -0,0 +1,39 @@
|
||||
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
|
||||
-- This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
local fs = require("nixio.fs")
|
||||
local util = require("luci.util")
|
||||
local adbinput = "/etc/config/adblock"
|
||||
|
||||
if not nixio.fs.access(adbinput) then
|
||||
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
return m
|
||||
end
|
||||
|
||||
m = SimpleForm("input", nil)
|
||||
m:append(Template("adblock/config_css"))
|
||||
m.submit = translate("Save")
|
||||
m.reset = false
|
||||
|
||||
s = m:section(SimpleSection, nil,
|
||||
translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
|
||||
|
||||
f = s:option(TextValue, "data")
|
||||
f.rows = 20
|
||||
f.rmempty = true
|
||||
|
||||
function f.cfgvalue()
|
||||
return nixio.fs.readfile(adbinput) or ""
|
||||
end
|
||||
|
||||
function f.write(self, section, data)
|
||||
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
|
||||
end
|
||||
|
||||
function s.handle(self, state, data)
|
||||
return true
|
||||
end
|
||||
|
||||
return m
|
@ -0,0 +1,275 @@
|
||||
-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
|
||||
-- This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
local fs = require("nixio.fs")
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local sys = require("luci.sys")
|
||||
local util = require("luci.util")
|
||||
local dump = util.ubus("network.interface", "dump", {})
|
||||
local json = require("luci.jsonc")
|
||||
local adbinput = uci:get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
|
||||
|
||||
m = Map("adblock", translate("Adblock"),
|
||||
translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
|
||||
.. translatef("For further information "
|
||||
.. "<a href=\"%s\" target=\"_blank\">"
|
||||
.. "check the online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
|
||||
m.apply_on_parse = true
|
||||
|
||||
function m.on_apply(self)
|
||||
luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
|
||||
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
|
||||
end
|
||||
|
||||
-- Main adblock options
|
||||
|
||||
s = m:section(NamedSection, "global", "adblock")
|
||||
|
||||
local parse = json.parse(fs.readfile(adbinput) or "")
|
||||
if parse then
|
||||
status = parse.data.adblock_status
|
||||
version = parse.data.adblock_version
|
||||
domains = parse.data.overall_domains
|
||||
fetch = parse.data.fetch_utility
|
||||
backend = parse.data.dns_backend
|
||||
rundate = parse.data.last_rundate
|
||||
end
|
||||
|
||||
o1 = s:option(Flag, "adb_enabled", translate("Enable Adblock"))
|
||||
o1.default = o1.disabled
|
||||
o1.rmempty = false
|
||||
|
||||
btn = s:option(Button, "", translate("Suspend / Resume Adblock"))
|
||||
if parse and status == "enabled" then
|
||||
btn.inputtitle = translate("Suspend")
|
||||
btn.inputstyle = "reset"
|
||||
btn.disabled = false
|
||||
function btn.write()
|
||||
luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
|
||||
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
|
||||
end
|
||||
elseif parse and status == "paused" then
|
||||
btn.inputtitle = translate("Resume")
|
||||
btn.inputstyle = "apply"
|
||||
btn.disabled = false
|
||||
function btn.write()
|
||||
luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
|
||||
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
|
||||
end
|
||||
else
|
||||
btn.inputtitle = translate("-------")
|
||||
btn.inputstyle = "button"
|
||||
btn.disabled = true
|
||||
end
|
||||
|
||||
o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
|
||||
translate("List of supported DNS backends with their default list export directory.<br />")
|
||||
.. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below."))
|
||||
o2:value("dnsmasq", "dnsmasq (/tmp)")
|
||||
o2:value("unbound", "unbound (/var/lib/unbound)")
|
||||
o2:value("named", "named (/var/lib/bind)")
|
||||
o2:value("kresd", "kresd (/etc/kresd)")
|
||||
o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)")
|
||||
o2.default = "dnsmasq (/tmp)"
|
||||
o2.rmempty = false
|
||||
|
||||
o3 = s:option(ListValue, "adb_fetchutil", translate("Download Utility"),
|
||||
translate("List of supported and fully pre-configured download utilities."))
|
||||
o3:value("uclient-fetch")
|
||||
o3:value("wget")
|
||||
o3:value("curl")
|
||||
o3:value("aria2c")
|
||||
o3:value("wget-nossl", "wget-nossl (noSSL)")
|
||||
o3:value("busybox", "wget-busybox (noSSL)")
|
||||
o3.default = "uclient-fetch"
|
||||
o3.rmempty = false
|
||||
|
||||
o4 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
|
||||
translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface.<br />")
|
||||
.. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface."))
|
||||
o4:value("none")
|
||||
o4:value("timed")
|
||||
if dump then
|
||||
local i, v
|
||||
for i, v in ipairs(dump.interface) do
|
||||
if v.interface ~= "loopback" then
|
||||
o4:value(v.interface)
|
||||
end
|
||||
end
|
||||
end
|
||||
o4.rmempty = false
|
||||
|
||||
-- Runtime information
|
||||
|
||||
ds = m:section(NamedSection, "global", "adblock", translate("Runtime Information"))
|
||||
|
||||
dv1 = ds:option(DummyValue, "", translate("Adblock Status"))
|
||||
dv1.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv1.value = translate("n/a")
|
||||
else
|
||||
if status == "error" then
|
||||
dv1.value = translate("error")
|
||||
elseif status == "disabled" then
|
||||
dv1.value = translate("disabled")
|
||||
elseif status == "paused" then
|
||||
dv1.value = translate("paused")
|
||||
elseif status == "running" then
|
||||
dv1.value = translate("running")
|
||||
else
|
||||
dv1.value = translate("enabled")
|
||||
end
|
||||
end
|
||||
|
||||
dv2 = ds:option(DummyValue, "", translate("Adblock Version"))
|
||||
dv2.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv2.value = translate("n/a")
|
||||
else
|
||||
dv2.value = version
|
||||
end
|
||||
|
||||
dv3 = ds:option(DummyValue, "", translate("Download Utility (SSL Library)"),
|
||||
translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or 'built-in'."))
|
||||
dv3.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv3.value = translate("n/a")
|
||||
else
|
||||
dv3.value = fetch
|
||||
end
|
||||
|
||||
dv4 = ds:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
|
||||
dv4.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv4.value = translate("n/a")
|
||||
else
|
||||
dv4.value = backend
|
||||
end
|
||||
|
||||
dv5 = ds:option(DummyValue, "", translate("Overall Domains"))
|
||||
dv5.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv5.value = translate("n/a")
|
||||
else
|
||||
dv5.value = domains
|
||||
end
|
||||
|
||||
dv6 = ds:option(DummyValue, "", translate("Last Run"))
|
||||
dv6.template = "adblock/runtime"
|
||||
if parse == nil then
|
||||
dv6.value = translate("n/a")
|
||||
else
|
||||
dv6.value = rundate
|
||||
end
|
||||
|
||||
-- Blocklist table
|
||||
|
||||
bl = m:section(TypedSection, "source", translate("Blocklist Sources"),
|
||||
translate("<b>Caution:</b> To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please only select a few of them!"))
|
||||
bl.template = "adblock/blocklist"
|
||||
|
||||
name = bl:option(Flag, "enabled", translate("Enabled"))
|
||||
name.rmempty = false
|
||||
|
||||
ssl = bl:option(DummyValue, "adb_src", translate("SSL req."))
|
||||
function ssl.cfgvalue(self, section)
|
||||
local source = self.map:get(section, "adb_src")
|
||||
if source and source:match("https://") then
|
||||
return translate("Yes")
|
||||
else
|
||||
return translate("No")
|
||||
end
|
||||
end
|
||||
|
||||
des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
|
||||
|
||||
cat = bl:option(DynamicList, "adb_src_cat", translate("Categories"))
|
||||
cat.datatype = "uciname"
|
||||
cat.optional = true
|
||||
|
||||
-- Extra options
|
||||
|
||||
e = m:section(NamedSection, "extra", "adblock", translate("Extra Options"),
|
||||
translate("Options for further tweaking in case the defaults are not suitable for you."))
|
||||
|
||||
e1 = e:option(Flag, "adb_debug", translate("Verbose Debug Logging"),
|
||||
translate("Enable verbose debug logging in case of any processing error."))
|
||||
e1.default = e1.disabled
|
||||
e1.rmempty = false
|
||||
|
||||
e2 = e:option(Flag, "adb_forcedns", translate("Force Local DNS"),
|
||||
translate("Redirect all DNS queries from 'lan' zone to the local resolver."))
|
||||
e2.default = e2.disabled
|
||||
e2.rmempty = false
|
||||
|
||||
e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
|
||||
translate("Enable memory intense overall sort / duplicate removal on low memory devices (< 64 MB free RAM)"))
|
||||
e3.default = e3.disabled
|
||||
e3.rmempty = false
|
||||
|
||||
e4 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
|
||||
translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode."))
|
||||
e4.default = e4.disabled
|
||||
e4.rmempty = false
|
||||
|
||||
e5 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
|
||||
translate("Target directory for adblock backups. Please use only non-volatile disks, e.g. an external usb stick."))
|
||||
e5:depends("adb_backup", 1)
|
||||
e5.datatype = "directory"
|
||||
e5.default = "/mnt"
|
||||
e5.rmempty = true
|
||||
|
||||
e6 = e:option(Flag, "adb_backup_mode", translate("Backup Mode"),
|
||||
translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
|
||||
e6:depends("adb_backup", 1)
|
||||
e6.default = e6.disabled
|
||||
e6.rmempty = true
|
||||
|
||||
e7 = e:option(Value, "adb_maxqueue", translate("Max. Download Queue"),
|
||||
translate("Size of the download queue to handle downloads & list processing in parallel (default '4').<br />")
|
||||
.. translate("For further performance improvements you can raise this value, e.g. '8' or '16' should be safe."))
|
||||
e7.default = 4
|
||||
e7.datatype = "range(1,32)"
|
||||
e7.rmempty = false
|
||||
|
||||
e8 = e:option(Flag, "adb_jail", translate("'Jail' Blocklist Creation"),
|
||||
translate("Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file.<br />")
|
||||
.. translate("You can use this restrictive blocklist manually e.g. for guest wifi or kidsafe configurations."))
|
||||
e8.default = e8.disabled
|
||||
e8.rmempty = true
|
||||
|
||||
e9 = e:option(Flag, "adb_dnsflush", translate("Flush DNS Cache"),
|
||||
translate("Flush DNS Cache after adblock processing."))
|
||||
e9.default = e9.disabled
|
||||
e9.rmempty = true
|
||||
|
||||
e10 = e:option(Flag, "adb_notify", translate("Email Notification"),
|
||||
translate("Send notification emails in case of a processing error or if domain count is ≤ 0.<br />")
|
||||
.. translate("Please note: this needs additional 'msmtp' package installation and setup."))
|
||||
e10.default = e10.disabled
|
||||
e10.rmempty = true
|
||||
|
||||
e11 = e:option(Value, "adb_notifycnt", translate("Email Notification Count"),
|
||||
translate("Raise the minimum email notification count, to get emails if the overall count is less or equal to the given limit (default 0),<br />")
|
||||
.. translate("e.g. to receive an email notification with every adblock update set this value to 150000."))
|
||||
e11.default = 0
|
||||
e11.datatype = "min(0)"
|
||||
e11.optional = true
|
||||
|
||||
e12 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
|
||||
translate("Target directory for the generated blocklist 'adb_list.overall'."))
|
||||
e12.datatype = "directory"
|
||||
e12.optional = true
|
||||
|
||||
e13 = e:option(Value, "adb_whitelist", translate("Whitelist File"),
|
||||
translate("Full path to the whitelist file."))
|
||||
e13.datatype = "file"
|
||||
e13.default = "/etc/adblock/adblock.whitelist"
|
||||
e13.optional = true
|
||||
|
||||
e14 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
|
||||
translate("Additional trigger delay in seconds before adblock processing begins."))
|
||||
e14.datatype = "range(1,60)"
|
||||
e14.optional = true
|
||||
|
||||
return m
|
@ -0,0 +1,51 @@
|
||||
-- Copyright 2017 Dirk Brenken (dev@brenken.org)
|
||||
-- This is free software, licensed under the Apache License, Version 2.0
|
||||
|
||||
local fs = require("nixio.fs")
|
||||
local util = require("luci.util")
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local adbinput = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
|
||||
|
||||
if not nixio.fs.access(adbinput) then
|
||||
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
return m
|
||||
end
|
||||
|
||||
if nixio.fs.stat(adbinput).size > 524288 then
|
||||
m = SimpleForm("error", nil,
|
||||
translate("The file size is too large for online editing in LuCI (> 512 KB). ")
|
||||
.. translate("Please edit this file directly in a terminal session."))
|
||||
m.reset = false
|
||||
m.submit = false
|
||||
return m
|
||||
end
|
||||
|
||||
m = SimpleForm("input", nil)
|
||||
m:append(Template("adblock/config_css"))
|
||||
m.submit = translate("Save")
|
||||
m.reset = false
|
||||
|
||||
s = m:section(SimpleSection, nil,
|
||||
translatef("This form allows you to modify the content of the adblock whitelist (%s).<br />", adbinput)
|
||||
.. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
|
||||
|
||||
f = s:option(TextValue, "data")
|
||||
f.datatype = "string"
|
||||
f.rows = 20
|
||||
f.rmempty = true
|
||||
|
||||
function f.cfgvalue()
|
||||
return nixio.fs.readfile(adbinput) or ""
|
||||
end
|
||||
|
||||
function f.write(self, section, data)
|
||||
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
|
||||
end
|
||||
|
||||
function s.handle(self, state, data)
|
||||
return true
|
||||
end
|
||||
|
||||
return m
|
@ -0,0 +1,87 @@
|
||||
<%#
|
||||
Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
|
||||
This is free software, licensed under the Apache License, Version 2.0
|
||||
-%>
|
||||
|
||||
<%-
|
||||
local rowcnt = 1
|
||||
function rowstyle()
|
||||
rowcnt = rowcnt + 1
|
||||
return (rowcnt % 2) + 1
|
||||
end
|
||||
|
||||
function width(o)
|
||||
if o.width then
|
||||
if type(o.width) == 'number' then
|
||||
return ' style="width:%dpx"' % o.width
|
||||
end
|
||||
return ' style="width:%s"' % o.width
|
||||
end
|
||||
return ''
|
||||
end
|
||||
-%>
|
||||
|
||||
<style type="text/css">
|
||||
table.cbi-section-table th,
|
||||
table.cbi-section-table td,
|
||||
.cbi-section-table-cell,
|
||||
.cbi-section-table-row,
|
||||
.cbi-input-text
|
||||
{
|
||||
text-align:left;
|
||||
vertical-align:top;
|
||||
margin-right:auto;
|
||||
margin-left:0px;
|
||||
}
|
||||
.cbi-input-text
|
||||
{
|
||||
outline:none;
|
||||
box-shadow:none;
|
||||
background:transparent;
|
||||
padding-left:2px;
|
||||
line-height:25px;
|
||||
height:25px;
|
||||
width:10em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
|
||||
<% if self.title then -%>
|
||||
<legend><%=self.title%></legend>
|
||||
<%- end %>
|
||||
<div class="cbi-section-descr"><%=self.description%></div>
|
||||
<div class="cbi-section-node">
|
||||
<table class="cbi-section-table">
|
||||
<tr class="cbi-section-table-titles">
|
||||
<%- if self.sectionhead then -%>
|
||||
<th class="cbi-section-table-cell"><%=self.sectionhead%></th>
|
||||
<%- else -%>
|
||||
<th> </th>
|
||||
<%- end -%>
|
||||
<%- for i, k in pairs(self.children) do -%>
|
||||
<th class="cbi-section-table-cell"<%=width(k)%>>
|
||||
<%-=k.title-%>
|
||||
</th>
|
||||
<%- end -%>
|
||||
</tr>
|
||||
<%- local isempty = true
|
||||
for i, k in ipairs(self:cfgsections()) do
|
||||
section = k
|
||||
isempty = false
|
||||
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
|
||||
-%>
|
||||
<tr class="cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>">
|
||||
<th><%=k%></th>
|
||||
<%-
|
||||
for k, node in ipairs(self.children) do
|
||||
node:render(section, scope or {})
|
||||
end
|
||||
if not scope.cbid:match("adb_src_cat") then
|
||||
-%>
|
||||
<td class="cbi-value-field"> </td>
|
||||
<%- end -%>
|
||||
</tr>
|
||||
<%- end -%>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
@ -0,0 +1,13 @@
|
||||
<style type="text/css">
|
||||
textarea
|
||||
{
|
||||
border: 1px solid #cccccc;
|
||||
padding: 5px;
|
||||
font-size: 12px;
|
||||
font-family: monospace;
|
||||
resize: none;
|
||||
white-space: pre;
|
||||
overflow-wrap: normal;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,20 @@
|
||||
<%#
|
||||
Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
|
||||
This is free software, licensed under the Apache License, Version 2.0
|
||||
-%>
|
||||
|
||||
<%+header%>
|
||||
|
||||
<div class="cbi-map">
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for adblock related messages only.%></div>
|
||||
<textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var textarea = document.getElementById('logread_id');
|
||||
textarea.scrollTop = textarea.scrollHeight;
|
||||
</script>
|
||||
|
||||
<%+footer%>
|
65
applications/luci-app-adblock/luasrc/view/adblock/query.htm
Normal file
65
applications/luci-app-adblock/luasrc/view/adblock/query.htm
Normal file
@ -0,0 +1,65 @@
|
||||
<%#
|
||||
Copyright 2017 Dirk Brenken (dev@brenken.org)
|
||||
This is free software, licensed under the Apache License, Version 2.0
|
||||
-%>
|
||||
|
||||
<%+header%>
|
||||
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var stxhr = new XHR();
|
||||
|
||||
function update_status(data)
|
||||
{
|
||||
var domain = data.value;
|
||||
var input = document.getElementById('query_input');
|
||||
var output = document.getElementById('query_output');
|
||||
|
||||
if (input && output)
|
||||
{
|
||||
output.innerHTML =
|
||||
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
|
||||
'<%:Waiting for command to complete...%>'
|
||||
;
|
||||
input.parentNode.style.display = 'block';
|
||||
input.style.display = 'inline';
|
||||
stxhr.post('<%=luci.dispatcher.build_url('admin/services/adblock/advanced/result/')%>' + domain, { token: '<%=token%>' },
|
||||
function(x)
|
||||
{
|
||||
if (x.responseText)
|
||||
{
|
||||
input.style.display = 'none';
|
||||
output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
|
||||
}
|
||||
else
|
||||
{
|
||||
input.style.display = 'none';
|
||||
output.innerHTML = '<span class="error"><%:Invalid domain specified!%></span>';
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<form method="post" action="<%=REQUEST_URI%>">
|
||||
<div class="cbi-map">
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
|
||||
<div style="width:33%; float:left;">
|
||||
<input style="margin: 5px 0" type="text" value="google.com" name="input" />
|
||||
<input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
|
||||
</div>
|
||||
<br style="clear:both" />
|
||||
<br />
|
||||
</fieldset>
|
||||
</div>
|
||||
<fieldset class="cbi-section" style="display:none">
|
||||
<legend id="query_input"><%:Collecting data...%></legend>
|
||||
<span id="query_output"></span>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<%+footer%>
|
@ -0,0 +1,10 @@
|
||||
<%#
|
||||
Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
|
||||
This is free software, licensed under the Apache License, Version 2.0
|
||||
-%>
|
||||
|
||||
<%+cbi/valueheader%>
|
||||
|
||||
<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="outline:none;border:none;box-shadow:none;background:transparent;color:#0069d6;font-weight:bold;line-height:30px;height:30px;width:20em;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
|
||||
|
||||
<%+cbi/valuefooter%>
|
462
applications/luci-app-adblock/po/it/adblock.po
Normal file
462
applications/luci-app-adblock/po/it/adblock.po
Normal file
@ -0,0 +1,462 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 17/09/2017\n"
|
||||
"Last-Translator: Bubu83 <bubu83@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"Language: it\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Registro Adblock"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Status Adblock"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Versione Adblock"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii."
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "Avanzato"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "Fonti lista di blocco disponibili."
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "Directory del Backup"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "Fonti lista di Blocco"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"Scegli 'none' per disabilitare l'avvio automatico, 'timed' per usare un "
|
||||
"classico timeout (default 30 sec.) o seleziona un'altra interfaccia di avvio."
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Raccogliendo dati..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
"Configurazione del pacchetto adblock per bloccare domini pubblicità/abuso "
|
||||
"usando i DNS."
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "Directory DNS"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
"Non aggiornare automaticamente le liste durante l'avvio, usa invece i backup "
|
||||
"della lista di blocco."
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "Modifica Lista Nera"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "Modifica Configurazione"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "Modifica Lista Bianca"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "Attiva Adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "Attiva Backup Lista di Blocco"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr ""
|
||||
"Abilita il registro dettagliato in caso di qualsiasi errore di processo."
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Abilitato"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "Opzioni Extra"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "Forza DNS Locale"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "Forza Ordinamento Globale"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "File di input non trovato, per favore controlla la tua configurazione."
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "Dominio invalido specificato!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "Ultimo Avvio"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili "
|
||||
"nella sezione 'Avanzato'.<br />"
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
"Lista dei backend DNS supportati con la loro directory di default di esporto "
|
||||
"della lista.<br />"
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "Caricando"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr ""
|
||||
"Opzioni per ulteriori modifiche in caso che quelle di default non ti sono "
|
||||
"adatte."
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "Riassunto"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
"Per favore aggiungi solo un dominio per linea. I commenti introdotti con '#' "
|
||||
"sono consentiti - indirizzi ip , jolly e regex non lo sono."
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr ""
|
||||
"Per favore modifica questo file direttamente in una sessione al terminale."
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr "Interrogazione"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "Interrogazione domini"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
"Reindirizza tutte le richieste DNS dalla zona 'lan' al risolvitore locale."
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "Riprendi"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "Informazione di Runtime"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "Ric. SSL"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Salva"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in "
|
||||
"parallel (default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "Innesco d'Avvio"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "Sospendi / Riprendi Adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr "Directory per la lista di blocco generata 'adb_list.overall'."
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr ""
|
||||
"La grandezza del file è troppo grande per modificarla online in LuCI (> "
|
||||
"512 KB)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Questo form ti consente di modificare il contenuto della lista nera di "
|
||||
"adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Questo form ti consente di modificare il contenuto della lista bianca di "
|
||||
"adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
"Questo form ti consente di modificare il contenuto del file principale di "
|
||||
"configurazione di adblock (/etc/config/adblock)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
"Questo form ti consente di interrogare le liste di blocco attive per "
|
||||
"determinati domini, p.e. per metterli nella lista bianca."
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Questo form mostra l'output del registro, prefiltrato per messaggi relativi "
|
||||
"solo ad adblock."
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
"Per sovrascrivere il percorso di default usa l'opzione 'Directory DNS' nella "
|
||||
"sezione aggiuntiva sotto."
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "Ritardo Innesco"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr "Registro di Debug Dettagliato"
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "Vedi Registro"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "Aspettando che il comando venga completato..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Sì"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "disabilitato"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "abilitato"
|
||||
|
||||
msgid "error"
|
||||
msgstr "errore"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "n/d"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "in pausa"
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
#~ "'libustream-ssl' or the wget 'built-in'."
|
||||
#~ msgstr ""
|
||||
#~ "Per le fonti delle liste protette da SSL hai bisogno di una libreria SSL "
|
||||
#~ "adatta, p.e. 'libustream-ssl' o wget 'built-in'."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Caution: Please don't select big lists or many lists at once on low "
|
||||
#~ "memory devices to prevent OOM exceptions!"
|
||||
#~ msgstr ""
|
||||
#~ "Attenzione: Per favore non selezionare grandi liste o molte liste alla "
|
||||
#~ "volta su dispositivi con poca memoria per prevenire errori OOM!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Create compressed blocklist backups, they will be used in case of "
|
||||
#~ "download errors or during startup in manual mode."
|
||||
#~ msgstr ""
|
||||
#~ "Crea i backup compressi delle liste di blocco, saranno usati in caso di "
|
||||
#~ "errori di download o durante l'avvio in modalità manuale."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enable memory intense overall sort / duplicate removal on low memory "
|
||||
#~ "devices (< 64 MB RAM)"
|
||||
#~ msgstr ""
|
||||
#~ "Attiva l'ordinamento globale / rimozione duplicati stressante per la "
|
||||
#~ "memoria su dispositivi con poca memoria (< 64 MB RAM)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
|
||||
#~ "documentation</a>"
|
||||
#~ msgstr ""
|
||||
#~ "Per ulteriori informazioni <a href=\"%s\" target=\"_blank\">vedi "
|
||||
#~ "documentazione online</a>"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
|
||||
#~ "config file or download a fresh default config from <a href=\"%s\" target="
|
||||
#~ "\"_blank\">here</a>"
|
||||
#~ msgstr ""
|
||||
#~ "In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-"
|
||||
#~ "esistente file di configurazione o scarica una nuova configurazione di "
|
||||
#~ "default da <a href=\"%s\" target=\"_blank\">qui</a>"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "List of available network interfaces. By default the startup will be "
|
||||
#~ "triggered by the 'wan' interface.<br />"
|
||||
#~ msgstr ""
|
||||
#~ "Lista delle interfacce di rete disponibili. Per default l'avvio sarà "
|
||||
#~ "innescato dall'interfaccia 'wan'.<br />"
|
||||
|
||||
#~ msgid "Manual / Backup mode"
|
||||
#~ msgstr "Modalità Manuale / Backup"
|
||||
|
||||
#~ msgid "Overall Blocked Domains"
|
||||
#~ msgstr "Totale Domini Bloccati"
|
||||
|
||||
#~ msgid "Please update your adblock config file to use this package."
|
||||
#~ msgstr ""
|
||||
#~ "Per favore aggiorna il tuo file configurazione di adblock per usare "
|
||||
#~ "questo pacchetto."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Target directory for adblock backups. Please use only non-volatile disks, "
|
||||
#~ "no ram/tmpfs drives."
|
||||
#~ msgstr ""
|
||||
#~ "Directory per i backup di adblock. Per favore usa solo dischi non "
|
||||
#~ "volatili, non dischi ram/tmpfs."
|
426
applications/luci-app-adblock/po/ja/adblock.po
Normal file
426
applications/luci-app-adblock/po/ja/adblock.po
Normal file
@ -0,0 +1,426 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"Language: ja\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr "'Jail' ブロックリストの作成"
|
||||
|
||||
msgid "-------"
|
||||
msgstr "(利用不可)"
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Adblock ログファイル"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Adblock ステータス"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Adblock バージョン"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(秒)です。"
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "詳細設定"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "利用可能なブロックリスト提供元です。"
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "バックアップ先 ディレクトリ"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr "バックアップ モード"
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "ブロックリスト提供元"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
"ホワイトリストに存在しない全ドメインへのアクセスをブロックするために、追加で "
|
||||
"'Jail' リスト (/tmp/adb_list.jail) を作成します。<br />"
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
|
||||
"OutOfMemory (OOM) 例外を防ぐために、5個よりも多くのリストを選択しないようにし"
|
||||
"てください。"
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"自動スタートアップを無効にするには 'none' を、従来のタイムアウト(既定値: 30"
|
||||
"秒)を使用するには 'timed' を選択してください。または、他のトリガとなるイン"
|
||||
"ターフェースを選択してください。"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "データ収集中です..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で"
|
||||
"す。"
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
"圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン"
|
||||
"ロードがエラーの場合、またはバックアップ モードでサービスを起動した場合に使用"
|
||||
"されます。"
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr "DNS バックエンド(DNS ディレクトリ)"
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "DNS ディレクトリ"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "説明"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
"サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた"
|
||||
"ブロックリストを使用します。"
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr "ダウンロード ユーティリティ"
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
"opkg でパッケージをインストールする際に '--force-maintainer' オプションを使用"
|
||||
"して既存の設定ファイルを上書きするか、 <a href=\"%s\" target=\"_blank\">ここ"
|
||||
"</a> からデフォルトの設定ファイルをダウンロードしてください。"
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "ブラックリストの編集"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "設定の編集"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "ホワイトリストの編集"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr "メール通知"
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr "メール通知カウント"
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "Adblock の有効化"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "ブロックリスト バックアップの有効化"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
"メモリー容量の少ないデバイス(RAM 空き領域 64MB 未満)において、一時ファイル"
|
||||
"内の全体的なソート及び重複の除去を有効にします。"
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr ""
|
||||
"何らかの処理エラーが発生した場合に、詳細なデバッグ ログを有効にします。"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "有効"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "拡張オプション"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr "DNS キャッシュのクリア"
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr "Adblock 処理の後に DNS キャッシュをクリアします。"
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
|
||||
"例: 'libustream-ssl' または 'built-in'"
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
|
||||
"確認してください。"
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
"パフォーマンスの更なる改善のため、安全と思われる '8' や '16' などの値に引き上"
|
||||
"げることができます。"
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "ローカル DNS の強制"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "全体ソートの強制"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr "ホワイトリスト ファイルへのフルパスです。"
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "入力ファイルが見つかりません。設定を確認してください。"
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "無効なドメインが指定されています!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "最終実行"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
|
||||
"で設定することができます。<br />"
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
"利用可能なネットワーク インターフェースの一覧です。通常、 'wan' インター"
|
||||
"フェースによりスタートアップがトリガされます。<br />"
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
"サポートされる DNS バックエンドと、それぞれのデフォルトのリスト出力先ディレク"
|
||||
"トリのリストです<br />"
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr "サポートされ、かつ設定済のダウンロード ユーティリティの一覧です。"
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "読込中"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr "ダウンロード キューの上限"
|
||||
|
||||
msgid "No"
|
||||
msgstr "いいえ"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr "全体のドメイン"
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "概要"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
"1行に1つのドメインを追加してください。'#' から始まるコメントを記述できます"
|
||||
"が、IP アドレスやワイルドカード、正規表現を設定値として使用することはできませ"
|
||||
"ん。"
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "ターミナル セッションで直接このファイルを編集してください。"
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
"注意: これには、追加で 'msmtp' のインストールとセットアップが必要です。"
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
"このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。"
|
||||
"<br />"
|
||||
|
||||
msgid "Query"
|
||||
msgstr "検索"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "ドメインの検索"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
"メール通知を行うドメイン カウントの下限を設定します。全体カウントが指定された"
|
||||
"値以下の場合、メールを受け取ります(規定値: 0)。<br />"
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
"'lan' ゾーンからの全 DNS クエリを、ローカル リゾルバにリダイレクトします。"
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "再開"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "実行情報"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "SSL 必須"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
"処理エラーまたはドメイン カウントが0以下の場合、メールを送信します。<br />"
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in "
|
||||
"parallel (default '4').<br />"
|
||||
msgstr ""
|
||||
"ダウンロードの制御とリストの処理を同時並行的に行うダウンロード キューのサイズ"
|
||||
"です(既定値: '4')。<br />"
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "スタートアップ トリガ"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "一時停止"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "Adblock の一時停止 / 再開"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
"Adblock バックアップの保存先ディレクトリです。 外部 USB フラッシュメモリなど"
|
||||
"の不揮発性ドライブのみを使用してください。"
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。"
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr ""
|
||||
"ファイル サイズが大きすぎる(512 KB超)ため、 LuCI 上でオンライン編集できませ"
|
||||
"ん。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"このフォームでは、Adblock ブラックリスト (%s) の内容を変更することができま"
|
||||
"す。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"このフォームでは、Adblock ホワイトリスト (%s) の内容を変更することができま"
|
||||
"す。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
"このフォームでは、メインのAdblock 設定ファイル (/etc/config/adblock) の内容を"
|
||||
"変更することができます。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
"このフォームでは、現在有効なリスト内で特定のドメインを検索することができま"
|
||||
"す。例: ホワイトリスト内"
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr ""
|
||||
"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
|
||||
"ます。"
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr "このセクションには、まだ値がありません"
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
"デフォルトのパスを上書きするには、下記拡張セクションの 'DNS ディレクトリ' オ"
|
||||
"プションを使用します。"
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "トリガ遅延"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr "詳細なデバッグ ログ"
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "ログファイルを見る"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "コマンド実行中です..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr "ホワイトリスト ファイル"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "はい"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
"この制約の厳しいブロックリストを、ゲスト WiFi や子供の安全を守る設定などに手"
|
||||
"動で利用することができます。"
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "無効"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
"例: Adblock のアップデート毎にメールを受け取るには、150000 に設定します。"
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "有効"
|
||||
|
||||
msgid "error"
|
||||
msgstr "エラー"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "利用不可"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "一時停止"
|
||||
|
||||
msgid "running"
|
||||
msgstr "実行中"
|
493
applications/luci-app-adblock/po/pt-br/adblock.po
Normal file
493
applications/luci-app-adblock/po/pt-br/adblock.po
Normal file
@ -0,0 +1,493 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"Last-Translator: Luís Gabriel Lima Silva <gabrielima.si@gmail.com>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Arquivo de log do Adblock"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Versão do Adblock"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr ""
|
||||
"Atraso de gatilho adicional em segundos antes do processamento do adblock "
|
||||
"começar."
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "Avançado"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "Fontes de listas de bloqueio disponíveis."
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "Diretório da cópia de segurança"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "Fontes de listas de bloqueio"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Coletando dados..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
"Configuração do pacote adblock para bloquear, usando o DNS, domínios que "
|
||||
"distribuem propagandas abusivas."
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
"Não atualize as listas de bloqueio automaticamente durante o início, use o "
|
||||
"backup das listas como alternativa."
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "Utilitário de Download (Biblioteca SSL)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "Editar Lista de Bloqueio"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "Editar Configuração"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "Editar Lista Permitida"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "Habilitar adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "Habilitar cópia de segurança da lista de bloqueio"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "Opções adicionais"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "Force o DNS local"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "Force Tipo Geral"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "Arquivo de entrada não encontrado, por favor cheque sua configuração."
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "Domínio especificado inválido!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "Carregando"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr "Não"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr ""
|
||||
"Opções para aprimoramentos adicionais caso as opções padrão não sejam "
|
||||
"suficientes para você."
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "Visão geral"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "Por favor edite esse arquivo direto em uma sessão de terminal."
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr "Consulta"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "Consulta de domínios"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "Informação de execução"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "req. de SSL"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Salvar"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in "
|
||||
"parallel (default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr ""
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr ""
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "Suspender / Resumir adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr ""
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr ""
|
||||
"O tamanho do arquivo é muito grande para edição online no LuCI (> 512 KB)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Esse formulário permite que você modifique o conteúdo das listas de bloqueio "
|
||||
"do adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Esse formulário permite que você modifique o conteúdo das listas de "
|
||||
"permissão do adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
"Esse formulário permite que você modifique o conteúdo das do arquivo de "
|
||||
"configuração principal (/etc/config/adblock)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
"Esse formulário permite que você consulte listas de blocos ativos para "
|
||||
"certos domínios, e.x. para listas de permissão."
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Esse formulário mostra a saída do syslog, pré-filtrado para mensagens do "
|
||||
"adblock apenas."
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "Atraso no gatilho"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr ""
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "Ver arquivo de log"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "Aguardando por comando para completar..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Sim"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "error"
|
||||
msgstr ""
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "n/d"
|
||||
|
||||
msgid "paused"
|
||||
msgstr ""
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
#~ "'libustream-ssl' or the wget 'built-in'."
|
||||
#~ msgstr ""
|
||||
#~ "Para uma lista de bloqueio protegida por SSL você precisa de uma "
|
||||
#~ "biblioteca SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Create compressed blocklist backups, they will be used in case of "
|
||||
#~ "download errors or during startup in manual mode."
|
||||
#~ msgstr ""
|
||||
#~ "Crie backups comprimidos das listas de bloqueio, eles serão usados em "
|
||||
#~ "caso de erro dedownload ou durante o início em modo manual."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enable memory intense overall sort / duplicate removal on low memory "
|
||||
#~ "devices (< 64 MB RAM)"
|
||||
#~ msgstr ""
|
||||
#~ "Ativar tipo geral intenso de memória / duplicar remoção em dispositivos "
|
||||
#~ "com pouca memória (< 64 MB RAM)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
|
||||
#~ "documentation</a>"
|
||||
#~ msgstr ""
|
||||
#~ "Para outras informações <a href=\"%s\" target=\"_blank\">veja a "
|
||||
#~ "documentação online</a>"
|
||||
|
||||
#~ msgid "Manual / Backup mode"
|
||||
#~ msgstr "Manual / Modo backup"
|
||||
|
||||
#~ msgid "Blocked domains (overall)"
|
||||
#~ msgstr "Domínios bloqueados (total)"
|
||||
|
||||
#~ msgid "DNS backend"
|
||||
#~ msgstr "Porta dos fundos de DNS"
|
||||
|
||||
#~ msgid "Enable verbose debug logging"
|
||||
#~ msgstr "Habilite registros detalhados para depuração"
|
||||
|
||||
#~ msgid "Last rundate"
|
||||
#~ msgstr "Última data de execução"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Note that list URLs and Shallalist category selections are configurable "
|
||||
#~ "in the 'Advanced' section."
|
||||
#~ msgstr ""
|
||||
#~ "Observe que as URLs da lista e as seleções da categoria Shallalist são "
|
||||
#~ "configuráveis na secção 'Avançada'."
|
||||
|
||||
#~ msgid "Redirect all DNS queries to the local resolver."
|
||||
#~ msgstr "Redirecione todas as consultas de DNS para o resolvedor local."
|
||||
|
||||
#~ msgid "Restrict interface trigger to certain interface(s)"
|
||||
#~ msgstr "Restingir o gatilho de interface para certas interface(s)"
|
||||
|
||||
#~ msgid "Resume adblock"
|
||||
#~ msgstr "Resumir adblock"
|
||||
|
||||
#~ msgid "Status"
|
||||
#~ msgstr "Estado"
|
||||
|
||||
#~ msgid "active"
|
||||
#~ msgstr "ativo"
|
||||
|
||||
#~ msgid "no domains blocked"
|
||||
#~ msgstr "nenhum domínio bloqueado"
|
||||
|
||||
#~ msgid "suspended"
|
||||
#~ msgstr "suspenso"
|
||||
|
||||
#~ msgid "Backup options"
|
||||
#~ msgstr "Opções da cópia de segurança"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "). Note that list URLs and Shallalist category selections are not "
|
||||
#~ "configurable via Luci."
|
||||
#~ msgstr ""
|
||||
#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não "
|
||||
#~ "são configuráveis pelo Luci."
|
||||
|
||||
#~ msgid "Available blocklist sources ("
|
||||
#~ msgstr "Fontes de listas de bloqueio disponíveis ("
|
||||
|
||||
#~ msgid ""
|
||||
#~ "File with whitelisted hosts/domains that are allowed despite being on a "
|
||||
#~ "blocklist."
|
||||
#~ msgstr ""
|
||||
#~ "Arquivo com a lista branca dos equipamentos/domínios que serão "
|
||||
#~ "autorizados mesmo estando na lista de bloqueio."
|
||||
|
||||
#~ msgid "Global options"
|
||||
#~ msgstr "Opções Globais"
|
||||
|
||||
#~ msgid "Restrict reload trigger to certain interface(s)"
|
||||
#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Space separated list of wan interfaces that trigger reload action. To "
|
||||
#~ "disable reload trigger set it to 'false'. Default: empty"
|
||||
#~ msgstr ""
|
||||
#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma "
|
||||
#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. "
|
||||
#~ "Padrão: em branco"
|
||||
|
||||
#~ msgid "Whitelist file"
|
||||
#~ msgstr "Arquivo da lista branca"
|
||||
|
||||
#~ msgid "see list details"
|
||||
#~ msgstr "veja os detalhes da lista"
|
424
applications/luci-app-adblock/po/ru/adblock.po
Normal file
424
applications/luci-app-adblock/po/ru/adblock.po
Normal file
@ -0,0 +1,424 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: LuCI: adblock\n"
|
||||
"POT-Creation-Date: 2017-10-22 13:00+0300\n"
|
||||
"PO-Revision-Date: 2018-02-07 00:23+0300\n"
|
||||
"Language-Team: http://cyber-place.ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Language: ru\n"
|
||||
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
|
||||
"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr "Создание Черного<br />списка 'Jail'"
|
||||
|
||||
msgid "-------"
|
||||
msgstr "-------"
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "AdBlock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Ведение системного журала Adblock-ом"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Состояние Adblock-а"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Версия Adblock-а"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr "Дополнительная задержка в секундах до начала работы Adblock-a."
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "Дополнительно"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "Источники списков блокировки. "
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "Папка для бэкапа"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr "Режим сохранения бекапа"
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "Источники списков блокировки"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
"Создать дополнительный Черный список 'Jail' (/tmp/adb_list.jail), чтобы "
|
||||
"заблокировать доступ ко всем доменам, кроме тех что перечислены в файле "
|
||||
"Белого списка.<br />"
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
"ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, на "
|
||||
"устройствах с объемом оперативной памяти менее 64MB, не выбирайте больше 5 "
|
||||
"списков."
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"Выберите 'none', чтобы отключить автоматический старт, 'timed', чтобы "
|
||||
"использовать дефолтную задержку (по умолчанию 30 сек.) или выберите другой "
|
||||
"интерфейс запуска."
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Сбор данных..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
"Настройка Adblock. Приложения для блокировки ненадежных или добавления "
|
||||
"доверенных доменов используя DNS. "
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
"Создавайте сжатые резервные копии списков блокировки, они будут "
|
||||
"использоваться в случае ошибок загрузки или при запуске в ручном режиме."
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr "DNS бэкенд (папка DNS)"
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "Папка DNS"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
"Не обновляйте списки блокировок автоматически во время запуска, вместо этого "
|
||||
"используйте резервные копии списков блокировок."
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr "Скачать утилиту"
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "Загрузить утилиту (библиотека SSL)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
"Устанавливая пакет с помощью opkg, используйте '--force-maintainer', чтобы "
|
||||
"перезаписать существующий config файл или загрузить новый дефолтный config "
|
||||
"файл <a href=\"%s\" target=\"_blank\">здесь</a>"
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "Редактировать Черный список"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "Редактировать config файл"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "Редактировать Белый список"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr "Уведомление на email"
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr "Кол-во уведомлений на email"
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "Включить Adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "Включить сохранение<br />списка блокировок"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
"Включите полную сортировку / удаление дубликатов памяти на устройствах с "
|
||||
"низким объемом памяти (< 64 MB свободной оперативной памяти)."
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr "Включите подробное ведение журнала отладки в случае ошибки обработки."
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Включено"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "Дополнительные настройки"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr "Очистка кэша DNS"
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr "Очистки DNS-кэша после обработки Adblock-ом."
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
"Для SSL-защищенных источников списков блокировки, вам нужны подходящие SSL "
|
||||
"библиотеки, например 'libustream-ssl' или 'built-in'."
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
"<br />Для получения дополнительной информации <a href=\"%s\" target=\"_blank"
|
||||
"\"> смотрите онлайн документацию</a>."
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
"Для повышения производительности вы можете увеличить это значение, например "
|
||||
"значения '8' или '16' повысят безопасность."
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "Назначить локальный DNS"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "Назначить полную сортировку"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr "Полный путь к файлу Белого списка."
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "Config файл не найден, настройте config файл."
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "Задан недопустимый домен!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "Последнее время запуска"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
"Список URL-адресов и настройка списка использования, настраиваются на "
|
||||
"странице 'Дополнительно'.<br />"
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
"Список доступных сетевых интерфейсов. По умолчанию установлен 'wan' "
|
||||
"интерфейс.<br />"
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
"Список поддерживаемых серверов DNS перемещается в папку по умолчанию.<br />"
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
"Список поддерживаемых и полностью предварительно настроенных утилит загрузки."
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "Загрузка"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr "Максимальное значение очереди загрузки"
|
||||
|
||||
msgid "No"
|
||||
msgstr "Нет"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr ""
|
||||
"Возможные варианты детальной настройки, если значения по умолчанию не "
|
||||
"подходят для вас."
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr "Итоговые домены"
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "Главное меню"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
"Добавляйте только один домен в строке. Комментарии вводятся используя '#' "
|
||||
"разрешенные - ip адреса, метасимволы и нерегулярные выражения."
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "Отредактируйте данный файл, строго в терминале."
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr "Внимание: это потребует дополнительной установки пакета 'msmtp'."
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
|
||||
|
||||
msgid "Query"
|
||||
msgstr "Запрос"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "Запрос доменов"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
"Увеличьте количество уведомлений по email, чтобы получить сообщения, если "
|
||||
"общее количество меньше или равно заданному пределу (по умолчанию 0),<br />"
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
"Перенаправлять все DNS запросы с интерфейса 'lan' на обработку Adblock-ом."
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "Возобновить"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "Информация о состоянии"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "Запрос SSL"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
"Отправлять по email уведомления в случае ошибки обработки или если домен "
|
||||
"≤ 0.<br />"
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in "
|
||||
"parallel (default '4').<br />"
|
||||
msgstr ""
|
||||
"Значение очереди загрузки для выполнения параллельных загрузок (по умолчанию "
|
||||
"'4').<br />"
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "Назначить"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "Приостановить"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "Приостановить / Возобновить Adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
"Назначить папку для резервного копирования Adblock. Используйте такие "
|
||||
"накопители, как usb флешка."
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr "Назначить папку для создания списка блокировки 'adb_list.overall'."
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr ""
|
||||
"Размер файла слишком большой, для онлайн редактирования в LuCI (> 512 KB)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Страница позволяет изменять содержимое Черного списка Adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Страница позволяет изменять содержимое Белого списка Adblock (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
"Страница позволяет изменять содержимое главного config файла Adblock-a (/etc/"
|
||||
"config/adblock)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
"Страница позволяет запросить домены для конкретных списков, например для "
|
||||
"Белого списка."
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr "Страница системного журнала. Только сообщения связанные с Adblock."
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr "Здесь не содержатся необходимые значения"
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
"Чтобы заменить дефолтный путь, используйте строку ниже 'Папка DNS' в разделе "
|
||||
"'Дополнительные настройки'."
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "Задержка запуска"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr "Подробное ведение<br />журнала отладки"
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "Показать системный журнал"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "Ожидание завершения выполнения команды..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr "Файл Белого списка"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
"Вы можете вручную настраивать и использовать этот Черный список, например "
|
||||
"для гостевой wifi сети или режима родительского контроля."
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "отключено"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
"например, чтобы получать уведомления по электронной почте при каждом "
|
||||
"обновлении Adblock-а установите значение 150000."
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "включено"
|
||||
|
||||
msgid "error"
|
||||
msgstr "ошибка"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "нет данных"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "остановлено"
|
||||
|
||||
msgid "running"
|
||||
msgstr "работает"
|
451
applications/luci-app-adblock/po/sv/adblock.po
Normal file
451
applications/luci-app-adblock/po/sv/adblock.po
Normal file
@ -0,0 +1,451 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr "-------"
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Adblock's loggfil"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Status för Adblock"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Version av Adblock"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "Avancerat"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "Tillgängliga källor för blockeringslistor"
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "Säkerhetskopiera mapp"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "Källor för blockeringslistor"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"Välj 'inga' för att stänga av automatiska uppstarter, 'tidsinställd för att "
|
||||
"använda ett klassiskt avbrott (30 sek. är standard) eller välj ett annat "
|
||||
"utlösande gränssnitt."
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Samlar in data..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner "
|
||||
"genom att använda DNS."
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr "DNS-bakände (DNS-mapp)"
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "DNS-mapp"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Beskrivning"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
"Uppdatera inte automatiskt blockeringlistor vid uppstarten, använd "
|
||||
"säkerhetskopierade blockeringslistor istället."
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "Nerladdningsprogram (SSL-bibliotek)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "Redigera svartlista"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "Redigerar konfigurationen"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "Redigera vitlista"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "Aktivera adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "Aktivera säkerhetskopiering av blockeringslistan"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiverad"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "Extra alternativ"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "Tvinga lokal DNS"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr ""
|
||||
"Inmatningsfilen kunde inte hittas, var vänlig kontrollera din konfiguration."
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "Ogiltig domän angiven!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "Kördes senast"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "Laddar"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr "Nej"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "Översikt"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "Vänligen redigera den här filen direkt i en terminal-session."
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr "Fråga"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "Fråga efter domäner"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "Återuppta"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "Information om körtid"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "SSL-rek."
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Spara"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in parallel "
|
||||
"(default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "Uppstartslösare"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "Stäng av"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "Upphäv / Återuppta adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr ""
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr "Filstorleken är för stor för online-redigering i LuCi (> 512 KB)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Det här formuläret tillåter dig att förändra innehållet i adblock's "
|
||||
"svartlista (%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
"Det här formuläret tillåter dig att förändra innehållet i adblock's vitlista "
|
||||
"(%s).<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
"Det här formuläret tillåter dig att förändra innehållet i adblock's "
|
||||
"huvudsakliga konfigurations fil (/etc/config/adblock)."
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr ""
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr ""
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr ""
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "Visa loggfil"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "Väntar på att kommandot ska slutföras..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "inaktiverad"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "aktiverad"
|
||||
|
||||
msgid "error"
|
||||
msgstr "fel"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "n/a"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "pausad"
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Caution: Please don't select big lists or many lists at once on low "
|
||||
#~ "memory devices to prevent OOM exceptions!"
|
||||
#~ msgstr ""
|
||||
#~ "Försiktig: Vänligen välj inte stora listor eller många listor på samma "
|
||||
#~ "gång för enheter med lite minne för att undvika OOM-undantag!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
|
||||
#~ "documentation</a>"
|
||||
#~ msgstr ""
|
||||
#~ "För mer information <a href=\"%s\" target=\"_blank\">se dokumentationen "
|
||||
#~ "på internet</a>"
|
||||
|
||||
#~ msgid "Manual / Backup mode"
|
||||
#~ msgstr "Manuell / Säkerhetskopieringsläge"
|
||||
|
||||
#~ msgid "Please update your adblock config file to use this package."
|
||||
#~ msgstr ""
|
||||
#~ "Vänligen uppdatera din adblock's konfigurationsfil till att använda det "
|
||||
#~ "här paketet."
|
||||
|
||||
#~ msgid "Blocked domains (overall)"
|
||||
#~ msgstr "Blockerade domäner (övergripande)"
|
||||
|
||||
#~ msgid "DNS backend"
|
||||
#~ msgstr "Bakände för DNS"
|
||||
|
||||
#~ msgid "Enable verbose debug logging"
|
||||
#~ msgstr "Aktivera utförlig loggning för avlusning"
|
||||
|
||||
#~ msgid "Last rundate"
|
||||
#~ msgstr "Senaste kördatum"
|
||||
|
||||
#~ msgid "Redirect all DNS queries to the local resolver."
|
||||
#~ msgstr "Dirigera om alla DNS-förfrågningar till den lokala "
|
||||
|
||||
#~ msgid "Resume adblock"
|
||||
#~ msgstr "Återuppta adblock"
|
||||
|
||||
#~ msgid "Status"
|
||||
#~ msgstr "Status"
|
||||
|
||||
#~ msgid "Suspend adblock"
|
||||
#~ msgstr "Upphäv adblock"
|
||||
|
||||
#~ msgid "active"
|
||||
#~ msgstr "aktiv"
|
||||
|
||||
#~ msgid "no domains blocked"
|
||||
#~ msgstr "inga domäner blockerades"
|
||||
|
||||
#~ msgid "suspended"
|
||||
#~ msgstr "upphävd"
|
||||
|
||||
#~ msgid "."
|
||||
#~ msgstr "."
|
||||
|
||||
#~ msgid "For further information"
|
||||
#~ msgstr "För mer information"
|
||||
|
||||
#~ msgid "Backup options"
|
||||
#~ msgstr "Alternativ för säkerhetskopiering"
|
||||
|
||||
#~ msgid "Available blocklist sources ("
|
||||
#~ msgstr "Tillgängliga källor för blockeringslistor ("
|
||||
|
||||
#~ msgid "Global options"
|
||||
#~ msgstr "Globala alternativ"
|
||||
|
||||
#~ msgid "Whitelist file"
|
||||
#~ msgstr "Vitlista fil"
|
||||
|
||||
#~ msgid "see list details"
|
||||
#~ msgstr "se listans detaljer"
|
||||
|
||||
#~ msgid "Count"
|
||||
#~ msgstr "Räkna"
|
||||
|
||||
#~ msgid "Do not write status info to flash"
|
||||
#~ msgstr "Skriv inte status info till flash"
|
||||
|
||||
#~ msgid "Redirect all DNS queries to the local resolver"
|
||||
#~ msgstr "Dirigera om alla DNS-förfrågning till den lokala resolvern"
|
352
applications/luci-app-adblock/po/templates/adblock.pot
Normal file
352
applications/luci-app-adblock/po/templates/adblock.pot
Normal file
@ -0,0 +1,352 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr ""
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr ""
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr ""
|
||||
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr ""
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr ""
|
||||
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in "
|
||||
"parallel (default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr ""
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr ""
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr ""
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr ""
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr ""
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr ""
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "error"
|
||||
msgstr ""
|
||||
|
||||
msgid "n/a"
|
||||
msgstr ""
|
||||
|
||||
msgid "paused"
|
||||
msgstr ""
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
371
applications/luci-app-adblock/po/zh-cn/adblock.po
Normal file
371
applications/luci-app-adblock/po/zh-cn/adblock.po
Normal file
@ -0,0 +1,371 @@
|
||||
# liushuyu <liushuyu_011@163.com>, 2017.
|
||||
# Yangfl <mmyangfl@gmail.com>, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2017-10-28 16:06+0800\n"
|
||||
"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
|
||||
"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr "-------"
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Adblock 日志文件"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Adblock 状态"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Adblock 版本"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr "触发 Adblock 开始处理前的额外延迟(以秒为单位)。"
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "高级"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "可用的 blocklist 来源。"
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "备份目录"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "拦截列表来源"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"选择“none”以禁用自动启动,“timed”以使用默认的超时设定(默认 30 秒),或选择另"
|
||||
"一个触发接口。"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "正在收集数据..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr "DNS 后端(DNS 目录)"
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "DNS 目录"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr "启动期间不要自动更新 blocklists,改用 blocklists 的备份。"
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "下载实用程序(SSL 库)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "编辑黑名单"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "编辑设置"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "编辑白名单"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "启用 Adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "启用 Blocklist 备份"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr "在出现任何处理错误的情况下启用详细调试日志记录。"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "已启用"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "额外选项"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "强制本地 DNS"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "强制整体排序"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "输入文件未找到,请检查您的配置。"
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "无效域名!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "最后运行"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr "支持的 DNS 后端列表及其默认列表导出目录。<br />"
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "加载中"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr "在默认设置并不适合您时的额外选项。"
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "总览"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
"请每行只添加一个域。允许使用'#'开头的注释 - ip 地址、通配符和正则表达式都不"
|
||||
"允许。"
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "请在终端会话中直接编辑此文件。"
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr "查询"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "查询域"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "恢复"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "运行信息"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "SSL 要求"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in parallel "
|
||||
"(default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "启动触发器"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "暂停"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "暂停/恢复 Adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr "生成的 blocklist 'adb_list.overall'的目标目录。"
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr "文件大小太大,无法在 LuCI(> 512 KB)中进行在线编辑。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr "此表单允许您修改 adblock 黑名单(%s)的内容。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr "此表单允许您修改 adblock 白名单(%s)的内容。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr "此表单允许您修改主要 adblock 配置文件(/etc/config/adblock)的内容。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr "此表单允许您查询某些域的活动块列表,例如用于列出白名单。"
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr "要覆盖默认路径,请使用下面额外部分中的“DNS 目录”选项。"
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "触发延迟"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr "详细的调试记录"
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "查看日志文件"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "正在执行命令..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "已禁用"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "已启用"
|
||||
|
||||
msgid "error"
|
||||
msgstr "错误"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "不可用"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "已暂停"
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
371
applications/luci-app-adblock/po/zh-tw/adblock.po
Normal file
371
applications/luci-app-adblock/po/zh-tw/adblock.po
Normal file
@ -0,0 +1,371 @@
|
||||
# liushuyu <liushuyu_011@163.com>, 2017.
|
||||
# Yangfl <mmyangfl@gmail.com>, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2017-10-28 16:06+0800\n"
|
||||
"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
|
||||
"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
msgid "'Jail' Blocklist Creation"
|
||||
msgstr ""
|
||||
|
||||
msgid "-------"
|
||||
msgstr "-------"
|
||||
|
||||
msgid "Adblock"
|
||||
msgstr "Adblock"
|
||||
|
||||
msgid "Adblock Logfile"
|
||||
msgstr "Adblock 日誌檔案"
|
||||
|
||||
msgid "Adblock Status"
|
||||
msgstr "Adblock 狀態"
|
||||
|
||||
msgid "Adblock Version"
|
||||
msgstr "Adblock 版本"
|
||||
|
||||
msgid "Additional trigger delay in seconds before adblock processing begins."
|
||||
msgstr "觸發 Adblock 開始處理前的額外延遲(以秒為單位)。"
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "高階"
|
||||
|
||||
msgid "Available blocklist sources."
|
||||
msgstr "可用的 blocklist 來源。"
|
||||
|
||||
msgid "Backup Directory"
|
||||
msgstr "備份目錄"
|
||||
|
||||
msgid "Backup Mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blocklist Sources"
|
||||
msgstr "攔截列表來源"
|
||||
|
||||
msgid ""
|
||||
"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
|
||||
"domains except those listed in the whitelist file.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
|
||||
"MB free RAM, please do not select more than five blocklist sources!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
|
||||
"timeout (default 30 sec.) or select another trigger interface."
|
||||
msgstr ""
|
||||
"選擇“none”以禁用自動啟動,“timed”以使用預設的超時設定(預設 30 秒),或選擇另"
|
||||
"一個觸發介面。"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "正在收集資料..."
|
||||
|
||||
msgid ""
|
||||
"Configuration of the adblock package to block ad/abuse domains by using DNS."
|
||||
msgstr "Adblock 配置工具,通過 DNS 來攔截廣告和阻止域名。"
|
||||
|
||||
msgid ""
|
||||
"Create compressed blocklist backups, they will be used in case of download "
|
||||
"errors or during startup in backup mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Backend (DNS Directory)"
|
||||
msgstr "DNS 後端(DNS 目錄)"
|
||||
|
||||
msgid "DNS Directory"
|
||||
msgstr "DNS 目錄"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
msgid ""
|
||||
"Do not automatically update blocklists during startup, use blocklist backups "
|
||||
"instead."
|
||||
msgstr "啟動期間不要自動更新 blocklists,改用 blocklists 的備份。"
|
||||
|
||||
msgid "Download Utility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download Utility (SSL Library)"
|
||||
msgstr "下載實用程式(SSL 庫)"
|
||||
|
||||
msgid ""
|
||||
"During opkg package installation use the '--force-maintainer' option to "
|
||||
"overwrite the pre-existing config file or download a fresh default config "
|
||||
"from <a href=\"%s\" target=\"_blank\">here</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Blacklist"
|
||||
msgstr "編輯黑名單"
|
||||
|
||||
msgid "Edit Configuration"
|
||||
msgstr "編輯設定"
|
||||
|
||||
msgid "Edit Whitelist"
|
||||
msgstr "編輯白名單"
|
||||
|
||||
msgid "Email Notification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email Notification Count"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adblock"
|
||||
msgstr "啟用 Adblock"
|
||||
|
||||
msgid "Enable Blocklist Backup"
|
||||
msgstr "啟用 Blocklist 備份"
|
||||
|
||||
msgid ""
|
||||
"Enable memory intense overall sort / duplicate removal on low memory devices "
|
||||
"(< 64 MB free RAM)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable verbose debug logging in case of any processing error."
|
||||
msgstr "在出現任何處理錯誤的情況下啟用詳細除錯日誌記錄。"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "已啟用"
|
||||
|
||||
msgid "Extra Options"
|
||||
msgstr "額外選項"
|
||||
|
||||
msgid "Flush DNS Cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Flush DNS Cache after adblock processing."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
|
||||
"'libustream-ssl' or 'built-in'."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further information <a href=\"%s\" target=\"_blank\">check the online "
|
||||
"documentation</a>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"For further performance improvements you can raise this value, e.g. '8' or "
|
||||
"'16' should be safe."
|
||||
msgstr ""
|
||||
|
||||
msgid "Force Local DNS"
|
||||
msgstr "強制本地 DNS"
|
||||
|
||||
msgid "Force Overall Sort"
|
||||
msgstr "強制整體排序"
|
||||
|
||||
msgid "Full path to the whitelist file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input file not found, please check your configuration."
|
||||
msgstr "輸入檔案未找到,請檢查您的配置。"
|
||||
|
||||
msgid "Invalid domain specified!"
|
||||
msgstr "無效域名!"
|
||||
|
||||
msgid "Last Run"
|
||||
msgstr "最後執行"
|
||||
|
||||
msgid ""
|
||||
"List URLs and Shallalist category selections are configurable in the "
|
||||
"'Advanced' section.<br />"
|
||||
msgstr "列表 URL 和 Shallalist 類別選擇可在“高階”選項卡中配置。<br />"
|
||||
|
||||
msgid ""
|
||||
"List of available network interfaces. Usually the startup will be triggered "
|
||||
"by the 'wan' interface.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"List of supported DNS backends with their default list export directory.<br /"
|
||||
">"
|
||||
msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。<br />"
|
||||
|
||||
msgid "List of supported and fully pre-configured download utilities."
|
||||
msgstr ""
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "載入中"
|
||||
|
||||
msgid "Max. Download Queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
msgid ""
|
||||
"Options for further tweaking in case the defaults are not suitable for you."
|
||||
msgstr "在預設設定並不適合您時的額外選項。"
|
||||
|
||||
msgid "Overall Domains"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "總覽"
|
||||
|
||||
msgid ""
|
||||
"Please add only one domain per line. Comments introduced with '#' are "
|
||||
"allowed - ip addresses, wildcards and regex are not."
|
||||
msgstr ""
|
||||
"請每行只新增一個域。允許使用'#'開頭的註釋 - ip 位址、萬用字元和正則表示式都"
|
||||
"不允許。"
|
||||
|
||||
msgid "Please edit this file directly in a terminal session."
|
||||
msgstr "請在終端會話中直接編輯此檔案。"
|
||||
|
||||
msgid ""
|
||||
"Please note: this needs additional 'msmtp' package installation and setup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please update your adblock config file to use this package.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Query"
|
||||
msgstr "查詢"
|
||||
|
||||
msgid "Query domains"
|
||||
msgstr "查詢域"
|
||||
|
||||
msgid ""
|
||||
"Raise the minimum email notification count, to get emails if the overall "
|
||||
"count is less or equal to the given limit (default 0),<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
|
||||
msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。"
|
||||
|
||||
msgid "Resume"
|
||||
msgstr "恢復"
|
||||
|
||||
msgid "Runtime Information"
|
||||
msgstr "執行資訊"
|
||||
|
||||
msgid "SSL req."
|
||||
msgstr "SSL 要求"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "儲存"
|
||||
|
||||
msgid ""
|
||||
"Send notification emails in case of a processing error or if domain count is "
|
||||
"≤ 0.<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Size of the download queue to handle downloads & list processing in parallel "
|
||||
"(default '4').<br />"
|
||||
msgstr ""
|
||||
|
||||
msgid "Startup Trigger"
|
||||
msgstr "啟動觸發器"
|
||||
|
||||
msgid "Suspend"
|
||||
msgstr "暫停"
|
||||
|
||||
msgid "Suspend / Resume Adblock"
|
||||
msgstr "暫停/恢復 Adblock"
|
||||
|
||||
msgid ""
|
||||
"Target directory for adblock backups. Please use only non-volatile disks, e."
|
||||
"g. an external usb stick."
|
||||
msgstr ""
|
||||
|
||||
msgid "Target directory for the generated blocklist 'adb_list.overall'."
|
||||
msgstr "生成的 blocklist 'adb_list.overall'的目標目錄。"
|
||||
|
||||
msgid "The file size is too large for online editing in LuCI (> 512 KB)."
|
||||
msgstr "檔案大小太大,無法在 LuCI(> 512 KB)中進行線上編輯。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock blacklist (%s)."
|
||||
"<br />"
|
||||
msgstr "此表單允許您修改 adblock 黑名單(%s)的內容。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the adblock whitelist (%s)."
|
||||
"<br />"
|
||||
msgstr "此表單允許您修改 adblock 白名單(%s)的內容。<br />"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to modify the content of the main adblock configuration "
|
||||
"file (/etc/config/adblock)."
|
||||
msgstr "此表單允許您修改主要 adblock 配置檔案(/etc/config/adblock)的內容。"
|
||||
|
||||
msgid ""
|
||||
"This form allows you to query active block lists for certain domains, e.g. "
|
||||
"for whitelisting."
|
||||
msgstr "此表單允許您查詢某些域的活動塊列表,例如用於列出白名單。"
|
||||
|
||||
msgid ""
|
||||
"This form shows the syslog output, pre-filtered for adblock related messages "
|
||||
"only."
|
||||
msgstr "此表單顯示系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。"
|
||||
|
||||
msgid "This section contains no values yet"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"To overwrite the default path use the 'DNS Directory' option in the extra "
|
||||
"section below."
|
||||
msgstr "要覆蓋預設路徑,請使用下面額外部分中的“DNS 目錄”選項。"
|
||||
|
||||
msgid "Trigger Delay"
|
||||
msgstr "觸發延遲"
|
||||
|
||||
msgid "Verbose Debug Logging"
|
||||
msgstr "詳細的除錯記錄"
|
||||
|
||||
msgid "View Logfile"
|
||||
msgstr "檢視日誌檔案"
|
||||
|
||||
msgid "Waiting for command to complete..."
|
||||
msgstr "正在執行命令..."
|
||||
|
||||
msgid "Whitelist File"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
msgid ""
|
||||
"You can use this restrictive blocklist manually e.g. for guest wifi or "
|
||||
"kidsafe configurations."
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled"
|
||||
msgstr "已禁用"
|
||||
|
||||
msgid ""
|
||||
"e.g. to receive an email notification with every adblock update set this "
|
||||
"value to 150000."
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled"
|
||||
msgstr "已啟用"
|
||||
|
||||
msgid "error"
|
||||
msgstr "錯誤"
|
||||
|
||||
msgid "n/a"
|
||||
msgstr "不可用"
|
||||
|
||||
msgid "paused"
|
||||
msgstr "已暫停"
|
||||
|
||||
msgid "running"
|
||||
msgstr ""
|
||||
|
11
applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock
Executable file
11
applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@adblock[-1]
|
||||
add ucitrack adblock
|
||||
set ucitrack.@adblock[-1].init=adblock
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
20
applications/luci-app-advanced-reboot/Makefile
Normal file
20
applications/luci-app-advanced-reboot/Makefile
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_LICENSE:=GPL-3.0+
|
||||
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
|
||||
|
||||
LUCI_TITLE:=Advanced Linksys Reboot Web UI
|
||||
LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys and ZyXEL routers to\
|
||||
an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\
|
||||
routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md
|
||||
|
||||
LUCI_DEPENDS:=+luci
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_RELEASE:=27
|
||||
|
||||
include ../../luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
37
applications/luci-app-advanced-reboot/README.md
Normal file
37
applications/luci-app-advanced-reboot/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Advanced Reboot Web UI (luci-app-advanced-reboot)
|
||||
|
||||
## Description
|
||||
This package allows you to reboot to an alternative partition on the supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device.
|
||||
|
||||
## Supported Devices
|
||||
Currently supported dual-partition devices include:
|
||||
- Linksys EA3500
|
||||
- Linksys E4200v2
|
||||
- Linksys EA4500
|
||||
- Linksys EA8500
|
||||
- Linksys WRT1200AC
|
||||
- Linksys WRT1900AC
|
||||
- Linksys WRT1900ACv2
|
||||
- Linksys WRT1900ACS
|
||||
- Linksys WRT3200ACM
|
||||
- ZyXEL NBG6817
|
||||
|
||||
If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423).
|
||||
|
||||
## Screenshot (luci-app-advanced-reboot)
|
||||
![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/luci-app-advanced-reboot/screenshot01.png "screenshot")
|
||||
|
||||
## How to install
|
||||
Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands:
|
||||
```sh
|
||||
opkg update
|
||||
opkg install luci-app-advanced-reboot
|
||||
```
|
||||
|
||||
## Notes/Known Issues
|
||||
- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware.
|
||||
- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock vendor firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, losing all the settings.
|
||||
- Some devices allow you to trigger reboot to an alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
|
||||
|
||||
## Thanks
|
||||
I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman), [@jpstyves](https://github.com/jpstyves) and [@slh](https://github.com/pkgadd) it wouldn't have been possible.
|
@ -0,0 +1,205 @@
|
||||
-- Copyright 2017 Stan Grishin <stangri@melmac.net>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module("luci.controller.advanced_reboot", package.seeall)
|
||||
|
||||
-- device_name, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
|
||||
devices = {
|
||||
{"Linksys EA3500", "linksys-audi", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2},
|
||||
-- {"Linksys EA9500", "linksys,panamera", "mtd3", "mtd6", 28, "boot_part", 1, 2},
|
||||
{"Linksys WRT1200AC", "linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys WRT1900AC", "linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys WRT1900ACv2", "linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys WRT1900ACS", "linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"Linksys WRT3200ACM", "linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
|
||||
{"ZyXEL NBG6817","nbg6817","mmcblk0p4","mmcblk0p7",32,nil,255,1}
|
||||
}
|
||||
|
||||
errorMessage = ""
|
||||
device_board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
|
||||
for i=1, #devices do
|
||||
table_board_name = devices[i][2]:gsub('%p','')
|
||||
if device_board_name and device_board_name:gsub('%p',''):match(table_board_name) then
|
||||
device_name = devices[i][1]
|
||||
partition_one_mtd = devices[i][3] or nil
|
||||
partition_two_mtd = devices[i][4] or nil
|
||||
partition_skip = devices[i][5] or nil
|
||||
boot_envvar1 = devices[i][6] or nil
|
||||
boot_envvar1_partition_one = tonumber(devices[i][7]) or nil
|
||||
boot_envvar1_partition_two = tonumber(devices[i][8]) or nil
|
||||
boot_envvar2 = devices[i][9] or nil
|
||||
boot_envvar2_partition_one = devices[i][10] or nil
|
||||
boot_envvar2_partition_two = devices[i][11] or nil
|
||||
if partition_one_mtd and partition_skip then
|
||||
partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
|
||||
n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)')
|
||||
end
|
||||
if partition_two_mtd and partition_skip then
|
||||
partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
|
||||
n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)')
|
||||
end
|
||||
if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end
|
||||
if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end
|
||||
if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end
|
||||
if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end
|
||||
if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end
|
||||
if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end
|
||||
if device_name and device_name == "ZyXEL NBG6817" then
|
||||
if not partition_one_os then partition_one_os = "ZyXEL" end
|
||||
if not partition_two_os then partition_two_os = "ZyXEL" end
|
||||
end
|
||||
if not partition_one_os then partition_one_os = "Unknown" end
|
||||
if not partition_two_os then partition_two_os = "Unknown" end
|
||||
if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end
|
||||
if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end
|
||||
|
||||
if device_name and device_name == "ZyXEL NBG6817" then
|
||||
if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
|
||||
if not zyxelFlagPartition then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
|
||||
luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
|
||||
else
|
||||
current_partition = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
|
||||
end
|
||||
else
|
||||
if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
|
||||
current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
|
||||
end
|
||||
end
|
||||
other_partition = current_partition == boot_envvar1_partition_two and boot_envvar1_partition_one or boot_envvar1_partition_two
|
||||
end
|
||||
end
|
||||
|
||||
function index()
|
||||
entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90)
|
||||
entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot"))
|
||||
-- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end
|
||||
entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot"))
|
||||
entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff"))
|
||||
end
|
||||
|
||||
function action_reboot()
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
luci.template.render("admin_system/applyreboot", {
|
||||
title = luci.i18n.translate("Rebooting..."),
|
||||
msg = luci.i18n.translate("The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
|
||||
addr = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
|
||||
})
|
||||
luci.sys.reboot()
|
||||
end
|
||||
|
||||
function action_altreboot()
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
local zyxelFlagPartition, zyxelBootFlag, zyxelNewBootFlag, errorCode, curEnvSetting, newEnvSetting
|
||||
errorMessage = ""
|
||||
errorCode = 0
|
||||
if luci.http.formvalue("cancel") then
|
||||
luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
|
||||
-- luci.template.render("advanced_reboot/advanced_reboot",{
|
||||
-- device_name=device_name,
|
||||
-- boot_envvar1_partition_one=boot_envvar1_partition_one,
|
||||
-- partition_one_os=partition_one_os,
|
||||
-- boot_envvar1_partition_two=boot_envvar1_partition_two,
|
||||
-- partition_two_os=partition_two_os,
|
||||
-- current_partition=current_partition,
|
||||
-- errorMessage = luci.i18n.translate("Alternative reboot cancelled.")})
|
||||
return
|
||||
end
|
||||
local step = tonumber(luci.http.formvalue("step") or 1)
|
||||
if step == 1 then
|
||||
if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
|
||||
luci.template.render("advanced_reboot/alternative_reboot",{})
|
||||
else
|
||||
luci.template.render("advanced_reboot/advanced_reboot",{errorMessage = luci.i18n.translate("No access to fw_printenv or fw_printenv!")})
|
||||
end
|
||||
elseif step == 2 then
|
||||
if boot_envvar1 or boot_envvar2 then -- Linksys devices
|
||||
if boot_envvar1 then
|
||||
curEnvSetting = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
|
||||
if not curEnvSetting then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ". "
|
||||
luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ".")
|
||||
else
|
||||
newEnvSetting = curEnvSetting == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
|
||||
errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. newEnvSetting)
|
||||
if errorCode ~= 0 then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
|
||||
luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
|
||||
end
|
||||
end
|
||||
end
|
||||
if boot_envvar2 then
|
||||
curEnvSetting = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2))
|
||||
if not curEnvSetting then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ". "
|
||||
luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ".")
|
||||
else
|
||||
newEnvSetting = curEnvSetting == boot_envvar2_partition_one and boot_envvar2_partition_two or boot_envvar2_partition_one
|
||||
errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. newEnvSetting .. "'")
|
||||
if errorCode ~= 0 then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
|
||||
luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
|
||||
end
|
||||
end
|
||||
end
|
||||
else -- NetGear device
|
||||
if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
|
||||
if not zyxelFlagPartition then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
|
||||
luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
|
||||
else
|
||||
zyxelBootFlag = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
|
||||
zyxelNewBootFlag = zyxelBootFlag and zyxelBootFlag == 1 and "\\xff" or "\\x01"
|
||||
if zyxelNewBootFlag then
|
||||
errorCode = luci.sys.call("printf \"" .. zyxelNewBootFlag .. "\" >" .. zyxelFlagPartition )
|
||||
if errorCode ~= 0 then
|
||||
errorMessage = errorMessage .. luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ". "
|
||||
luci.util.perror(luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ".")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if errorMessage == "" then
|
||||
luci.template.render("admin_system/applyreboot", {
|
||||
title = luci.i18n.translate("Rebooting..."),
|
||||
msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
|
||||
addr = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
|
||||
})
|
||||
luci.sys.reboot()
|
||||
else
|
||||
luci.template.render("advanced_reboot/advanced_reboot",{
|
||||
device_name=device_name,
|
||||
boot_envvar1_partition_one=boot_envvar1_partition_one,
|
||||
partition_one_os=partition_one_os,
|
||||
boot_envvar1_partition_two=boot_envvar1_partition_two,
|
||||
partition_two_os=partition_two_os,
|
||||
current_partition=current_partition,
|
||||
errorMessage = errorMessage})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function action_poweroff()
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
if luci.http.formvalue("cancel") then
|
||||
luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
|
||||
return
|
||||
end
|
||||
local step = tonumber(luci.http.formvalue("step") or 1)
|
||||
if step == 1 then
|
||||
if nixio.fs.access("/sbin/poweroff") then
|
||||
luci.template.render("advanced_reboot/power_off",{})
|
||||
else
|
||||
luci.template.render("advanced_reboot/advanced_reboot",{})
|
||||
end
|
||||
elseif step == 2 then
|
||||
luci.template.render("admin_system/applyreboot", {
|
||||
title = luci.i18n.translate("Shutting down..."),
|
||||
msg = luci.i18n.translate("The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
|
||||
addr = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
|
||||
})
|
||||
luci.sys.call("/sbin/poweroff")
|
||||
end
|
||||
end
|
@ -0,0 +1,96 @@
|
||||
<%#
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
|
||||
Copyright 2017 Stan Grishin <stangri@melmac.net>
|
||||
Licensed to the public under the Apache License 2.0.
|
||||
-%>
|
||||
|
||||
<%+header%>
|
||||
|
||||
<h2 name="content"><%:Advanced Reboot%></h2>
|
||||
<br />
|
||||
|
||||
<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
|
||||
<p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
|
||||
<%- end -%>
|
||||
|
||||
<%- if errorMessage and errorMessage ~= "" then -%>
|
||||
<p class="alert-message warning"><%:ERROR: %><%=errorMessage%></p>
|
||||
<%- end -%>
|
||||
|
||||
<%- if device_name then -%>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%=device_name%><%: Partitions%></legend>
|
||||
<table class="cbi-section-table" id="partitions">
|
||||
<tr class="cbi-section-table-titles">
|
||||
<th class="cbi-section-table-cell"><%:Partition%></th>
|
||||
<th class="cbi-section-table-cell"><%:Status%></th>
|
||||
<th class="cbi-section-table-cell"><%:Firmware/OS (Kernel)%></th>
|
||||
<th class="cbi-section-table-cell"><%:Action%></th>
|
||||
</tr>
|
||||
<tr class="cbi-section-table-row">
|
||||
<td>
|
||||
<%=string.format("%X", boot_envvar1_partition_one)%>
|
||||
</td>
|
||||
<td>
|
||||
<%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
|
||||
</td>
|
||||
<td>
|
||||
<%=partition_one_os%>
|
||||
</td>
|
||||
<td>
|
||||
<%- if boot_envvar1_partition_one == current_partition then -%>
|
||||
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
|
||||
</form>
|
||||
<%- else -%>
|
||||
<form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
|
||||
</form>
|
||||
<%- end -%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="cbi-section-table-row">
|
||||
<td>
|
||||
<%=string.format("%X", boot_envvar1_partition_two)%>
|
||||
</td>
|
||||
<td>
|
||||
<%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
|
||||
</td>
|
||||
<td>
|
||||
<%=partition_two_os%>
|
||||
</td>
|
||||
<td>
|
||||
<%- if boot_envvar1_partition_two == current_partition then -%>
|
||||
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
|
||||
</form>
|
||||
<%- else -%>
|
||||
<form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
|
||||
</form>
|
||||
<%- end -%>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<%- else -%>
|
||||
<p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p>
|
||||
<%- end -%>
|
||||
|
||||
<hr />
|
||||
|
||||
<%- if nixio.fs.access("/sbin/poweroff") then -%>
|
||||
<form method="post" action="<%=url('admin/system/advanced_reboot/power_off')%>">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Perform power off...%>" />
|
||||
</form>
|
||||
<%- else -%>
|
||||
<p class="alert-message warning"><%:Warning: This system does not support powering off!%></p>
|
||||
<%- end -%>
|
||||
|
||||
<%+footer%>
|
@ -0,0 +1,29 @@
|
||||
<%#
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
|
||||
Copyright 2017 Stan Grishin <stangri@melmac.net>
|
||||
Licensed to the public under the Apache License 2.0.
|
||||
-%>
|
||||
|
||||
<%+header%>
|
||||
|
||||
<h2 name="content"><%:Reboot Device to an Alternative Partition%> - <%:Confirm%></h2>
|
||||
<p>
|
||||
<%_ WARNING: An alternative partition might have its own settings and completely different firmware.<br /><br />
|
||||
As your network configuration and WiFi SSID/password on alternative partition might be different,
|
||||
you might have to adjust your computer settings to be able to access your device once it reboots.<br /><br />
|
||||
Please also be aware that alternative partition firmware might not provide an easy way to switch active partition
|
||||
and boot back to the currently active partition.<br /><br />
|
||||
Click "Proceed" below to reboot device to an alternative partition. %>
|
||||
</p>
|
||||
|
||||
<div class="cbi-page-actions right">
|
||||
<form class="inline" action="<%=REQUEST_URI%>" method="post">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input type="hidden" name="step" value="2" />
|
||||
<input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
|
||||
<input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<%+footer%>
|
@ -0,0 +1,25 @@
|
||||
<%#
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
|
||||
Copyright 2017 Stan Grishin <stangri@melmac.net>
|
||||
Licensed to the public under the Apache License 2.0.
|
||||
-%>
|
||||
|
||||
<%+header%>
|
||||
|
||||
<h2 name="content"><%:Power Off Device%> - <%:Confirm%></h2>
|
||||
<p>
|
||||
<%_ WARNING: Power off might result in a reboot on a device which doesn't support power off.<br /><br />
|
||||
Click "Proceed" below to power off your device. %>
|
||||
</p>
|
||||
|
||||
<div class="cbi-page-actions right">
|
||||
<form class="inline" action="<%=REQUEST_URI%>" method="post">
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input type="hidden" name="step" value="2" />
|
||||
<input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
|
||||
<input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<%+footer%>
|
163
applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
Normal file
163
applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
Normal file
@ -0,0 +1,163 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: LuCI: advanced-reboot\n"
|
||||
"POT-Creation-Date: 2017-11-30 15:20+0300\n"
|
||||
"PO-Revision-Date: 2018-01-05 19:53+0300\n"
|
||||
"Language-Team: http://cyber-place.ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Language: ru\n"
|
||||
|
||||
msgid "Action"
|
||||
msgstr "Действие"
|
||||
|
||||
msgid "Advanced Reboot"
|
||||
msgstr "Дополнительная перезагрузка"
|
||||
|
||||
msgid "Alternative"
|
||||
msgstr "Альтернатива"
|
||||
|
||||
msgid "Alternative reboot cancelled."
|
||||
msgstr "Альтернативная перезагрузка отменена."
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr "Подтвердить"
|
||||
|
||||
msgid "Current"
|
||||
msgstr "Текущий"
|
||||
|
||||
msgid "ERROR:"
|
||||
msgstr "ОШИБКА:"
|
||||
|
||||
msgid "Firmware/OS (Kernel)"
|
||||
msgstr "Прошивка/ОС (Ядро)"
|
||||
|
||||
msgid "No access to fw_printenv or fw_printenv!"
|
||||
msgstr "Нет доступа к fw_printenv или fw_printenv!"
|
||||
|
||||
msgid "Partition"
|
||||
msgstr "Раздел"
|
||||
|
||||
msgid "Partitions"
|
||||
msgstr "Разделы"
|
||||
|
||||
msgid "Perform power off..."
|
||||
msgstr "Выполнить отключение..."
|
||||
|
||||
msgid "Power Off Device"
|
||||
msgstr "Отключить питание устройства"
|
||||
|
||||
msgid "Proceed"
|
||||
msgstr "Продолжить"
|
||||
|
||||
msgid "Reboot Device to an Alternative Partition"
|
||||
msgstr "Перезагрузить устройство в альтернативный раздел"
|
||||
|
||||
msgid "Reboot to alternative partition..."
|
||||
msgstr "Перезагрузить до альтернативного раздела..."
|
||||
|
||||
msgid "Reboot to current partition"
|
||||
msgstr "Перезагрузка к текущему разделу"
|
||||
|
||||
msgid "Rebooting..."
|
||||
msgstr "Перезагрузка..."
|
||||
|
||||
msgid "Shutting down..."
|
||||
msgstr "Отключается..."
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Состояние"
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
|
||||
"few minutes before you try to reconnect. It might be necessary to renew the "
|
||||
"address of your computer to reach the device again, depending on your "
|
||||
"settings."
|
||||
msgstr ""
|
||||
"Система перезагружается сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /"
|
||||
"> Подождите несколько минут, прежде чем попытаться установить соединение "
|
||||
"снова. Возможно, потребуется обновить адрес компьютера для повторного "
|
||||
"доступа к устройству в зависимости от ваших настроек."
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
|
||||
"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
"Система перезагружается на альтернативный раздел сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ "
|
||||
"ПИТАНИЕ УСТРОЙСТВА!<br /> Подождите несколько минут, прежде чем попытаться "
|
||||
"установить соединение снова. Возможно, потребуется обновить адрес компьютера "
|
||||
"для повторного доступа к устройству в зависимости от ваших настроек."
|
||||
|
||||
msgid ""
|
||||
"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
"Система сейчас отключается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /> "
|
||||
"Возможно, потребуется обновить адрес компьютера для повторного доступа к "
|
||||
"устройству в зависимости от настроек."
|
||||
|
||||
msgid "Unable to find Dual Boot Flag Partition."
|
||||
msgstr "Невозможно найти Dual Boot раздел."
|
||||
|
||||
msgid "Unable to obtain firmware environment variable"
|
||||
msgstr "Невозможно получить переменную среды прошивки"
|
||||
|
||||
msgid "Unable to set Dual Boot Flag Partition entry for partition"
|
||||
msgstr "Невозможно использовать Dual Boot раздел."
|
||||
|
||||
msgid "Unable to set firmware environment variable"
|
||||
msgstr "Невозможно установить переменную среды прошивки"
|
||||
|
||||
msgid ""
|
||||
"WARNING: An alternative partition might have its own settings and completely "
|
||||
"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
|
||||
"password on alternative partition might be different, you might have to "
|
||||
"adjust your computer settings to be able to access your device once it "
|
||||
"reboots.<br /><br /> Please also be aware that alternative partition "
|
||||
"firmware might not provide an easy way to switch active partition and boot "
|
||||
"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
|
||||
"to reboot device to an alternative partition."
|
||||
msgstr ""
|
||||
"ВНИМАНИЕ: альтернативный раздел может иметь собственные настройки и "
|
||||
"совершенно другую прошивку.<br /><br /> Поскольку ваши настройки сети и WiFi "
|
||||
"SSID/пароли на альтернативных разделах могут отличаться, может потребоваться "
|
||||
"изменить настройки компьютера, чтобы иметь возможность получить доступ к "
|
||||
"устройству после перезагрузки .<br /><br /> Помните также, что "
|
||||
"альтернативный раздел с прошивкой может не обеспечить простой способ "
|
||||
"переключения активного раздела и загрузки обратно в текущий активный раздел."
|
||||
"<br /><br /> Нажмите \"Продолжить\" ниже, чтобы перезагрузить устройство в "
|
||||
"альтернативный раздел."
|
||||
|
||||
msgid ""
|
||||
"WARNING: Power off might result in a reboot on a device which doesn't "
|
||||
"support power off.<br /><br /> Click \"Proceed\" below to power off your "
|
||||
"device."
|
||||
msgstr ""
|
||||
"ВНИМАНИЕ: Отключение питания может привести к перезагрузке устройства, "
|
||||
"которое не поддерживает выключение питания.<br /><br /> Нажмите \"Продолжить"
|
||||
"\" ниже, чтобы выключить устройство."
|
||||
|
||||
msgid "Warning: There are unsaved changes that will get lost on reboot!"
|
||||
msgstr ""
|
||||
"Внимание: Есть несохраненные изменения, которые будут потеряны при "
|
||||
"перезагрузке!"
|
||||
|
||||
msgid "Warning: This system does not have two partitions!"
|
||||
msgstr "Внимание: Эта система не имеет двух разделов!"
|
||||
|
||||
msgid "Warning: This system does not support powering off!"
|
||||
msgstr "Внимание: Эта система не поддерживает отключение питания!"
|
||||
|
||||
msgid "to"
|
||||
msgstr ""
|
133
applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
Normal file
133
applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
Normal file
@ -0,0 +1,133 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "Action"
|
||||
msgstr "Åtgärd"
|
||||
|
||||
msgid "Advanced Reboot"
|
||||
msgstr "Avancerad omstart"
|
||||
|
||||
msgid "Alternative"
|
||||
msgstr "Alternativ"
|
||||
|
||||
msgid "Alternative reboot cancelled."
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr "Bekräfta"
|
||||
|
||||
msgid "Current"
|
||||
msgstr "Nuvarande"
|
||||
|
||||
msgid "ERROR:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Firmware/OS (Kernel)"
|
||||
msgstr "Inre mjukvara/OS (Kärna)"
|
||||
|
||||
msgid "No access to fw_printenv or fw_printenv!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Partition"
|
||||
msgstr "Partition"
|
||||
|
||||
msgid "Partitions"
|
||||
msgstr "Partitioner"
|
||||
|
||||
msgid "Perform power off..."
|
||||
msgstr "Utför avstängning..."
|
||||
|
||||
msgid "Power Off Device"
|
||||
msgstr "Stäng av enhet"
|
||||
|
||||
msgid "Proceed"
|
||||
msgstr "Fortsätt"
|
||||
|
||||
msgid "Reboot Device to an Alternative Partition"
|
||||
msgstr "Starta om enheten till en alternativ partition"
|
||||
|
||||
msgid "Reboot to alternative partition..."
|
||||
msgstr "Starta om till alternativ partition..."
|
||||
|
||||
msgid "Reboot to current partition"
|
||||
msgstr "Starta om till nuvarande partition"
|
||||
|
||||
msgid "Rebooting..."
|
||||
msgstr "Startar om..."
|
||||
|
||||
msgid "Shutting down..."
|
||||
msgstr "Stänger av..."
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
|
||||
"few minutes before you try to reconnect. It might be necessary to renew the "
|
||||
"address of your computer to reach the device again, depending on your "
|
||||
"settings."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
|
||||
"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina "
|
||||
"inställningar så kan det vara nödvändigt att förnya din dators adress för "
|
||||
"att nå enheten igen."
|
||||
|
||||
msgid "Unable to find Dual Boot Flag Partition."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to obtain firmware environment variable"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to set Dual Boot Flag Partition entry for partition"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to set firmware environment variable"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"WARNING: An alternative partition might have its own settings and completely "
|
||||
"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
|
||||
"password on alternative partition might be different, you might have to "
|
||||
"adjust your computer settings to be able to access your device once it "
|
||||
"reboots.<br /><br /> Please also be aware that alternative partition "
|
||||
"firmware might not provide an easy way to switch active partition and boot "
|
||||
"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
|
||||
"to reboot device to an alternative partition."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"WARNING: Power off might result in a reboot on a device which doesn't "
|
||||
"support power off.<br /><br /> Click \"Proceed\" below to power off your "
|
||||
"device."
|
||||
msgstr ""
|
||||
"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har "
|
||||
"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
|
||||
"stänga av din enhet."
|
||||
|
||||
msgid "Warning: There are unsaved changes that will get lost on reboot!"
|
||||
msgstr ""
|
||||
"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
|
||||
|
||||
msgid "Warning: This system does not have two partitions!"
|
||||
msgstr "Varning: Det här systemet har inte två partitioner!"
|
||||
|
||||
msgid "Warning: This system does not support powering off!"
|
||||
msgstr "Varning: Det här systemet har inte stöd för avstängning!"
|
||||
|
||||
msgid "to"
|
||||
msgstr ""
|
@ -0,0 +1,126 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced Reboot"
|
||||
msgstr ""
|
||||
|
||||
msgid "Alternative"
|
||||
msgstr ""
|
||||
|
||||
msgid "Alternative reboot cancelled."
|
||||
msgstr ""
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
msgid "ERROR:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Firmware/OS (Kernel)"
|
||||
msgstr ""
|
||||
|
||||
msgid "No access to fw_printenv or fw_printenv!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Partition"
|
||||
msgstr ""
|
||||
|
||||
msgid "Partitions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Perform power off..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Power Off Device"
|
||||
msgstr ""
|
||||
|
||||
msgid "Proceed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot Device to an Alternative Partition"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot to alternative partition..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot to current partition"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rebooting..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Shutting down..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
|
||||
"few minutes before you try to reconnect. It might be necessary to renew the "
|
||||
"address of your computer to reach the device again, depending on your "
|
||||
"settings."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
|
||||
"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
|
||||
"might be necessary to renew the address of your computer to reach the device "
|
||||
"again, depending on your settings."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to find Dual Boot Flag Partition."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to obtain firmware environment variable"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to set Dual Boot Flag Partition entry for partition"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unable to set firmware environment variable"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"WARNING: An alternative partition might have its own settings and completely "
|
||||
"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
|
||||
"password on alternative partition might be different, you might have to "
|
||||
"adjust your computer settings to be able to access your device once it "
|
||||
"reboots.<br /><br /> Please also be aware that alternative partition "
|
||||
"firmware might not provide an easy way to switch active partition and boot "
|
||||
"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
|
||||
"to reboot device to an alternative partition."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"WARNING: Power off might result in a reboot on a device which doesn't "
|
||||
"support power off.<br /><br /> Click \"Proceed\" below to power off your "
|
||||
"device."
|
||||
msgstr ""
|
||||
|
||||
msgid "Warning: There are unsaved changes that will get lost on reboot!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Warning: This system does not have two partitions!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Warning: This system does not support powering off!"
|
||||
msgstr ""
|
||||
|
||||
msgid "to"
|
||||
msgstr ""
|
14
applications/luci-app-ahcp/Makefile
Normal file
14
applications/luci-app-ahcp/Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
#
|
||||
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI Support for AHCPd
|
||||
LUCI_DEPENDS:=+ahcpd
|
||||
|
||||
include ../../luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
49
applications/luci-app-ahcp/luasrc/controller/ahcp.lua
Normal file
49
applications/luci-app-ahcp/luasrc/controller/ahcp.lua
Normal file
@ -0,0 +1,49 @@
|
||||
-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module("luci.controller.ahcp", package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/ahcpd") then
|
||||
return
|
||||
end
|
||||
|
||||
entry({"admin", "network", "ahcpd"}, cbi("ahcp"), _("AHCP Server"), 90)
|
||||
entry({"admin", "network", "ahcpd", "status"}, call("ahcp_status"))
|
||||
end
|
||||
|
||||
function ahcp_status()
|
||||
local nfs = require "nixio.fs"
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
local lsd = uci:get_first("ahcpd", "ahcpd", "lease_dir") or "/var/lib/leases"
|
||||
local idf = uci:get_first("ahcpd", "ahcpd", "id_file") or "/var/lib/ahcpd-unique-id"
|
||||
|
||||
local rv = {
|
||||
uid = "00:00:00:00:00:00:00:00",
|
||||
leases = { }
|
||||
}
|
||||
|
||||
idf = nfs.readfile(idf)
|
||||
if idf and #idf == 8 then
|
||||
rv.uid = "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X" %{ idf:byte(1, 8) }
|
||||
end
|
||||
|
||||
local itr = nfs.dir(lsd)
|
||||
if itr then
|
||||
local addr
|
||||
for addr in itr do
|
||||
if addr:match("^%d+%.%d+%.%d+%.%d+$") then
|
||||
local s = nfs.stat(lsd .. "/" .. addr)
|
||||
rv.leases[#rv.leases+1] = {
|
||||
addr = addr,
|
||||
age = s and (os.time() - s.mtime) or 0
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.sort(rv.leases, function(a, b) return a.age < b.age end)
|
||||
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(rv)
|
||||
end
|
110
applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua
Normal file
110
applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua
Normal file
@ -0,0 +1,110 @@
|
||||
-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
m = Map("ahcpd", translate("AHCP Server"), translate("AHCP is an autoconfiguration protocol " ..
|
||||
"for IPv6 and dual-stack IPv6/IPv4 networks designed to be used in place of router " ..
|
||||
"discovery or DHCP on networks where it is difficult or impossible to configure a " ..
|
||||
"server within every link-layer broadcast domain, for example mobile ad-hoc networks."))
|
||||
|
||||
|
||||
m:section(SimpleSection).template = "ahcp_status"
|
||||
|
||||
s = m:section(TypedSection, "ahcpd")
|
||||
s:tab("general", translate("General Setup"))
|
||||
s:tab("advanced", translate("Advanced Settings"))
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
|
||||
mode = s:taboption("general", ListValue, "mode", translate("Operation mode"))
|
||||
mode:value("server", translate("Server"))
|
||||
mode:value("forwarder", translate("Forwarder"))
|
||||
|
||||
net = s:taboption("general", Value, "interface", translate("Served interfaces"))
|
||||
net.template = "cbi/network_netlist"
|
||||
net.widget = "checkbox"
|
||||
net.nocreate = true
|
||||
|
||||
function net.cfgvalue(self, section)
|
||||
return m.uci:get("ahcpd", section, "interface")
|
||||
end
|
||||
|
||||
pfx = s:taboption("general", DynamicList, "prefix", translate("Announced prefixes"),
|
||||
translate("Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"))
|
||||
pfx.optional = true
|
||||
pfx.datatype = "ipaddr"
|
||||
pfx:depends("mode", "server")
|
||||
|
||||
nss = s:taboption("general", DynamicList, "name_server", translate("Announced DNS servers"),
|
||||
translate("Specifies the announced IPv4 and IPv6 name servers"))
|
||||
nss.optional = true
|
||||
nss.datatype = "ipaddr"
|
||||
nss:depends("mode", "server")
|
||||
|
||||
ntp = s:taboption("general", DynamicList, "ntp_server", translate("Announced NTP servers"),
|
||||
translate("Specifies the announced IPv4 and IPv6 NTP servers"))
|
||||
ntp.optional = true
|
||||
ntp.datatype = "ipaddr"
|
||||
ntp:depends("mode", "server")
|
||||
|
||||
mca = s:taboption("general", Value, "multicast_address", translate("Multicast address"))
|
||||
mca.optional = true
|
||||
mca.placeholder = "ff02::cca6:c0f9:e182:5359"
|
||||
mca.datatype = "ip6addr"
|
||||
|
||||
port = s:taboption("general", Value, "port", translate("Port"))
|
||||
port.optional = true
|
||||
port.placeholder = 5359
|
||||
port.datatype = "port"
|
||||
|
||||
fam = s:taboption("general", ListValue, "_family", translate("Protocol family"))
|
||||
fam:value("", translate("IPv4 and IPv6"))
|
||||
fam:value("ipv4", translate("IPv4 only"))
|
||||
fam:value("ipv6", translate("IPv6 only"))
|
||||
|
||||
function fam.cfgvalue(self, section)
|
||||
local v4 = m.uci:get_bool("ahcpd", section, "ipv4_only")
|
||||
local v6 = m.uci:get_bool("ahcpd", section, "ipv6_only")
|
||||
if v4 then
|
||||
return "ipv4"
|
||||
elseif v6 then
|
||||
return "ipv6"
|
||||
end
|
||||
return ""
|
||||
end
|
||||
|
||||
function fam.write(self, section, value)
|
||||
if value == "ipv4" then
|
||||
m.uci:set("ahcpd", section, "ipv4_only", "true")
|
||||
m.uci:delete("ahcpd", section, "ipv6_only")
|
||||
elseif value == "ipv6" then
|
||||
m.uci:set("ahcpd", section, "ipv6_only", "true")
|
||||
m.uci:delete("ahcpd", section, "ipv4_only")
|
||||
end
|
||||
end
|
||||
|
||||
function fam.remove(self, section)
|
||||
m.uci:delete("ahcpd", section, "ipv4_only")
|
||||
m.uci:delete("ahcpd", section, "ipv6_only")
|
||||
end
|
||||
|
||||
ltime = s:taboption("general", Value, "lease_time", translate("Lease validity time"))
|
||||
ltime.optional = true
|
||||
ltime.placeholder = 3666
|
||||
ltime.datatype = "uinteger"
|
||||
|
||||
|
||||
ld = s:taboption("advanced", Value, "lease_dir", translate("Lease directory"))
|
||||
ld.datatype = "directory"
|
||||
ld.placeholder = "/var/lib/leases"
|
||||
|
||||
id = s:taboption("advanced", Value, "id_file", translate("Unique ID file"))
|
||||
--id.datatype = "file"
|
||||
id.placeholder = "/var/lib/ahcpd-unique-id"
|
||||
|
||||
log = s:taboption("advanced", Value, "log_file", translate("Log file"))
|
||||
--log.datatype = "file"
|
||||
log.placeholder = "/var/log/ahcpd.log"
|
||||
|
||||
|
||||
return m
|
@ -0,0 +1 @@
|
||||
<%+ahcp_status%>
|
53
applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
Normal file
53
applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
Normal file
@ -0,0 +1,53 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(5, '<%=url('admin/network/ahcpd/status')%>', null,
|
||||
function(x, st)
|
||||
{
|
||||
var tb = document.getElementById('ahcpd_status_table');
|
||||
var tx = document.getElementById('ahcpd_status_text');
|
||||
if (st && tb && tx)
|
||||
{
|
||||
/* clear all rows */
|
||||
while( tb.rows.length > 1 )
|
||||
tb.deleteRow(1);
|
||||
|
||||
for( var i = 0; i < st.leases.length; i++ )
|
||||
{
|
||||
var tr = tb.insertRow(-1);
|
||||
tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
|
||||
|
||||
tr.insertCell(-1).innerHTML = st.leases[i].addr;
|
||||
tr.insertCell(-1).innerHTML = String.format('%t', st.leases[i].age);
|
||||
}
|
||||
|
||||
if( tb.rows.length == 1 )
|
||||
{
|
||||
var tr = tb.insertRow(-1);
|
||||
tr.className = 'cbi-section-table-row';
|
||||
|
||||
var td = tr.insertCell(-1);
|
||||
td.colSpan = 2;
|
||||
td.innerHTML = '<em><br /><%:There are no active leases.%></em>';
|
||||
}
|
||||
|
||||
if( st.uid == '00:00:00:00:00:00:00:00' )
|
||||
tx.innerHTML = '<%:The AHCP Service is not running.%>';
|
||||
else
|
||||
tx.innerHTML = String.format('<%:The AHCP Service is running with ID %s.%>', st.uid);
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]></script>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Active AHCP Leases%></legend>
|
||||
<p id="ahcpd_status_text"></p>
|
||||
<table class="cbi-section-table" id="ahcpd_status_table">
|
||||
<tr class="cbi-section-table-titles">
|
||||
<th class="cbi-section-table-cell"><%:Address%></th>
|
||||
<th class="cbi-section-table-cell"><%:Age%></th>
|
||||
</tr>
|
||||
<tr class="cbi-section-table-row">
|
||||
<td colspan="5"><em><br /><%:Collecting data...%></em></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
117
applications/luci-app-ahcp/po/ca/ahcp.po
Normal file
117
applications/luci-app-ahcp/po/ca/ahcp.po
Normal file
@ -0,0 +1,117 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2014-06-02 21:34+0200\n"
|
||||
"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Servidor AHCP"
|
||||
|
||||
# Minor misspelling corrections
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP és un protocol de configuració automàtica per IPv6 i xarxes de pila "
|
||||
"dual IPv6/IPv4 dissenyat per fer servir en lloc del descobriment de rutes o "
|
||||
"DHCP en xarxes on es difícil o impossible configurar un servidor dins de "
|
||||
"tots els dominis de difusió a la capa d'enllaç, per exemple xarxes mòbils ad-"
|
||||
"hoc."
|
||||
|
||||
# apòstrof+acrònims http://ca.wikipedia.org/wiki/Ap%C3%B2strof#Observacions
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Leases actius d'AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adreça"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configuració avançada"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Edat"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Servidors DNS anunciats"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Servidors NTP anunciats"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefixos anunciats"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Recopilant informació..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Retransmissor"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Configuració general"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 i IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Només IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Només IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Directori d'arrendament"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Duració d'arrendament"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Fitxer de registre"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Adreça de difusió selectiva"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Mode d'operació"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Família de protocol"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfícies servides"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Especifica els servidors NTP IPv4 i IPv6 anunciats"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Especifica els servidors de noms IPv4 i IPv6 anunciats"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Especifica els prefixos de xarxa IPv4 i IPv6 anunciats en notació CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "El servidor AHCP no està funcionant."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "El servei AHCP està funcionant amb el ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "No hi ha arrendaments actius."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Fitxer ID únic"
|
114
applications/luci-app-ahcp/po/cs/ahcp.po
Normal file
114
applications/luci-app-ahcp/po/cs/ahcp.po
Normal file
@ -0,0 +1,114 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2014-04-23 23:01+0200\n"
|
||||
"Last-Translator: koli <lukas.koluch@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Server"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP je autokonfigurační protokol pro IPv6 a dual-stack IPv6/IPv4 sítě, "
|
||||
"vytvořený pro použití vedle funkcí router discovery (Vyhledávání směrovačů "
|
||||
"pomocí ICMP zpráv) a DHCP na sítích kde je obtížné či nemožné nakonfigurovat "
|
||||
"server v každé vrstvě broadcast domény, například mobilní ad-hoc sítě."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktivní AHCP zapůjčení"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adresa"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Pokročilé nastavení"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Stáří"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Oznámené DNS servery"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Oznámené NTP servery"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Oznámené předčíslí"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Probíhá shromažďování dat..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Přesměrování"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Obecné nastavení"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 a IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "pouze IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Pouze IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Zapůjčené adresáře"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Doba platnosti zapujčení"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Soubor protokolu"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Vícesměrové adresy"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Pracovní režim"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Rodina protokolů"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Obsluhované rozhraní"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Servr"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Specifikuje ohlášené IPv4 a IPv6 NTP servery"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Specifikuje ohlášené IPv4 a IPv6 názvové servery"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Specifikuje ohlášené IPv4 a IPv6 sítě předpony v CIDR notaci"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Služba AHCP neběží"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Služba AHCP je spuštěna s ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Neexistují žádná aktivní pronajmutí."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Jedinečný ID soubor"
|
115
applications/luci-app-ahcp/po/de/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/de/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-01-30 18:21+0200\n"
|
||||
"Last-Translator: DAC324 <gerd_roethig@web.de>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Server"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP ist ein Autokonfigurationsprotokoll für IPv6- und IPv4/IPv6 Dualstack-"
|
||||
"Netzwerke. Es ist darauf ausgelegt anstelle von Router Advertisements und "
|
||||
"DHCP-Servern in Ad-Hoc Netzwerken eingesetzt zu werden."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktive AHCP-Leases"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Erweiterte Einstellungen"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Alter"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Angekündigte DNS-Server"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Angekündigte NTP-Server"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Angekündigte Prefixe"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Sammle Daten..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Forwarder"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Allgemeine Einstellungen"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 und IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "nur IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "nur IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Lease-Verzeichnis"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Lease-Gültigkeitsdauer"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Protokolldatei"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Mutlicast-Adresse"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Betriebsmodus"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protokollfamilie"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Verwendete Schnittstellen"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Konfiguriert die bekannt gegebenen IPv4- und IPv6-NTP-Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Konfiguriert die bekannt gegebenen IPv4- und IPv6-DNS-Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Konfiguriert die bekannt gegebenen IPv4- und IPv6-Netzwerkprefixe. Angabe in "
|
||||
"CIDR-Notation."
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Der AHCP-Dienst läuft nicht."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Der AHCP-Dienst läuft mit ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Es gibt keine aktiven Leases."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "UID-Datei"
|
114
applications/luci-app-ahcp/po/el/ahcp.po
Normal file
114
applications/luci-app-ahcp/po/el/ahcp.po
Normal file
@ -0,0 +1,114 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-03-18 16:25+0200\n"
|
||||
"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Εξυπηρετητής AHCP"
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Ενεργά AHCP Leases"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Διεύθυνση"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Συλλέγονται δεδομένα..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Προωθητής"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Γενικές ρυθμίσεις"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 και IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "μόνο IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "μόνο IPv6"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Lease directory"
|
||||
msgstr "Κατάλογος leases"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Χρόνος εγκυρότητας lease"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Αρχείο καταγραφής"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Διεύθυνση multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Θύρα"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Οικογένεια πρωτοκόλλου"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Εξυπηρετούμενες διεπαφές"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Εξυπηρετητής"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Καθορίζει τους εξυπηρετητές NTP σε IPv4 και IPv6 που ανακοινώνονται"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Καθορίζει τους εξυπηρετητές DNS σε IPv4 και IPv6 που ανακοινώνονται"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Καθορίζει τα προθέματα διευθύνσεων IPv4 και IPv6 που ανακοινώνονται, σε "
|
||||
"μορφή CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "There are no active leases."
|
||||
msgstr "Δεν υπάρχουν ενεργά leases"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Αρχείο μοναδικού αναγνωριστικού"
|
115
applications/luci-app-ahcp/po/en/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/en/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-04-15 11:31+0200\n"
|
||||
"Last-Translator: madanadam <madanadam@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Server"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery and DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Active AHCP Leases"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Address"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Advanced Settings"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Age"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Announced DNS servers"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Announced NTP servers"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Announced prefixes"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Collecting data..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Forwarder"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "General Setup"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 and IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "IPv4 only"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "IPv6 only"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Lease directory"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Lease validity time"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Log file"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Multicast address"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Operation mode"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protocol family"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Served interfaces"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Specifies the announced IPv4 and IPv6 name servers"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "The AHCP Service is not running."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "The AHCP Service is running with ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "There are no active leases."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Unique ID file"
|
115
applications/luci-app-ahcp/po/es/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/es/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-09-14 19:30+0200\n"
|
||||
"Last-Translator: José Vicente <josevteg@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Servidor AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP es un protocolo de autoconfiguración para redes con IPv6 o duales IPv6/"
|
||||
"IPv4 diseñado para ser usado en lugar de router discovery o DHCP en redes en "
|
||||
"las que es difícil o imposible configurar un servidor en cada capa de enlace "
|
||||
"del dominio de propagación como las redes móviles ad-hoc."
|
||||
|
||||
# "Lease" en el sentido usado en DHCP no tiene una traducción clara en español y se puede usar la misma palabra en que en inglés.
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Cesiones activas AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configuración avanzada"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Vida"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Servidores DNS declarados"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Servidores NTP declarados"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefijos declarados"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Obteniendo datos..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Transmisor"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Configuración general"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 e IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Sólo IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Sólo IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Directorio de cesiones"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Tiempo de validez de la cesión"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Fichero de registro"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Dirección multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Modo de funcionamiento"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Puerto"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Familia de protocolos"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfaces configurados"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Especifica los servidores NTP IPv4 e IPv6 declarados"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Especifica los servidores de nombres IPv4 e IPv6 declarados"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Especifica los prefijos de red IPv4 e IPv6 declarados en notación CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "El Servicio AHCP no está funcionando."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "El Servicio AHCP está funcionando con el ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "No hay cesiones activas."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "ID único de fichero"
|
115
applications/luci-app-ahcp/po/fr/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/fr/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-11-06 13:06+0200\n"
|
||||
"Last-Translator: hogsim <hogsim@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Serveur AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP est un protocole d'auto-configuration pour les réseaux IPv6 et double-"
|
||||
"pile IPv6/IPv4, destiné à remplacer la recherche de routeur et le service "
|
||||
"DHCP sur des réseaux où il est difficile, voire impossible de configurer un "
|
||||
"tel serveur pour tous les domaines de diffusion au niveau lien, par exemple "
|
||||
"pour des réseaux ad-hoc mobiles."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Baux AHCP actifs"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Paramètres avancés"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Age"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Serveurs DNS publiés"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Serveurs NTP publiés"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Préfixes publiés"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Récupération des données…"
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Transmetteur"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Paramètres principaux"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 et IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "IPv4 seulement"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "IPv6 seulement"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Répertoire d'un bail"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Date de validité d'un bail"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Fichier journal"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Adresse multidiffusion"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Mode de fonctionnement"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Famille de protocole"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfaces gérés"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Serveur"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Décrit les serveurs NTP IPv4 et IPv6 publiés"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Décrit les serveurs de noms IPv4 et IPv6 publiés"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Décrit les préfixes réseaux IPv4 et IPv6 publiés en notation CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Le service AHCP n'est pas en fonctionnement."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Le service AHCP est en fonctionnement avec l'ID s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Il n'y a aucun bail actif."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Fichier de l'ID unique"
|
118
applications/luci-app-ahcp/po/he/ahcp.po
Normal file
118
applications/luci-app-ahcp/po/he/ahcp.po
Normal file
@ -0,0 +1,118 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-09-10 03:44+0200\n"
|
||||
"Last-Translator: Snoof <sagim9@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "שרת AHCP"
|
||||
|
||||
# מי שמבין את המונחים הטכניים שיעבור על זה ויתקן.
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP הוא פרוטוקול להגדרה אוטומטית של רשתות IPV6 ו- dual-stack IPv6/IPv4, אשר "
|
||||
"עוצב לשימוש כתחליף לגילוי נתבים ול- DHCP ברשתות שבהן קשה או בלתי אפשרי "
|
||||
"להגדיר שרת בתוך כל שם מתחם לשידור שכבת קישור, לדוגמה רשתות אד-הוק ניידות."
|
||||
|
||||
#, fuzzy
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "החכרות AHCP קיימות"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "כתובת"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "הגדרות מתקדמות"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "גיל"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "שרתי DNS מוכרזים"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "שרתי NTP מוכרזים"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "קידומות מוכרזות"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "אוסף נתונים..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "התקנה כללית"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 ו- IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "IPv4 בלבד"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "IPv6 בלבד"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Lease directory"
|
||||
msgstr "ספריית החכרות"
|
||||
|
||||
# תו
|
||||
msgid "Lease validity time"
|
||||
msgstr "תוקף ההקצאה"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "קובץ רישום"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "כתובת Multicast"
|
||||
|
||||
# אפשר גם מצב פעולה
|
||||
msgid "Operation mode"
|
||||
msgstr "מצב הפעלה"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "פורט"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "משפחת פרוטוקולים"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "סיגמנטים מופעלים"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "שרת"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "שרתי NTP ברשתות IPV4 IPV6"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "שרתי DNS ברשתות IPV4 IPV6"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "קידומת שרתים (CIDR)"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "אין הקצאות פעילות."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "קובץ מזהה יחודי"
|
116
applications/luci-app-ahcp/po/hu/ahcp.po
Normal file
116
applications/luci-app-ahcp/po/hu/ahcp.po
Normal file
@ -0,0 +1,116 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-03-31 15:46+0200\n"
|
||||
"Last-Translator: juhosg <juhosg@openwrt.org>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP kiszolgáló"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"Az AHCP egy olyan automatikus konfigurációs protokoll IPv6 és kettős IPv6/"
|
||||
"IPv4 hálózatokhoz, mely a DHCP és a router dicovery protokoll helyett "
|
||||
"használható olyan hálózatokok ahol nehéz vagy lehetetlen beállítani külön "
|
||||
"kiszolgálót minden kapcsolati réteg tartományon belül, mint például a mobil "
|
||||
"eseti hálózatok."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktív AHCP bérletek"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Cím"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Haladó beállítások"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Kor"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Bejelentett névkiszolgálók"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Bejelentett NTP kiszolgálók"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Bejelentett előtagok"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Adatok összegyűjtése..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Továbbító"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Általános beállítások"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 és IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "csak IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "csak IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Bérlet könytár"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Bérlet érvényességi ideje"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Napló fájl"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Multicast cím"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Működési mód"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protokoll család"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Kiszolgált interfészek"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Kiszolgáló"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "A bejelentett IPv4 és IPv6 NTP kiszolgálók részletezése"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "A bejelentett IPv4 és IPv6 névkiszolgálók részletezése"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"A bejelentett IPv4 és IPv6 hálózati előtagok részletezése CIDR jelölésben"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Az AHCP szolgáltatás nem fut"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Az AHCP szolgáltatás fut, azonosítója:%s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Nincsenek aktív bérletek."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Egyedi azonosító fájl"
|
114
applications/luci-app-ahcp/po/it/ahcp.po
Normal file
114
applications/luci-app-ahcp/po/it/ahcp.po
Normal file
@ -0,0 +1,114 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-02-03 12:53+0200\n"
|
||||
"Last-Translator: Francesco <3gasas@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Server AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP è un protocollo di configurazione automatica per reti IPv6 e dual-stack "
|
||||
"IPv6/IPv4 progettato per essere usato al posto del router discovery e DHCP "
|
||||
"su reti dove è difficile o impossibile configurare un server all'interno di "
|
||||
"ogni dominio di broadcast, per esempio reti ad-hoc mobili."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Lease AHCP Attivi"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Indirizzo"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Impostazioni Avanzate"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Età"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Server DNS indicati"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Server NTP indicati"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefissi indicati"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Raccolta dei dati..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Mittente"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Setup Generale"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 e IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Solo IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Solo IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Directory di Lease"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Tempo di validità del Lease"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "File di log"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Indirizzo Multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Modalità di funzionamento"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protocollo famiglia"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfacce servite"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Specifica i server NTP IPv4 e IPv6 annunciati"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Specifica il server dei nomi IPv4 e IPv6"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Specifica i prefissi delle reti IPv4 e IPv6 in notazione CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Il servizio AHCP non è in esecuzione."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Il servizio AHCP è in esecuzione con ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Non ci sono leases attivi."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "File degli Unique ID"
|
117
applications/luci-app-ahcp/po/ja/ahcp.po
Normal file
117
applications/luci-app-ahcp/po/ja/ahcp.po
Normal file
@ -0,0 +1,117 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-04-19 07:54+0200\n"
|
||||
"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCPサーバー"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCPはIPv6及びIPv6/IPv4デュアルスタックを使用するネットワークにおいて、ルー"
|
||||
"ターディスカバリの代わりとして使用するためにデザインされた自動設定プロトコル"
|
||||
"です。また、AHCPはモバイル・アドホックネットワークのような、リンク層のドメイ"
|
||||
"ンブロードキャスト毎に設定を行うことが困難なネットワークでのDHCP機能としても"
|
||||
"使用することができます。"
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "有効なAHCPリース"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "アドレス"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "詳細設定"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Age"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "通知するDNSサーバー"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "通知するNTPサーバー"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "通知するプレフィクス"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "データ収集中です..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "転送"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "一般設定"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4及びIPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "IPv4のみ"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "IPv6のみ"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "リースファイル・ディレクトリ"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "リース有効時間"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "ログファイル"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "マルチキャストアドレス"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "動作モード"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "ポート"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "プロトコルファミリ"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "対象インターフェース"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "サーバー"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "通知するNTPサーバーのIPv4及びIPv6アドレスを設定します"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "通知するDNSサーバーのIPv4及びIPv6アドレスを設定します"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"通知するIPv4及びIPv6アドレスのネットワーク・プレフィクスをCIDR形式で設定しま"
|
||||
"す"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "AHCP サービスは稼働していません。"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "AHCP サービスは稼働中です。(ID %s)"
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "有効なリースはありません。"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "ユニークIDファイル"
|
105
applications/luci-app-ahcp/po/ms/ahcp.po
Normal file
105
applications/luci-app-ahcp/po/ms/ahcp.po
Normal file
@ -0,0 +1,105 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr ""
|
||||
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Log file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr ""
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr ""
|
||||
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr ""
|
117
applications/luci-app-ahcp/po/no/ahcp.po
Normal file
117
applications/luci-app-ahcp/po/no/ahcp.po
Normal file
@ -0,0 +1,117 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2011-06-14 20:11+0200\n"
|
||||
"Last-Translator: protx <lars.hardy@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: no\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Server"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP er en autokonfigurasjon protokoll for IPv6, og dual-stack IPv6/IPv4 "
|
||||
"nettverk. Det er laget for bruk der DHCP og Ruter oppdagelse er problematisk "
|
||||
"eller umulig å bruke for hvert link-lags broadcast domene, f.eks. mobile ad-"
|
||||
"hoc nettverk."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktive AHCP Leier"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Avanserte Innstillinger"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Alder"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Annonserte DNS servere"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Annonserte NTP servere"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Annonserte prefikser"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Henter data..."
|
||||
|
||||
#, fuzzy
|
||||
msgid "Forwarder"
|
||||
msgstr "Sender"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Generelt Oppsett"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 og IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Kun IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Kun IPv6"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Lease directory"
|
||||
msgstr "Leie katalog"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Gyldig leietid"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Logg fil"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Multicast adresse"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Driftsmodus"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protokoll familie"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Served interfaces"
|
||||
msgstr "Utdelte grensesnitt"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Angir annonserte IPv4 og IPv6 NTP-servere"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Angir annonserte IPv4 og IPv6 navnetjenere"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Angir annonserte IPv4 og IPv6 nettverk prefikser i CIDR-notasjon"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Det er ingen aktive leieavtaler."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Unik ID fil"
|
115
applications/luci-app-ahcp/po/pl/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/pl/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-04-14 16:40+0200\n"
|
||||
"Last-Translator: Tomecki <przykryweczka@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Pootle 2.0.4\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Serwer AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP to protokół automatycznej konfiguracji sieci IPv6 i IPv6/IPv4 "
|
||||
"przeznaczone do stosowania zamiast DHCP w sieciach, w których jest trudne "
|
||||
"lub wręcz niemożliwe, aby skonfigurować serwer w każdej warstwie łącza "
|
||||
"domeny rozgłoszeniowej, na przykład w mobilnych sieciach ad-hoc."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktywne dzierżawy AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adres"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Ustawienia zaawansowane"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Wiek"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Rozgłaszane serwery DNS"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Rozgłaszane serwery NTP"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Rozgłaszane prefiksy"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Zbieranie informacji..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Przekierowanie"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Ustawienia podstawowe"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 oraz IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Tylko IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Tylko IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Katalog dzierżaw"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Czas dzierżawy"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Plik dziennika"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Adres Multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Tryb pracy"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Rodzina protokołów"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Udostępniane interfejsy"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Serwer"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Określa rozgłaszane adresy IPv4/6 serwerów NTP"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Określa rozgłaszane adresy IPv4/6 serwerów nazw"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Określa rozgłaszane prefiksy sieciowe w notacji CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Usługa AHCP nie jest uruchomiona."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Usługa AHCP jest uruchomiona z ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Nie ma aktywnych dzierżaw."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Unikalny plik ID"
|
115
applications/luci-app-ahcp/po/pt-br/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/pt-br/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"PO-Revision-Date: 2017-02-17 17:07-0200\n"
|
||||
"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"POT-Creation-Date: \n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Servidor AHCP"
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP é um protocolo de autoconfiguração para redes IPv6 ou IPv6/IPv4 "
|
||||
"projetado para ser usado no lugar da \"descoberta de roteador\" ou DHCP em "
|
||||
"redes onde é difícil ou impossível configurar um servidor em cada camada de "
|
||||
"enlace de domínio de broadcast, como exemplo as redes móvel ad-hoc."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Alocações AHCP Ativas"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Endereço"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configurações Avançadas"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Tempo de vida"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Servidores DNS anunciados"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Servidores NTP anunciados"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefixos anunciados"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Coletando dados..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Forwarder"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Configurações Gerais"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 e IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Apenas IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Apenas IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Diretório de atribuições"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Tempo de validade da atribuição"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Arquivo de registro"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Endereço multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Modo de operação"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Família de protocolos"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfaces configuradas"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Especifica os servidores NTP IPv4 e IPv6 anunciados"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Especifica os servidores de nomes IPv4 e IPv6 anunciados"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Especifica os prefixos de rede IPv4 e IPv6, em notação CIDR, anunciados"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "O serviço AHCP está parado"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "O serviço AHCP esta executando com o ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Não existe alocações ativas."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Arquivo de identificador único"
|
116
applications/luci-app-ahcp/po/pt/ahcp.po
Normal file
116
applications/luci-app-ahcp/po/pt/ahcp.po
Normal file
@ -0,0 +1,116 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-06-02 21:12+0200\n"
|
||||
"Last-Translator: joao.f.vieira <joao.f.vieira@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Servidor AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"O AHCP é um protocolo de auto-configuração para redes IPv6 e IPv6/IPv4 dual-"
|
||||
"stack foi desenhado para ser usado no lugar do router discovery e DHCP nas "
|
||||
"redes onde é difícil ou impossível configurar o servidor dentro de cada "
|
||||
"camada de ligação no dominio de broadcast, por exemplo, redes ad-hoc móveis."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Concessões AHCP Ativas"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Endereço"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Definições Avançadas"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Idade"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Servidores DNS anunciados"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Servidores NTP anunciados"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefixos anunciados"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "A obter dados..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Encaminhador"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Configuração Geral"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 e IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Só IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Só IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Directório de concessões"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Prazo de validade das concessões"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Ficheiro log"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Endereço de multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Modo de operação"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Família do protocolo"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfaces servidas"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Especifica os servidores NTP anunciados em IPv4 e IPv6"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Especifica os servidores de nomes anunciados em IPv4 e IPv6"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Especifica os prefixos de rede na notação CIDR a serem anunciados em IPv4 e "
|
||||
"IPv6"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "O serviço AHCP não está a correr."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "O serviço AHCP está a correr com o ID %s"
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Não existem concessões activas."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Ficheiro de ID único"
|
115
applications/luci-app-ahcp/po/ro/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/ro/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2014-06-28 19:14+0200\n"
|
||||
"Last-Translator: xxvirusxx <condor20_05@yahoo.it>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ro\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2);;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Server AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP este un protocol de autoconfigurare pentru IPv6 si IPv4 menit sa "
|
||||
"inlocuie \"router discovery\" si DHCP in retele unde este dificil de "
|
||||
"configurat un server pentru fiecare domeniu de broadcast pe fiecare "
|
||||
"legatura, de exemplu pentru retele mobile ad-hoc."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Conexiuni active AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adresă"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Setări avansate"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Vârstă"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Servere DNS anuntate"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Servere NTP anuntate"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Prefixe anuntate"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Colectare date.."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Forwarder"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Configurare generala"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 si IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Doar IPv4 "
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Doar IPv6 "
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Director de conexiuni"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Timpul pentru conexiuni valide"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Fisier log"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Adresa multicast"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Modul de operare"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Familia de protocol"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Interfetele servite"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Specifica serverele de NTP IPv4 si IPv6 anuntate"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Specifica serverele de DNS IPv4 si IPv6 anuntate"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Specifica prefixele IPv4 si IPv6 anuntate in format CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Serviciul AHCP nu ruleaza"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Serviciul AHCP nu ruleaza cu ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Nu exista conexiuni active."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "ID de fisier unic"
|
119
applications/luci-app-ahcp/po/ru/ahcp.po
Normal file
119
applications/luci-app-ahcp/po/ru/ahcp.po
Normal file
@ -0,0 +1,119 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: LuCI: ahcp\n"
|
||||
"POT-Creation-Date: 2013-09-05 15:29+0200\n"
|
||||
"PO-Revision-Date: 2018-01-24 14:59+0300\n"
|
||||
"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
|
||||
"Language-Team: http://cyber-place.ru\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
|
||||
"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP сервер"
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP - это протокол автоматической настройки сетей IPv6 и IPv6/IPv4, "
|
||||
"разработанный для использования вместо DHCP и протоколов обнаружения "
|
||||
"маршрутизаторов в сетях, где сложно или невозможно настроить сервер внутри "
|
||||
"каждой широковещательной зоны канального уровня, например в мобильных ad-hoc "
|
||||
"сетях."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Активные арендованные AHCP-адреса"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Адрес"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Дополнительные настройки"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Возраст"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Объявить DNS сервера"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Объявить NTP сервера"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Объявить префиксы"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Сбор данных..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Перенаправление запросов"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Основные настройки"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 и IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Только IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Только IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Файл арендованных<br />адресов"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Срок действия аренды"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Файл журнала"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Адрес мультивещания"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Режим работы"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Порт"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Семейство протоколов"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Используемые интерфейсы"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Сервер"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Задайте IPv4 и IPv6 NTP сервера."
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Задайте IPv4 и IPv6 DNS сервера."
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Задайте IPv4 и IPv6 префиксы сети в нотации CIDR."
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Служба AHCP не запущена."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Служба AHCP запущена с ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Нет активных арендованных адресов."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Файл уникального идентификатора"
|
106
applications/luci-app-ahcp/po/sk/ahcp.po
Normal file
106
applications/luci-app-ahcp/po/sk/ahcp.po
Normal file
@ -0,0 +1,106 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr ""
|
||||
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Log file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr ""
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr ""
|
||||
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr ""
|
113
applications/luci-app-ahcp/po/sv/ahcp.po
Normal file
113
applications/luci-app-ahcp/po/sv/ahcp.po
Normal file
@ -0,0 +1,113 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2014-04-27 22:52+0200\n"
|
||||
"Last-Translator: Umeaboy <hamnisdude@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP-server"
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP är ett autokonfigurationsprotokoll för IPv6 och dual-stack IPv6/IPv4- "
|
||||
"nätverk designade för att användas vid upptäckt av router eller DHCP på "
|
||||
"nätverk där det är svårt eller omöjligt att ställa in en server inom "
|
||||
"varje sändningslänkslags-domän, till exempel mobila ad-hocnätverk."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktiva AHCP-hyror"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adress"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Avancerade inställningar"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Ålder"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Aviserade DNS-servrar"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Aviserade NTP-servrar"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Aviserade prefix"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Samlar in data..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Vidarebefordrare"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Allmän inställning"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 och IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Endast IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Endast IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Hyr mappen"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Giltighetstid för hyran"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Logg-fil"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Multicast-adress"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Driftsläge"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protokoll-familj"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Betjänade gränssnitt"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Specificerar de aviserade IPv4 och IPv6 NTP-servrarna"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Specificerar de aviserade IPv4 och IPv6 namn-servrarna"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Specificerar de aviserade IPv4 och IPv6 nätverksprefixen i CIDR-noteringen"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "AHCP-tjänsten körs inte."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "AHCP-tjänsten körs med ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Det finns inga aktiva hyror."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Unik ID-fil"
|
99
applications/luci-app-ahcp/po/templates/ahcp.pot
Normal file
99
applications/luci-app-ahcp/po/templates/ahcp.pot
Normal file
@ -0,0 +1,99 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr ""
|
||||
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Log file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr ""
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr ""
|
||||
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr ""
|
113
applications/luci-app-ahcp/po/tr/ahcp.po
Normal file
113
applications/luci-app-ahcp/po/tr/ahcp.po
Normal file
@ -0,0 +1,113 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-11-25 14:51+0200\n"
|
||||
"Last-Translator: qbilay <qbilay@mynet.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Sunucusu"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP bir IPv6 ve IPv4/IPv6 çift ağ için otomatik yapılandırma protokolüdür. "
|
||||
"Yönlendirici Bildirimleri ve DHCP sunucuları geçici olarak yerine dağıtılmış "
|
||||
"ağlar için tasarlanmıştır."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Aktif ACHP Kiralamaları"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Adres"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Gelişmiş Ayarlar"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Yaş"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Veriler toplanıyor..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Genel Ayarlar"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 ve IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Sadece IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Sadece IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Kiralama Dizini"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Kiralama Geçerlilik Süresi"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Kayıt Dosyası"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Çalışma Modu"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Protokol Ailesi"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Sunucu Arayüzleri"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Sunucu"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr " AHCP Hizmeti Çalışmıyor"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr " AHCP Hizmeti ID %ile çalışıyor"
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Aktif Kiralama Yok"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Benzersiz ID Dosyası"
|
115
applications/luci-app-ahcp/po/uk/ahcp.po
Normal file
115
applications/luci-app-ahcp/po/uk/ahcp.po
Normal file
@ -0,0 +1,115 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2012-04-28 21:17+0200\n"
|
||||
"Last-Translator: Yurii <yuripet@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
|
||||
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "Сервер AHCP"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP є протоколом автоматичної конфігурації мереж IPv6 та IPv6/IPv4, що "
|
||||
"разраблений для використання замість DHCP. Наприклад, він використовується у "
|
||||
"стільникових ad-hoc мережах."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Активні оренди AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Адреса"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Додаткові параметри"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Вік"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Оголошені DNS-сервери"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Оголошені NTP-сервери"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Оголошені префікси"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Збирання даних..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Спрямовувач"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Загальні параметри"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 та IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Тільки IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Тільки IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Каталог оренд"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Термін дії оренди"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Файл журналу"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Групова адреса"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Режим роботи"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Порт"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Протокол"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Інтерфейси, які обслуговуються"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Сервер"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Дозволяє вказати оголошувані IPv4 та IPv6 NTP-сервери"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Дозволяє вказати оголошувані IPv4 та IPv6 DNS-сервери"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr ""
|
||||
"Дозволяє вказати оголошувані IPv4 та IPv6 префікси мережі в нотації CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Сервіс AHCP не запущено"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Сервіс AHCP запущено з ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Активних оренд немає."
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Файл унікальних ідентифікаторів"
|
114
applications/luci-app-ahcp/po/vi/ahcp.po
Normal file
114
applications/luci-app-ahcp/po/vi/ahcp.po
Normal file
@ -0,0 +1,114 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-12-05 04:46+0200\n"
|
||||
"Last-Translator: Thành <tienthanh.dqc@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: vi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP Server"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP là một giao thức tự động cấu hình cho IPv6 và mạng IPv6/IPv4 dual-stack "
|
||||
"thiết kế để được sử dụng trong địa điểm phát hiện router và DHCP trên mạng, "
|
||||
"nơi rất khó hoặc không thể cấu hình một máy chủ trong tất cả các lĩnh vực "
|
||||
"phát sóng liên kết lớp, ví dụ như mạng Ad-hoc."
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "Kích hoạt thuê AHCP"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Địa chỉ"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Thiết lập nâng cao"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "Thời gian thuê"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "Quảng bá máy chủ DNS"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "Quảng bá máy chủ NTP"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "Quảng bá tiền tố"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Đang kết xuất dữ liệu..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "Chuyển tiếp"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "Thiết lập chung"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 và IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "Chỉ IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "Chỉ IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "Thư mục cho thuê"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "Thời gian cho thuê"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "Tệp nhật ký"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "Đa địa chỉ"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "Chế độ hoạt động"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "Cổng"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "Giao thức"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "Giao diện phục vụ"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "Máy chủ"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "Quy định cụ thể máy chủ IPv4, IPv6 và NTP"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "Quy định cụ thể tên máy chủ IPv4, IPv6 và NTP"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "Định rõ công bố IPv4 và IPv6 mạng tiền tố trong ký hiệu CIDR"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "Dịch vụ AHCP khộng hoạt động."
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "Dịch vụ AHCP đang hoạt động với ID %s."
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "Hiện không có người thuê"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "Tệp Unique ID"
|
113
applications/luci-app-ahcp/po/zh-cn/ahcp.po
Normal file
113
applications/luci-app-ahcp/po/zh-cn/ahcp.po
Normal file
@ -0,0 +1,113 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-10-09 03:31+0200\n"
|
||||
"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP 服务器"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
"AHCP是一个自动配置IPv6和IPv6/IPv4双栈网络的协议,用于在网络上进行路由探测和地"
|
||||
"址分配。因为在某些网络上为每个链路层广播域均配置服务器是非常困难的,例如移动"
|
||||
"ad-hoc网络。"
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr "活动的AHCP租约"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "地址"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "高级设置"
|
||||
|
||||
msgid "Age"
|
||||
msgstr "有效期"
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "公布DNS服务器"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "公布NTP服务器"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "公布地址前缀"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "数据收集中..."
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr "转发器"
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "通用设置"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4和IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "仅IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "仅IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "租赁目录"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "租约有效期"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "日志文件"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "多播地址"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "工作模式"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "端口"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "协议簇"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "服务接口"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "服务器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "指定IPv4与IPv6 时间服务器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "指定IPv4与IPv6 域名服务器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "指定IPv4与IPv6网络地址前缀(CIDR表示法)"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "AHCP服务没有运行。"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "AHCP服务程序进程ID %s"
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "没有活跃租约。"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "UID文件"
|
109
applications/luci-app-ahcp/po/zh-tw/ahcp.po
Normal file
109
applications/luci-app-ahcp/po/zh-tw/ahcp.po
Normal file
@ -0,0 +1,109 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2013-08-10 12:30+0200\n"
|
||||
"Last-Translator: mp607 <mickey60711@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Pootle 2.0.6\n"
|
||||
|
||||
msgid "AHCP Server"
|
||||
msgstr "AHCP伺服器"
|
||||
|
||||
msgid ""
|
||||
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
|
||||
"networks designed to be used in place of router discovery or DHCP on "
|
||||
"networks where it is difficult or impossible to configure a server within "
|
||||
"every link-layer broadcast domain, for example mobile ad-hoc networks."
|
||||
msgstr ""
|
||||
|
||||
msgid "Active AHCP Leases"
|
||||
msgstr ""
|
||||
|
||||
msgid "Address"
|
||||
msgstr "位置"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "進階設定"
|
||||
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
msgid "Announced DNS servers"
|
||||
msgstr "匿名的DNS伺服器"
|
||||
|
||||
msgid "Announced NTP servers"
|
||||
msgstr "匿名的NTP伺服器"
|
||||
|
||||
msgid "Announced prefixes"
|
||||
msgstr "匿名的前綴"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "收集資料"
|
||||
|
||||
msgid "Forwarder"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Setup"
|
||||
msgstr "一般設定"
|
||||
|
||||
msgid "IPv4 and IPv6"
|
||||
msgstr "IPv4 和 IPv6"
|
||||
|
||||
msgid "IPv4 only"
|
||||
msgstr "只有IPv4"
|
||||
|
||||
msgid "IPv6 only"
|
||||
msgstr "只有IPv6"
|
||||
|
||||
msgid "Lease directory"
|
||||
msgstr "租用目錄"
|
||||
|
||||
msgid "Lease validity time"
|
||||
msgstr "租用有效時間"
|
||||
|
||||
msgid "Log file"
|
||||
msgstr "記錄檔"
|
||||
|
||||
msgid "Multicast address"
|
||||
msgstr "多點廣播位置"
|
||||
|
||||
msgid "Operation mode"
|
||||
msgstr "操作模式"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "通訊埠"
|
||||
|
||||
msgid "Protocol family"
|
||||
msgstr "協定群組"
|
||||
|
||||
msgid "Served interfaces"
|
||||
msgstr "提供服務的界面"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "伺服器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 NTP servers"
|
||||
msgstr "特別的匿名IPv4 與 IPv6 NTP 伺服器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 name servers"
|
||||
msgstr "特別的匿名IPv4 與 IPv6 名稱伺服器"
|
||||
|
||||
msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
|
||||
msgstr "特別的匿名IPv4 與 IPv6 網路CIDR前綴"
|
||||
|
||||
msgid "The AHCP Service is not running."
|
||||
msgstr "AHCP服務沒有運作"
|
||||
|
||||
msgid "The AHCP Service is running with ID %s."
|
||||
msgstr "AHCP服務運作中 ID為 %s"
|
||||
|
||||
msgid "There are no active leases."
|
||||
msgstr "沒有使用中的租用"
|
||||
|
||||
msgid "Unique ID file"
|
||||
msgstr "獨立的ID檔案"
|
11
applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp
Executable file
11
applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@ahcpd[-1]
|
||||
add ucitrack ahcpd
|
||||
set ucitrack.@ahcpd[-1].init=ahcpd
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
39
applications/luci-app-aria2/Makefile
Normal file
39
applications/luci-app-aria2/Makefile
Normal file
@ -0,0 +1,39 @@
|
||||
#
|
||||
# Copyright (C) 2016 Openwrt.org
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-aria2
|
||||
|
||||
# Version == major.minor.patch
|
||||
# increase "minor" on new functionality and "patch" on patches/optimization
|
||||
PKG_VERSION:=1.0.1
|
||||
|
||||
# Release == build
|
||||
# increase on changes of translation files
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
PKG_MAINTAINER:=Hsing-Wang Liao <kuoruan@gmail.com>
|
||||
|
||||
# LuCI specific settings
|
||||
LUCI_TITLE:=LuCI Support for Aria2
|
||||
LUCI_DEPENDS:=+aria2
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
define Package/$(PKG_NAME)/config
|
||||
# shown in make menuconfig <Help>
|
||||
help
|
||||
$(LUCI_TITLE)
|
||||
.
|
||||
Version: $(PKG_VERSION)-$(PKG_RELEASE)
|
||||
$(PKG_MAINTAINER)
|
||||
endef
|
||||
|
||||
include ../../luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
42
applications/luci-app-aria2/luasrc/controller/aria2.lua
Normal file
42
applications/luci-app-aria2/luasrc/controller/aria2.lua
Normal file
@ -0,0 +1,42 @@
|
||||
--[[
|
||||
LuCI - Lua Configuration Interface - aria2 support
|
||||
|
||||
Copyright 2014-2015 nanpuyue <nanpuyue@gmail.com>
|
||||
Modified by kuoruan <kuoruan@gmail.com>
|
||||
|
||||
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
|
||||
]]--
|
||||
|
||||
module("luci.controller.aria2", package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/aria2") then
|
||||
return
|
||||
end
|
||||
|
||||
local page = entry({"admin", "services", "aria2"}, cbi("aria2"), _("Aria2 Settings"))
|
||||
page.dependent = true
|
||||
|
||||
entry({"admin", "services", "aria2", "status"}, call("status")).leaf = true
|
||||
|
||||
end
|
||||
|
||||
function status()
|
||||
local sys = require "luci.sys"
|
||||
local ipkg = require "luci.model.ipkg"
|
||||
local http = require "luci.http"
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
|
||||
local status = {
|
||||
running = (sys.call("pidof aria2c > /dev/null") == 0),
|
||||
yaaw = ipkg.installed("yaaw"),
|
||||
webui = ipkg.installed("webui-aria2")
|
||||
}
|
||||
|
||||
http.prepare_content("application/json")
|
||||
http.write_json(status)
|
||||
end
|
211
applications/luci-app-aria2/luasrc/model/cbi/aria2.lua
Normal file
211
applications/luci-app-aria2/luasrc/model/cbi/aria2.lua
Normal file
@ -0,0 +1,211 @@
|
||||
--[[
|
||||
LuCI - Lua Configuration Interface - Aria2 support
|
||||
|
||||
Copyright 2014-2016 nanpuyue <nanpuyue@gmail.com>
|
||||
Modified by maz-1 <ohmygod19993@gmail.com>
|
||||
Modified by kuoruan <kuoruan@gmail.com>
|
||||
|
||||
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
|
||||
]]--
|
||||
|
||||
local sys = require "luci.sys"
|
||||
local util = require "luci.util"
|
||||
local uci = require "luci.model.uci".cursor()
|
||||
|
||||
local cfgbtn = "<input type=\"button\" value=\"" .. translate("Generate Randomly") .. "\" onclick=\"randomSecret(32);\" />"
|
||||
local sessionbtn = "<input class=\"cbi-button mar-10\" type=\"button\" value=\"" .. translate("View Json-RPC URL") .. "\" onclick=\"showRPCURL();\" />"
|
||||
local aria2rpctxt = "<input class=\"mar-10\" id=\"aria2rpcpath\" onmouseover=\"obj=document.getElementById(this.id);obj.focus();obj.select()\" />"
|
||||
local use_websocket = "<input id=\"use_websocket\" type=\"checkbox\" /><label for=\"use_websocket\">" .. translate("Use WebSocket") .. "</label>"
|
||||
|
||||
function ipkg_ver(pkg)
|
||||
local version = nil
|
||||
local control = io.open("/usr/lib/opkg/info/%s.control" % pkg, "r")
|
||||
if control then
|
||||
local ln
|
||||
repeat
|
||||
ln = control:read("*l")
|
||||
if ln and ln:match("^Version: ") then
|
||||
version = ln:gsub("^Version: ", ""):gsub("-%d", "")
|
||||
break
|
||||
end
|
||||
until not ln
|
||||
control:close()
|
||||
end
|
||||
return version
|
||||
end
|
||||
|
||||
function ipkg_ver_lined(pkg)
|
||||
return ipkg_ver(pkg):gsub("%.", "-")
|
||||
end
|
||||
|
||||
m = Map("aria2", translate("Aria2"), translate("Aria2 is a multi-protocol & multi-source download utility, here you can configure the settings."))
|
||||
|
||||
m:section(SimpleSection).template = "aria2/overview_status"
|
||||
|
||||
s = m:section(TypedSection, "aria2", translate("Aria2 Settings"))
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
s:tab("general", translate("General Settings"))
|
||||
s:tab("file", translate("Files and Locations"))
|
||||
s:tab("task", translate("Task Settings"))
|
||||
s:tab("bittorrent", translate("BitTorrent Settings"))
|
||||
|
||||
o = s:taboption("general", Flag, "enabled", translate("Enabled"))
|
||||
o.rmempty = false
|
||||
|
||||
user = s:taboption("general", ListValue, "user", translate("Run daemon as user"))
|
||||
local p_user
|
||||
for _, p_user in util.vspairs(util.split(sys.exec("cat /etc/passwd | cut -f 1 -d :"))) do
|
||||
user:value(p_user)
|
||||
end
|
||||
|
||||
o = s:taboption("general", Value, "rpc_listen_port", translate("RPC port"))
|
||||
o.datatype = "port"
|
||||
o.placeholder = "6800"
|
||||
|
||||
rpc_auth_method = s:taboption("general", ListValue, "rpc_auth_method", translate("RPC authentication method"))
|
||||
rpc_auth_method:value("none", translate("No Authentication"))
|
||||
rpc_auth_method:value("user_pass", translate("Username & Password"))
|
||||
rpc_auth_method:value("token", translate("Token"))
|
||||
|
||||
o = s:taboption("general", Value, "rpc_user", translate("RPC username"))
|
||||
o:depends("rpc_auth_method", "user_pass")
|
||||
o.rmempty = false
|
||||
|
||||
o = s:taboption("general", Value, "rpc_passwd", translate("RPC password"))
|
||||
o:depends("rpc_auth_method", "user_pass")
|
||||
o.password = true
|
||||
o.rmempty = true
|
||||
|
||||
o = s:taboption("general", Value, "rpc_secret", translate("RPC Token"), "<br/>" .. cfgbtn)
|
||||
o:depends("rpc_auth_method", "token")
|
||||
o.rmempty = true
|
||||
|
||||
o = s:taboption("file", Value, "config_dir", translate("Config file directory"))
|
||||
o.placeholder = "/var/etc/aria2"
|
||||
|
||||
o = s:taboption("file", Flag, "enable_log", translate("Enable log"), translate("Log file is in the config file dir."))
|
||||
o.enabled = "true"
|
||||
o.disabled = "false"
|
||||
|
||||
o = s:taboption("file", ListValue, "log_level", translate("Log level"))
|
||||
o:depends("enable_log", "true")
|
||||
o:value("debug", translate("Debug"))
|
||||
o:value("info", translate("Info"))
|
||||
o:value("notice", translate("Notice"))
|
||||
o:value("warn", translate("Warn"))
|
||||
o:value("error", translate("Error"))
|
||||
|
||||
o = s:taboption("file", Value, "dir", translate("Default download directory"))
|
||||
o.rmempty = false
|
||||
|
||||
o = s:taboption("file", Value, "disk_cache", translate("Disk cache"), translate("in bytes, You can append K or M."))
|
||||
o.rmempty = true
|
||||
|
||||
o = s:taboption("file", ListValue, "file_allocation", translate("Preallocation"), translate("\"Falloc\" is not available in all cases."))
|
||||
o:value("none", translate("Off"))
|
||||
o:value("prealloc", translate("Prealloc"))
|
||||
o:value("trunc", translate("Trunc"))
|
||||
o:value("falloc", translate("Falloc"))
|
||||
|
||||
overall_speed_limit = s:taboption("task", Flag, "overall_speed_limit", translate("Overall speed limit enabled"))
|
||||
overall_speed_limit.rmempty = true
|
||||
|
||||
o = s:taboption("task", Value, "max_overall_download_limit", translate("Overall download limit"), translate("in bytes/sec, You can append K or M."))
|
||||
o:depends("overall_speed_limit", "1")
|
||||
|
||||
o = s:taboption("task", Value, "max_overall_upload_limit", translate("Overall upload limit"), translate("in bytes/sec, You can append K or M."))
|
||||
o:depends("overall_speed_limit", "1")
|
||||
|
||||
task_speed_limit = s:taboption("task", Flag, "task_speed_limit", translate("Per task speed limit enabled"))
|
||||
task_speed_limit.rmempty = true
|
||||
|
||||
o = s:taboption("task", Value, "max_download_limit", translate("Per task download limit"), translate("in bytes/sec, You can append K or M."))
|
||||
o:depends("task_speed_limit", "1")
|
||||
|
||||
o = s:taboption("task", Value, "max_upload_limit", translate("Per task upload limit"), translate("in bytes/sec, You can append K or M."))
|
||||
o:depends("task_speed_limit", "1")
|
||||
|
||||
o = s:taboption("task", Value, "max_concurrent_downloads", translate("Max concurrent downloads"))
|
||||
o.placeholder = "5"
|
||||
|
||||
o = s:taboption("task", Value, "max_connection_per_server", translate("Max connection per server"), "1-16")
|
||||
o.datetype = "range(1, 16)"
|
||||
o.placeholder = "1"
|
||||
|
||||
o = s:taboption("task", Value, "min_split_size", translate("Min split size"), "1M-1024M")
|
||||
o.placeholder = "20M"
|
||||
|
||||
o = s:taboption("task", Value, "split", translate("Max number of split"))
|
||||
o.placeholder = "5"
|
||||
|
||||
o = s:taboption("task", Value, "save_session_interval", translate("Autosave session interval"), translate("Sec"))
|
||||
o.default = "30"
|
||||
|
||||
o = s:taboption("task", Value, "user_agent", translate("User agent value"))
|
||||
o.placeholder = "aria2/" .. ipkg_ver("aria2")
|
||||
|
||||
o = s:taboption("bittorrent", Flag, "enable_dht", translate("<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"))
|
||||
o.enabled = "true"
|
||||
o.disabled = "false"
|
||||
|
||||
o = s:taboption("bittorrent", Flag, "bt_enable_lpd", translate("<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"))
|
||||
o.enabled = "true"
|
||||
o.disabled = "false"
|
||||
|
||||
o = s:taboption("bittorrent", Flag, "follow_torrent", translate("Follow torrent"))
|
||||
o.enabled = "true"
|
||||
o.disabled = "false"
|
||||
|
||||
o = s:taboption("bittorrent", Value, "listen_port", translate("BitTorrent listen port"))
|
||||
o.placeholder = "6881-6999"
|
||||
|
||||
o = s:taboption("bittorrent", Value, "bt_max_peers", translate("Max number of peers per torrent"))
|
||||
o.placeholder = "55"
|
||||
|
||||
bt_tracker_enable = s:taboption("bittorrent", Flag, "bt_tracker_enable", translate("Additional Bt tracker enabled"))
|
||||
bt_tracker = s:taboption("bittorrent", DynamicList, "bt_tracker", translate("List of additional Bt tracker"))
|
||||
bt_tracker:depends("bt_tracker_enable", "1")
|
||||
bt_tracker.rmempty = true
|
||||
|
||||
function bt_tracker.cfgvalue(self, section)
|
||||
local rv = {}
|
||||
local val = Value.cfgvalue(self, section)
|
||||
if type(val) == "table" then
|
||||
val = table.concat(val, ",")
|
||||
elseif not val then
|
||||
val = ""
|
||||
end
|
||||
for v in val:gmatch("[^,%s]+") do
|
||||
rv[#rv+1] = v
|
||||
end
|
||||
return rv
|
||||
end
|
||||
|
||||
function bt_tracker.write(self, section, value)
|
||||
local rv = {}
|
||||
for v in util.imatch(value) do
|
||||
rv[#rv+1] = v
|
||||
end
|
||||
Value.write(self, section, table.concat(rv, ","))
|
||||
end
|
||||
|
||||
o = s:taboption("bittorrent", Value, "peer_id_prefix", translate("Prefix of peer ID"))
|
||||
o.placeholder = "A2-" .. ipkg_ver_lined("aria2") .. "-"
|
||||
|
||||
s = m:section(TypedSection, "aria2", translate("Extra Settings"))
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
o = s:option(DynamicList, "extra_settings", translate("List of extra settings"))
|
||||
o.placeholder = "option=value"
|
||||
o.rmempty = true
|
||||
|
||||
m:section(SimpleSection, nil, sessionbtn .. use_websocket .. aria2rpctxt)
|
||||
|
||||
return m
|
@ -0,0 +1,77 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(5, '<%=luci.dispatcher.build_url("admin/services/aria2/status")%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('aria2_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><%:The Aria2 service is running.%></em>';
|
||||
if (data.yaaw) {
|
||||
links += '<input class="cbi-button mar-10" type="button" value="<%:Open YAAW%>" onclick="openWebUI(\'yaaw\');" />';
|
||||
}
|
||||
if (data.webui) {
|
||||
links += '<input class="cbi-button mar-10" type="button" value="<%:Open WebUI-Aria2%>" onclick="openWebUI(\'webui-aria2\');" />';
|
||||
}
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><%:The Aria2 service is not running.%></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
function randomString(len) {
|
||||
len = len || 32;
|
||||
var $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
|
||||
var maxPos = $chars.length;
|
||||
var pwd = '';
|
||||
for (i = 0; i < len; i++) {
|
||||
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
|
||||
}
|
||||
return pwd;
|
||||
};
|
||||
|
||||
function randomSecret() {
|
||||
var Token = document.getElementById("cbid.aria2.main.rpc_secret");
|
||||
Token.value = randomString(32);
|
||||
};
|
||||
|
||||
function showRPCURL() {
|
||||
var websocket = document.getElementById("use_websocket");
|
||||
var protocol = (websocket.checked) ? "ws" : "http";
|
||||
var newTextNode = document.getElementById("aria2rpcpath");
|
||||
var auth_method = document.getElementById("cbid.aria2.main.rpc_auth_method");
|
||||
var auth_port = document.getElementById("cbid.aria2.main.rpc_listen_port");
|
||||
if (auth_port.value == "") {
|
||||
auth_port_value = "6800"
|
||||
} else {
|
||||
auth_port_value = auth_port.value
|
||||
};
|
||||
if (auth_method.value == "token") {
|
||||
var auth_token = document.getElementById("cbid.aria2.main.rpc_secret");
|
||||
newTextNode.value = protocol + "://token:" + auth_token.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
|
||||
} else if (auth_method.value == "user_pass") {
|
||||
var auth_user = document.getElementById("cbid.aria2.main.rpc_user");
|
||||
var auth_passwd = document.getElementById("cbid.aria2.main.rpc_passwd");
|
||||
newTextNode.value = protocol + "://" + auth_user.value + ":" + auth_passwd.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
|
||||
} else {
|
||||
newTextNode.value = protocol + "://" + document.domain + ":" + auth_port_value + "/jsonrpc";
|
||||
}
|
||||
};
|
||||
|
||||
function openWebUI(path) {
|
||||
var curWwwPath = window.document.location.href;
|
||||
var pathName = window.document.location.pathname;
|
||||
var pos = curWwwPath.indexOf(pathName);
|
||||
var localhostPath = curWwwPath.substring(0, pos);
|
||||
var url = "http:" + localhostPath.substring(window.location.protocol.length) + "/" + path;
|
||||
window.open(url)
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 10px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Aria2 Status%></legend>
|
||||
<p id="aria2_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
236
applications/luci-app-aria2/po/pt-br/aria2.po
Normal file
236
applications/luci-app-aria2/po/pt-br/aria2.po
Normal file
@ -0,0 +1,236 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr "\"Falloc\" não está disponível em todas as classes."
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr ""
|
||||
"<abbr title=\"Distributed Hash Table/Tabla de disperção distribuída\">DHT</"
|
||||
"abbr> habilitado"
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr ""
|
||||
"<abbr title=\"Local Peer Discovery/Descoberta de Parceiros Locais\">LPD</"
|
||||
"abbr> habilitado"
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr "Rastreadores BitTorrent adicionais habilitado"
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr "Aria2"
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr "Configurações do Aria2"
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr "Estado do Aria2"
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr ""
|
||||
"Aria2 é um utilitário de transferência multi-protocolo de múltiplas fontes, "
|
||||
"aqui você pode configurá-lo."
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr "Intervalo para autossalvamento da sessão"
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr "Configurações do BitTorrent"
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr "Porta de escuta do BitTorrent"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Coletando dados..."
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr "Diretório dos arquivos de configuração"
|
||||
|
||||
msgid "Debug"
|
||||
msgstr "Depuração"
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr "Diretório padrão de arquivos baixados"
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr "Cache em Disco"
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr "Habilitar registros"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Habilitado"
|
||||
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr "Configurações Adicionais"
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr "Falloc"
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr "Arquivos e Locais"
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr "Seguir torrent"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr "Configurações Gerais"
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr "Gerar aleatoriamente"
|
||||
|
||||
msgid "Info"
|
||||
msgstr "Informações"
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr "Lista de rastreadores BitTorrent adicionais"
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr "Lista de configurações adicionais"
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr ""
|
||||
"Arquivo de registro (log) está no diretório do arquivo de configuração."
|
||||
|
||||
msgid "Log level"
|
||||
msgstr "Nível do registro"
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr "Número máximo de transferencias simultâneas"
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr "Numero máximo de conexões por servidor"
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr "Numero máximo de parceiros por torrent"
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr "Numero máximo de divisões"
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr "Tamanho mínimo da divisão"
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr "Sem Autenticação"
|
||||
|
||||
msgid "Notice"
|
||||
msgstr "Aviso"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "Desligado"
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr "Abrir WebUI-Aria2"
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr "Abrir YAAW"
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr "Limite global para baixar"
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr "Limite da taxa de transferência global habilitado"
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr "Limite global para subir"
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr "Limite por tarefa para baixar"
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr "Limite da taxa de transferência por tarefa habilitado"
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr "Limite por tarefa para subir"
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr "Pré-alocação"
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr "Pré-alocação"
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr "Prefixo da identificação do paceiro"
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr ""
|
||||
"Chave eletrônica do <abbr title=\"Remote Procedure Call/Chamada de "
|
||||
"Procedimento Remoto\">RPC</abbr>"
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr ""
|
||||
"Método de autenticação do <abbr title=\"Remote Procedure Call/Chamada de "
|
||||
"Procedimento Remoto\">RPC</abbr>"
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr ""
|
||||
"Senha do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
|
||||
"\">RPC</abbr>"
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr ""
|
||||
"Porta do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
|
||||
"\">RPC</abbr>"
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr ""
|
||||
"Nome do usuario do <abbr title=\"Remote Procedure Call/Chamada de "
|
||||
"Procedimento Remoto\">RPC</abbr>"
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr "Executar serviço como usuário"
|
||||
|
||||
msgid "Sec"
|
||||
msgstr "Segurança"
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr "Configurações das tarefas"
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr "O serviço Aria2 está parado."
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr "O serviço Aria2 está em execução."
|
||||
|
||||
msgid "Token"
|
||||
msgstr "Chave eletrônica"
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr "Truncar"
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr "Use WebSockets"
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr "Valor da identificação do agente do usuário"
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr "Usuário & Senha"
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr "Visualizar URL do JSON-RPC"
|
||||
|
||||
msgid "Warn"
|
||||
msgstr "Atenção"
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr "em bytes. Você pode sufixar com K (quilo) ou M (mega)."
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr "em bytes por segundo. Você pode sufixar com K (quilo) ou M (mega)."
|
225
applications/luci-app-aria2/po/ru/aria2.po
Normal file
225
applications/luci-app-aria2/po/ru/aria2.po
Normal file
@ -0,0 +1,225 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: LuCI: aria2\n"
|
||||
"POT-Creation-Date: 2017-11-30 23:45+0300\n"
|
||||
"PO-Revision-Date: 2018-01-31 18:33+0300\n"
|
||||
"Language-Team: http://cyber-place.ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Language: ru\n"
|
||||
"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
|
||||
"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr "'Falloc' возможен не всегда."
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr "<abbr title=\"Распределенная Hash таблица\">DHT</abbr> включена"
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr "<abbr title=\"Обнаружение локальных пиров\">LPD</abbr> включено"
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr "Дополнительный<br />Bt tracker включен"
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr "Aria2"
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr "Настройка Aria2"
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr "Состояние Aria2"
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr ""
|
||||
"Aria2 - это мульти-протокольная и мульти-платформенная утилита загрузки, "
|
||||
"здесь вы сможете ее настроить."
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr "Интервал сессии автосохранения"
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr "Настройки BitTorrent-а"
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr "Порты BitTorrent-а"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Сбор данных..."
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr "Папка расположения<br />сonfig файла"
|
||||
|
||||
msgid "Debug"
|
||||
msgstr "Отладка"
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr "Папка для загрузки<br />файлов по умолчанию"
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr "Дисковый кэш"
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr "Включить ведение системного журнала"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Включено"
|
||||
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr "Дополнительные настройки"
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr "Falloc"
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr "Файлы и папки"
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr "Запустить<br />торрент-файл"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr "Основные настройки"
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr "Генерировать случайно"
|
||||
|
||||
msgid "Info"
|
||||
msgstr "Информация"
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr "Список дополнительных BT tracker-ов"
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr "Список дополнительных настроек"
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr "Файл системного журнала находится в папке с config файлом."
|
||||
|
||||
msgid "Log level"
|
||||
msgstr "Записывать в журнал"
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr "Максимальное количество одновременных загрузок"
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr "Максимальное количество<br />подключений на сервер"
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr "Максимальное число<br />пиров на торрент-файл"
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr "Максимальное<br />число разделений"
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr "Минимальный размер разделений"
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr "Без проверки подлинности"
|
||||
|
||||
msgid "Notice"
|
||||
msgstr "Заметка"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "Выключено"
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr "Открыть WebUI-Aria2"
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr "Открыть YAAW"
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr "Общее ограничение<br />скорости загрузки"
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr "Общее ограничение скорости<br /> для утилиты включено"
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr "Общее ограничение<br />скорости раздачи"
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr "Ограничить скорость загрузки"
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr "Ограничить скорость для одной задачи включено"
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr "Ограничить скорость раздачи"
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr "Предварительно"
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr "Предварительное<br />распределение<br />места под файл"
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr "Префикс ID пира"
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr "Токен для доступа к удаленному управлению (RPC)"
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr "Метод аутентификации для доступа к удаленному управлению (RPC)"
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr "Пароль для доступа к удаленному управлению (RPC)"
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr "Порт для доступа к удаленному управлению (RPC)"
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr "Логин для доступа к удаленному управлению (RPC)"
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr "Запуск демона<br />от имени пользователя"
|
||||
|
||||
msgid "Sec"
|
||||
msgstr "Секунды"
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr "Настройки задач"
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr "Aria2 сервис не запущен."
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr "Aria2 сервис запущен."
|
||||
|
||||
msgid "Token"
|
||||
msgstr "Токен"
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr "Сокращать"
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr "Использовать WebSockets"
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr "Агент пользователя"
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr "Имя и пароль"
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr "Показать URL Json-RPC"
|
||||
|
||||
msgid "Warn"
|
||||
msgstr "Внимание"
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr ""
|
||||
"Дисковый кэш в байтах. Вы можете добавить суффикс K (кило) или М (мега)."
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr "в байтах/секундах. Вы можете добавить суффикс K (кило) или М (мега)."
|
208
applications/luci-app-aria2/po/sv/aria2.po
Normal file
208
applications/luci-app-aria2/po/sv/aria2.po
Normal file
@ -0,0 +1,208 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr ""
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr "Aria2"
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr "Inställningar för Aria2"
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr "Status för Aria2"
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr ""
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr "Autospara sessionintervall"
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr "Inställningar för BitTorrent"
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr "Lyssningsport för BitTorrent"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "Samlar in data..."
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr "Ställ in fil-mapp"
|
||||
|
||||
msgid "Debug"
|
||||
msgstr "Avlusa"
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr "Standard nerladdningsmapp"
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr "Disk-cache"
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr "Aktivera logg"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiverad"
|
||||
|
||||
msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr "Extra inställningar"
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr "Falloc"
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr "Filer och Platser"
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr "Följ torrenten"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr "Generella inställningar"
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr "Generera slumpmässigt"
|
||||
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr "Lista över extra Bt-tracker"
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr "Lista över extra inställningar"
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr "Logg-filen är i konfigurationsfilens mapp."
|
||||
|
||||
msgid "Log level"
|
||||
msgstr "Loggnivå"
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr "Maximalt sammanhängande nerladdningar"
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr "Max antalet anslutningar per server"
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr "Maximalt antalet jämlikar per torrent"
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr "Högst antal split"
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr "Minsta split-storlek"
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr "Ingen autentisering"
|
||||
|
||||
msgid "Notice"
|
||||
msgstr "Avisering"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "Av"
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr "Öppna WebUI-Aria2"
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr "Öppna YAAW"
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr "Prealloc"
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr "Förallokering"
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr "Peer-ID prefix"
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr "RPC-lösenord"
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr "RPC-port"
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr "RPC-användarnamn"
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr "Kör daemonen som användare"
|
||||
|
||||
msgid "Sec"
|
||||
msgstr "Sek"
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr "Inställningar för uppgifter"
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr "Aria2-tjänsten körs inte."
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr "Aria2-tjänsten körs."
|
||||
|
||||
msgid "Token"
|
||||
msgstr "Tecken"
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr "Använd WebSocket"
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr "Använd agent-värde"
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr "Användarnamn & Lösenord"
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr "Visa Json-RPC URL"
|
||||
|
||||
msgid "Warn"
|
||||
msgstr "Varna"
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr "i bytes, Du kan bifoga K eller M."
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr "i bytes/sek, Du kan bifoga K eller M."
|
208
applications/luci-app-aria2/po/templates/aria2.pot
Normal file
208
applications/luci-app-aria2/po/templates/aria2.pot
Normal file
@ -0,0 +1,208 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr ""
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr ""
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr ""
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Debug"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr ""
|
||||
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr ""
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr ""
|
||||
|
||||
msgid "Log level"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr ""
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr ""
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr ""
|
||||
|
||||
msgid "Notice"
|
||||
msgstr ""
|
||||
|
||||
msgid "Off"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr ""
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sec"
|
||||
msgstr ""
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr ""
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr ""
|
||||
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr ""
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr ""
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr ""
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Warn"
|
||||
msgstr ""
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr ""
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr ""
|
221
applications/luci-app-aria2/po/zh-cn/aria2.po
Normal file
221
applications/luci-app-aria2/po/zh-cn/aria2.po
Normal file
@ -0,0 +1,221 @@
|
||||
#
|
||||
# Yangfl <mmyangfl@gmail.com>, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
|
||||
"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"PO-Revision-Date: 2017-10-28 16:10+0800\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr "\"Falloc\" 并不是在所有情况下都可用"
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>"
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>"
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr "添加额外的Tracker"
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr "Aria2"
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr "Aria2 配置"
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr "Aria2 状态"
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr "Aria2 是一个支持多协议多线程的下载器, 您可以在这里对其进行配置。"
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr "定时保存会话间隔"
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr "BitTorrent 设置"
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr "BitTorrent 监听端口"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "正在收集数据..."
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr "配置文件目录"
|
||||
|
||||
msgid "Debug"
|
||||
msgstr "调试"
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr "默认下载目录"
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr "磁盘缓存"
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr "启用日志"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr "附加选项"
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr "快速 alloc(Falloc)"
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr "文件和目录"
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr "自动添加下载的种子"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr "随机生成"
|
||||
|
||||
msgid "Info"
|
||||
msgstr "信息"
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr "附加 Bt tracker 列表"
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr "附加选项列表"
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr "日志文件在配置文件目录下"
|
||||
|
||||
msgid "Log level"
|
||||
msgstr "日志记录等级"
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr "最大同时下载任务数"
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr "单服务器最大连接数"
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr "单个种子最大连接数"
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr "单文件最大线程数"
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr "最小文件分片大小"
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr "无认证"
|
||||
|
||||
msgid "Notice"
|
||||
msgstr "注意"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "关闭"
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr "打开 WebUI-Aria2"
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr "打开 YAAW"
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr "全局下载限速"
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr "启用全局限速"
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr "全局上传限速"
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr "单任务下载限速"
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr "启用单任务限速"
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr "单任务上传限速"
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr "预分配"
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr "磁盘预分配"
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr "Peer ID 前缀"
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr "RPC 令牌"
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr "RPC 认证方式"
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr "RPC 密码"
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr "RPC 端口"
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr "RPC 用户名"
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr "以此用户权限运行"
|
||||
|
||||
msgid "Sec"
|
||||
msgstr "秒"
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr "任务设置"
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr "Aria2 未运行"
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr "Aria2 正在运行"
|
||||
|
||||
msgid "Token"
|
||||
msgstr "令牌"
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr "使用 WebSocket"
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr "用户代理(UA)"
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr "用户名与密码"
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr "查看 Json-RPC URL"
|
||||
|
||||
msgid "Warn"
|
||||
msgstr "警告"
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr "单位 B, 您可以在数字后跟上 K 或 M。"
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr "单位 B/s, 您可以在数字后跟上 K 或 M。"
|
||||
|
||||
#~ msgid "General settings"
|
||||
#~ msgstr "基本设置"
|
221
applications/luci-app-aria2/po/zh-tw/aria2.po
Normal file
221
applications/luci-app-aria2/po/zh-tw/aria2.po
Normal file
@ -0,0 +1,221 @@
|
||||
#
|
||||
# Yangfl <mmyangfl@gmail.com>, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
|
||||
"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"PO-Revision-Date: 2017-10-28 16:10+0800\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
msgid "\"Falloc\" is not available in all cases."
|
||||
msgstr "\"Falloc\" 並不是在所有情況下都可用"
|
||||
|
||||
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
|
||||
msgstr "啟用<abbr title=\"分散式雜湊表\">DHT</abbr>"
|
||||
|
||||
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
|
||||
msgstr "啟用<abbr title=\"本地節點發現\">LPD</abbr>"
|
||||
|
||||
msgid "Additional Bt tracker enabled"
|
||||
msgstr "新增額外的Tracker"
|
||||
|
||||
msgid "Aria2"
|
||||
msgstr "Aria2"
|
||||
|
||||
msgid "Aria2 Settings"
|
||||
msgstr "Aria2 配置"
|
||||
|
||||
msgid "Aria2 Status"
|
||||
msgstr "Aria2 狀態"
|
||||
|
||||
msgid ""
|
||||
"Aria2 is a multi-protocol & multi-source download utility, here you can "
|
||||
"configure the settings."
|
||||
msgstr "Aria2 是一個支援多協議多執行緒的下載器, 您可以在這裡對其進行配置。"
|
||||
|
||||
msgid "Autosave session interval"
|
||||
msgstr "定時儲存會話間隔"
|
||||
|
||||
msgid "BitTorrent Settings"
|
||||
msgstr "BitTorrent 設定"
|
||||
|
||||
msgid "BitTorrent listen port"
|
||||
msgstr "BitTorrent 監聽埠"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "正在收集資料..."
|
||||
|
||||
msgid "Config file directory"
|
||||
msgstr "配置檔案目錄"
|
||||
|
||||
msgid "Debug"
|
||||
msgstr "除錯"
|
||||
|
||||
msgid "Default download directory"
|
||||
msgstr "預設下載目錄"
|
||||
|
||||
msgid "Disk cache"
|
||||
msgstr "磁碟快取"
|
||||
|
||||
msgid "Enable log"
|
||||
msgstr "啟用日誌"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "啟用"
|
||||
|
||||
msgid "Error"
|
||||
msgstr "錯誤"
|
||||
|
||||
msgid "Extra Settings"
|
||||
msgstr "附加選項"
|
||||
|
||||
msgid "Falloc"
|
||||
msgstr "快速 alloc(Falloc)"
|
||||
|
||||
msgid "Files and Locations"
|
||||
msgstr "檔案和目錄"
|
||||
|
||||
msgid "Follow torrent"
|
||||
msgstr "自動新增下載的種子"
|
||||
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Generate Randomly"
|
||||
msgstr "隨機生成"
|
||||
|
||||
msgid "Info"
|
||||
msgstr "資訊"
|
||||
|
||||
msgid "List of additional Bt tracker"
|
||||
msgstr "附加 Bt tracker 列表"
|
||||
|
||||
msgid "List of extra settings"
|
||||
msgstr "附加選項列表"
|
||||
|
||||
msgid "Log file is in the config file dir."
|
||||
msgstr "日誌檔案在配置檔案目錄下"
|
||||
|
||||
msgid "Log level"
|
||||
msgstr "日誌記錄等級"
|
||||
|
||||
msgid "Max concurrent downloads"
|
||||
msgstr "最大同時下載任務數"
|
||||
|
||||
msgid "Max connection per server"
|
||||
msgstr "單伺服器最大連線數"
|
||||
|
||||
msgid "Max number of peers per torrent"
|
||||
msgstr "單個種子最大連線數"
|
||||
|
||||
msgid "Max number of split"
|
||||
msgstr "單檔案最大執行緒數"
|
||||
|
||||
msgid "Min split size"
|
||||
msgstr "最小檔案分片大小"
|
||||
|
||||
msgid "No Authentication"
|
||||
msgstr "無認證"
|
||||
|
||||
msgid "Notice"
|
||||
msgstr "注意"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "關閉"
|
||||
|
||||
msgid "Open WebUI-Aria2"
|
||||
msgstr "開啟 WebUI-Aria2"
|
||||
|
||||
msgid "Open YAAW"
|
||||
msgstr "開啟 YAAW"
|
||||
|
||||
msgid "Overall download limit"
|
||||
msgstr "全域性下載限速"
|
||||
|
||||
msgid "Overall speed limit enabled"
|
||||
msgstr "啟用全侷限速"
|
||||
|
||||
msgid "Overall upload limit"
|
||||
msgstr "全域性上傳限速"
|
||||
|
||||
msgid "Per task download limit"
|
||||
msgstr "單任務下載限速"
|
||||
|
||||
msgid "Per task speed limit enabled"
|
||||
msgstr "啟用單任務限速"
|
||||
|
||||
msgid "Per task upload limit"
|
||||
msgstr "單任務上傳限速"
|
||||
|
||||
msgid "Prealloc"
|
||||
msgstr "預分配"
|
||||
|
||||
msgid "Preallocation"
|
||||
msgstr "磁碟預分配"
|
||||
|
||||
msgid "Prefix of peer ID"
|
||||
msgstr "Peer ID 字首"
|
||||
|
||||
msgid "RPC Token"
|
||||
msgstr "RPC 令牌"
|
||||
|
||||
msgid "RPC authentication method"
|
||||
msgstr "RPC 認證方式"
|
||||
|
||||
msgid "RPC password"
|
||||
msgstr "RPC 密碼"
|
||||
|
||||
msgid "RPC port"
|
||||
msgstr "RPC 埠"
|
||||
|
||||
msgid "RPC username"
|
||||
msgstr "RPC 使用者名稱"
|
||||
|
||||
msgid "Run daemon as user"
|
||||
msgstr "以此使用者許可權執行"
|
||||
|
||||
msgid "Sec"
|
||||
msgstr "秒"
|
||||
|
||||
msgid "Task Settings"
|
||||
msgstr "任務設定"
|
||||
|
||||
msgid "The Aria2 service is not running."
|
||||
msgstr "Aria2 未執行"
|
||||
|
||||
msgid "The Aria2 service is running."
|
||||
msgstr "Aria2 正在執行"
|
||||
|
||||
msgid "Token"
|
||||
msgstr "令牌"
|
||||
|
||||
msgid "Trunc"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use WebSocket"
|
||||
msgstr "使用 WebSocket"
|
||||
|
||||
msgid "User agent value"
|
||||
msgstr "使用者代理(UA)"
|
||||
|
||||
msgid "Username & Password"
|
||||
msgstr "使用者名稱與密碼"
|
||||
|
||||
msgid "View Json-RPC URL"
|
||||
msgstr "檢視 Json-RPC URL"
|
||||
|
||||
msgid "Warn"
|
||||
msgstr "警告"
|
||||
|
||||
msgid "in bytes, You can append K or M."
|
||||
msgstr "單位 B, 您可以在數字後跟上 K 或 M。"
|
||||
|
||||
msgid "in bytes/sec, You can append K or M."
|
||||
msgstr "單位 B/s, 您可以在數字後跟上 K 或 M。"
|
||||
|
||||
#~ msgid "General settings"
|
||||
#~ msgstr "基本設定"
|
11
applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2
Executable file
11
applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@aria2[-1]
|
||||
add ucitrack aria2
|
||||
set ucitrack.@aria2[-1].init=aria2
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
13
applications/luci-app-asterisk/Makefile
Normal file
13
applications/luci-app-asterisk/Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
#
|
||||
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI Support for Asterisk
|
||||
|
||||
include ../../luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
746
applications/luci-app-asterisk/luasrc/asterisk.lua
Normal file
746
applications/luci-app-asterisk/luasrc/asterisk.lua
Normal file
@ -0,0 +1,746 @@
|
||||
-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module("luci.asterisk", package.seeall)
|
||||
require("luci.asterisk.cc_idd")
|
||||
|
||||
local _io = require("io")
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local sys = require("luci.sys")
|
||||
local util = require("luci.util")
|
||||
|
||||
AST_BIN = "/usr/sbin/asterisk"
|
||||
AST_FLAGS = "-r -x"
|
||||
|
||||
|
||||
--- LuCI Asterisk - Resync uci context
|
||||
function uci_resync()
|
||||
uci = luci.model.uci.cursor()
|
||||
end
|
||||
|
||||
--- LuCI Asterisk io interface
|
||||
-- Handles low level io.
|
||||
-- @type module
|
||||
io = luci.util.class()
|
||||
|
||||
--- Execute command and return output
|
||||
-- @param command String containing the command to execute
|
||||
-- @return String containing the command output
|
||||
function io.exec(command)
|
||||
local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" )
|
||||
assert(fh, "Failed to invoke asterisk")
|
||||
|
||||
local buffer = fh:read("*a")
|
||||
fh:close()
|
||||
return buffer
|
||||
end
|
||||
|
||||
--- Execute command and invoke given callback for each readed line
|
||||
-- @param command String containing the command to execute
|
||||
-- @param callback Function to call back for each line
|
||||
-- @return Always true
|
||||
function io.execl(command, callback)
|
||||
local ln
|
||||
local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" )
|
||||
assert(fh, "Failed to invoke asterisk")
|
||||
|
||||
repeat
|
||||
ln = fh:read("*l")
|
||||
callback(ln)
|
||||
until not ln
|
||||
|
||||
fh:close()
|
||||
return true
|
||||
end
|
||||
|
||||
--- Execute command and return an iterator that returns one line per invokation
|
||||
-- @param command String containing the command to execute
|
||||
-- @return Iterator function
|
||||
function io.execi(command)
|
||||
local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" )
|
||||
assert(fh, "Failed to invoke asterisk")
|
||||
|
||||
return function()
|
||||
local ln = fh:read("*l")
|
||||
if not ln then fh:close() end
|
||||
return ln
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - core status
|
||||
core = luci.util.class()
|
||||
|
||||
--- Retrive version string.
|
||||
-- @return String containing the reported asterisk version
|
||||
function core.version(self)
|
||||
local version = io.exec("core show version")
|
||||
return version:gsub(" *\n", "")
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - SIP information.
|
||||
-- @type module
|
||||
sip = luci.util.class()
|
||||
|
||||
--- Get a list of known SIP peers
|
||||
-- @return Table containing each SIP peer
|
||||
function sip.peers(self)
|
||||
local head = false
|
||||
local peers = { }
|
||||
|
||||
for line in io.execi("sip show peers") do
|
||||
if not head then
|
||||
head = true
|
||||
elseif not line:match(" sip peers ") then
|
||||
local online, delay, id, uid
|
||||
local name, host, dyn, nat, acl, port, status =
|
||||
line:match("(.-) +(.-) +([D ]) ([N ]) (.) (%d+) +(.+)")
|
||||
|
||||
if host == '(Unspecified)' then host = nil end
|
||||
if port == '0' then port = nil else port = tonumber(port) end
|
||||
|
||||
dyn = ( dyn == 'D' and true or false )
|
||||
nat = ( nat == 'N' and true or false )
|
||||
acl = ( acl ~= ' ' and true or false )
|
||||
|
||||
online, delay = status:match("(OK) %((%d+) ms%)")
|
||||
|
||||
if online == 'OK' then
|
||||
online = true
|
||||
delay = tonumber(delay)
|
||||
elseif status ~= 'Unmonitored' then
|
||||
online = false
|
||||
delay = 0
|
||||
else
|
||||
online = nil
|
||||
delay = 0
|
||||
end
|
||||
|
||||
id, uid = name:match("(.+)/(.+)")
|
||||
|
||||
if not ( id and uid ) then
|
||||
id = name .. "..."
|
||||
uid = nil
|
||||
end
|
||||
|
||||
peers[#peers+1] = {
|
||||
online = online,
|
||||
delay = delay,
|
||||
name = id,
|
||||
user = uid,
|
||||
dynamic = dyn,
|
||||
nat = nat,
|
||||
acl = acl,
|
||||
host = host,
|
||||
port = port
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
return peers
|
||||
end
|
||||
|
||||
--- Get informations of given SIP peer
|
||||
-- @param peer String containing the name of the SIP peer
|
||||
function sip.peer(peer)
|
||||
local info = { }
|
||||
local keys = { }
|
||||
|
||||
for line in io.execi("sip show peer " .. peer) do
|
||||
if #line > 0 then
|
||||
local key, val = line:match("(.-) *: +(.*)")
|
||||
if key and val then
|
||||
|
||||
key = key:gsub("^ +",""):gsub(" +$", "")
|
||||
val = val:gsub("^ +",""):gsub(" +$", "")
|
||||
|
||||
if key == "* Name" then
|
||||
key = "Name"
|
||||
elseif key == "Addr->IP" then
|
||||
info.address, info.port = val:match("(.+) Port (.+)")
|
||||
info.port = tonumber(info.port)
|
||||
elseif key == "Status" then
|
||||
info.online, info.delay = val:match("(OK) %((%d+) ms%)")
|
||||
if info.online == 'OK' then
|
||||
info.online = true
|
||||
info.delay = tonumber(info.delay)
|
||||
elseif status ~= 'Unmonitored' then
|
||||
info.online = false
|
||||
info.delay = 0
|
||||
else
|
||||
info.online = nil
|
||||
info.delay = 0
|
||||
end
|
||||
end
|
||||
|
||||
if val == 'Yes' or val == 'yes' or val == '<Set>' then
|
||||
val = true
|
||||
elseif val == 'No' or val == 'no' then
|
||||
val = false
|
||||
elseif val == '<Not set>' or val == '(none)' then
|
||||
val = nil
|
||||
end
|
||||
|
||||
keys[#keys+1] = key
|
||||
info[key] = val
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return info, keys
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - Internal helpers
|
||||
-- @type module
|
||||
tools = luci.util.class()
|
||||
|
||||
--- Convert given value to a list of tokens. Split by white space.
|
||||
-- @param val String or table value
|
||||
-- @return Table containing tokens
|
||||
function tools.parse_list(v)
|
||||
local tokens = { }
|
||||
|
||||
v = type(v) == "table" and v or { v }
|
||||
for _, v in ipairs(v) do
|
||||
if type(v) == "string" then
|
||||
for v in v:gmatch("(%S+)") do
|
||||
tokens[#tokens+1] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return tokens
|
||||
end
|
||||
|
||||
--- Convert given list to a collection of hyperlinks
|
||||
-- @param list Table of tokens
|
||||
-- @param url String pattern or callback function to construct urls (optional)
|
||||
-- @param sep String containing the seperator (optional, default is ", ")
|
||||
-- @return String containing the html fragment
|
||||
function tools.hyperlinks(list, url, sep)
|
||||
local html
|
||||
|
||||
local function mkurl(p, t)
|
||||
if type(p) == "string" then
|
||||
return p:format(t)
|
||||
elseif type(p) == "function" then
|
||||
return p(t)
|
||||
else
|
||||
return '#'
|
||||
end
|
||||
end
|
||||
|
||||
list = list or { }
|
||||
url = url or "%s"
|
||||
sep = sep or ", "
|
||||
|
||||
for _, token in ipairs(list) do
|
||||
html = ( html and html .. sep or '' ) ..
|
||||
'<a href="%s">%s</a>' %{ mkurl(url, token), token }
|
||||
end
|
||||
|
||||
return html or ''
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - International Direct Dialing Prefixes
|
||||
-- @type module
|
||||
idd = luci.util.class()
|
||||
|
||||
--- Lookup the country name for the given IDD code.
|
||||
-- @param country String containing IDD code
|
||||
-- @return String containing the country name
|
||||
function idd.country(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[3]) == "table" then
|
||||
for _, v2 in ipairs(v[3]) do
|
||||
if v2 == tostring(c) then
|
||||
return v[1]
|
||||
end
|
||||
end
|
||||
elseif v[3] == tostring(c) then
|
||||
return v[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Lookup the country code for the given IDD code.
|
||||
-- @param country String containing IDD code
|
||||
-- @return Table containing the country code(s)
|
||||
function idd.cc(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[3]) == "table" then
|
||||
for _, v2 in ipairs(v[3]) do
|
||||
if v2 == tostring(c) then
|
||||
return type(v[2]) == "table"
|
||||
and v[2] or { v[2] }
|
||||
end
|
||||
end
|
||||
elseif v[3] == tostring(c) then
|
||||
return type(v[2]) == "table"
|
||||
and v[2] or { v[2] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Lookup the IDD code(s) for the given country.
|
||||
-- @param idd String containing the country name
|
||||
-- @return Table containing the IDD code(s)
|
||||
function idd.idd(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if v[1]:lower():match(c:lower()) then
|
||||
return type(v[3]) == "table"
|
||||
and v[3] or { v[3] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Populate given CBI field with IDD codes.
|
||||
-- @param field CBI option object
|
||||
-- @return (nothing)
|
||||
function idd.cbifill(o)
|
||||
for i, v in ipairs(cc_idd.CC_IDD) do
|
||||
o:value("_%i" % i, util.pcdata(v[1]))
|
||||
end
|
||||
|
||||
o.formvalue = function(...)
|
||||
local val = luci.cbi.Value.formvalue(...)
|
||||
if val:sub(1,1) == "_" then
|
||||
val = tonumber((val:gsub("^_", "")))
|
||||
if val then
|
||||
return type(cc_idd.CC_IDD[val][3]) == "table"
|
||||
and cc_idd.CC_IDD[val][3] or { cc_idd.CC_IDD[val][3] }
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
o.cfgvalue = function(...)
|
||||
local val = luci.cbi.Value.cfgvalue(...)
|
||||
if val then
|
||||
val = tools.parse_list(val)
|
||||
for i, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[3]) == "table" then
|
||||
if v[3][1] == val[1] then
|
||||
return "_%i" % i
|
||||
end
|
||||
else
|
||||
if v[3] == val[1] then
|
||||
return "_%i" % i
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - Country Code Prefixes
|
||||
-- @type module
|
||||
cc = luci.util.class()
|
||||
|
||||
--- Lookup the country name for the given CC code.
|
||||
-- @param country String containing CC code
|
||||
-- @return String containing the country name
|
||||
function cc.country(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[2]) == "table" then
|
||||
for _, v2 in ipairs(v[2]) do
|
||||
if v2 == tostring(c) then
|
||||
return v[1]
|
||||
end
|
||||
end
|
||||
elseif v[2] == tostring(c) then
|
||||
return v[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Lookup the international dialing code for the given CC code.
|
||||
-- @param cc String containing CC code
|
||||
-- @return String containing IDD code
|
||||
function cc.idd(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[2]) == "table" then
|
||||
for _, v2 in ipairs(v[2]) do
|
||||
if v2 == tostring(c) then
|
||||
return type(v[3]) == "table"
|
||||
and v[3] or { v[3] }
|
||||
end
|
||||
end
|
||||
elseif v[2] == tostring(c) then
|
||||
return type(v[3]) == "table"
|
||||
and v[3] or { v[3] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Lookup the CC code(s) for the given country.
|
||||
-- @param country String containing the country name
|
||||
-- @return Table containing the CC code(s)
|
||||
function cc.cc(c)
|
||||
for _, v in ipairs(cc_idd.CC_IDD) do
|
||||
if v[1]:lower():match(c:lower()) then
|
||||
return type(v[2]) == "table"
|
||||
and v[2] or { v[2] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Populate given CBI field with CC codes.
|
||||
-- @param field CBI option object
|
||||
-- @return (nothing)
|
||||
function cc.cbifill(o)
|
||||
for i, v in ipairs(cc_idd.CC_IDD) do
|
||||
o:value("_%i" % i, util.pcdata(v[1]))
|
||||
end
|
||||
|
||||
o.formvalue = function(...)
|
||||
local val = luci.cbi.Value.formvalue(...)
|
||||
if val:sub(1,1) == "_" then
|
||||
val = tonumber((val:gsub("^_", "")))
|
||||
if val then
|
||||
return type(cc_idd.CC_IDD[val][2]) == "table"
|
||||
and cc_idd.CC_IDD[val][2] or { cc_idd.CC_IDD[val][2] }
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
o.cfgvalue = function(...)
|
||||
local val = luci.cbi.Value.cfgvalue(...)
|
||||
if val then
|
||||
val = tools.parse_list(val)
|
||||
for i, v in ipairs(cc_idd.CC_IDD) do
|
||||
if type(v[2]) == "table" then
|
||||
if v[2][1] == val[1] then
|
||||
return "_%i" % i
|
||||
end
|
||||
else
|
||||
if v[2] == val[1] then
|
||||
return "_%i" % i
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - Dialzone
|
||||
-- @type module
|
||||
dialzone = luci.util.class()
|
||||
|
||||
--- Parse a dialzone section
|
||||
-- @param zone Table containing the zone info
|
||||
-- @return Table with parsed information
|
||||
function dialzone.parse(z)
|
||||
if z['.name'] then
|
||||
return {
|
||||
trunks = tools.parse_list(z.uses),
|
||||
name = z['.name'],
|
||||
description = z.description or z['.name'],
|
||||
addprefix = z.addprefix,
|
||||
matches = tools.parse_list(z.match),
|
||||
intlmatches = tools.parse_list(z.international),
|
||||
countrycode = z.countrycode,
|
||||
localzone = z.localzone,
|
||||
localprefix = z.localprefix
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
--- Get a list of known dial zones
|
||||
-- @return Associative table of zones and table of zone names
|
||||
function dialzone.zones()
|
||||
local zones = { }
|
||||
local znames = { }
|
||||
uci:foreach("asterisk", "dialzone",
|
||||
function(z)
|
||||
zones[z['.name']] = dialzone.parse(z)
|
||||
znames[#znames+1] = z['.name']
|
||||
end)
|
||||
return zones, znames
|
||||
end
|
||||
|
||||
--- Get a specific dial zone
|
||||
-- @param name Name of the dial zone
|
||||
-- @return Table containing zone information
|
||||
function dialzone.zone(n)
|
||||
local zone
|
||||
uci:foreach("asterisk", "dialzone",
|
||||
function(z)
|
||||
if z['.name'] == n then
|
||||
zone = dialzone.parse(z)
|
||||
end
|
||||
end)
|
||||
return zone
|
||||
end
|
||||
|
||||
--- Find uci section hash for given zone number
|
||||
-- @param idx Zone number
|
||||
-- @return String containing the uci hash pointing to the section
|
||||
function dialzone.ucisection(i)
|
||||
local hash
|
||||
local index = 1
|
||||
i = tonumber(i)
|
||||
uci:foreach("asterisk", "dialzone",
|
||||
function(z)
|
||||
if not hash and index == i then
|
||||
hash = z['.name']
|
||||
end
|
||||
index = index + 1
|
||||
end)
|
||||
return hash
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - Voicemailbox
|
||||
-- @type module
|
||||
voicemail = luci.util.class()
|
||||
|
||||
--- Parse a voicemail section
|
||||
-- @param zone Table containing the mailbox info
|
||||
-- @return Table with parsed information
|
||||
function voicemail.parse(z)
|
||||
if z.number and #z.number > 0 then
|
||||
local v = {
|
||||
id = '%s@%s' %{ z.number, z.context or 'default' },
|
||||
number = z.number,
|
||||
context = z.context or 'default',
|
||||
name = z.name or z['.name'] or 'OpenWrt',
|
||||
zone = z.zone or 'homeloc',
|
||||
password = z.password or '0000',
|
||||
email = z.email or '',
|
||||
page = z.page or '',
|
||||
dialplans = { }
|
||||
}
|
||||
|
||||
uci:foreach("asterisk", "dialplanvoice",
|
||||
function(s)
|
||||
if s.dialplan and #s.dialplan > 0 and
|
||||
s.voicebox == v.number
|
||||
then
|
||||
v.dialplans[#v.dialplans+1] = s.dialplan
|
||||
end
|
||||
end)
|
||||
|
||||
return v
|
||||
end
|
||||
end
|
||||
|
||||
--- Get a list of known voicemail boxes
|
||||
-- @return Associative table of boxes and table of box numbers
|
||||
function voicemail.boxes()
|
||||
local vboxes = { }
|
||||
local vnames = { }
|
||||
uci:foreach("asterisk", "voicemail",
|
||||
function(z)
|
||||
local v = voicemail.parse(z)
|
||||
if v then
|
||||
local n = '%s@%s' %{ v.number, v.context }
|
||||
vboxes[n] = v
|
||||
vnames[#vnames+1] = n
|
||||
end
|
||||
end)
|
||||
return vboxes, vnames
|
||||
end
|
||||
|
||||
--- Get a specific voicemailbox
|
||||
-- @param number Number of the voicemailbox
|
||||
-- @return Table containing mailbox information
|
||||
function voicemail.box(n)
|
||||
local box
|
||||
n = n:gsub("@.+$","")
|
||||
uci:foreach("asterisk", "voicemail",
|
||||
function(z)
|
||||
if z.number == tostring(n) then
|
||||
box = voicemail.parse(z)
|
||||
end
|
||||
end)
|
||||
return box
|
||||
end
|
||||
|
||||
--- Find all voicemailboxes within the given dialplan
|
||||
-- @param plan Dialplan name or table
|
||||
-- @return Associative table containing extensions mapped to mailbox info
|
||||
function voicemail.in_dialplan(p)
|
||||
local plan = type(p) == "string" and p or p.name
|
||||
local boxes = { }
|
||||
uci:foreach("asterisk", "dialplanvoice",
|
||||
function(s)
|
||||
if s.extension and #s.extension > 0 and s.dialplan == plan then
|
||||
local box = voicemail.box(s.voicebox)
|
||||
if box then
|
||||
boxes[s.extension] = box
|
||||
end
|
||||
end
|
||||
end)
|
||||
return boxes
|
||||
end
|
||||
|
||||
--- Remove voicemailbox and associated extensions from config
|
||||
-- @param box Voicemailbox number or table
|
||||
-- @param ctx UCI context to use (optional)
|
||||
-- @return Boolean indicating success
|
||||
function voicemail.remove(v, ctx)
|
||||
ctx = ctx or uci
|
||||
local box = type(v) == "string" and v or v.number
|
||||
local ok1 = ctx:delete_all("asterisk", "voicemail", {number=box})
|
||||
local ok2 = ctx:delete_all("asterisk", "dialplanvoice", {voicebox=box})
|
||||
return ( ok1 or ok2 ) and true or false
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - MeetMe Conferences
|
||||
-- @type module
|
||||
meetme = luci.util.class()
|
||||
|
||||
--- Parse a meetme section
|
||||
-- @param room Table containing the room info
|
||||
-- @return Table with parsed information
|
||||
function meetme.parse(r)
|
||||
if r.room and #r.room > 0 then
|
||||
local v = {
|
||||
room = r.room,
|
||||
pin = r.pin or '',
|
||||
adminpin = r.adminpin or '',
|
||||
description = r._description or '',
|
||||
dialplans = { }
|
||||
}
|
||||
|
||||
uci:foreach("asterisk", "dialplanmeetme",
|
||||
function(s)
|
||||
if s.dialplan and #s.dialplan > 0 and s.room == v.room then
|
||||
v.dialplans[#v.dialplans+1] = s.dialplan
|
||||
end
|
||||
end)
|
||||
|
||||
return v
|
||||
end
|
||||
end
|
||||
|
||||
--- Get a list of known meetme rooms
|
||||
-- @return Associative table of rooms and table of room numbers
|
||||
function meetme.rooms()
|
||||
local mrooms = { }
|
||||
local mnames = { }
|
||||
uci:foreach("asterisk", "meetme",
|
||||
function(r)
|
||||
local v = meetme.parse(r)
|
||||
if v then
|
||||
mrooms[v.room] = v
|
||||
mnames[#mnames+1] = v.room
|
||||
end
|
||||
end)
|
||||
return mrooms, mnames
|
||||
end
|
||||
|
||||
--- Get a specific meetme room
|
||||
-- @param number Number of the room
|
||||
-- @return Table containing room information
|
||||
function meetme.room(n)
|
||||
local room
|
||||
uci:foreach("asterisk", "meetme",
|
||||
function(r)
|
||||
if r.room == tostring(n) then
|
||||
room = meetme.parse(r)
|
||||
end
|
||||
end)
|
||||
return room
|
||||
end
|
||||
|
||||
--- Find all meetme rooms within the given dialplan
|
||||
-- @param plan Dialplan name or table
|
||||
-- @return Associative table containing extensions mapped to room info
|
||||
function meetme.in_dialplan(p)
|
||||
local plan = type(p) == "string" and p or p.name
|
||||
local rooms = { }
|
||||
uci:foreach("asterisk", "dialplanmeetme",
|
||||
function(s)
|
||||
if s.extension and #s.extension > 0 and s.dialplan == plan then
|
||||
local room = meetme.room(s.room)
|
||||
if room then
|
||||
rooms[s.extension] = room
|
||||
end
|
||||
end
|
||||
end)
|
||||
return rooms
|
||||
end
|
||||
|
||||
--- Remove meetme room and associated extensions from config
|
||||
-- @param room Voicemailbox number or table
|
||||
-- @param ctx UCI context to use (optional)
|
||||
-- @return Boolean indicating success
|
||||
function meetme.remove(v, ctx)
|
||||
ctx = ctx or uci
|
||||
local room = type(v) == "string" and v or v.number
|
||||
local ok1 = ctx:delete_all("asterisk", "meetme", {room=room})
|
||||
local ok2 = ctx:delete_all("asterisk", "dialplanmeetme", {room=room})
|
||||
return ( ok1 or ok2 ) and true or false
|
||||
end
|
||||
|
||||
|
||||
--- LuCI Asterisk - Dialplan
|
||||
-- @type module
|
||||
dialplan = luci.util.class()
|
||||
|
||||
--- Parse a dialplan section
|
||||
-- @param plan Table containing the plan info
|
||||
-- @return Table with parsed information
|
||||
function dialplan.parse(z)
|
||||
if z['.name'] then
|
||||
local plan = {
|
||||
zones = { },
|
||||
name = z['.name'],
|
||||
description = z.description or z['.name']
|
||||
}
|
||||
|
||||
-- dialzones
|
||||
for _, name in ipairs(tools.parse_list(z.include)) do
|
||||
local zone = dialzone.zone(name)
|
||||
if zone then
|
||||
plan.zones[#plan.zones+1] = zone
|
||||
end
|
||||
end
|
||||
|
||||
-- voicemailboxes
|
||||
plan.voicemailboxes = voicemail.in_dialplan(plan)
|
||||
|
||||
-- meetme conferences
|
||||
plan.meetmerooms = meetme.in_dialplan(plan)
|
||||
|
||||
return plan
|
||||
end
|
||||
end
|
||||
|
||||
--- Get a list of known dial plans
|
||||
-- @return Associative table of plans and table of plan names
|
||||
function dialplan.plans()
|
||||
local plans = { }
|
||||
local pnames = { }
|
||||
uci:foreach("asterisk", "dialplan",
|
||||
function(p)
|
||||
plans[p['.name']] = dialplan.parse(p)
|
||||
pnames[#pnames+1] = p['.name']
|
||||
end)
|
||||
return plans, pnames
|
||||
end
|
||||
|
||||
--- Get a specific dial plan
|
||||
-- @param name Name of the dial plan
|
||||
-- @return Table containing plan information
|
||||
function dialplan.plan(n)
|
||||
local plan
|
||||
uci:foreach("asterisk", "dialplan",
|
||||
function(p)
|
||||
if p['.name'] == n then
|
||||
plan = dialplan.parse(p)
|
||||
end
|
||||
end)
|
||||
return plan
|
||||
end
|
245
applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua
Normal file
245
applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua
Normal file
@ -0,0 +1,245 @@
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module "luci.asterisk.cc_idd"
|
||||
|
||||
CC_IDD = {
|
||||
-- Country, CC, IDD
|
||||
{ "Afghanistan", "93", "00" },
|
||||
{ "Albania", "355", "00" },
|
||||
{ "Algeria", "213", "00" },
|
||||
{ "American Samoa", "684", "00" },
|
||||
{ "Andorra", "376", "00" },
|
||||
{ "Angola", "244", "00" },
|
||||
{ "Anguilla", "264", "011" },
|
||||
{ "Antarctica", "672", "" },
|
||||
{ "Antigua", "268", "011" },
|
||||
{ "Argentina", "54", "00" },
|
||||
{ "Armenia", "374", "00" },
|
||||
{ "Aruba", "297", "00" },
|
||||
{ "Ascension Island", "247", "00" },
|
||||
{ "Australia", "61", "0011" },
|
||||
{ "Austria", "43", "00" },
|
||||
{ "Azberbaijan", "994", "00" },
|
||||
{ "Bahamas", "242", "011" },
|
||||
{ "Bahrain", "973", "00" },
|
||||
{ "Bangladesh", "880", "00" },
|
||||
{ "Barbados", "246", "011" },
|
||||
{ "Barbuda", "268", "011" },
|
||||
{ "Belarus", "375", "810" },
|
||||
{ "Belgium", "32", "00" },
|
||||
{ "Belize", "501", "00" },
|
||||
{ "Benin", "229", "00" },
|
||||
{ "Bermuda", "441", "011" },
|
||||
{ "Bhutan", "975", "00" },
|
||||
{ "Bolivia", "591", "00" },
|
||||
{ "Bosnia", "387", "00" },
|
||||
{ "Botswana", "267", "00" },
|
||||
{ "Brazil", "55", "00" },
|
||||
{ "British Virgin Islands", "284", "011" },
|
||||
{ "Brunei", "673", "00" },
|
||||
{ "Bulgaria", "359", "00" },
|
||||
{ "Burkina Faso", "226", "00" },
|
||||
{ "Burma (Myanmar)", "95", "00" },
|
||||
{ "Burundi", "257", "00" },
|
||||
{ "Cambodia", "855", "001" },
|
||||
{ "Cameroon", "237", "00" },
|
||||
{ "Canada", "1", "011" },
|
||||
{ "Cape Verde Islands", "238", "0" },
|
||||
{ "Cayman Islands", "345", "011" },
|
||||
{ "Central African Rep.", "236", "00" },
|
||||
{ "Chad", "235", "15" },
|
||||
{ "Chile", "56", "00" },
|
||||
{ "China", "86", "00" },
|
||||
{ "Christmas Island", "61", "0011" },
|
||||
{ "Cocos Islands", "61", "0011" },
|
||||
{ "Colombia", "57", "00" },
|
||||
{ "Comoros", "269", "00" },
|
||||
{ "Congo", "242", "00" },
|
||||
{ "Congo, Dem. Rep. of", "243", "00" },
|
||||
{ "Cook Islands", "682", "00" },
|
||||
{ "Costa Rica", "506", "00" },
|
||||
{ "Croatia", "385", "00" },
|
||||
{ "Cuba", "53", "119" },
|
||||
{ "Cyprus", "357", "00" },
|
||||
{ "Czech Republic", "420", "00" },
|
||||
{ "Denmark", "45", "00" },
|
||||
{ "Diego Garcia", "246", "00" },
|
||||
{ "Djibouti", "253", "00" },
|
||||
{ "Dominica", "767", "011" },
|
||||
{ "Dominican Rep.", "809", "011" },
|
||||
{ "Ecuador", "593", "00" },
|
||||
{ "Egypt", "20", "00" },
|
||||
{ "El Salvador", "503", "00" },
|
||||
{ "Equatorial Guinea", "240", "00" },
|
||||
{ "Eritrea", "291", "00" },
|
||||
{ "Estonia", "372", "00" },
|
||||
{ "Ethiopia", "251", "00" },
|
||||
{ "Faeroe Islands", "298", "00" },
|
||||
{ "Falkland Islands", "500", "00" },
|
||||
{ "Fiji Islands", "679", "00" },
|
||||
{ "Finland", "358", "00" },
|
||||
{ "France", "33", "00" },
|
||||
{ "French Antilles", "596", "00" },
|
||||
{ "French Guiana", "594", "00" },
|
||||
{ "French Polynesia", "689", "00" },
|
||||
{ "Gabon", "241", "00" },
|
||||
{ "Gambia", "220", "00" },
|
||||
{ "Georgia", "995", "810" },
|
||||
{ "Germany", "49", "00" },
|
||||
{ "Ghana", "233", "00" },
|
||||
{ "Gibraltar", "350", "00" },
|
||||
{ "Greece", "30", "00" },
|
||||
{ "Greenland", "299", "00" },
|
||||
{ "Grenada", "473", "011" },
|
||||
{ "Guadeloupe", "590", "00" },
|
||||
{ "Guam", "671", "011" },
|
||||
{ "Guantanamo Bay", "5399", "00" },
|
||||
{ "Guatemala", "502", "00" },
|
||||
{ "Guinea", "224", "00" },
|
||||
{ "Guinea Bissau", "245", "00" },
|
||||
{ "Guyana", "592", "001" },
|
||||
{ "Haiti", "509", "00" },
|
||||
{ "Honduras", "504", "00" },
|
||||
{ "Hong Kong", "852", "001" },
|
||||
{ "Hungary", "36", "00" },
|
||||
{ "Iceland", "354", "00" },
|
||||
{ "India", "91", "00" },
|
||||
{ "Indonesia", "62", { "001", "008" } },
|
||||
{ "Iran", "98", "00" },
|
||||
{ "Iraq", "964", "00" },
|
||||
{ "Ireland", "353", "00" },
|
||||
{ "Israel", "972", "00" },
|
||||
{ "Italy", "39", "00" },
|
||||
{ "Ivory Coast", "225", "00" },
|
||||
{ "Jamaica", "876", "011" },
|
||||
{ "Japan", "81", "001" },
|
||||
{ "Jordan", "962", "00" },
|
||||
{ "Kazakhstan", "7", "810" },
|
||||
{ "Kenya", "254", "000" },
|
||||
{ "Kiribati", "686", "00" },
|
||||
{ "Korea, North", "850", "00" },
|
||||
{ "Korea, South", "82", "001" },
|
||||
{ "Kuwait", "965", "00" },
|
||||
{ "Kyrgyzstan", "996", "00" },
|
||||
{ "Laos", "856", "00" },
|
||||
{ "Latvia", "371", "00" },
|
||||
{ "Lebanon", "961", "00" },
|
||||
{ "Lesotho", "266", "00" },
|
||||
{ "Liberia", "231", "00" },
|
||||
{ "Libya", "218", "00" },
|
||||
{ "Liechtenstein", "423", "00" },
|
||||
{ "Lithuania", "370", "00" },
|
||||
{ "Luxembourg", "352", "00" },
|
||||
{ "Macau", "853", "00" },
|
||||
{ "Macedonia", "389", "00" },
|
||||
{ "Madagascar", "261", "00" },
|
||||
{ "Malawi", "265", "00" },
|
||||
{ "Malaysia", "60", "00" },
|
||||
{ "Maldives", "960", "00" },
|
||||
{ "Mali", "223", "00" },
|
||||
{ "Malta", "356", "00" },
|
||||
{ "Mariana Islands", "670", "011" },
|
||||
{ "Marshall Islands", "692", "011" },
|
||||
{ "Martinique", "596", "00" },
|
||||
{ "Mauritania", "222", "00" },
|
||||
{ "Mauritius", "230", "00" },
|
||||
{ "Mayotte Islands", "269", "00" },
|
||||
{ "Mexico", "52", "00" },
|
||||
{ "Micronesia", "691", "011" },
|
||||
{ "Midway Island", "808", "011" },
|
||||
{ "Moldova", "373", "00" },
|
||||
{ "Monaco", "377", "00" },
|
||||
{ "Mongolia", "976", "001" },
|
||||
{ "Montserrat", "664", "011" },
|
||||
{ "Morocco", "212", "00" },
|
||||
{ "Mozambique", "258", "00" },
|
||||
{ "Myanmar (Burma)", "95", "00" },
|
||||
{ "Namibia", "264", "00" },
|
||||
{ "Nauru", "674", "00" },
|
||||
{ "Nepal", "977", "00" },
|
||||
{ "Netherlands", "31", "00" },
|
||||
{ "Netherlands Antilles", "599", "00" },
|
||||
{ "Nevis", "869", "011" },
|
||||
{ "New Caledonia", "687", "00" },
|
||||
{ "New Zealand", "64", "00" },
|
||||
{ "Nicaragua", "505", "00" },
|
||||
{ "Niger", "227", "00" },
|
||||
{ "Nigeria", "234", "009" },
|
||||
{ "Niue", "683", "00" },
|
||||
{ "Norfolk Island", "672", "00" },
|
||||
{ "Norway", "47", "00" },
|
||||
{ "Oman", "968", "00" },
|
||||
{ "Pakistan", "92", "00" },
|
||||
{ "Palau", "680", "011" },
|
||||
{ "Palestine", "970", "00" },
|
||||
{ "Panama", "507", "00" },
|
||||
{ "Papua New Guinea", "675", "05" },
|
||||
{ "Paraguay", "595", "002" },
|
||||
{ "Peru", "51", "00" },
|
||||
{ "Philippines", "63", "00" },
|
||||
{ "Poland", "48", "00" },
|
||||
{ "Portugal", "351", "00" },
|
||||
{ "Puerto Rico", { "787", "939" }, "011" },
|
||||
{ "Qatar", "974", "00" },
|
||||
{ "Reunion Island", "262", "00" },
|
||||
{ "Romania", "40", "00" },
|
||||
{ "Russia", "7", "810" },
|
||||
{ "Rwanda", "250", "00" },
|
||||
{ "St. Helena", "290", "00" },
|
||||
{ "St. Kitts", "869", "011" },
|
||||
{ "St. Lucia", "758", "011" },
|
||||
{ "St. Perre & Miquelon", "508", "00" },
|
||||
{ "St. Vincent", "784", "011" },
|
||||
{ "San Marino", "378", "00" },
|
||||
{ "Sao Tome & Principe", "239", "00" },
|
||||
{ "Saudi Arabia", "966", "00" },
|
||||
{ "Senegal", "221", "00" },
|
||||
{ "Serbia", "381", "99" },
|
||||
{ "Seychelles", "248", "00" },
|
||||
{ "Sierra Leone", "232", "00" },
|
||||
{ "Singapore", "65", "001" },
|
||||
{ "Slovakia", "421", "00" },
|
||||
{ "Slovenia", "386", "00" },
|
||||
{ "Solomon Islands", "677", "00" },
|
||||
{ "Somalia", "252", "00" },
|
||||
{ "South Africa", "27", "09" },
|
||||
{ "Spain", "34", "00" },
|
||||
{ "Sri Lanka", "94", "00" },
|
||||
{ "Sudan", "249", "00" },
|
||||
{ "Suriname", "597", "00" },
|
||||
{ "Swaziland", "268", "00" },
|
||||
{ "Sweden", "46", "00" },
|
||||
{ "Switzerland", "41", "00" },
|
||||
{ "Syria", "963", "00" },
|
||||
{ "Taiwan", "886", "002" },
|
||||
{ "Tajikistan", "992", "810" },
|
||||
{ "Tanzania", "255", "00" },
|
||||
{ "Thailand", "66", "001" },
|
||||
{ "Togo", "228", "00" },
|
||||
{ "Tonga", "676", "00" },
|
||||
{ "Trinidad & Tobago", "868", "011" },
|
||||
{ "Tunisia", "216", "00" },
|
||||
{ "Turkey", "90", "00" },
|
||||
{ "Turkmenistan", "993", "810" },
|
||||
{ "Turks & Caicos", "649", "011" },
|
||||
{ "Tuvalu", "688", "00" },
|
||||
{ "Uganda", "256", "000" },
|
||||
{ "Ukraine", "380", "810" },
|
||||
{ "United Arab Emirates", "971", "00" },
|
||||
{ "United Kingdom", "44", "00" },
|
||||
{ "Uruguay", "598", "00" },
|
||||
{ "USA", "1", "011" },
|
||||
{ "US Virgin Islands", "340", "011" },
|
||||
{ "Uzbekistan", "998", "810" },
|
||||
{ "Vanuatu", "678", "00" },
|
||||
{ "Vatican City", "39", "00" },
|
||||
{ "Venezuela", "58", "00" },
|
||||
{ "Vietnam", "84", "00" },
|
||||
{ "Wake Island", "808", "00" },
|
||||
{ "Wallis & Futuna", "681", "19" },
|
||||
{ "Western Samoa", "685", "00" },
|
||||
{ "Yemen", "967", "00" },
|
||||
{ "Yugoslavia", "381", "99" },
|
||||
{ "Zambia", "260", "00" },
|
||||
{ "Zimbabwe", "263", "00" }
|
||||
}
|
194
applications/luci-app-asterisk/luasrc/controller/asterisk.lua
Normal file
194
applications/luci-app-asterisk/luasrc/controller/asterisk.lua
Normal file
@ -0,0 +1,194 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module("luci.controller.asterisk", package.seeall)
|
||||
|
||||
function index()
|
||||
|
||||
entry({"admin", "services", "asterisk"}, cbi("asterisk"), "Asterisk", 80)
|
||||
|
||||
entry({"admin", "services", "asterisk", "voice"}, cbi("asterisk-voice"), "Voice Functions", 1)
|
||||
entry({"admin", "services", "asterisk", "meetme"}, cbi("asterisk-meetme"), "Meetme Conferences", 2)
|
||||
|
||||
entry({"admin", "services", "asterisk", "iax-conns"}, cbi("asterisk-iax-connections"), "IAX Connections", 3)
|
||||
entry({"admin", "services", "asterisk", "sip-conns"}, cbi("asterisk-sip-connections"), "SIP Connections", 4)
|
||||
|
||||
entry({"admin", "services", "asterisk", "dialplans"}, cbi("asterisk-dialplans"), "Dial Plans", 5)
|
||||
|
||||
entry({"admin", "services", "asterisk", "mod"}, cbi("asterisk-mod-app"), "Modules", 4)
|
||||
entry({"admin", "services", "asterisk", "mod", "app"}, cbi("asterisk-mod-app"), "Applications", 1)
|
||||
entry({"admin", "services", "asterisk", "mod", "cdr"}, cbi("asterisk-mod-cdr"), "Call Detail Records", 2)
|
||||
entry({"admin", "services", "asterisk", "mod", "chan"}, cbi("asterisk-mod-chan"), "Channels", 3)
|
||||
entry({"admin", "services", "asterisk", "mod", "codec"}, cbi("asterisk-mod-codec"), "Codecs", 4)
|
||||
entry({"admin", "services", "asterisk", "mod", "format"}, cbi("asterisk-mod-format"), "Format", 5)
|
||||
entry({"admin", "services", "asterisk", "mod", "func"}, cbi("asterisk-mod-func"), "Functions", 6)
|
||||
entry({"admin", "services", "asterisk", "mod", "pbx"}, cbi("asterisk-mod-pbx"), "PBX", 7)
|
||||
entry({"admin", "services", "asterisk", "mod", "res"}, cbi("asterisk-mod-res"), "Resources", 8)
|
||||
entry({"admin", "services", "asterisk", "mod", "res", "feature"},
|
||||
cbi("asterisk-mod-res-feature"), "Feature Module Configuration", 9 )
|
||||
|
||||
|
||||
entry({"admin", "asterisk"}, cbi("asterisk/main"), "Asterisk", 99).i18n = "asterisk"
|
||||
|
||||
entry({"admin", "asterisk", "phones"}, cbi("asterisk/phones"), "Phones", 1)
|
||||
entry({"admin", "asterisk", "phones", "sip"}, cbi("asterisk/phone_sip"), nil, 1).leaf = true
|
||||
--entry({"admin", "asterisk", "phones", "exten"}, cbi("asterisk/phone_exten"), "Extensions", 2).leaf = true
|
||||
|
||||
entry({"admin", "asterisk", "trunks"}, cbi("asterisk/trunks"), "Trunks", 2)
|
||||
entry({"admin", "asterisk", "trunks", "sip"}, cbi("asterisk/trunk_sip"), nil, 1).leaf = true
|
||||
|
||||
entry({"admin", "asterisk", "voicemail"}, cbi("asterisk/voicemail"), "Voicemail", 3)
|
||||
entry({"admin", "asterisk", "voicemail", "mailboxes"}, cbi("asterisk/voicemail"), "Mailboxes", 1)
|
||||
entry({"admin", "asterisk", "voicemail", "settings"}, cbi("asterisk/voicemail_settings"), "Settings", 2)
|
||||
|
||||
entry({"admin", "asterisk", "meetme"}, cbi("asterisk/meetme"), "MeetMe", 4)
|
||||
entry({"admin", "asterisk", "meetme", "rooms"}, cbi("asterisk/meetme"), "Rooms", 1)
|
||||
entry({"admin", "asterisk", "meetme", "settings"}, cbi("asterisk/meetme_settings"), "Settings", 2)
|
||||
|
||||
entry({"admin", "asterisk", "dialplans"}, call("handle_dialplan"), "Call Routing", 5)
|
||||
entry({"admin", "asterisk", "dialplans", "out"}, cbi("asterisk/dialplan_out"), nil, 1).leaf = true
|
||||
entry({"admin", "asterisk", "dialplans", "zones"}, call("handle_dialzones"), "Dial Zones", 2).leaf = true
|
||||
|
||||
end
|
||||
|
||||
|
||||
function handle_dialplan()
|
||||
local uci = luci.model.uci.cursor()
|
||||
local ast = require "luci.asterisk"
|
||||
local err = false
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("delzone")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
if #v > 0 and plan then
|
||||
local newinc = { }
|
||||
|
||||
for _, z in ipairs(plan.zones) do
|
||||
if z.name ~= v then
|
||||
newinc[#newinc+1] = z.name
|
||||
end
|
||||
end
|
||||
|
||||
uci:delete("asterisk", plan.name, "include")
|
||||
|
||||
if #newinc > 0 then
|
||||
uci:set("asterisk", plan.name, "include", newinc)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("addzone")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
local zone = ast.dialzone.zone(v)
|
||||
if #v > 0 and plan and zone then
|
||||
local newinc = { zone.name }
|
||||
|
||||
for _, z in ipairs(plan.zones) do
|
||||
newinc[#newinc+1] = z.name
|
||||
end
|
||||
|
||||
uci:delete("asterisk", plan.name, "include")
|
||||
|
||||
if #newinc > 0 then
|
||||
uci:set("asterisk", plan.name, "include", newinc)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("delvbox")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
if #v > 0 and plan then
|
||||
uci:delete_all("asterisk", "dialplanvoice",
|
||||
{ extension=v, dialplan=plan.name })
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("addvbox")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
local vbox = ast.voicemail.box(v)
|
||||
if plan and vbox then
|
||||
local vext = luci.http.formvalue("addvboxext.%s" % plan.name)
|
||||
vext = ( vext and #vext > 0 ) and vext or vbox.number
|
||||
uci:section("asterisk", "dialplanvoice", nil, {
|
||||
dialplan = plan.name,
|
||||
extension = vext,
|
||||
voicebox = vbox.number,
|
||||
voicecontext = vbox.context
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("delmeetme")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
if #v > 0 and plan then
|
||||
uci:delete_all("asterisk", "dialplanmeetme",
|
||||
{ extension=v, dialplan=plan.name })
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(luci.http.formvaluetable("addmeetme")) do
|
||||
local plan = ast.dialplan.plan(k)
|
||||
local meetme = ast.meetme.room(v)
|
||||
if plan and meetme then
|
||||
local mext = luci.http.formvalue("addmeetmeext.%s" % plan.name)
|
||||
mext = ( mext and #mext > 0 ) and mext or meetme.room
|
||||
uci:section("asterisk", "dialplanmeetme", nil, {
|
||||
dialplan = plan.name,
|
||||
extension = mext,
|
||||
room = meetme.room
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local aname = luci.http.formvalue("addplan")
|
||||
if aname and #aname > 0 then
|
||||
if aname:match("^[a-zA-Z0-9_]+$") then
|
||||
uci:section("asterisk", "dialplan", aname, { })
|
||||
else
|
||||
err = true
|
||||
end
|
||||
end
|
||||
|
||||
local dname = luci.http.formvalue("delplan")
|
||||
if dname and #dname > 0 then
|
||||
if uci:get("asterisk", dname) == "dialplan" then
|
||||
uci:delete("asterisk", dname)
|
||||
uci:delete_all("asterisk", "dialplanvoice", { dialplan=dname })
|
||||
uci:delete_all("asterisk", "dialplanmeetme", { dialplan=dname })
|
||||
end
|
||||
end
|
||||
|
||||
uci:save("asterisk")
|
||||
ast.uci_resync()
|
||||
|
||||
luci.template.render("asterisk/dialplans", { create_error = err })
|
||||
end
|
||||
|
||||
function handle_dialzones()
|
||||
local ast = require "luci.asterisk"
|
||||
local uci = luci.model.uci.cursor()
|
||||
local err = false
|
||||
|
||||
if luci.http.formvalue("newzone") then
|
||||
local name = luci.http.formvalue("newzone_name")
|
||||
if name and name:match("^[a-zA-Z0-9_]+$") then
|
||||
uci:section("asterisk", "dialzone", name, {
|
||||
uses = ast.tools.parse_list(luci.http.formvalue("newzone_uses") or {}),
|
||||
match = ast.tools.parse_list(luci.http.formvalue("newzone_match") or {})
|
||||
})
|
||||
uci:save("asterisk")
|
||||
else
|
||||
err = true
|
||||
end
|
||||
end
|
||||
|
||||
if luci.http.formvalue("delzone") then
|
||||
local name = luci.http.formvalue("delzone")
|
||||
if uci:get("asterisk", name) == "dialzone" then
|
||||
uci:delete("asterisk", name)
|
||||
uci:save("asterisk")
|
||||
end
|
||||
end
|
||||
|
||||
luci.template.render("asterisk/dialzones", { create_error = err })
|
||||
end
|
@ -0,0 +1,91 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
dialplan = cbimap:section(TypedSection, "dialplan", "Section dialplan", "")
|
||||
dialplan.addremove = true
|
||||
dialplan.dynamic = true
|
||||
|
||||
include = dialplan:option(MultiValue, "include", "Include zones and plans", "")
|
||||
cbimap.uci:foreach( "asterisk", "dialplan", function(s) include:value(s['.name']) end )
|
||||
cbimap.uci:foreach( "asterisk", "dialzone", function(s) include:value(s['.name']) end )
|
||||
|
||||
dialplanexten = cbimap:section(TypedSection, "dialplanexten", "Dialplan Extension", "")
|
||||
dialplanexten.anonymous = true
|
||||
dialplanexten.addremove = true
|
||||
dialplanexten.dynamic = true
|
||||
|
||||
|
||||
dialplangeneral = cbimap:section(TypedSection, "dialplangeneral", "Dialplan General Options", "")
|
||||
dialplangeneral.anonymous = true
|
||||
dialplangeneral.addremove = true
|
||||
|
||||
allowtransfer = dialplangeneral:option(Flag, "allowtransfer", "Allow transfer", "")
|
||||
allowtransfer.rmempty = true
|
||||
|
||||
canreinvite = dialplangeneral:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "")
|
||||
canreinvite:value("yes", "Yes")
|
||||
canreinvite:value("nonat", "Yes when not behind NAT")
|
||||
canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection")
|
||||
canreinvite:value("no", "No")
|
||||
canreinvite.rmempty = true
|
||||
|
||||
clearglobalvars = dialplangeneral:option(Flag, "clearglobalvars", "Clear global vars", "")
|
||||
clearglobalvars.rmempty = true
|
||||
|
||||
|
||||
dialplangoto = cbimap:section(TypedSection, "dialplangoto", "Dialplan Goto", "")
|
||||
dialplangoto.anonymous = true
|
||||
dialplangoto.addremove = true
|
||||
dialplangoto.dynamic = true
|
||||
|
||||
|
||||
dialplanmeetme = cbimap:section(TypedSection, "dialplanmeetme", "Dialplan Conference", "")
|
||||
dialplanmeetme.anonymous = true
|
||||
dialplanmeetme.addremove = true
|
||||
dialplanmeetme.dynamic = true
|
||||
|
||||
|
||||
dialplansaytime = cbimap:section(TypedSection, "dialplansaytime", "Dialplan Time", "")
|
||||
dialplansaytime.anonymous = true
|
||||
dialplansaytime.addremove = true
|
||||
dialplansaytime.dynamic = true
|
||||
|
||||
|
||||
dialplanvoice = cbimap:section(TypedSection, "dialplanvoice", "Dialplan Voicemail", "")
|
||||
dialplanvoice.anonymous = true
|
||||
dialplanvoice.addremove = true
|
||||
dialplanvoice.dynamic = true
|
||||
|
||||
|
||||
dialzone = cbimap:section(TypedSection, "dialzone", "Dial Zones for Dialplan", "")
|
||||
dialzone.addremove = true
|
||||
dialzone.template = "cbi/tblsection"
|
||||
|
||||
addprefix = dialzone:option(Value, "addprefix", "Prefix to add matching dialplans", "")
|
||||
addprefix.rmempty = true
|
||||
|
||||
--international = dialzone:option(DynamicList, "international", "Match International prefix", "")
|
||||
international = dialzone:option(Value, "international", "Match International prefix", "")
|
||||
international.rmempty = true
|
||||
|
||||
localprefix = dialzone:option(Value, "localprefix", "Prefix (0) to add/remove to/from intl. numbers", "")
|
||||
localprefix.rmempty = true
|
||||
|
||||
localzone = dialzone:option(Value, "localzone", "Dialzone for intl. numbers matched as local", "")
|
||||
localzone.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" )
|
||||
cbimap.uci:foreach( "asterisk", "dialplan", function(s) localzone:value(s['.name']) end )
|
||||
cbimap.uci:foreach( "asterisk", "dialzone", function(s) localzone:value(s['.name']) end )
|
||||
|
||||
match = dialzone:option(Value, "match", "Match plan", "")
|
||||
match.rmempty = true
|
||||
|
||||
uses = dialzone:option(ListValue, "uses", "Connection to use", "")
|
||||
uses.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "sip-conns" )
|
||||
cbimap.uci:foreach( "asterisk", "sip", function(s) uses:value('SIP/'..s['.name']) end )
|
||||
cbimap.uci:foreach( "asterisk", "iax", function(s) uses:value('IAX/'..s['.name']) end )
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,49 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
iax = cbimap:section(TypedSection, "iax", "IAX Connection", "")
|
||||
iax.addremove = true
|
||||
|
||||
alwaysinternational = iax:option(Flag, "alwaysinternational", "Always Dial International", "")
|
||||
alwaysinternational.optional = true
|
||||
|
||||
context = iax:option(ListValue, "context", "Context to use", "")
|
||||
context.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" )
|
||||
cbimap.uci:foreach( "asterisk", "dialplan", function(s) context:value(s['.name']) end )
|
||||
cbimap.uci:foreach( "asterisk", "dialzone", function(s) context:value(s['.name']) end )
|
||||
|
||||
countrycode = iax:option(Value, "countrycode", "Country Code for connection", "")
|
||||
countrycode.optional = true
|
||||
|
||||
extension = iax:option(Value, "extension", "Add as Extension", "")
|
||||
extension.optional = true
|
||||
|
||||
host = iax:option(Value, "host", "Host name (or blank)", "")
|
||||
host.optional = true
|
||||
|
||||
internationalprefix = iax:option(Value, "internationalprefix", "International Dial Prefix", "")
|
||||
internationalprefix.optional = true
|
||||
|
||||
prefix = iax:option(Value, "prefix", "Dial Prefix (for external line)", "")
|
||||
prefix.optional = true
|
||||
|
||||
secret = iax:option(Value, "secret", "Secret", "")
|
||||
secret.optional = true
|
||||
|
||||
timeout = iax:option(Value, "timeout", "Dial Timeout (sec)", "")
|
||||
timeout.optional = true
|
||||
|
||||
type = iax:option(ListValue, "type", "Option type", "")
|
||||
type:value("friend", "Friend (outbound/inbound)")
|
||||
type:value("user", "User (inbound - authenticate by \"from\")")
|
||||
type:value("peer", "Peer (outbound - match by host)")
|
||||
type.optional = true
|
||||
|
||||
username = iax:option(Value, "username", "User name", "")
|
||||
username.optional = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,22 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
meetmegeneral = cbimap:section(TypedSection, "meetmegeneral", "Meetme Conference General Options", "")
|
||||
|
||||
audiobuffers = meetmegeneral:option(Value, "audiobuffers", "Number of 20ms audio buffers to be used", "")
|
||||
|
||||
|
||||
meetme = cbimap:section(TypedSection, "meetme", "Meetme Conference", "")
|
||||
meetme.addremove = true
|
||||
|
||||
adminpin = meetme:option(Value, "adminpin", "Admin PIN", "")
|
||||
adminpin.password = true
|
||||
|
||||
pin = meetme:option(Value, "pin", "Meeting PIN", "")
|
||||
pin.password = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,391 @@
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
app_alarmreceiver = module:option(ListValue, "app_alarmreceiver", "Alarm Receiver Application", "")
|
||||
app_alarmreceiver:value("yes", "Load")
|
||||
app_alarmreceiver:value("no", "Do Not Load")
|
||||
app_alarmreceiver:value("auto", "Load as Required")
|
||||
app_alarmreceiver.rmempty = true
|
||||
|
||||
app_authenticate = module:option(ListValue, "app_authenticate", "Authentication Application", "")
|
||||
app_authenticate:value("yes", "Load")
|
||||
app_authenticate:value("no", "Do Not Load")
|
||||
app_authenticate:value("auto", "Load as Required")
|
||||
app_authenticate.rmempty = true
|
||||
|
||||
app_cdr = module:option(ListValue, "app_cdr", "Make sure asterisk doesn't save CDR", "")
|
||||
app_cdr:value("yes", "Load")
|
||||
app_cdr:value("no", "Do Not Load")
|
||||
app_cdr:value("auto", "Load as Required")
|
||||
app_cdr.rmempty = true
|
||||
|
||||
app_chanisavail = module:option(ListValue, "app_chanisavail", "Check if channel is available", "")
|
||||
app_chanisavail:value("yes", "Load")
|
||||
app_chanisavail:value("no", "Do Not Load")
|
||||
app_chanisavail:value("auto", "Load as Required")
|
||||
app_chanisavail.rmempty = true
|
||||
|
||||
app_chanspy = module:option(ListValue, "app_chanspy", "Listen in on any channel", "")
|
||||
app_chanspy:value("yes", "Load")
|
||||
app_chanspy:value("no", "Do Not Load")
|
||||
app_chanspy:value("auto", "Load as Required")
|
||||
app_chanspy.rmempty = true
|
||||
|
||||
app_controlplayback = module:option(ListValue, "app_controlplayback", "Control Playback Application", "")
|
||||
app_controlplayback:value("yes", "Load")
|
||||
app_controlplayback:value("no", "Do Not Load")
|
||||
app_controlplayback:value("auto", "Load as Required")
|
||||
app_controlplayback.rmempty = true
|
||||
|
||||
app_cut = module:option(ListValue, "app_cut", "Cuts up variables", "")
|
||||
app_cut:value("yes", "Load")
|
||||
app_cut:value("no", "Do Not Load")
|
||||
app_cut:value("auto", "Load as Required")
|
||||
app_cut.rmempty = true
|
||||
|
||||
app_db = module:option(ListValue, "app_db", "Database access functions", "")
|
||||
app_db:value("yes", "Load")
|
||||
app_db:value("no", "Do Not Load")
|
||||
app_db:value("auto", "Load as Required")
|
||||
app_db.rmempty = true
|
||||
|
||||
app_dial = module:option(ListValue, "app_dial", "Dialing Application", "")
|
||||
app_dial:value("yes", "Load")
|
||||
app_dial:value("no", "Do Not Load")
|
||||
app_dial:value("auto", "Load as Required")
|
||||
app_dial.rmempty = true
|
||||
|
||||
app_dictate = module:option(ListValue, "app_dictate", "Virtual Dictation Machine Application", "")
|
||||
app_dictate:value("yes", "Load")
|
||||
app_dictate:value("no", "Do Not Load")
|
||||
app_dictate:value("auto", "Load as Required")
|
||||
app_dictate.rmempty = true
|
||||
|
||||
app_directed_pickup = module:option(ListValue, "app_directed_pickup", "Directed Call Pickup Support", "")
|
||||
app_directed_pickup:value("yes", "Load")
|
||||
app_directed_pickup:value("no", "Do Not Load")
|
||||
app_directed_pickup:value("auto", "Load as Required")
|
||||
app_directed_pickup.rmempty = true
|
||||
|
||||
app_directory = module:option(ListValue, "app_directory", "Extension Directory", "")
|
||||
app_directory:value("yes", "Load")
|
||||
app_directory:value("no", "Do Not Load")
|
||||
app_directory:value("auto", "Load as Required")
|
||||
app_directory.rmempty = true
|
||||
|
||||
app_disa = module:option(ListValue, "app_disa", "DISA (Direct Inward System Access) Application", "")
|
||||
app_disa:value("yes", "Load")
|
||||
app_disa:value("no", "Do Not Load")
|
||||
app_disa:value("auto", "Load as Required")
|
||||
app_disa.rmempty = true
|
||||
|
||||
app_dumpchan = module:option(ListValue, "app_dumpchan", "Dump channel variables Application", "")
|
||||
app_dumpchan:value("yes", "Load")
|
||||
app_dumpchan:value("no", "Do Not Load")
|
||||
app_dumpchan:value("auto", "Load as Required")
|
||||
app_dumpchan.rmempty = true
|
||||
|
||||
app_echo = module:option(ListValue, "app_echo", "Simple Echo Application", "")
|
||||
app_echo:value("yes", "Load")
|
||||
app_echo:value("no", "Do Not Load")
|
||||
app_echo:value("auto", "Load as Required")
|
||||
app_echo.rmempty = true
|
||||
|
||||
app_enumlookup = module:option(ListValue, "app_enumlookup", "ENUM Lookup", "")
|
||||
app_enumlookup:value("yes", "Load")
|
||||
app_enumlookup:value("no", "Do Not Load")
|
||||
app_enumlookup:value("auto", "Load as Required")
|
||||
app_enumlookup.rmempty = true
|
||||
|
||||
app_eval = module:option(ListValue, "app_eval", "Reevaluates strings", "")
|
||||
app_eval:value("yes", "Load")
|
||||
app_eval:value("no", "Do Not Load")
|
||||
app_eval:value("auto", "Load as Required")
|
||||
app_eval.rmempty = true
|
||||
|
||||
app_exec = module:option(ListValue, "app_exec", "Executes applications", "")
|
||||
app_exec:value("yes", "Load")
|
||||
app_exec:value("no", "Do Not Load")
|
||||
app_exec:value("auto", "Load as Required")
|
||||
app_exec.rmempty = true
|
||||
|
||||
app_externalivr = module:option(ListValue, "app_externalivr", "External IVR application interface", "")
|
||||
app_externalivr:value("yes", "Load")
|
||||
app_externalivr:value("no", "Do Not Load")
|
||||
app_externalivr:value("auto", "Load as Required")
|
||||
app_externalivr.rmempty = true
|
||||
|
||||
app_forkcdr = module:option(ListValue, "app_forkcdr", "Fork The CDR into 2 separate entities", "")
|
||||
app_forkcdr:value("yes", "Load")
|
||||
app_forkcdr:value("no", "Do Not Load")
|
||||
app_forkcdr:value("auto", "Load as Required")
|
||||
app_forkcdr.rmempty = true
|
||||
|
||||
app_getcpeid = module:option(ListValue, "app_getcpeid", "Get ADSI CPE ID", "")
|
||||
app_getcpeid:value("yes", "Load")
|
||||
app_getcpeid:value("no", "Do Not Load")
|
||||
app_getcpeid:value("auto", "Load as Required")
|
||||
app_getcpeid.rmempty = true
|
||||
|
||||
app_groupcount = module:option(ListValue, "app_groupcount", "Group Management Routines", "")
|
||||
app_groupcount:value("yes", "Load")
|
||||
app_groupcount:value("no", "Do Not Load")
|
||||
app_groupcount:value("auto", "Load as Required")
|
||||
app_groupcount.rmempty = true
|
||||
|
||||
app_ices = module:option(ListValue, "app_ices", "Encode and Stream via icecast and ices", "")
|
||||
app_ices:value("yes", "Load")
|
||||
app_ices:value("no", "Do Not Load")
|
||||
app_ices:value("auto", "Load as Required")
|
||||
app_ices.rmempty = true
|
||||
|
||||
app_image = module:option(ListValue, "app_image", "Image Transmission Application", "")
|
||||
app_image:value("yes", "Load")
|
||||
app_image:value("no", "Do Not Load")
|
||||
app_image:value("auto", "Load as Required")
|
||||
app_image.rmempty = true
|
||||
|
||||
app_lookupblacklist = module:option(ListValue, "app_lookupblacklist", "Look up Caller*ID name/number from black", "")
|
||||
app_lookupblacklist:value("yes", "Load")
|
||||
app_lookupblacklist:value("no", "Do Not Load")
|
||||
app_lookupblacklist:value("auto", "Load as Required")
|
||||
app_lookupblacklist.rmempty = true
|
||||
|
||||
app_lookupcidname = module:option(ListValue, "app_lookupcidname", "Look up CallerID Name from local databas", "")
|
||||
app_lookupcidname:value("yes", "Load")
|
||||
app_lookupcidname:value("no", "Do Not Load")
|
||||
app_lookupcidname:value("auto", "Load as Required")
|
||||
app_lookupcidname.rmempty = true
|
||||
|
||||
app_macro = module:option(ListValue, "app_macro", "Extension Macros", "")
|
||||
app_macro:value("yes", "Load")
|
||||
app_macro:value("no", "Do Not Load")
|
||||
app_macro:value("auto", "Load as Required")
|
||||
app_macro.rmempty = true
|
||||
|
||||
app_math = module:option(ListValue, "app_math", "A simple math Application", "")
|
||||
app_math:value("yes", "Load")
|
||||
app_math:value("no", "Do Not Load")
|
||||
app_math:value("auto", "Load as Required")
|
||||
app_math.rmempty = true
|
||||
|
||||
app_md5 = module:option(ListValue, "app_md5", "MD5 checksum Application", "")
|
||||
app_md5:value("yes", "Load")
|
||||
app_md5:value("no", "Do Not Load")
|
||||
app_md5:value("auto", "Load as Required")
|
||||
app_md5.rmempty = true
|
||||
|
||||
app_milliwatt = module:option(ListValue, "app_milliwatt", "Digital Milliwatt (mu-law) Test Application", "")
|
||||
app_milliwatt:value("yes", "Load")
|
||||
app_milliwatt:value("no", "Do Not Load")
|
||||
app_milliwatt:value("auto", "Load as Required")
|
||||
app_milliwatt.rmempty = true
|
||||
|
||||
app_mixmonitor = module:option(ListValue, "app_mixmonitor", "Record a call and mix the audio during the recording", "")
|
||||
app_mixmonitor:value("yes", "Load")
|
||||
app_mixmonitor:value("no", "Do Not Load")
|
||||
app_mixmonitor:value("auto", "Load as Required")
|
||||
app_mixmonitor.rmempty = true
|
||||
|
||||
app_parkandannounce = module:option(ListValue, "app_parkandannounce", "Call Parking and Announce Application", "")
|
||||
app_parkandannounce:value("yes", "Load")
|
||||
app_parkandannounce:value("no", "Do Not Load")
|
||||
app_parkandannounce:value("auto", "Load as Required")
|
||||
app_parkandannounce.rmempty = true
|
||||
|
||||
app_playback = module:option(ListValue, "app_playback", "Trivial Playback Application", "")
|
||||
app_playback:value("yes", "Load")
|
||||
app_playback:value("no", "Do Not Load")
|
||||
app_playback:value("auto", "Load as Required")
|
||||
app_playback.rmempty = true
|
||||
|
||||
app_privacy = module:option(ListValue, "app_privacy", "Require phone number to be entered", "")
|
||||
app_privacy:value("yes", "Load")
|
||||
app_privacy:value("no", "Do Not Load")
|
||||
app_privacy:value("auto", "Load as Required")
|
||||
app_privacy.rmempty = true
|
||||
|
||||
app_queue = module:option(ListValue, "app_queue", "True Call Queueing", "")
|
||||
app_queue:value("yes", "Load")
|
||||
app_queue:value("no", "Do Not Load")
|
||||
app_queue:value("auto", "Load as Required")
|
||||
app_queue.rmempty = true
|
||||
|
||||
app_random = module:option(ListValue, "app_random", "Random goto", "")
|
||||
app_random:value("yes", "Load")
|
||||
app_random:value("no", "Do Not Load")
|
||||
app_random:value("auto", "Load as Required")
|
||||
app_random.rmempty = true
|
||||
|
||||
app_read = module:option(ListValue, "app_read", "Read Variable Application", "")
|
||||
app_read:value("yes", "Load")
|
||||
app_read:value("no", "Do Not Load")
|
||||
app_read:value("auto", "Load as Required")
|
||||
app_read.rmempty = true
|
||||
|
||||
app_readfile = module:option(ListValue, "app_readfile", "Read in a file", "")
|
||||
app_readfile:value("yes", "Load")
|
||||
app_readfile:value("no", "Do Not Load")
|
||||
app_readfile:value("auto", "Load as Required")
|
||||
app_readfile.rmempty = true
|
||||
|
||||
app_realtime = module:option(ListValue, "app_realtime", "Realtime Data Lookup/Rewrite", "")
|
||||
app_realtime:value("yes", "Load")
|
||||
app_realtime:value("no", "Do Not Load")
|
||||
app_realtime:value("auto", "Load as Required")
|
||||
app_realtime.rmempty = true
|
||||
|
||||
app_record = module:option(ListValue, "app_record", "Trivial Record Application", "")
|
||||
app_record:value("yes", "Load")
|
||||
app_record:value("no", "Do Not Load")
|
||||
app_record:value("auto", "Load as Required")
|
||||
app_record.rmempty = true
|
||||
|
||||
app_sayunixtime = module:option(ListValue, "app_sayunixtime", "Say time", "")
|
||||
app_sayunixtime:value("yes", "Load")
|
||||
app_sayunixtime:value("no", "Do Not Load")
|
||||
app_sayunixtime:value("auto", "Load as Required")
|
||||
app_sayunixtime.rmempty = true
|
||||
|
||||
app_senddtmf = module:option(ListValue, "app_senddtmf", "Send DTMF digits Application", "")
|
||||
app_senddtmf:value("yes", "Load")
|
||||
app_senddtmf:value("no", "Do Not Load")
|
||||
app_senddtmf:value("auto", "Load as Required")
|
||||
app_senddtmf.rmempty = true
|
||||
|
||||
app_sendtext = module:option(ListValue, "app_sendtext", "Send Text Applications", "")
|
||||
app_sendtext:value("yes", "Load")
|
||||
app_sendtext:value("no", "Do Not Load")
|
||||
app_sendtext:value("auto", "Load as Required")
|
||||
app_sendtext.rmempty = true
|
||||
|
||||
app_setcallerid = module:option(ListValue, "app_setcallerid", "Set CallerID Application", "")
|
||||
app_setcallerid:value("yes", "Load")
|
||||
app_setcallerid:value("no", "Do Not Load")
|
||||
app_setcallerid:value("auto", "Load as Required")
|
||||
app_setcallerid.rmempty = true
|
||||
|
||||
app_setcdruserfield = module:option(ListValue, "app_setcdruserfield", "CDR user field apps", "")
|
||||
app_setcdruserfield:value("yes", "Load")
|
||||
app_setcdruserfield:value("no", "Do Not Load")
|
||||
app_setcdruserfield:value("auto", "Load as Required")
|
||||
app_setcdruserfield.rmempty = true
|
||||
|
||||
app_setcidname = module:option(ListValue, "app_setcidname", "load => .so ; Set CallerID Name", "")
|
||||
app_setcidname:value("yes", "Load")
|
||||
app_setcidname:value("no", "Do Not Load")
|
||||
app_setcidname:value("auto", "Load as Required")
|
||||
app_setcidname.rmempty = true
|
||||
|
||||
app_setcidnum = module:option(ListValue, "app_setcidnum", "load => .so ; Set CallerID Number", "")
|
||||
app_setcidnum:value("yes", "Load")
|
||||
app_setcidnum:value("no", "Do Not Load")
|
||||
app_setcidnum:value("auto", "Load as Required")
|
||||
app_setcidnum.rmempty = true
|
||||
|
||||
app_setrdnis = module:option(ListValue, "app_setrdnis", "Set RDNIS Number", "")
|
||||
app_setrdnis:value("yes", "Load")
|
||||
app_setrdnis:value("no", "Do Not Load")
|
||||
app_setrdnis:value("auto", "Load as Required")
|
||||
app_setrdnis.rmempty = true
|
||||
|
||||
app_settransfercapability = module:option(ListValue, "app_settransfercapability", "Set ISDN Transfer Capability", "")
|
||||
app_settransfercapability:value("yes", "Load")
|
||||
app_settransfercapability:value("no", "Do Not Load")
|
||||
app_settransfercapability:value("auto", "Load as Required")
|
||||
app_settransfercapability.rmempty = true
|
||||
|
||||
app_sms = module:option(ListValue, "app_sms", "SMS/PSTN handler", "")
|
||||
app_sms:value("yes", "Load")
|
||||
app_sms:value("no", "Do Not Load")
|
||||
app_sms:value("auto", "Load as Required")
|
||||
app_sms.rmempty = true
|
||||
|
||||
app_softhangup = module:option(ListValue, "app_softhangup", "Hangs up the requested channel", "")
|
||||
app_softhangup:value("yes", "Load")
|
||||
app_softhangup:value("no", "Do Not Load")
|
||||
app_softhangup:value("auto", "Load as Required")
|
||||
app_softhangup.rmempty = true
|
||||
|
||||
app_stack = module:option(ListValue, "app_stack", "Stack Routines", "")
|
||||
app_stack:value("yes", "Load")
|
||||
app_stack:value("no", "Do Not Load")
|
||||
app_stack:value("auto", "Load as Required")
|
||||
app_stack.rmempty = true
|
||||
|
||||
app_system = module:option(ListValue, "app_system", "Generic System() application", "")
|
||||
app_system:value("yes", "Load")
|
||||
app_system:value("no", "Do Not Load")
|
||||
app_system:value("auto", "Load as Required")
|
||||
app_system.rmempty = true
|
||||
|
||||
app_talkdetect = module:option(ListValue, "app_talkdetect", "Playback with Talk Detection", "")
|
||||
app_talkdetect:value("yes", "Load")
|
||||
app_talkdetect:value("no", "Do Not Load")
|
||||
app_talkdetect:value("auto", "Load as Required")
|
||||
app_talkdetect.rmempty = true
|
||||
|
||||
app_test = module:option(ListValue, "app_test", "Interface Test Application", "")
|
||||
app_test:value("yes", "Load")
|
||||
app_test:value("no", "Do Not Load")
|
||||
app_test:value("auto", "Load as Required")
|
||||
app_test.rmempty = true
|
||||
|
||||
app_transfer = module:option(ListValue, "app_transfer", "Transfer", "")
|
||||
app_transfer:value("yes", "Load")
|
||||
app_transfer:value("no", "Do Not Load")
|
||||
app_transfer:value("auto", "Load as Required")
|
||||
app_transfer.rmempty = true
|
||||
|
||||
app_txtcidname = module:option(ListValue, "app_txtcidname", "TXTCIDName", "")
|
||||
app_txtcidname:value("yes", "Load")
|
||||
app_txtcidname:value("no", "Do Not Load")
|
||||
app_txtcidname:value("auto", "Load as Required")
|
||||
app_txtcidname.rmempty = true
|
||||
|
||||
app_url = module:option(ListValue, "app_url", "Send URL Applications", "")
|
||||
app_url:value("yes", "Load")
|
||||
app_url:value("no", "Do Not Load")
|
||||
app_url:value("auto", "Load as Required")
|
||||
app_url.rmempty = true
|
||||
|
||||
app_userevent = module:option(ListValue, "app_userevent", "Custom User Event Application", "")
|
||||
app_userevent:value("yes", "Load")
|
||||
app_userevent:value("no", "Do Not Load")
|
||||
app_userevent:value("auto", "Load as Required")
|
||||
app_userevent.rmempty = true
|
||||
|
||||
app_verbose = module:option(ListValue, "app_verbose", "Send verbose output", "")
|
||||
app_verbose:value("yes", "Load")
|
||||
app_verbose:value("no", "Do Not Load")
|
||||
app_verbose:value("auto", "Load as Required")
|
||||
app_verbose.rmempty = true
|
||||
|
||||
app_voicemail = module:option(ListValue, "app_voicemail", "Voicemail", "")
|
||||
app_voicemail:value("yes", "Load")
|
||||
app_voicemail:value("no", "Do Not Load")
|
||||
app_voicemail:value("auto", "Load as Required")
|
||||
app_voicemail.rmempty = true
|
||||
|
||||
app_waitforring = module:option(ListValue, "app_waitforring", "Waits until first ring after time", "")
|
||||
app_waitforring:value("yes", "Load")
|
||||
app_waitforring:value("no", "Do Not Load")
|
||||
app_waitforring:value("auto", "Load as Required")
|
||||
app_waitforring.rmempty = true
|
||||
|
||||
app_waitforsilence = module:option(ListValue, "app_waitforsilence", "Wait For Silence Application", "")
|
||||
app_waitforsilence:value("yes", "Load")
|
||||
app_waitforsilence:value("no", "Do Not Load")
|
||||
app_waitforsilence:value("auto", "Load as Required")
|
||||
app_waitforsilence.rmempty = true
|
||||
|
||||
app_while = module:option(ListValue, "app_while", "While Loops and Conditional Execution", "")
|
||||
app_while:value("yes", "Load")
|
||||
app_while:value("no", "Do Not Load")
|
||||
app_while:value("auto", "Load as Required")
|
||||
app_while.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,47 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
cdr_csv = module:option(ListValue, "cdr_csv", "Comma Separated Values CDR Backend", "")
|
||||
cdr_csv:value("yes", "Load")
|
||||
cdr_csv:value("no", "Do Not Load")
|
||||
cdr_csv:value("auto", "Load as Required")
|
||||
cdr_csv.rmempty = true
|
||||
|
||||
cdr_custom = module:option(ListValue, "cdr_custom", "Customizable Comma Separated Values CDR Backend", "")
|
||||
cdr_custom:value("yes", "Load")
|
||||
cdr_custom:value("no", "Do Not Load")
|
||||
cdr_custom:value("auto", "Load as Required")
|
||||
cdr_custom.rmempty = true
|
||||
|
||||
cdr_manager = module:option(ListValue, "cdr_manager", "Asterisk Call Manager CDR Backend", "")
|
||||
cdr_manager:value("yes", "Load")
|
||||
cdr_manager:value("no", "Do Not Load")
|
||||
cdr_manager:value("auto", "Load as Required")
|
||||
cdr_manager.rmempty = true
|
||||
|
||||
cdr_mysql = module:option(ListValue, "cdr_mysql", "MySQL CDR Backend", "")
|
||||
cdr_mysql:value("yes", "Load")
|
||||
cdr_mysql:value("no", "Do Not Load")
|
||||
cdr_mysql:value("auto", "Load as Required")
|
||||
cdr_mysql.rmempty = true
|
||||
|
||||
cdr_pgsql = module:option(ListValue, "cdr_pgsql", "PostgreSQL CDR Backend", "")
|
||||
cdr_pgsql:value("yes", "Load")
|
||||
cdr_pgsql:value("no", "Do Not Load")
|
||||
cdr_pgsql:value("auto", "Load as Required")
|
||||
cdr_pgsql.rmempty = true
|
||||
|
||||
cdr_sqlite = module:option(ListValue, "cdr_sqlite", "SQLite CDR Backend", "")
|
||||
cdr_sqlite:value("yes", "Load")
|
||||
cdr_sqlite:value("no", "Do Not Load")
|
||||
cdr_sqlite:value("auto", "Load as Required")
|
||||
cdr_sqlite.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,45 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
chan_agent = module:option(ListValue, "chan_agent", "Agent Proxy Channel", "")
|
||||
chan_agent:value("yes", "Load")
|
||||
chan_agent:value("no", "Do Not Load")
|
||||
chan_agent:value("auto", "Load as Required")
|
||||
chan_agent.rmempty = true
|
||||
|
||||
chan_alsa = module:option(ListValue, "chan_alsa", "Channel driver for GTalk", "")
|
||||
chan_alsa:value("yes", "Load")
|
||||
chan_alsa:value("no", "Do Not Load")
|
||||
chan_alsa:value("auto", "Load as Required")
|
||||
chan_alsa.rmempty = true
|
||||
|
||||
chan_gtalk = module:option(ListValue, "chan_gtalk", "Channel driver for GTalk", "")
|
||||
chan_gtalk:value("yes", "Load")
|
||||
chan_gtalk:value("no", "Do Not Load")
|
||||
chan_gtalk:value("auto", "Load as Required")
|
||||
chan_gtalk.rmempty = true
|
||||
|
||||
chan_iax2 = module:option(Flag, "chan_iax2", "Option chan_iax2", "")
|
||||
chan_iax2.rmempty = true
|
||||
|
||||
chan_local = module:option(ListValue, "chan_local", "Local Proxy Channel", "")
|
||||
chan_local:value("yes", "Load")
|
||||
chan_local:value("no", "Do Not Load")
|
||||
chan_local:value("auto", "Load as Required")
|
||||
chan_local.rmempty = true
|
||||
|
||||
chan_sip = module:option(ListValue, "chan_sip", "Session Initiation Protocol (SIP)", "")
|
||||
chan_sip:value("yes", "Load")
|
||||
chan_sip:value("no", "Do Not Load")
|
||||
chan_sip:value("auto", "Load as Required")
|
||||
chan_sip.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,53 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
codec_a_mu = module:option(ListValue, "codec_a_mu", "A-law and Mulaw direct Coder/Decoder", "")
|
||||
codec_a_mu:value("yes", "Load")
|
||||
codec_a_mu:value("no", "Do Not Load")
|
||||
codec_a_mu:value("auto", "Load as Required")
|
||||
codec_a_mu.rmempty = true
|
||||
|
||||
codec_adpcm = module:option(ListValue, "codec_adpcm", "Adaptive Differential PCM Coder/Decoder", "")
|
||||
codec_adpcm:value("yes", "Load")
|
||||
codec_adpcm:value("no", "Do Not Load")
|
||||
codec_adpcm:value("auto", "Load as Required")
|
||||
codec_adpcm.rmempty = true
|
||||
|
||||
codec_alaw = module:option(ListValue, "codec_alaw", "A-law Coder/Decoder", "")
|
||||
codec_alaw:value("yes", "Load")
|
||||
codec_alaw:value("no", "Do Not Load")
|
||||
codec_alaw:value("auto", "Load as Required")
|
||||
codec_alaw.rmempty = true
|
||||
|
||||
codec_g726 = module:option(ListValue, "codec_g726", "ITU G.726-32kbps G726 Transcoder", "")
|
||||
codec_g726:value("yes", "Load")
|
||||
codec_g726:value("no", "Do Not Load")
|
||||
codec_g726:value("auto", "Load as Required")
|
||||
codec_g726.rmempty = true
|
||||
|
||||
codec_gsm = module:option(ListValue, "codec_gsm", "GSM/PCM16 (signed linear) Codec Translation", "")
|
||||
codec_gsm:value("yes", "Load")
|
||||
codec_gsm:value("no", "Do Not Load")
|
||||
codec_gsm:value("auto", "Load as Required")
|
||||
codec_gsm.rmempty = true
|
||||
|
||||
codec_speex = module:option(ListValue, "codec_speex", "Speex/PCM16 (signed linear) Codec Translator", "")
|
||||
codec_speex:value("yes", "Load")
|
||||
codec_speex:value("no", "Do Not Load")
|
||||
codec_speex:value("auto", "Load as Required")
|
||||
codec_speex.rmempty = true
|
||||
|
||||
codec_ulaw = module:option(ListValue, "codec_ulaw", "Mu-law Coder/Decoder", "")
|
||||
codec_ulaw:value("yes", "Load")
|
||||
codec_ulaw:value("no", "Do Not Load")
|
||||
codec_ulaw:value("auto", "Load as Required")
|
||||
codec_ulaw.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,89 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
format_au = module:option(ListValue, "format_au", "Sun Microsystems AU format (signed linear)", "")
|
||||
format_au:value("yes", "Load")
|
||||
format_au:value("no", "Do Not Load")
|
||||
format_au:value("auto", "Load as Required")
|
||||
format_au.rmempty = true
|
||||
|
||||
format_g723 = module:option(ListValue, "format_g723", "G.723.1 Simple Timestamp File Format", "")
|
||||
format_g723:value("yes", "Load")
|
||||
format_g723:value("no", "Do Not Load")
|
||||
format_g723:value("auto", "Load as Required")
|
||||
format_g723.rmempty = true
|
||||
|
||||
format_g726 = module:option(ListValue, "format_g726", "Raw G.726 (16/24/32/40kbps) data", "")
|
||||
format_g726:value("yes", "Load")
|
||||
format_g726:value("no", "Do Not Load")
|
||||
format_g726:value("auto", "Load as Required")
|
||||
format_g726.rmempty = true
|
||||
|
||||
format_g729 = module:option(ListValue, "format_g729", "Raw G729 data", "")
|
||||
format_g729:value("yes", "Load")
|
||||
format_g729:value("no", "Do Not Load")
|
||||
format_g729:value("auto", "Load as Required")
|
||||
format_g729.rmempty = true
|
||||
|
||||
format_gsm = module:option(ListValue, "format_gsm", "Raw GSM data", "")
|
||||
format_gsm:value("yes", "Load")
|
||||
format_gsm:value("no", "Do Not Load")
|
||||
format_gsm:value("auto", "Load as Required")
|
||||
format_gsm.rmempty = true
|
||||
|
||||
format_h263 = module:option(ListValue, "format_h263", "Raw h263 data", "")
|
||||
format_h263:value("yes", "Load")
|
||||
format_h263:value("no", "Do Not Load")
|
||||
format_h263:value("auto", "Load as Required")
|
||||
format_h263.rmempty = true
|
||||
|
||||
format_jpeg = module:option(ListValue, "format_jpeg", "JPEG (Joint Picture Experts Group) Image", "")
|
||||
format_jpeg:value("yes", "Load")
|
||||
format_jpeg:value("no", "Do Not Load")
|
||||
format_jpeg:value("auto", "Load as Required")
|
||||
format_jpeg.rmempty = true
|
||||
|
||||
format_pcm = module:option(ListValue, "format_pcm", "Raw uLaw 8khz Audio support (PCM)", "")
|
||||
format_pcm:value("yes", "Load")
|
||||
format_pcm:value("no", "Do Not Load")
|
||||
format_pcm:value("auto", "Load as Required")
|
||||
format_pcm.rmempty = true
|
||||
|
||||
format_pcm_alaw = module:option(ListValue, "format_pcm_alaw", "load => .so ; Raw aLaw 8khz PCM Audio support", "")
|
||||
format_pcm_alaw:value("yes", "Load")
|
||||
format_pcm_alaw:value("no", "Do Not Load")
|
||||
format_pcm_alaw:value("auto", "Load as Required")
|
||||
format_pcm_alaw.rmempty = true
|
||||
|
||||
format_sln = module:option(ListValue, "format_sln", "Raw Signed Linear Audio support (SLN)", "")
|
||||
format_sln:value("yes", "Load")
|
||||
format_sln:value("no", "Do Not Load")
|
||||
format_sln:value("auto", "Load as Required")
|
||||
format_sln.rmempty = true
|
||||
|
||||
format_vox = module:option(ListValue, "format_vox", "Dialogic VOX (ADPCM) File Format", "")
|
||||
format_vox:value("yes", "Load")
|
||||
format_vox:value("no", "Do Not Load")
|
||||
format_vox:value("auto", "Load as Required")
|
||||
format_vox.rmempty = true
|
||||
|
||||
format_wav = module:option(ListValue, "format_wav", "Microsoft WAV format (8000hz Signed Line", "")
|
||||
format_wav:value("yes", "Load")
|
||||
format_wav:value("no", "Do Not Load")
|
||||
format_wav:value("auto", "Load as Required")
|
||||
format_wav.rmempty = true
|
||||
|
||||
format_wav_gsm = module:option(ListValue, "format_wav_gsm", "Microsoft WAV format (Proprietary GSM)", "")
|
||||
format_wav_gsm:value("yes", "Load")
|
||||
format_wav_gsm:value("no", "Do Not Load")
|
||||
format_wav_gsm:value("auto", "Load as Required")
|
||||
format_wav_gsm.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,29 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
func_callerid = module:option(ListValue, "func_callerid", "Caller ID related dialplan functions", "")
|
||||
func_callerid:value("yes", "Load")
|
||||
func_callerid:value("no", "Do Not Load")
|
||||
func_callerid:value("auto", "Load as Required")
|
||||
func_callerid.rmempty = true
|
||||
|
||||
func_enum = module:option(ListValue, "func_enum", "ENUM Functions", "")
|
||||
func_enum:value("yes", "Load")
|
||||
func_enum:value("no", "Do Not Load")
|
||||
func_enum:value("auto", "Load as Required")
|
||||
func_enum.rmempty = true
|
||||
|
||||
func_uri = module:option(ListValue, "func_uri", "URI encoding / decoding functions", "")
|
||||
func_uri:value("yes", "Load")
|
||||
func_uri:value("no", "Do Not Load")
|
||||
func_uri:value("auto", "Load as Required")
|
||||
func_uri.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,53 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
pbx_ael = module:option(ListValue, "pbx_ael", "Asterisk Extension Language Compiler", "")
|
||||
pbx_ael:value("yes", "Load")
|
||||
pbx_ael:value("no", "Do Not Load")
|
||||
pbx_ael:value("auto", "Load as Required")
|
||||
pbx_ael.rmempty = true
|
||||
|
||||
pbx_config = module:option(ListValue, "pbx_config", "Text Extension Configuration", "")
|
||||
pbx_config:value("yes", "Load")
|
||||
pbx_config:value("no", "Do Not Load")
|
||||
pbx_config:value("auto", "Load as Required")
|
||||
pbx_config.rmempty = true
|
||||
|
||||
pbx_functions = module:option(ListValue, "pbx_functions", "load => .so ; Builtin dialplan functions", "")
|
||||
pbx_functions:value("yes", "Load")
|
||||
pbx_functions:value("no", "Do Not Load")
|
||||
pbx_functions:value("auto", "Load as Required")
|
||||
pbx_functions.rmempty = true
|
||||
|
||||
pbx_loopback = module:option(ListValue, "pbx_loopback", "Loopback Switch", "")
|
||||
pbx_loopback:value("yes", "Load")
|
||||
pbx_loopback:value("no", "Do Not Load")
|
||||
pbx_loopback:value("auto", "Load as Required")
|
||||
pbx_loopback.rmempty = true
|
||||
|
||||
pbx_realtime = module:option(ListValue, "pbx_realtime", "Realtime Switch", "")
|
||||
pbx_realtime:value("yes", "Load")
|
||||
pbx_realtime:value("no", "Do Not Load")
|
||||
pbx_realtime:value("auto", "Load as Required")
|
||||
pbx_realtime.rmempty = true
|
||||
|
||||
pbx_spool = module:option(ListValue, "pbx_spool", "Outgoing Spool Support", "")
|
||||
pbx_spool:value("yes", "Load")
|
||||
pbx_spool:value("no", "Do Not Load")
|
||||
pbx_spool:value("auto", "Load as Required")
|
||||
pbx_spool.rmempty = true
|
||||
|
||||
pbx_wilcalu = module:option(ListValue, "pbx_wilcalu", "Wil Cal U (Auto Dialer)", "")
|
||||
pbx_wilcalu:value("yes", "Load")
|
||||
pbx_wilcalu:value("no", "Do Not Load")
|
||||
pbx_wilcalu:value("auto", "Load as Required")
|
||||
pbx_wilcalu.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,100 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
featuremap = cbimap:section(TypedSection, "featuremap", "Feature Key maps", "")
|
||||
featuremap.anonymous = true
|
||||
featuremap.addremove = true
|
||||
|
||||
atxfer = featuremap:option(Value, "atxfer", "Attended transfer key", "")
|
||||
atxfer.rmempty = true
|
||||
|
||||
blindxfer = featuremap:option(Value, "blindxfer", "Blind transfer key", "")
|
||||
blindxfer.rmempty = true
|
||||
|
||||
disconnect = featuremap:option(Value, "disconnect", "Key to Disconnect call", "")
|
||||
disconnect.rmempty = true
|
||||
|
||||
parkcall = featuremap:option(Value, "parkcall", "Key to Park call", "")
|
||||
parkcall.rmempty = true
|
||||
|
||||
|
||||
featurepark = cbimap:section(TypedSection, "featurepark", "Parking Feature", "")
|
||||
featurepark.anonymous = true
|
||||
|
||||
parkenabled = featurepark:option(Flag, "parkenabled", "Enable Parking", "")
|
||||
|
||||
adsipark = featurepark:option(Flag, "adsipark", "ADSI Park", "")
|
||||
adsipark.rmempty = true
|
||||
adsipark:depends({ parkenabled = "1" })
|
||||
|
||||
atxfernoanswertimeout = featurepark:option(Value, "atxfernoanswertimeout", "Attended transfer timeout (sec)", "")
|
||||
atxfernoanswertimeout.rmempty = true
|
||||
atxfernoanswertimeout:depends({ parkenabled = "1" })
|
||||
|
||||
automon = featurepark:option(Value, "automon", "One touch record key", "")
|
||||
automon.rmempty = true
|
||||
automon:depends({ parkenabled = "1" })
|
||||
|
||||
context = featurepark:option(Value, "context", "Name of call context for parking", "")
|
||||
context.rmempty = true
|
||||
context:depends({ parkenabled = "1" })
|
||||
|
||||
courtesytone = featurepark:option(Value, "courtesytone", "Sound file to play to parked caller", "")
|
||||
courtesytone.rmempty = true
|
||||
courtesytone:depends({ parkenabled = "1" })
|
||||
|
||||
featuredigittimeout = featurepark:option(Value, "featuredigittimeout", "Max time (ms) between digits for feature activation", "")
|
||||
featuredigittimeout.rmempty = true
|
||||
featuredigittimeout:depends({ parkenabled = "1" })
|
||||
|
||||
findslot = featurepark:option(ListValue, "findslot", "Method to Find Parking slot", "")
|
||||
findslot:value("first", "First available slot")
|
||||
findslot:value("next", "Next free parking space")
|
||||
findslot.rmempty = true
|
||||
findslot:depends({ parkenabled = "1" })
|
||||
|
||||
parkedmusicclass = featurepark:option(ListValue, "parkedmusicclass", "Music on Hold class for the parked channel", "")
|
||||
parkedmusicclass.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk" )
|
||||
parkedmusicclass:depends({ parkenabled = "1" })
|
||||
cbimap.uci:foreach( "asterisk", "moh", function(s) parkedmusicclass:value(s['.name']) end )
|
||||
|
||||
parkedplay = featurepark:option(ListValue, "parkedplay", "Play courtesy tone to", "")
|
||||
parkedplay:value("caller", "Caller")
|
||||
parkedplay:value("parked", "Parked user")
|
||||
parkedplay:value("both", "Both")
|
||||
parkedplay.rmempty = true
|
||||
parkedplay:depends({ parkenabled = "1" })
|
||||
|
||||
parkext = featurepark:option(Value, "parkext", "Extension to dial to park", "")
|
||||
parkext.rmempty = true
|
||||
parkext:depends({ parkenabled = "1" })
|
||||
|
||||
parkingtime = featurepark:option(Value, "parkingtime", "Parking time (secs)", "")
|
||||
parkingtime.rmempty = true
|
||||
parkingtime:depends({ parkenabled = "1" })
|
||||
|
||||
parkpos = featurepark:option(Value, "parkpos", "Range of extensions for call parking", "")
|
||||
parkpos.rmempty = true
|
||||
parkpos:depends({ parkenabled = "1" })
|
||||
|
||||
pickupexten = featurepark:option(Value, "pickupexten", "Pickup extension", "")
|
||||
pickupexten.rmempty = true
|
||||
pickupexten:depends({ parkenabled = "1" })
|
||||
|
||||
transferdigittimeout = featurepark:option(Value, "transferdigittimeout", "Seconds to wait between digits when transferring", "")
|
||||
transferdigittimeout.rmempty = true
|
||||
transferdigittimeout:depends({ parkenabled = "1" })
|
||||
|
||||
xferfailsound = featurepark:option(Value, "xferfailsound", "sound when attended transfer is complete", "")
|
||||
xferfailsound.rmempty = true
|
||||
xferfailsound:depends({ parkenabled = "1" })
|
||||
|
||||
xfersound = featurepark:option(Value, "xfersound", "Sound when attended transfer fails", "")
|
||||
xfersound.rmempty = true
|
||||
xfersound:depends({ parkenabled = "1" })
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,77 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
module = cbimap:section(TypedSection, "module", "Modules", "")
|
||||
module.anonymous = true
|
||||
|
||||
res_config_mysql = module:option(ListValue, "res_config_mysql", "MySQL Config Resource", "")
|
||||
res_config_mysql:value("yes", "Load")
|
||||
res_config_mysql:value("no", "Do Not Load")
|
||||
res_config_mysql:value("auto", "Load as Required")
|
||||
res_config_mysql.rmempty = true
|
||||
|
||||
res_config_odbc = module:option(ListValue, "res_config_odbc", "ODBC Config Resource", "")
|
||||
res_config_odbc:value("yes", "Load")
|
||||
res_config_odbc:value("no", "Do Not Load")
|
||||
res_config_odbc:value("auto", "Load as Required")
|
||||
res_config_odbc.rmempty = true
|
||||
|
||||
res_config_pgsql = module:option(ListValue, "res_config_pgsql", "PGSQL Module", "")
|
||||
res_config_pgsql:value("yes", "Load")
|
||||
res_config_pgsql:value("no", "Do Not Load")
|
||||
res_config_pgsql:value("auto", "Load as Required")
|
||||
res_config_pgsql.rmempty = true
|
||||
|
||||
res_crypto = module:option(ListValue, "res_crypto", "Cryptographic Digital Signatures", "")
|
||||
res_crypto:value("yes", "Load")
|
||||
res_crypto:value("no", "Do Not Load")
|
||||
res_crypto:value("auto", "Load as Required")
|
||||
res_crypto.rmempty = true
|
||||
|
||||
res_features = module:option(ListValue, "res_features", "Call Parking Resource", "")
|
||||
res_features:value("yes", "Load")
|
||||
res_features:value("no", "Do Not Load")
|
||||
res_features:value("auto", "Load as Required")
|
||||
res_features.rmempty = true
|
||||
|
||||
res_indications = module:option(ListValue, "res_indications", "Indications Configuration", "")
|
||||
res_indications:value("yes", "Load")
|
||||
res_indications:value("no", "Do Not Load")
|
||||
res_indications:value("auto", "Load as Required")
|
||||
res_indications.rmempty = true
|
||||
|
||||
res_monitor = module:option(ListValue, "res_monitor", "Call Monitoring Resource", "")
|
||||
res_monitor:value("yes", "Load")
|
||||
res_monitor:value("no", "Do Not Load")
|
||||
res_monitor:value("auto", "Load as Required")
|
||||
res_monitor.rmempty = true
|
||||
|
||||
res_musiconhold = module:option(ListValue, "res_musiconhold", "Music On Hold Resource", "")
|
||||
res_musiconhold:value("yes", "Load")
|
||||
res_musiconhold:value("no", "Do Not Load")
|
||||
res_musiconhold:value("auto", "Load as Required")
|
||||
res_musiconhold.rmempty = true
|
||||
|
||||
res_odbc = module:option(ListValue, "res_odbc", "ODBC Resource", "")
|
||||
res_odbc:value("yes", "Load")
|
||||
res_odbc:value("no", "Do Not Load")
|
||||
res_odbc:value("auto", "Load as Required")
|
||||
res_odbc.rmempty = true
|
||||
|
||||
res_smdi = module:option(ListValue, "res_smdi", "SMDI Module", "")
|
||||
res_smdi:value("yes", "Load")
|
||||
res_smdi:value("no", "Do Not Load")
|
||||
res_smdi:value("auto", "Load as Required")
|
||||
res_smdi.rmempty = true
|
||||
|
||||
res_snmp = module:option(ListValue, "res_snmp", "SNMP Module", "")
|
||||
res_snmp:value("yes", "Load")
|
||||
res_snmp:value("no", "Do Not Load")
|
||||
res_snmp:value("auto", "Load as Required")
|
||||
res_snmp.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,98 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
sip = cbimap:section(TypedSection, "sip", "SIP Connection", "")
|
||||
sip.addremove = true
|
||||
|
||||
alwaysinternational = sip:option(Flag, "alwaysinternational", "Always Dial International", "")
|
||||
alwaysinternational.optional = true
|
||||
|
||||
canreinvite = sip:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "")
|
||||
canreinvite:value("yes", "Yes")
|
||||
canreinvite:value("nonat", "Yes when not behind NAT")
|
||||
canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection")
|
||||
canreinvite:value("no", "No")
|
||||
canreinvite.optional = true
|
||||
|
||||
context = sip:option(ListValue, "context", "Context to use", "")
|
||||
context.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" )
|
||||
cbimap.uci:foreach( "asterisk", "dialplan", function(s) context:value(s['.name']) end )
|
||||
cbimap.uci:foreach( "asterisk", "dialzone", function(s) context:value(s['.name']) end )
|
||||
|
||||
countrycode = sip:option(Value, "countrycode", "Country Code for connection", "")
|
||||
countrycode.optional = true
|
||||
|
||||
dtmfmode = sip:option(ListValue, "dtmfmode", "DTMF mode", "")
|
||||
dtmfmode:value("info", "Use RFC2833 or INFO for the BudgeTone")
|
||||
dtmfmode:value("rfc2833", "Use RFC2833 for the BudgeTone")
|
||||
dtmfmode:value("inband", "Use Inband (only with ulaw/alaw)")
|
||||
dtmfmode.optional = true
|
||||
|
||||
extension = sip:option(Value, "extension", "Add as Extension", "")
|
||||
extension.optional = true
|
||||
|
||||
fromdomain = sip:option(Value, "fromdomain", "Primary domain identity for From: headers", "")
|
||||
fromdomain.optional = true
|
||||
|
||||
fromuser = sip:option(Value, "fromuser", "From user (required by many SIP providers)", "")
|
||||
fromuser.optional = true
|
||||
|
||||
host = sip:option(Value, "host", "Host name (or blank)", "")
|
||||
host.optional = true
|
||||
|
||||
incoming = sip:option(DynamicList, "incoming", "Ring on incoming dialplan contexts", "")
|
||||
incoming.optional = true
|
||||
|
||||
insecure = sip:option(ListValue, "insecure", "Allow Insecure for", "")
|
||||
insecure:value("port", "Allow mismatched port number")
|
||||
insecure:value("invite", "Do not require auth of incoming INVITE")
|
||||
insecure:value("port,invite", "Allow mismatched port and Do not require auth of incoming INVITE")
|
||||
insecure.optional = true
|
||||
|
||||
internationalprefix = sip:option(Value, "internationalprefix", "International Dial Prefix", "")
|
||||
internationalprefix.optional = true
|
||||
|
||||
mailbox = sip:option(Value, "mailbox", "Mailbox for MWI", "")
|
||||
mailbox.optional = true
|
||||
|
||||
nat = sip:option(Flag, "nat", "NAT between phone and Asterisk", "")
|
||||
nat.optional = true
|
||||
|
||||
pedantic = sip:option(Flag, "pedantic", "Check tags in headers", "")
|
||||
pedantic.optional = true
|
||||
|
||||
port = sip:option(Value, "port", "SIP Port", "")
|
||||
port.optional = true
|
||||
|
||||
prefix = sip:option(Value, "prefix", "Dial Prefix (for external line)", "")
|
||||
prefix.optional = true
|
||||
|
||||
qualify = sip:option(Value, "qualify", "Reply Timeout (ms) for down connection", "")
|
||||
qualify.optional = true
|
||||
|
||||
register = sip:option(Flag, "register", "Register connection", "")
|
||||
register.optional = true
|
||||
|
||||
secret = sip:option(Value, "secret", "Secret", "")
|
||||
secret.optional = true
|
||||
|
||||
selfmailbox = sip:option(Flag, "selfmailbox", "Dial own extension for mailbox", "")
|
||||
selfmailbox.optional = true
|
||||
|
||||
timeout = sip:option(Value, "timeout", "Dial Timeout (sec)", "")
|
||||
timeout.optional = true
|
||||
|
||||
type = sip:option(ListValue, "type", "Client Type", "")
|
||||
type:value("friend", "Friend (outbound/inbound)")
|
||||
type:value("user", "User (inbound - authenticate by \"from\")")
|
||||
type:value("peer", "Peer (outbound - match by host)")
|
||||
type.optional = true
|
||||
|
||||
username = sip:option(Value, "username", "Username", "")
|
||||
username.optional = true
|
||||
|
||||
|
||||
return cbimap
|
@ -0,0 +1,41 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
voicegeneral = cbimap:section(TypedSection, "voicegeneral", "Voicemail general options", "")
|
||||
|
||||
serveremail = voicegeneral:option(Value, "serveremail", "From Email address of server", "")
|
||||
|
||||
|
||||
voicemail = cbimap:section(TypedSection, "voicemail", "Voice Mail boxes", "")
|
||||
voicemail.addremove = true
|
||||
|
||||
attach = voicemail:option(Flag, "attach", "Email contains attachment", "")
|
||||
attach.rmempty = true
|
||||
|
||||
email = voicemail:option(Value, "email", "Email", "")
|
||||
email.rmempty = true
|
||||
|
||||
name = voicemail:option(Value, "name", "Display Name", "")
|
||||
name.rmempty = true
|
||||
|
||||
password = voicemail:option(Value, "password", "Password", "")
|
||||
password.rmempty = true
|
||||
|
||||
zone = voicemail:option(ListValue, "zone", "Voice Zone", "")
|
||||
cbimap.uci:foreach( "asterisk", "voicezone", function(s) zone:value(s['.name']) end )
|
||||
|
||||
|
||||
voicezone = cbimap:section(TypedSection, "voicezone", "Voice Zone settings", "")
|
||||
voicezone.addremove = true
|
||||
|
||||
message = voicezone:option(Value, "message", "Message Format", "")
|
||||
message.rmempty = true
|
||||
|
||||
zone = voicezone:option(Value, "zone", "Time Zone", "")
|
||||
zone.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
151
applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua
Normal file
151
applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua
Normal file
@ -0,0 +1,151 @@
|
||||
-- Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
cbimap = Map("asterisk", "asterisk", "")
|
||||
|
||||
asterisk = cbimap:section(TypedSection, "asterisk", "Asterisk General Options", "")
|
||||
asterisk.anonymous = true
|
||||
|
||||
agidir = asterisk:option(Value, "agidir", "AGI directory", "")
|
||||
agidir.rmempty = true
|
||||
|
||||
cache_record_files = asterisk:option(Flag, "cache_record_files", "Cache recorded sound files during recording", "")
|
||||
cache_record_files.rmempty = true
|
||||
|
||||
debug = asterisk:option(Value, "debug", "Debug Level", "")
|
||||
debug.rmempty = true
|
||||
|
||||
dontwarn = asterisk:option(Flag, "dontwarn", "Disable some warnings", "")
|
||||
dontwarn.rmempty = true
|
||||
|
||||
dumpcore = asterisk:option(Flag, "dumpcore", "Dump core on crash", "")
|
||||
dumpcore.rmempty = true
|
||||
|
||||
highpriority = asterisk:option(Flag, "highpriority", "High Priority", "")
|
||||
highpriority.rmempty = true
|
||||
|
||||
initcrypto = asterisk:option(Flag, "initcrypto", "Initialise Crypto", "")
|
||||
initcrypto.rmempty = true
|
||||
|
||||
internal_timing = asterisk:option(Flag, "internal_timing", "Use Internal Timing", "")
|
||||
internal_timing.rmempty = true
|
||||
|
||||
logdir = asterisk:option(Value, "logdir", "Log directory", "")
|
||||
logdir.rmempty = true
|
||||
|
||||
maxcalls = asterisk:option(Value, "maxcalls", "Maximum number of calls allowed", "")
|
||||
maxcalls.rmempty = true
|
||||
|
||||
maxload = asterisk:option(Value, "maxload", "Maximum load to stop accepting new calls", "")
|
||||
maxload.rmempty = true
|
||||
|
||||
nocolor = asterisk:option(Flag, "nocolor", "Disable console colors", "")
|
||||
nocolor.rmempty = true
|
||||
|
||||
record_cache_dir = asterisk:option(Value, "record_cache_dir", "Sound files Cache directory", "")
|
||||
record_cache_dir.rmempty = true
|
||||
record_cache_dir:depends({ ["cache_record_files"] = "true" })
|
||||
|
||||
rungroup = asterisk:option(Flag, "rungroup", "The Group to run as", "")
|
||||
rungroup.rmempty = true
|
||||
|
||||
runuser = asterisk:option(Flag, "runuser", "The User to run as", "")
|
||||
runuser.rmempty = true
|
||||
|
||||
spooldir = asterisk:option(Value, "spooldir", "Voicemail Spool directory", "")
|
||||
spooldir.rmempty = true
|
||||
|
||||
systemname = asterisk:option(Value, "systemname", "Prefix UniquID with system name", "")
|
||||
systemname.rmempty = true
|
||||
|
||||
transcode_via_sln = asterisk:option(Flag, "transcode_via_sln", "Build transcode paths via SLINEAR, not directly", "")
|
||||
transcode_via_sln.rmempty = true
|
||||
|
||||
transmit_silence_during_record = asterisk:option(Flag, "transmit_silence_during_record", "Transmit SLINEAR silence while recording a channel", "")
|
||||
transmit_silence_during_record.rmempty = true
|
||||
|
||||
verbose = asterisk:option(Value, "verbose", "Verbose Level", "")
|
||||
verbose.rmempty = true
|
||||
|
||||
zone = asterisk:option(Value, "zone", "Time Zone", "")
|
||||
zone.rmempty = true
|
||||
|
||||
|
||||
hardwarereboot = cbimap:section(TypedSection, "hardwarereboot", "Reload Hardware Config", "")
|
||||
|
||||
method = hardwarereboot:option(ListValue, "method", "Reboot Method", "")
|
||||
method:value("web", "Web URL (wget)")
|
||||
method:value("system", "program to run")
|
||||
method.rmempty = true
|
||||
|
||||
param = hardwarereboot:option(Value, "param", "Parameter", "")
|
||||
param.rmempty = true
|
||||
|
||||
|
||||
iaxgeneral = cbimap:section(TypedSection, "iaxgeneral", "IAX General Options", "")
|
||||
iaxgeneral.anonymous = true
|
||||
iaxgeneral.addremove = true
|
||||
|
||||
allow = iaxgeneral:option(MultiValue, "allow", "Allow Codecs", "")
|
||||
allow:value("alaw", "alaw")
|
||||
allow:value("gsm", "gsm")
|
||||
allow:value("g726", "g726")
|
||||
allow.rmempty = true
|
||||
|
||||
canreinvite = iaxgeneral:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "")
|
||||
canreinvite:value("yes", "Yes")
|
||||
canreinvite:value("nonat", "Yes when not behind NAT")
|
||||
canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection")
|
||||
canreinvite:value("no", "No")
|
||||
canreinvite.rmempty = true
|
||||
|
||||
static = iaxgeneral:option(Flag, "static", "Static", "")
|
||||
static.rmempty = true
|
||||
|
||||
writeprotect = iaxgeneral:option(Flag, "writeprotect", "Write Protect", "")
|
||||
writeprotect.rmempty = true
|
||||
|
||||
|
||||
sipgeneral = cbimap:section(TypedSection, "sipgeneral", "Section sipgeneral", "")
|
||||
sipgeneral.anonymous = true
|
||||
sipgeneral.addremove = true
|
||||
|
||||
allow = sipgeneral:option(MultiValue, "allow", "Allow codecs", "")
|
||||
allow:value("ulaw", "ulaw")
|
||||
allow:value("alaw", "alaw")
|
||||
allow:value("gsm", "gsm")
|
||||
allow:value("g726", "g726")
|
||||
allow.rmempty = true
|
||||
|
||||
port = sipgeneral:option(Value, "port", "SIP Port", "")
|
||||
port.rmempty = true
|
||||
|
||||
realm = sipgeneral:option(Value, "realm", "SIP realm", "")
|
||||
realm.rmempty = true
|
||||
|
||||
|
||||
moh = cbimap:section(TypedSection, "moh", "Music On Hold", "")
|
||||
|
||||
application = moh:option(Value, "application", "Application", "")
|
||||
application.rmempty = true
|
||||
application:depends({ ["asterisk.moh.mode"] = "custom" })
|
||||
|
||||
directory = moh:option(Value, "directory", "Directory of Music", "")
|
||||
directory.rmempty = true
|
||||
|
||||
mode = moh:option(ListValue, "mode", "Option mode", "")
|
||||
mode:value("system", "program to run")
|
||||
mode:value("files", "Read files from directory")
|
||||
mode:value("quietmp3", "Quite MP3")
|
||||
mode:value("mp3", "Loud MP3")
|
||||
mode:value("mp3nb", "unbuffered MP3")
|
||||
mode:value("quietmp3nb", "Quiet Unbuffered MP3")
|
||||
mode:value("custom", "Run a custom application")
|
||||
mode.rmempty = true
|
||||
|
||||
random = moh:option(Flag, "random", "Random Play", "")
|
||||
random.rmempty = true
|
||||
|
||||
|
||||
return cbimap
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user