omaha-consulting / winget.pro Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://winget.pro
License: GNU Affero General Public License v3.0
Home Page: https://winget.pro
License: GNU Affero General Public License v3.0
Hi,
I am testing this great product for last weeks. It its great and could expand the possibilities of Enterprises.
There is one missing feature If I may add. Each time new Installer is uploaded to winget.pro, there should be optionally a ProductCode Identifier. This way when winget.pro replies to API queries from clients, inside the response JSON could include into Installers section the field ProductCode, then WinGet on the System will identify if the program already installed on the system is the one available on the winget.pro Winget repository.
Transitioning from current to winget.pro will be very hard if this is not implemented, since although all current programs already installed on systems are available on winget.pro, launching "winget ls" it doesn't recognize because is missing Product Code ID.
Thanks,
There are some path issues in the Dockerfile that appear at the docker compose up.
One issue was that the requirements folder with the base-full.txt was not in the /run/docker folder which i fixed by copying this folder from the top level to the /run/docker folder.
The other path issue shows up some steps later:
[+] Building 15.5s (10/11) docker:default
=> [django internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 32B 0.0s
=> [django internal] load .dockerignore 0.2s
=> => transferring context: 34B 0.0s
=> [django internal] load metadata for docker.io/library/python:3.9 0.8s
=> [django 1/7] FROM docker.io/library/python:3.9@sha256:5c72dd8986db8c289ad1a6514319c144ed8f72c6dd702873c435844 0.0s
=> [django internal] load build context 0.1s
=> => transferring context: 908B 0.0s
=> CACHED [django 2/7] WORKDIR /srv 0.0s
=> [django 3/7] COPY . . 0.1s
=> [django 4/7] RUN mkdir `dirname /srv/db/db.sqlite3` 0.6s
=> [django 5/7] RUN pip install --no-cache-dir -Ur requirements/base-full.txt 13.0s
=> ERROR [django 6/7] RUN python manage.py collectstatic --noinput 0.6s
------
> [django 6/7] RUN python manage.py collectstatic --noinput:
0.580 python: can't open file '/srv/manage.py': [Errno 2] No such file or directory
------
failed to solve: executor failed running [/bin/sh -c python manage.py collectstatic --noinput]: exit code: 2
This i also tried to fix by copying the manage.py to different locations and/or changing the WORKDIR location. After removing the WORKDIR completly i stucked at this:
root@SRV-CON1:/home/wgpro/run/docker# docker compose up
[+] Building 16.1s (9/10) docker:default
=> [django internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 416B 0.0s
=> [django internal] load .dockerignore 0.1s
=> => transferring context: 34B 0.0s
=> [django internal] load metadata for docker.io/library/python:3.9 1.0s
=> [django internal] load build context 0.1s
=> => transferring context: 937B 0.0s
=> CACHED [django 1/6] FROM docker.io/library/python:3.9@sha256:5c72dd8986db8c289ad1a6514319c144ed8f72c6dd702873 0.0s
=> [django 2/6] COPY . . 0.2s
=> [django 3/6] RUN mkdir `dirname /srv/db/db.sqlite3` 0.6s
=> [django 4/6] RUN pip install --no-cache-dir -Ur requirements/base-full.txt 13.3s
=> ERROR [django 5/6] RUN python manage.py collectstatic --noinput 0.8s
------
> [django 5/6] RUN python manage.py collectstatic --noinput:
0.673 Traceback (most recent call last):
0.673 File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 237, in fetch_command
0.674 app_name = commands[subcommand]
0.674 KeyError: 'collectstatic'
0.674
0.674 During handling of the above exception, another exception occurred:
0.674
0.674 Traceback (most recent call last):
0.674 File "//manage.py", line 22, in <module>
0.674 main()
0.674 File "//manage.py", line 18, in main
0.674 execute_from_command_line(sys.argv)
0.674 File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
0.674 utility.execute()
0.674 File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
0.674 self.fetch_command(subcommand).run_from_argv(self.argv)
0.674 File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 244, in fetch_command
0.674 settings.INSTALLED_APPS
0.674 File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
0.674 self._setup(name)
0.674 File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup
0.674 self._wrapped = Settings(settings_module)
0.674 File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__
0.674 mod = importlib.import_module(self.SETTINGS_MODULE)
0.674 File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
0.674 return _bootstrap._gcd_import(name[level:], package, level)
0.674 File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
0.674 File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
0.674 File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
0.674 File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
0.674 File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
0.674 File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
0.674 File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
0.675 ModuleNotFoundError: No module named 'core'
------
failed to solve: executor failed running [/bin/sh -c python manage.py collectstatic --noinput]: exit code: 1
Would be nice if you can correct this.
Thanks!
When I send GET request to repository URL, it says:
Please log in at /admin for instructions.
It gives information about application and it might be a security vulnerability. Can we disable this response?
Summary
Checking the "delete" checkbox in the version area if a package and removing does not remove the asset from the file system.
Version:
VPS on Ubuntu minimal install (ubuntu-22.04.2-live-server-amd64.iso).
Sorry I couldn't find the version of WinGetPro from the web interface, but I installed on the Monday 5th Feb.
Actions to reproduce:
Expectation:
Version marked for deletion with "Delete" should also remove the asset from the directory.
Actual outcome:
Asset still located in directory.
Side notes:
I thought there could be a internal task, or cron job just that does the clean-up, but I have left it for a week and the old assets are still located in the /srv/media/tenantguid. I noticed the removal of the assets issue in the VPS and local version, I only used the local version for a few days though.
Hi there,
When I try to upload the installer - in this case Mozilla Firefox, I get this error 413 Request Entity Too Large
I have installed winget pro via docker.
Hi there,
Could you please explain how these options work or point me towards any documentation that might be available. Or are they just for the reference to remember the flags.
Is there an option to force install or silent install for the packages available on the internet or are they always going to be interactive installations. Just wanted to clarify that. I've tried using the silent switch in winget from my private repo but the free software i was using was downloaded from the internet and it always comes up with an interactive installation prompt.
It might just be me but for some reason i cant get the Docker Implementation up and Running. I´m trying to build with the following URL: docker build https://github.com/omaha-consulting/winget.pro.git#main:run/docker the Downloads works fine but when it gets to the Point Dockerfile Line 14 "RUN pip install --no-cache-dir -Ur requirements/base-full.txt" i get a error that there is no such file.
As i said it´s maybe just me. Any help is appreciated. Thanks in advance.
I deployed the project with docker desktop as described (with the SSL Proxy for testing purpose).
Two small suggestions first:
I was able to add the source via the URL written on the Home/Welcome page, however only after adding the port of the SSL proxy. Can that be changed? Might have to do with my actual problem...
I also had to edit the nginx.config by adding "client_max_body_size 500M" so it would allow me to upload my file for testing (gimp, around 300 MB). Am I right to assume, that this change is kinda mandatory, as long as I'm uploading bigger files? - already fixed
I hope it's ok to put these two (small) issues in here, since I expect them to be easy fixes.
But now for my main problem:
When running a script that basically runs "winget install --exact --silent Gimp.Gimp --source localhost --accept-package-agreements" It finds the package at the repository and tries to download it, but fails to do so, since the download URL doesn't contain the port.
Where does winget.pro get the root URL it passes to winget from? Am I missing something, or does the download just not work in this SSL Proxy test environment?
I guess it's not a problem when you have a setup with a proper Proxy (HTTPS under the usual port 443), but right now the download URL it passes is http and without the needed port (8000 or probably 8443 so winget doesn't complain) so it fails with a 404.
Current format for repository URL is: https://<server_address>/<random_string>
Can we change this URL? For example https://<server_address>/winget
or directly https://<server_address>
.dockerignore
in repository's root appears to be a symlink to non-existing file
Hi guys, thanks for all the great work!
May I suggest adding cookie settings in settings.py? The default session cookie expires after two weeks, but for security it might be better when we reduce that and only extended after each request within the expiry period?
SESSION_COOKIE_AGE = 180 # 3 minutes
SESSION_SAVE_EVERY_REQUEST = True # "False" by default
Perhaps this is configurable via enviroment variable?
It would be great if you would add support for Windows Server Containers, since this is a Windows package manager.
I get following error when i try to spinup the Container:
root@SRV-CON1:/home/wingetpro# docker compose up
[+] Building 0.1s (2/2) FINISHED docker:default
=> [django internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 2B 0.0s
=> [django internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount369694079/Dockerfile: no such file or directory
I have all the files in my wingetpro directory. I also tried to create the directory /var/lib/docker/tmp/buildkit-mount369694079 and moved the Dockerfile there but still the same error.
I also tried the tips here:
docker/for-win#8781
But all this didn't help.
I was able to spinup other containers on this host with docker compose and dockerfile in the same directory already.
Can you provide me some help/guidance here?
Thanks for your help!
Using dockers run of winget.pro. and external F5 LB as reverse proxy listening on HTTPS (443) redirecting traffic to HTTP (8000).
Everything works on clients but when trying to install any package, there is this GET:
Sending http GET request to: https://winget.mydomain.local/42f927d0-38ad-43ff-bafe-81260355ce61/packageManifests/MyProgram?Version=2.9
Then after I see this:
DeliveryOptimization downloading from url: http://winget.mydomain.local/media/42f927d0-38ad-43ff-bafe-81260355ce61/MyProgram-LpqmRpf6Ms.exe
Note that winget using HTTPS, but when winget is trying to download the package, then I see the HTTP in the download url.
Hello!
This is not really an issue but I got a task to add manifests to Winget.Pro programmatically.
How can I do that?
Thank you.
Feature request:
Would be nice have the ability to add "tags" to/when creating a "package" in WinGetPro. Handy to cover those oddball application names that have no bearing on the function of the application.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.