PR #1825 introduced a hard-coded list of cipher information in order to
be able to display extended information about the encryption details of
a connection. Keeping this information up-to-date had to be done by
means of a dedicated python script.
The problem with this approach is that
a) hard-coding something like this is never a good idea
b) the updating has been forgotten in the last several years, leading to
outdated information
c) the update script is currently not working anymore
Additionally, the current code only used the extended information to
query the perfect forward secrecy support anyway and that has been
implemented in a different way in
de7b02fb3c3c8756377fd789006465bf2bd86ffd.
The only other thing we used the extended info for, was to obtain the
RFC name of ciphers, but since the list was outdated anyway, we nowadays
probably used the fallback (using the name provided by Qt) more often
than not.
Therefore the hard-coded information has been removed and we now simply
always stick to the cipher name as reported by Qt. If someone
desperately requires the RFC names, they'll have to take it up with Qt
to expose this name in their API as curating a hard-coded list in our
code base is not a viable option.
The name `murmur` is deprecated and shouldn't be used anymore, as
decided by the Mumble project. While the server binary already uses the
"new" name, the man pages don't. Thus, rework the man pages so that its
successor `mumble-server` instead `murmur` is used and rename the
filenames of the man pages accordingly.
Also, rename the script `murmur-user-wrapper` to
`mumble-server-user-wrapper`, since also its man page is renamed.
This does not affect the configuration file `murmur.ini`.
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Current problems:
bash(1) is not always installed (by default), /bin/sh is
(Open)BSD find(1) requires at least one path argument, i.e. . which GNU
find(1) implies
(Open)BSD find(1) does not support -ipath
git-ls-files(1) benefits:
gitignore(5) files are honored
simpler/more powerful patterns (see gitglossary(7) wrt. pathspec)
runClangFormat.sh can be run from git subdirectories to only format
selected files (explicitl passing files could be easil implemented)
works on every system with git(1), no portability issues (see above)
The one "drawback" with git-ls-files(1) is requiring git(1) working tree
rather than a release tarball, but active development requries git
anyway, so that does not seem like a blocker.
Only run xargs(1) if files were listed (-r), since we can now run the
script from subdirectories without source code.
Current problems:
- bash(1) is not always installed (by default), /bin/sh is
- (Open)BSD find(1) requires at least one path argument, i.e. `.` which GNU
find(1) implies
- (Open)BSD find(1) does not support `-ipath`
git-ls-files(1) benefits:
- gitignore(5) files are honored
- simpler/more powerful patterns (see gitglossary(7) wrt. `pathspec`)
- `runClangFormat.sh` can be run from git subdirectories to only format
selected files (explicitl passing files could be easil implemented)
- works on every system with git(1), no portability issues (see above)
The one "drawback" with git-ls-files(1) is requiring git(1) working tree
rather than a release tarball, but active development requries git
anyway, so that does not seem like a blocker.
Only run xargs(1) if files were listed (`-r`), since we can now run the
script from subdirectories without source code.
Avoid brace expansion (`'**/*'.{cpp,c,hpp,h,cxx,cc}`) to be compatible
with dash.
This file hasn't been updated in ages and is therefore removed.
Consequently the corresponding script is also removed.
The actual changes can be taken from the git commit history or (more
compact) in the changelogs published with out releases.
This file is not used anymore, since GitHub has a dedicated tab of
listing all contributions. Therefore, we now remove the AUTHORS file in
favor of that.
As a consequence, we also remove the generate-AUTHORS.py script.
Having a separate RELEASE_ID just unnecessarily complicates drafting
releases. Plus, now that we are using different build numbers for every
new build anyway, a separate release ID is really not necessary.
This commit adds a new server-configuration that can be used in the
murmur.ini file. It can be used to forbid anyone on the server from
using Mumble's built-in recording functionality.
Any client trying to start a recording nonetheless, will be kicked from
the server.
From Mumble 1.5.0 clients will know about this configuration and will
disable the recording action in the UI, if recording is not allowed on
the server.
Merge commits of backports follow a little different pattern than
regular merge commits. This has to be accounted for in the script
generating the changelog.
This adds the StartupWMClass to the .desktop file which allows pinning Mumble to the dash/dock/whatever in all major desktop environments. Since most package maintainers ship their own .desktop file where this is fixed this fixes it for everyone who compiles Mumble from source.
Up to now when a stable release series was split off from the master
branch, there was essentially no (good) way of backporting new
translations for source strings in the stable series.
This is because usually the master branch contains new or changed source
strings and thus simply merging the respective commits into the stable
series can cause all sorts of trouble.
The script added by this commit takes care of that by comparing
translation files translation by translation and only updates the
translation if there is a newer translation for the exact same source
string in the target (master) branch.
This takes care of cases in which translations are added or altered
after the stable series has been split off.
It does not however work as soon as the source string for that
translation has changed as that will cause the script to consider these
as different strings and thus no updating will be performed.
Fixes#4740
Removes invalid characters (UTF-16 BOM) at the start of line 6.
The profiledir variable is set properly again. Fixing the vcpkg directory being created in the root of the system directory.
Original error message below:
$profiledir : The term '$profiledir' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At C:\Dev\Git\mumble\scripts\vcpkg\get_mumble_dependencies.ps1:6 char:1
+ $profiledir = $Env:USERPROFILE
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($profiledir:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Apparently the first commit (59ae429972)
did not include all files.
Furthermore the used script tended to produce funny results in certain
cases. This has been fixed and as a result thereof a few more changes
were made in this second run.
In this mode the sametext heuristic is disabled which _should_ fix the
issue of the Weblate PR's CI failing because of Weblate not applying
such heuristics.
This commit adds a few more grouping rules to the generateChangelog.py
script which should further reduce the manual labor needed to create
changelogs.
The assumptions about the format of the merge commit message were rather
strict and thus slight deviations would cause the script to fail.
Therefore the script got overhauled and is now using a (hopefully) more
versatile RegEx to do the job.
The bash script is not platform independent. The python script is.
I invested way too much time trying to run the sh script on WSL (Windows Subsystem for Linux), installing Qt packages, but in the end still failing.
I also implemented a bat script calling lupdate with the same parameters as the sh script, but having one platform independent script is preferable to having two separate scripts for the same activity.
The python script will call lupdate to update the ts files like the sh script did,
and commit the changes if any were made.
Furthermore it checks that the ts files have no local changes before running,
and after updating reset the git index, add commit the files.
The reset operation is added so only the ts files are being committed.
Contrary to the previous script this one disables all heuristics so those can be applied as separate changes, so they will be visible.
Our previous workflow was using `scripts/updatetranslations.sh` to update `src/mumble/mumble_en.ts` only.
We then depended on Transifex to take over text source changes from this file to translation files.
This lead to committed changes being a mix of both translation source changes as well as translations.
This made the diffs unnecessarily big, and hard to review as two concerns are intermixed.
Weblate supports this style of updating as well. It calls this style 'monolingual', although that concept is intermixed with, or designed for files that do not contain translation source text (which ours do).
One file is used as a source, and another contains the translation strings.
Seemingly Qt calls this approach text-by-ID, and the translation strings are looked up by the ID, which in our case are the translation source strings.
This seems like a misuse of the concept.
The monolingual vs bilingual translation files issue/discrepancy is not handled in this change.
---
From now on we update all ts files so an update to the translation files with this script leads to an update in all translation files
rather than only the 'mumble_en.ts' reference file.
This approach will make translation change commits and PRs afterwards isolated to translation changes, and thus a lot smaller and easier to review.
There will no longer be an invisible, implicit difference between the committed ts file and the current program state = the translation source.
Text with plural forms (a %n parameter and singular(s) qualifier) lead to special plural handling.
Different locales can have varying words depending on the number; mostly partially differently between 0, 1 and more.
English texts can have simple 'word(s)' text which will be transformed to '0 word', '1 word', '2 words', '3 words' and so on respectively.
Other languages may not have this mechanism, and the ts files are prepared with `<numerus>` elements within the `<translation>` elements.
These seem to be for specifying the varying plural forms manually.
This seems to be an automatism by lupdate.
When updating our current ts files it warns about multiple instances of the number of `numerus` elements not matching the number of plural forms in the locale the file is for.
Whatever the original hack/fix was for (#1195, the linked Transifex topic no longer works),
it seems very problematic.
Previously we only updated mumble_en.ts, and then depended on Transifex to update the contents of the other ts files when translations are changed.
This led to source and translation changes being intermixed in the change commit.
This change drops the 'numerus' element duplication.
This is in preparation for in the future updating translation sources on all ts files, where this fixup could be technically incorrect and problematic as a result.
As well as to drop this hack which seems like an awful, misleading and technically incorrect workaround for Transifex bugs or side effects in it’s transformation of source ts file to translation ts files.
The 'numerus' tag is not documented in Qt documentation with any information.
https://doc.qt.io/qt-5/i18n-source-translation.html#handling-plurals
The script iterates through (almost) all files within the Mumble
repository and updates the copyright notice in them. If source files
don't contain such a notice yet, it can optionally add one in.
The script asks git when the file was first added to the git index and
uses that year as the starting year for the copyright notice. The end
year is always set to be the current year at the time the script is run.