Compare commits

...
206 Commits
Author SHA1 Message Date
Aditya Toshniwal d50e9f7fc2 Cleanup code left in previous commit. #5065 2022-10-17 15:42:48 +05:30
Akshay Joshi 0a3a90b400 Update version for release. 2022-10-17 15:28:08 +05:30
Aditya Toshniwal 4fc0f288c7 Use SocketIO instead of REST for fetching database tables data in ERD. #5065 2022-10-17 15:24:22 +05:30
Dave Page 8ef3f232ab Support PostgreSQL 15. 2022-10-17 10:02:45 +01:00
Libor M 3d0078c73d Updated Czech translation. 2022-10-17 11:23:05 +05:30
Akshay Joshi 51c7551d3f Update release note. 2022-10-15 14:49:38 +05:30
aelgn a62fc2fbff Added support for IAM token based authentication for AWS RDS or Azure DB. #3491 2022-10-15 14:49:04 +05:30
Akshay Joshi 25be215180 Update Dependencies. 2022-10-13 18:52:48 +05:30
Akshay Joshi 0da2382c7d Update message catalogs. 2022-10-13 18:49:24 +05:30
Akshay Joshi 1d3be06cb5 Update release note. 2022-10-13 18:47:31 +05:30
Aditya Toshniwal ff095fc7c4 More fixes related to ERD color change. #4392 2022-10-13 18:34:34 +05:30
Nikhil Mohite 1904a64e42 Fixed XSS vulnerability issues. #5277 2022-10-13 10:59:05 +05:30
Pravesh Sharma 8a76122949 Fixed an issue where filtered rows was not working. #5427 2022-10-13 10:25:27 +05:30
Aditya Toshniwal ae82a4b279 Fix an issue where clear color is not reflecting in color picker. #4392 (#5425) 2022-10-12 16:34:54 +05:30
Akshay Joshi 3c52139ce5 Update release note. 2022-10-12 10:08:21 +05:30
Aditya Toshniwal 794cbed57c Added support to specify the background fill color to the table nodes in the ERD tool. #4392 2022-10-12 10:07:30 +05:30
Akshay Joshi 5b09122676 Update release notes. 2022-10-11 10:58:04 +05:30
Nikhil Mohite 19f96799df Ensure that the scroll position should be preserved for the result set in the query tool on tab change. #5296 2022-10-11 10:53:46 +05:30
Pravesh Sharma b100df3160 Fixed an issue where the password recovery link was not working. #5397 2022-10-11 10:52:57 +05:30
Pravesh Sharma 176ea5949b Fixed copy sql to query tool feature test 2022-10-10 12:06:47 +05:30
Pravesh Sharma f79844e926 Fixed an issue where notifications disappeared quickly. #5364 2022-10-07 09:13:25 +05:30
Yogesh Mahajan 2d0f09144d Ensure that the login form is hidden if the authentication source is OAuth2 or Kerberos. #5386 2022-10-06 17:31:15 +05:30
Khushboo Vashi e3a172e0e8 Fixed the cross-site scripting vulnerability. #5405 2022-10-06 17:30:41 +05:30
Dave Page b519af280b Don't assume the system python executable is "python". Favour "python3" and fall back. 2022-10-06 12:43:03 +01:00
Dave Page 64d9fd0a0b Disable executable page protection, otherwise NWjs may crash. 2022-10-06 12:42:17 +01:00
Nikhil Mohite 9002961e5d Fixed console warning shown while updating database node from browser tree. #5332 2022-10-06 16:15:38 +05:30
Nikhil Mohite 7e51a2f517 Ensure that the result grid column should take width as pre preferences setting on first execution. #5132 2022-10-06 15:59:27 +05:30
Nikhil Mohite bb78d91d1b Ensure that scroll bar on browser tree should be visible on windows resize #5402 2022-10-06 15:58:05 +05:30
Aditya Toshniwal b086e1fd83 Add option to generate SQL with DROP table DDL in ERD Tool. #4997 2022-10-06 09:30:45 +05:30
Dave Page cc55c8db89 Tighten up macOS entitlements, and add comments explaining.
Note that this re-enables executable page protection, which was disabled for unknown reasons.
2022-10-05 12:36:53 +01:00
Dave Page 8875d8b741 Add a description of the available container tags we publish to the docs. 2022-10-05 12:05:26 +01:00
Yogesh Mahajan af97ed78ef Fixed an exception occur while taking backup and SSL certificates/keys are not found in the specified path. #5133 2022-10-04 11:01:27 +05:30
Dave Page 992dff64af Expose the Gunicorn limit_request_line parameter in the container, with the default set to the maximum 8190.
See #5390.
2022-10-03 14:09:25 +01:00
Dave Page b8ec021a07 Add a note about sys.executable potentially needing "help" under WSGI runners.
See #5340.
2022-10-03 13:35:31 +01:00
Aditya Toshniwal 406119d96c Allow reordering table columns using drag and drop in ERD Tool and create table. #4994 2022-10-03 11:18:22 +05:30
Yogesh Mahajan 869b90121c Ensure that the correct value should be returned if an exception occurs while decoding the password. #5367 2022-09-30 15:08:03 +05:30
Akshay Joshi bedfad002d Fixed RESQL test cases. 2022-09-30 10:42:11 +05:30
Nikhil Mohite 9acc59d099 Fixed an issue where pgAdmin is crashing if the user find/replace in the query tool multiple time. #5249 2022-09-30 10:42:00 +05:30
Akshay Joshi d13ee8db29 1) Remove folders that are no longer used for older database versions.
2) Fixed RESQL tests for View/MView.
2022-09-29 16:45:51 +05:30
Pravesh Sharma 9817a9b20f Fixed an issue where user was unable to select privileges in Safari #5327 2022-09-29 16:41:11 +05:30
Nikhil Mohite 56fb24c24a Fixed the .psqlrc issue for PSQL Tool. #5167 2022-09-29 12:29:32 +05:30
Pravesh Sharma 5d4bac85e5 Fixed browser toolbar feature test. #5293 2022-09-28 13:11:20 +05:30
danielkempenich 545c76a411 Ensure consistent orderings for ACLS when comparing schemas in the schema diff. #5101 2022-09-28 12:03:14 +05:30
Bruno Almeida e3e0e3db19 Add support for multiple ways to bind to the LDAP server. #3541 2022-09-28 10:47:56 +05:30
Yogesh Mahajan 5fbb8b6204 Fixed error occurring while LDAP authentication for a user with multiple email attributes. #5352 2022-09-27 15:38:48 +05:30
Nikhil Mohite 1b11a6cd4b Fixed a couple of SonarQube issues. 2022-09-27 14:28:31 +05:30
Pravesh Sharma add5404f5e Fixed an issue where the prompt is not visible when clicking on the 'save results to file' button on the large data. #5338
corrected issue id

corrected order of release notes
2022-09-27 14:27:22 +05:30
Akshay Joshi 0b6b2e733a 1) Remove Python's 'Six' package completely. #5357
2) Replace deprecated @abstractproperty with @property, @abstractmethod.
2022-09-26 12:47:31 +05:30
Nikhil Mohite fc8d6d6e90 Fixed the issue while downloading the file from file manager. #5368 2022-09-26 12:10:56 +05:30
dependabot[bot] ffe2fea81c Bump minimist from 1.2.5 to 1.2.6 in /runtime (#5355)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/commits)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-23 15:08:50 +01:00
dependabot[bot] c80db7933c Bump axios from 0.21.0 to 0.21.2 in /runtime (#5354)
Bumps [axios](https://github.com/axios/axios) from 0.21.0 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.2/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.0...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-23 15:08:39 +01:00
Dave Page 2b5514a944 Add an action to check the doc build (#5363) 2022-09-23 12:44:02 +01:00
Dave Page 61361dd2b8 Naming consistency (#5362) 2022-09-23 12:00:18 +01:00
Dave Page 01848e7d5b Add an action for checking Javascript style. (#5361) 2022-09-23 11:55:05 +01:00
Akshay Joshi bc08512327 Ensure that the search filter should be cleared when a new row is added to the user management. #5261 2022-09-23 16:22:31 +05:30
Aditya Toshniwal f64b572150 Fix failing API test cases. #5210 2022-09-23 16:22:16 +05:30
Dave Page 04d779c741 Add a GitHub action to check Python code conforms to PEP-8 (#5360) 2022-09-23 11:23:13 +01:00
Nikhil Mohite 45a1dee9f1 Added the close button for all the notifications of the notistack. #5212 2022-09-23 14:01:18 +05:30
Yogesh Mahajan f052ecffc0 Fixed intermittent error shown while OAuth2 login 2022-09-23 13:58:02 +05:30
Aditya Toshniwal 9a6516a8b3 Ensure that the query tool creates a new tab with the appropriate user when pressing Alt+Shift+Q. #5210 (#5350) 2022-09-23 11:19:48 +05:30
Nikhil Mohite 98c50afe8e Ensure that the continue/start button should be disabled if the user stops the Debugger for the procedures. #5188 (#5353) 2022-09-23 11:11:23 +05:30
Pravesh Sharma 94ca48674a made tooltip consistent across the application (#5351)
Ensure that the tooltips are consistent throughout the entire application. #5293
2022-09-23 11:11:02 +05:30
Nikhil Mohite d147b41d19 Fixed Jasmine test cases. 2022-09-22 18:26:29 +05:30
Dave Page 9ed3be335e Update docs to replace use of patches with Pull Requests. (#5349) 2022-09-22 18:24:14 +05:30
Akshay Joshi ed1184fcf8 Ensure that the user management dialog should not allow the same email addresses
with different letter casings when creating users. #5262
2022-09-22 14:59:42 +05:30
Nikhil Mohite 0203bbc7ef Added the ability to display the selected text from the query tool in the find/replace box. #5249 2022-09-22 14:59:42 +05:30
Nikhil Mohite 3765131d21 Ensure that the default value for a column should be used if it is made empty. #5308 2022-09-22 14:59:42 +05:30
Libor M 033ee23eba Updated Czech translation 2022-09-22 14:59:42 +05:30
Yogesh Mahajan 83e2ee04d1 Added high availability options to AWS deployment. #5304 2022-09-22 14:59:42 +05:30
Dave Page 6d1283f92d Update the GitHub org name. 2022-09-22 10:12:08 +01:00
Dave Page 8459a45d72 Update to use GitHub for source repos. 2022-09-21 10:56:03 +01:00
Aditya Toshniwal 4d9dfe7d04 Allow script name URLs in the next URL of the login page.
refs #5343
2022-09-20 14:44:05 +05:30
Akshay Joshi 2b00480605 Update version for release. 2022-09-19 16:21:47 +05:30
Aditya Toshniwal a2a18d4b4a Fixed an error while saving changes to the ERD table. Fixes #5342 2022-09-19 16:20:07 +05:30
Aditya Toshniwal e2b00dda1b Fixes a redirect vulnerability when the user opens the pgAdmin URL. Fixes #5343 2022-09-19 15:36:10 +05:30
emuser20140816@gmail.com bfabcea6e9 Update Japanese translation. 2022-09-19 11:26:19 +05:30
Domenico Sgarbossa 05d3633cdf Update Italian translation. 2022-09-19 11:26:19 +05:30
Dave Page 5a5da5f720 Update project location. 2022-09-15 15:39:54 +01:00
Akshay Joshi a87c07df93 Update message catalogs. 2022-09-15 19:32:29 +05:30
Yogesh Mahajan d38d0ce805 1) Fixed the error message displayed when clicking the cloud server for which deployment is in progress. Fixes #5144
2) Ensure that if big animal authentication is aborted, API calls should be stopped. Fixes #5275
2022-09-15 18:44:07 +05:30
Aditya Toshniwal 04b1e26041 Fixed an issue where server names with special characters are not displayed correctly in the process tab. Fixes #7695 2022-09-15 16:43:37 +05:30
Nikhil Mohite 769f58970e Fixed an issue where the wrong SQL displayed in difference if the user create
an RLS policy on the table without a column. Fixes #7637
2022-09-15 16:40:03 +05:30
Aditya Toshniwal 9ac233f244 Fixed an issue where ERD throws an error if variable is added to the column. Fixes #7709 2022-09-15 13:16:27 +05:30
Aditya Toshniwal 985546fff6 Fixed an issue where pgAdmin failed to start due to bin path migration. Fixes #7557 2022-09-15 13:13:38 +05:30
Akshay Joshi 01a9a41bd9 1) Warn the user when connecting to a server that is older than pgAdmin supports.
2) Fixed Debugger API test cases.
2022-09-15 13:12:46 +05:30
Nikhil Mohite 0cb00c7b4f Fixed the Debugger issue introduced by security fixes. 2022-09-14 15:15:52 +05:30
Khushboo Vashi 40e0175ee5 Added the verification of region id for BigAnimal deployment. 2022-09-14 15:10:21 +05:30
Akshay Joshi 16bcb7d4a2 Ensure that the browser tree should be refreshed after changing the ownership. Fixes #7607 2022-09-14 15:08:05 +05:30
Aditya Toshniwal 2de965d710 1. Use EDB's repo for react-data-grid instead of the personal repo.
2. Improved searching in the Search Objects.
3. Fixed react warnings in the query tool.
4. Fixed some SonarQube issues.
2022-09-13 19:13:33 +05:30
Nikhil Mohite ab5d53f3b1 Fixed following issues for Schema Diff:
1) When some option from filter is selected, that particular type should be completely removed from top level result instead of showing identical:0
 2) Copy button is missing for Difference SQL
 3) Throw error when source & target server versions selected are different
 4) In High contrast - Font color for identical turns same as background.
 5) In High contrast - Checkbox box column turns same color of row resulting unable to distingiush about selection of item.

refs #6133
2022-09-13 16:49:44 +05:30
Fahar Abbas eb60b3892d Updated keyboard shortcut documentation. Fixes #7446 2022-09-13 16:43:34 +05:30
Akshay Joshi 703cefd9ae Replace the language selection 'Brazilian' with 'Portuguese (Brazilian). Fixes #7693 2022-09-12 14:51:18 +05:30
Akshay Joshi 1bff94d0ea 1) Ensure that properties should be displayed after the SonarQube fixes. (Patch by: Aditya)
2) Fixed Tablespace wrong path issue. (Patch by: Nikhil)
3) Align the label and drop-down on Graph Visualizer.
2022-09-12 14:05:21 +05:30
Aditya Toshniwal 93f5fbc797 Fixed SonarQube issues. 2022-09-12 11:28:00 +05:30
Khushboo Vashi 76a6feb2e7 Remove some more references of Backgrid and Backform.
refs #6134
2022-09-12 11:17:23 +05:30
Khushboo Vashi ca8b5c68fd Remove Backgrid and Backform. Fixes #6134 2022-09-10 14:22:49 +05:30
Aditya Toshniwal b128ba2f57 Fixed a couple of SonarQube issues. 2022-09-10 14:04:28 +05:30
Pravesh Sharma 43022b7aa2 Fixed 'ternary operators should not be nested' code smell. 2022-09-10 14:00:22 +05:30
Yogesh Mahajan cbf5886430 Fixed the following code smells:
1. Use concise character class syntax
2. Add a "break" statement or remove this "else" clause.
3. Replace this generic exception class with a more specific one.
4. Use a regular expression literal instead of the 'RegExp' constructor.
5. Use the opposite operator ("not in") instead.
2022-09-10 13:48:14 +05:30
Nikhil Mohite d967d5046d Fixed 'Remove the unused function parameter' code smell. 2022-09-09 18:36:51 +05:30
Akshay Joshi 3b95a416ca Fixed 'Remove the unnecessary boolean literals' code smell. 2022-09-09 15:23:18 +05:30
Akshay Joshi ec47a2aa66 Added a fix to the context menu and panel issue introduced by the SonarQube fixes. 2022-09-09 11:42:32 +05:30
Akshay Joshi b73aa6d000 Fixed 'Remove the unnecessary boolean literals' code smell 2022-09-08 20:28:43 +05:30
Akshay Joshi b8f63adf41 Fixes following code smell reported by SonarQube:
1) Replace this if-then-else flow by a single return statement
 2) Remove the unnecessary boolean literals.
2022-09-08 19:56:02 +05:30
Akshay Joshi 7086719640 Fixed SonarQube issues. 2022-09-08 18:08:58 +05:30
Yogesh Mahajan 603ce21d24 Fixed an issue where textarea of the JSON Editor does not resize with dialog. Fixes #7656 2022-09-08 15:31:36 +05:30
Nikhil Mohite 0c9c57e608 1. Resolved resize window issue for DDL result panel.
2. Updated the Screenshots.
3. Updated server group title to bold.

refs #6133
2022-09-08 15:24:43 +05:30
Akshay Joshi 18b77f15dd Remove Alertify from pgAdmin completely. Fixes #7619 2022-09-08 15:16:48 +05:30
Nikhil Mohite e1942d8c9e 1) Port schema diff to React. Fixes #6133
2) Remove SlickGrid.
2022-09-07 19:20:03 +05:30
Yogesh Mahajan ad59380676 Fixed an issue with the non-visibility of columns added prior to import/export data. Fixes #7649 2022-09-07 17:40:52 +05:30
Aditya Toshniwal 0f46f070ed Port the remaining components of the ERD Tool to React. Fixes #7343
1. Make use of MUI styles and remove SCSS.
2. Use the new common components for buttons and tooltips, so that they are consistent.
3. UI design should be aligned with the query tool.
4. Remove tippyjs and Alertify dependencies.
2022-09-06 18:09:13 +05:30
Akshay Joshi 1d0ac0f7dc Moved the feature_tests folder into the regression folder. 2022-09-06 13:59:33 +05:30
Akshay Joshi 71c962f51c Fixed ModuleNotFoundError when running setup.py to load/dump servers. Fixes #7663
Patch Sent By: Karl Maximilian Daenner
2022-09-06 11:48:55 +05:30
Yogesh Mahajan 7c729d5f0e Fixed API test case for change password in the server mode. Fixes #7648 2022-09-06 11:30:21 +05:30
Akshay Joshi 317a17337d Added supported database servers in the release notes. 2022-09-05 15:30:24 +05:30
Yogesh Mahajan 9a317f3ba6 Fixed an issue where backup does not work due to parameter 'preexec_fn' no longer being supported. Fixes #7580 2022-09-02 13:12:58 +05:30
Akshay Joshi 5625fe0969 Fixed audit issue. 2022-09-01 11:45:51 +05:30
Akshay Joshi 72f819ec67 Ensure that the dump servers functionality works from setup.py. Fixes #7644 2022-08-31 14:28:48 +05:30
Akshay Joshi e58b9c767b Port search object dialog to React. Fixes #7622 2022-08-30 17:08:12 +05:30
Yogesh Mahajan 71a4b20d90 Fixed some SonarQube issues. 2022-08-30 14:21:33 +05:30
Akshay Joshi af1e9210b9 Fixed some security hotspots. 2022-08-26 18:58:16 +05:30
Akshay Joshi fe0577be5f Ensure that the Import/Export server menu option is visible. Fixes #7646 2022-08-26 14:38:50 +05:30
Dave Page 37082a955b Sonarqube fixes. 2022-08-26 10:07:59 +01:00
Dave Page 92741680b5 Fixes a bunch of warnings in the webpack process stemming from the use of the now deprecated division operator. 2022-08-26 12:34:48 +05:30
Dave Page bbef9acaf6 Fixes a bunch of warnings about missing utilities in the webpack process. 2022-08-26 12:32:09 +05:30
Fred Escallier f48a3c7dcb Update French translation. 2022-08-26 12:28:50 +05:30
Dave Page a84118823e Title case tab label 2022-08-25 13:47:59 +01:00
Akshay Joshi 78757564c8 Pin Flask-SocketIO <= v5.2.0. The latest version does not support Werkzeug in production environments. Fixes #7641 2022-08-25 13:21:18 +05:30
Yogesh Mahajan 41a3345101 Fixed an issue where the cursor was not visible in the code tab of the trigger dialog. 2022-08-23 18:45:43 +05:30
Nikhil Mohite 6b6efd1c4d Fixed Jasmine test cases.
refs #7633
2022-08-22 18:47:14 +05:30
Akshay Joshi d53f2b69f2 Update version for release. 2022-08-22 16:00:00 +05:30
Nikhil Mohite 5c04f1aa2e 1) Ensure that the autofocus is on the input control for the master password and server password dialogs. Fixes #7633
2) Fixed an XSS vulnerability in the Hostname/Address control in the Server Connection dialog.
2022-08-22 15:58:17 +05:30
Yogesh Mahajan 2de89dcaaf Fixed an issue where a user could not authenticate using Azure CLI on OSX. Fixes #7632 2022-08-22 14:50:18 +05:30
Aditya Toshniwal f2cc897f2f 1. Fixed an issue where copy and pasting a row in the results grid doesn't set the default for boolean. Fixes #7579
2. Fixed an issue where the History tab is getting blank and showing an error after some queries are executed. Fixes #7468
3. Fixed query tool view data crash.
2022-08-22 14:33:38 +05:30
Akshay Joshi 56e2c9db97 Ensure that If the trigger function definition is changed, drop and recreate the trigger in the schema diff. Fixes #7630 2022-08-22 11:56:11 +05:30
Domenico Sgarbossa 8ca8cb9409 Updated Italian translation. 2022-08-22 10:23:54 +05:30
Libor M 0d518a5cb6 Updated Czech translation. 2022-08-22 10:21:37 +05:30
Akshay Joshi 0f53fc8511 Fixed Spanish translations typo. Fixes #7625
Submitted by: Alan Nevot
2022-08-22 10:20:10 +05:30
Akshay Joshi d7307fd334 Update message catalogs 2022-08-18 18:45:42 +05:30
Akshay Joshi ee1f97d124 Update Dependencies 2022-08-18 18:44:01 +05:30
Aditya Toshniwal 09e2c0eac0 1. Explain plan crashes query tool after SonarQube fixes.
2. Fix XSS issue in query tool.
3. Process details for cloud process not showing complete command.
4. Confirm dialog before removing processes.
2022-08-18 18:42:03 +05:30
Yogesh Mahajan f873ab5374 1) Ensure that the next button should be disabled if the password did not match for Azure deployment. Fixes #7616
2) Fixed an issue where Azure cloud deployment failed. Fixes #7617
2022-08-18 18:39:52 +05:30
Khushboo Vashi 8bcd1e4e60 Strings are wrapped into gettext in the Dashboard and Cloud modules. 2022-08-18 13:41:27 +05:30
Akshay Joshi e455114441 1) Fixed column "none" does not exist issue, while comparing schema objects. Fixes #7591
2) Fixed an issue where schema diff did not pick up the change in RLS policy. Fixes #7596
3) Ensure that schema diff maintains view ownership when view definitions are modified. Fixes #7611
2022-08-18 13:40:28 +05:30
Aditya Toshniwal 306b184e11 1. Fixed an issue where Alt-Shift-Q didn't work after creating a new query. Fixes #7575
2. Fixed an issue where the Query Editor loses focus when saving a query (Alt+s). Fixes #7521
3. Ensure that an error is thrown if clipboard access is not provided and change the copy rows shortcut. Fixes #7452
2022-08-17 17:23:44 +05:30
Dave Page c8ef4733d0 Various minor string fixes. 2022-08-17 12:47:13 +01:00
Dave Page 71647c886d Fix label. 2022-08-17 12:34:47 +01:00
Akshay Joshi 3583b094d0 Fixed API test cases for Postgres 14.4 2022-08-17 15:29:56 +05:30
Akshay Joshi da927f4897 1) Autocomplete on keypress should be set to False by default.
2) Update the documentation for the locked option in user management.
2022-08-17 14:38:37 +05:30
Akshay Joshi f771d3a4bb Conditionally pin Flask version based on Python version. 2022-08-17 12:21:05 +05:30
Akshay Joshi d4fdd4601e 1) Pin Flask version 2.1.*
2) Fixed API test cases that failed due to a change in the Werkzeug version.
3) Change password issue is fixed.
2022-08-17 11:54:16 +05:30
Aditya Toshniwal b12c1f8740 1. Stop process of Process details dialog not working.
2. When a server of an in progress cloud deployment is expanded, it is throwing a failed error.
3. Close the process notification on clicking View Processes.

Fixes #3709
2022-08-16 17:58:02 +05:30
Akshay Joshi ef91207669 1) Fixed an issue where an existing user is deleted and recreated again in the User Management dialog. Fixes #7618
2) Fixed preferences issue when changing themes.
3) Added validation for user names that already exist.
2022-08-16 17:28:45 +05:30
Khushboo Vashi d45072fae5 Ensure that rename panel should work on view/edit panels. Fixes #7540 2022-08-16 15:31:55 +05:30
Akshay Joshi ff4c5392d6 Fixed crypt key is missing issue when logout from the pgAdmin. Fixes #7614 2022-08-16 15:29:57 +05:30
Akshay Joshi 485265979e Fixed an issue email already exists and disable the 'Locked' switch when its value is false. Fixes #7618 2022-08-16 15:25:25 +05:30
Akshay Joshi 88a443f73d Add a condition for Werkzeug version 2.1.1, as it is supported on Python 3.7 and above. 2022-08-16 12:52:04 +05:30
Akshay Joshi 2d27a97b8c Fixed improper parsing of HTTP requests in Pallets Werkzeug v2.1.0 and below (CVE-2022-29361). Fixes #7602 2022-08-16 12:20:01 +05:30
Akshay Joshi 06d454473c Fixed an issue where an invalid email error was not visible on the GUI. Fixes #7609 2022-08-14 08:48:58 +05:30
Khushboo Vashi ae5254e8a9 Fixed an issue where the cloud deployment wizard creates the cluster with the
High Availability even if that option is not selected. Fixes #7608
2022-08-14 07:14:10 +05:30
Akshay Joshi 1e94c3bd81 Fixed Security Hotspot reported by SonarQube. 2022-08-14 07:09:45 +05:30
Dave Page 6179b216c5 Fix translation. 2022-08-12 14:30:59 +01:00
Akshay Joshi 76f581289c Fixed maintenance feature test. 2022-08-12 18:21:42 +05:30
Aditya Toshniwal 7bd0d55c83 Fixed Security Hotspot reported by SonarQube. 2022-08-12 17:14:15 +05:30
Akshay Joshi 084203debc Fixed Securtiy Hotspot reported by SonarQube. 2022-08-12 17:10:26 +05:30
Nikhil Mohite b34078c6d2 Fixed SonarQube issues 2022-08-12 12:19:11 +05:30
Akshay Joshi b6765e00eb Fixed feature tests failed after user management changes. 2022-08-12 12:18:05 +05:30
Dave Page 2567ed5784 Fix a bug introduced by the previous Sonarqube fixes. 2022-08-11 10:44:55 +01:00
Dave Page 3cffcc8f5b Sonarqube fixes for Docker. 2022-08-11 09:30:43 +01:00
Pradip Parkale b4e5717bde Fixed an issue where expanding the Shared Servers group would open the properties dialog for another server. 2022-08-11 13:10:18 +05:30
Christian Tosta 9a7859c5cb Added Brazilian language support. 2022-08-11 12:58:31 +05:30
Aditya Toshniwal e1fa1b0396 Ensure that the children of information_schema and pg_catalog node should be displayed. Fixes #7587 2022-08-11 10:53:07 +05:30
Aditya Toshniwal c2b23465cc 1) Added support to show all background processes in separate panel. Fixes #3709
2) Port process watcher to React. Fixes #7404
2022-08-11 10:49:45 +05:30
Akshay Joshi 271b6d91fc Port User Management dialog to React. Fixes #7345 2022-08-11 10:25:52 +05:30
Dave Page 3766fa7f0b Sphinx doesn't seem to be in EPEL any more. 2022-08-10 17:17:56 +01:00
Dave Page 626681c5ba Yet more Sonarqube fixes. 2022-08-10 17:01:31 +01:00
Dave Page 9c9fb293da Yet more Sonarqube fixes. 2022-08-10 16:43:48 +01:00
Dave Page 2bc60c9142 More Sonarqube fixes for macOS 2022-08-10 16:18:19 +01:00
Dave Page 0f11033989 More Sonarqube fixes for Linux 2022-08-10 15:54:51 +01:00
Dave Page c0c4524ec3 Sonarqube fixes for macOS 2022-08-10 14:56:25 +01:00
Aditya Toshniwal 8b7ce2c276 Port change user password and 2FA dialog to React. Fixes #7568 2022-08-10 18:02:54 +05:30
Dave Page 5e4d3cc535 More sonarqube fixes for Linux 2022-08-10 11:34:40 +01:00
Dave Page f6e7221359 Remove unnecessary variable. 2022-08-10 10:44:06 +01:00
Dave Page d7ad375232 Fix additional issues detected by Sonarqube. 2022-08-10 10:36:47 +01:00
Nikhil Mohite 9c418188ee Fixed SonarQube issues. 2022-08-10 15:05:20 +05:30
Dave Page b69af1341b NodeJS 16 should be the default. 2022-08-10 10:27:40 +01:00
Dave Page 233652c3f1 Fix some issues detected bu Sonarqube. 2022-08-10 10:22:06 +01:00
Dave Page 923f2fc7c4 'file' output might span two lines with universal binaries.
Filter out any lines that start with "- Mach-O".
2022-08-10 10:20:01 +01:00
Aditya Toshniwal f5793e9a7a Fixed SonarQube issues. 2022-08-09 15:42:16 +05:30
Yogesh Mahajan f96653e9af Fixed an issue with rendering geometry when selecting a complete column. Fixes #7586 2022-08-09 13:28:09 +05:30
Pradip Parkale 8c24d28740 Remove the SQL files for the unsupported versions of the database server. Fixes #7462
Fixed API test cases for Postgres 14.4. Fixes #7527
2022-08-09 13:24:52 +05:30
Akshay Joshi d1c94ac73d Fixed SonarQube issues. 2022-08-05 18:58:03 +05:30
Yogesh Mahajan fa6b77b42c Port Role Reassign dialog to React. Fixes #7344 2022-08-05 16:04:15 +05:30
Yogesh Mahajan 4c6e7d4f4f Fixed an issue with the error message being displayed at the right place for Azure deployments. Fixes #7497 2022-08-05 14:11:17 +05:30
Akshay Joshi 53887c32bf Port change ownership dialog to React. Fixes #7590 2022-08-05 14:11:17 +05:30
Dave Page 060d7ba46b Update the container base image to Alpine 3.16 (with Python 3.10.5). Fixes #7595 2022-08-04 11:50:56 +01:00
Yogesh Mahajan 5877b49f64 Fixed FileManager feature tests. 2022-08-03 18:59:01 +05:30
Akshay Joshi 352eb15dc7 Fixed PEP8 2022-08-01 22:06:34 +05:30
Dave Page 66a1123268 Clarify config settings that may need to be re-defined if SERVER_MODE or DATA_DIR are updated in an included config file. 2022-08-01 16:17:49 +01:00
Akshay Joshi 95312f2d14 1) Ensure that autocomplete does not appear when navigating code using arrow keys. Fixes #7573
2) Fixed an issue where autocomplete is not working after clearing the query editor. Fixes #7563
2022-08-01 14:38:32 +05:30
Yogesh Mahajan 6145dc76fc Added support to create triggers from existing trigger functions in EPAS. Fixes #7387 2022-07-28 11:16:05 +05:30
Libor M 526ee51485 Update Czech translation. 2022-07-28 10:20:07 +05:30
Domenico Sgarbossa 1dab98c6a0 Update Italian translation. 2022-07-28 10:17:31 +05:30
Fred Escallier 7e46e46080 Update French translation. 2022-07-28 10:16:21 +05:30
Akshay Joshi 81b0d1138b Remove Alertify dialog from Grant Wizard, Import/Export Servers and Cloud. 2022-07-28 10:14:04 +05:30
Akshay Joshi 81f52a82c8 Port About dialog to React. Fixes #7567 2022-07-28 10:11:40 +05:30
2033 changed files with 81866 additions and 121310 deletions

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
name: Check documentation build
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Run the tests
- name: Install dependencies
run: sudo apt install build-essential python3-dev libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev
- name: Install requirements
run: pip install -r requirements.txt
- name: Install sphinx
run: pip install sphinx
- name: Check the documentation
run: make docs
@@ -0,0 +1,36 @@
name: Check Javascript style
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Run the tests
- name: Install nodejs
run: sudo apt install nodejs
- name: Install yarn
run: sudo npm install --global yarn
- name: Install Node modules
run: cd web && yarn install
- name: Run the linter
run: cd web && yarn run linter
+39
View File
@@ -0,0 +1,39 @@
name: Check Python style
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Run the tests
- name: Install pycodestyle
run: pip install pycodestyle
- name: Check the documentation
run: pycodestyle --config=.pycodestyle docs/
- name: Check the packaging
run: pycodestyle --config=.pycodestyle pkg/
- name: Check the application
run: pycodestyle --config=.pycodestyle web/
- name: Check the tools
run: pycodestyle --config=.pycodestyle tools/
+26 -31
View File
@@ -12,9 +12,9 @@ Name Version
---- ------- ------- ---
Python 3.6+ PSF https://www.python.org/
nw 0.50.2 MIT git://github.com/nwjs/npm-installer.git
axios 0.21.0 MIT https://github.com/axios/axios.git
axios 0.21.2 MIT https://github.com/axios/axios.git
bootstrap 4.5.3 MIT git+https://github.com/twbs/bootstrap.git
follow-redirects 1.13.1 MIT git@github.com:follow-redirects/follow-redirects.git
follow-redirects 1.15.2 MIT git@github.com:follow-redirects/follow-redirects.git
5 dependencies listed.
@@ -23,47 +23,46 @@ Python Dependencies
Name Version Licence URL
---- ------- ------- ---
Flask 2.1.1 BSD-3-Clause https://palletsprojects.com/p/flask
Flask 2.1.3 BSD-3-Clause https://palletsprojects.com/p/flask
Flask-Gravatar 0.5.0 BSD https://github.com/zzzsochi/Flask-Gravatar/
Flask-Login 0.6.0 MIT https://github.com/maxcountryman/flask-login
Flask-Login 0.6.2 MIT https://github.com/maxcountryman/flask-login
Flask-Mail 0.9.1 BSD https://github.com/rduplain/flask-mail
Flask-Migrate 3.1.0 UNKNOWN https://github.com/miguelgrinberg/flask-migrate
Flask-SQLAlchemy 2.5.1 BSD-3-Clause https://github.com/pallets/flask-sqlalchemy
Flask-WTF 1.0.1 BSD-3-Clause https://github.com/wtforms/flask-wtf/
Flask-Compress 1.11 MIT https://github.com/colour-science/flask-compress
Flask-Compress 1.12 MIT https://github.com/colour-science/flask-compress
Flask-Paranoid 0.3.0 UNKNOWN https://github.com/miguelgrinberg/flask-paranoid
Flask-Babel 2.0.0 BSD http://github.com/python-babel/flask-babel
Flask-Security-Too 4.1.4 MIT https://github.com/Flask-Middleware/flask-security
Flask-SocketIO 5.1.1 UNKNOWN https://github.com/miguelgrinberg/flask-socketio
Flask-Security-Too 4.1.5 MIT https://github.com/Flask-Middleware/flask-security
Flask-SocketIO 5.2.0 Unknown https://github.com/miguelgrinberg/flask-socketio
WTForms 3.0.1 BSD-3-Clause https://wtforms.readthedocs.io/
passlib 1.7.4 BSD https://passlib.readthedocs.io
pytz 2021.3 MIT http://pythonhosted.org/pytz
simplejson 3.17.6 MIT License https://github.com/simplejson/simplejson
six 1.16.0 MIT https://github.com/benjaminp/six
speaklater3 1.4 UNKNOWN https://github.com/ThomasWaldmann/speaklater
sqlparse 0.4.2 BSD-3-Clause https://github.com/andialbrecht/sqlparse
psutil 5.9.0 BSD https://github.com/giampaolo/psutil
psutil 5.9.1 BSD https://github.com/giampaolo/psutil
psycopg2 2.9.3 LGPL with exceptions https://psycopg.org/
python-dateutil 2.8.2 Dual License https://github.com/dateutil/dateutil
SQLAlchemy 1.4.35 MIT https://www.sqlalchemy.org
bcrypt 3.2.0 Apache License, Version 2.0 https://github.com/pyca/bcrypt/
SQLAlchemy 1.4.40 MIT https://www.sqlalchemy.org
bcrypt 3.2.2 Apache License, Version 2.0 https://github.com/pyca/bcrypt/
cryptography 3.4.8 BSD or Apache License, Version 2.0 https://github.com/pyca/cryptography
sshtunnel 0.4.0 MIT https://github.com/pahaz/sshtunnel
ldap3 2.9.1 LGPL v3 https://github.com/cannatag/ldap3
gssapi 1.7.3 LICENSE.txt https://github.com/pythongssapi/python-gssapi
eventlet 0.33.0 UNKNOWN http://eventlet.net
httpagentparser 1.9.2 http://www.opensource.org/licenses/mit-license.php https://github.com/shon/httpagentparser
httpagentparser 1.9.3 http://www.opensource.org/licenses/mit-license.php https://github.com/shon/httpagentparser
user-agents 2.2.0 MIT https://github.com/selwin/python-user-agents
pywinpty 1.1.* Unknown Unknown
Authlib 0.15.5 BSD-3-Clause https://authlib.org/
requests 2.25.1 Apache 2.0 https://requests.readthedocs.io
pyotp 2.6.0 MIT License https://github.com/pyotp/pyotp
qrcode 7.3.1 BSD https://github.com/lincolnloop/python-qrcode
Pillow 9.1.0 HPND https://python-pillow.org
Pillow 9.2.0 HPND https://python-pillow.org
boto3 1.20.54 Apache License 2.0 https://github.com/boto/boto3
botocore 1.23.54 Apache License 2.0 https://github.com/boto/botocore
urllib3 1.26.9 MIT https://urllib3.readthedocs.io/
Werkzeug 2.0.3 BSD-3-Clause https://palletsprojects.com/p/werkzeug/
urllib3 1.26.12 MIT https://urllib3.readthedocs.io/
Werkzeug 2.1.2 BSD-3-Clause https://palletsprojects.com/p/werkzeug/
azure-mgmt-rdbms 10.1.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-resource 21.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-subscription 3.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
@@ -72,7 +71,7 @@ azure-identity 1.9.0
NOTE: This report was generated using Python 3.10. Full information may not be
shown for Python modules that are not required with this version.
45 dependencies listed.
44 dependencies listed.
Javascript Dependencies
=======================
@@ -124,6 +123,7 @@ Name Version
@babel/preset-react 7.13.13 MIT https://github.com/babel/babel.git
@babel/runtime 7.16.0 MIT https://github.com/babel/babel.git
@babel/runtime 7.17.0 MIT https://github.com/babel/babel.git
@babel/runtime 7.19.0 MIT https://github.com/babel/babel.git
@babel/runtime 7.17.8 MIT https://github.com/babel/babel.git
@babel/template 7.16.7 MIT https://github.com/babel/babel.git
@babel/template 7.14.5 MIT https://github.com/babel/babel.git
@@ -157,19 +157,20 @@ Name Version
@nodelib/fs.scandir 2.1.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir
@nodelib/fs.stat 2.0.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat
@nodelib/fs.walk 1.2.8 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk
@popperjs/core 2.10.2 MIT https://github.com/popperjs/popper-core.git
@projectstorm/geometry 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-canvas-core 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-core 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-defaults 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-routing 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@react-dnd/asap 5.0.2 MIT https://github.com/react-dnd/react-dnd
@react-dnd/invariant 4.0.2 MIT https://github.com/react-dnd/react-dnd
@react-dnd/shallowequal 4.0.2 MIT https://github.com/react-dnd/react-dnd
@simonwep/pickr 1.8.2 MIT https://github.com/Simonwep/pickr.git
@sindresorhus/is 0.7.0 MIT https://github.com/sindresorhus/is.git
@socket.io/base64-arraybuffer 1.0.2 MIT https://github.com/socketio/base64-arraybuffer
@socket.io/component-emitter 3.0.0 MIT https://github.com/socketio/emitter.git
@szhsin/react-menu 2.3.3 MIT https://github.com/szhsin/react-menu.git
@tippyjs/react 4.2.6 MIT git+https://github.com/atomiks/tippyjs-react.git
@types/classnames 2.3.1 MIT Unknown
@types/json-schema 7.0.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/minimist 1.2.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@@ -186,7 +187,6 @@ ajv 8.9.0
ajv 6.12.6 MIT https://github.com/ajv-validator/ajv.git
ajv-errors 1.0.1 MIT git+https://github.com/epoberezkin/ajv-errors.git
ajv-keywords 3.5.2 MIT git+https://github.com/epoberezkin/ajv-keywords.git
alertifyjs 1.7.1 MIT git@github.com:MohammadYounes/AlertifyJS.git
alphanum-sort 1.0.2 MIT https://github.com/TrySound/alphanum-sort.git
ansi-styles 3.2.1 MIT https://github.com/chalk/ansi-styles.git
array-union 3.0.1 MIT https://github.com/sindresorhus/array-union.git
@@ -201,12 +201,6 @@ babel-plugin-styled-components 1.13.3
babel-plugin-syntax-jsx 6.18.0 MIT https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-jsx
babelify 10.0.0 MIT https://github.com/babel/babelify.git
backbone 1.4.0 MIT https://github.com/jashkenas/backbone.git
backbone 1.2.3 MIT https://github.com/jashkenas/backbone.git
backbone 1.3.3 MIT https://github.com/jashkenas/backbone.git
backform 0.2.0 MIT https://github.com/AmiliaApp/backform
backgrid 0.3.8 MIT http://github.com/cloudflare/backgrid
backgrid-filter 0.3.7 MIT git://github.com/wyuenho/backgrid-text-cell.git
backgrid-select-all 0.3.5 MIT git://github.com/wyuenho/backgrid-select-all.git
backo2 1.0.2 MIT https://github.com/mokesmokes/backo.git
balanced-match 1.0.2 MIT git://github.com/juliangruber/balanced-match.git
base64-arraybuffer 0.2.0 MIT https://github.com/niklasvh/base64-arraybuffer
@@ -264,6 +258,7 @@ decamelize-keys 1.1.0
deep-diff 1.0.2 MIT git://github.com/flitbit/diff.git
diff-arrays-of-objects 1.1.9 MIT git+https://github.com/malcolmvr/diff-arrays-of-objects.git
dir-glob 3.0.1 MIT https://github.com/kevva/dir-glob.git
dnd-core 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
dom-align 1.12.2 MIT git@github.com:yiminghe/dom-align.git
dom-helpers 5.2.1 MIT git+https://github.com/react-bootstrap/dom-helpers.git
dom-serializer 1.3.2 MIT git://github.com/cheeriojs/dom-renderer.git
@@ -366,7 +361,6 @@ lodash.noop 2.3.0
lodash.support 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.uniq 4.5.0 MIT https://github.com/lodash/lodash.git
loose-envify 1.4.0 MIT git://github.com/zertosh/loose-envify.git
lunr 0.7.2 MIT https://github.com/olivernn/lunr.js.git
make-dir 3.1.0 MIT https://github.com/sindresorhus/make-dir.git
map-obj 4.3.0 MIT https://github.com/sindresorhus/map-obj.git
map-obj 1.0.1 MIT https://github.com/sindresorhus/map-obj.git
@@ -385,7 +379,7 @@ ml-array-rescale 1.3.6
ml-matrix 6.8.0 MIT https://github.com/mljs/matrix.git
mobius1-selectr 2.4.13 MIT git+https://github.com/Mobius1/Selectr.git
moment 2.29.4 MIT https://github.com/moment/moment.git
moment-timezone 0.5.34 MIT https://github.com/moment/moment-timezone.git
moment-timezone 0.5.37 MIT https://github.com/moment/moment-timezone.git
ms 2.1.2 MIT https://github.com/zeit/ms.git
nanoid 3.3.2 MIT https://github.com/ai/nanoid.git
nanoid 3.2.0 MIT https://github.com/ai/nanoid.git
@@ -464,7 +458,9 @@ react 17.0.2
react-aspen 1.2.0 MIT https://github.com/neeksandhu/react-aspen.git
react-aspen 1.1.1 MIT https://github.com/neeksandhu/react-aspen.git
react-checkbox-tree 1.7.2 MIT https://github.com/jakezatecky/react-checkbox-tree
react-data-grid 7.0.0-beta.12 MIT https://github.com/adazzle/react-data-grid.git
react-data-grid 7.0.0-beta.14 MIT https://github.com/adazzle/react-data-grid.git
react-dnd 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
react-dnd-html5-backend 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
react-dom 16.14.0 MIT git+https://github.com/facebook/react.git
react-dom 17.0.2 MIT https://github.com/facebook/react.git
react-draggable 4.4.4 MIT https://github.com/react-grid-layout/react-draggable.git
@@ -484,6 +480,7 @@ react-window 1.8.6
read-pkg 6.0.0 MIT https://github.com/sindresorhus/read-pkg.git
read-pkg-up 8.0.0 MIT https://github.com/sindresorhus/read-pkg-up.git
redent 4.0.0 MIT https://github.com/sindresorhus/redent.git
redux 4.2.0 MIT https://github.com/reduxjs/redux.git
regenerator-runtime 0.13.9 MIT https://github.com/facebook/regenerator/tree/master/packages/runtime
require-from-string 2.0.2 MIT https://github.com/floatdrop/require-from-string.git
resize-observer-polyfill 1.5.1 MIT https://github.com/que-etc/resize-observer-polyfill.git
@@ -499,7 +496,6 @@ select2 4.0.13
shallowequal 1.1.0 MIT https://github.com/dashed/shallowequal.git
shim-loader 1.0.1 MIT https://github.com/zinserjan/shim-loader
slash 4.0.0 MIT https://github.com/sindresorhus/slash.git
slickgrid 2.3.16 MIT git+https://github.com/6pac/SlickGrid.git
snapsvg-cjs 0.0.6 MIT git+https://github.com/geelen/Snap.svg-cjs.git
socket.io-client 4.3.2 MIT https://github.com/socketio/socket.io-client.git
socket.io-parser 4.1.1 MIT https://github.com/socketio/socket.io-parser.git
@@ -521,7 +517,6 @@ text-segmentation 1.0.2
timsort 0.3.0 MIT https://github.com/mziccard/node-timsort.git
tiny-emitter 2.1.0 MIT https://github.com/scottcorgan/tiny-emitter.git
tiny-warning 1.0.3 MIT https://github.com/alexreardon/tiny-warning.git
tippy.js 6.3.5 MIT git+https://github.com/atomiks/tippyjs.git
to-fast-properties 2.0.0 MIT https://github.com/sindresorhus/to-fast-properties.git
to-regex-range 5.0.1 MIT https://github.com/micromatch/to-regex-range.git
trim-newlines 4.0.2 MIT https://github.com/sindresorhus/trim-newlines.git
@@ -620,5 +615,5 @@ tslib 2.4.0
tslib 2.3.0 0BSD https://github.com/Microsoft/tslib.git
type-fest 1.4.0 (MIT OR CC0-1.0) https://github.com/sindresorhus/type-fest.git
540 dependencies listed.
536 dependencies listed.
+14 -8
View File
@@ -12,7 +12,7 @@
# and clean up the web/ source code
#########################################################################
FROM alpine:3.15 AS app-builder
FROM alpine:3.16 AS app-builder
RUN apk add --no-cache \
autoconf \
@@ -60,7 +60,7 @@ RUN export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
# Next, create the base environment for Python
#########################################################################
FROM alpine:3.15 as env-builder
FROM alpine:3.16 as env-builder
# Install dependencies
COPY requirements.txt /
@@ -116,8 +116,9 @@ FROM postgres:11-alpine as pg11-builder
FROM postgres:12-alpine as pg12-builder
FROM postgres:13-alpine as pg13-builder
FROM postgres:14-alpine as pg14-builder
FROM postgres:15-alpine as pg15-builder
FROM alpine:3.15 as tool-builder
FROM alpine:3.16 as tool-builder
# Copy the PG binaries
COPY --from=pg10-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-10/
@@ -145,20 +146,25 @@ COPY --from=pg14-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-14/
COPY --from=pg14-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-14/
COPY --from=pg14-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-14/
COPY --from=pg15-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-15/
COPY --from=pg15-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-15/
COPY --from=pg15-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-15/
COPY --from=pg15-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-15/
#########################################################################
# Assemble everything into the final container.
#########################################################################
FROM alpine:3.15
FROM alpine:3.16
# Copy in the Python packages
COPY --from=env-builder /venv /venv
# Copy in the tools
COPY --from=tool-builder /usr/local/pgsql /usr/local/
COPY --from=pg14-builder /usr/local/lib/libpq.so.5.14 /usr/lib/
RUN ln -s libpq.so.5.14 /usr/lib/libpq.so.5 && \
ln -s libpq.so.5.14 /usr/lib/libpq.so
COPY --from=pg15-builder /usr/local/lib/libpq.so.5.15 /usr/lib/
RUN ln -s libpq.so.5.15 /usr/lib/libpq.so.5 && \
ln -s libpq.so.5.15 /usr/lib/libpq.so
WORKDIR /pgadmin4
ENV PYTHONPATH=/pgadmin4
@@ -196,7 +202,7 @@ RUN apk add \
chown pgadmin:root /pgadmin4/config_distro.py && \
chmod g=u /pgadmin4/config_distro.py && \
chmod g=u /etc/passwd && \
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python3.9 && \
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python3.10 && \
echo "pgadmin ALL = NOPASSWD: /usr/sbin/postfix start" > /etc/sudoers.d/postfix && \
echo "pgadminr ALL = NOPASSWD: /usr/sbin/postfix start" >> /etc/sudoers.d/postfix
+4 -7
View File
@@ -263,15 +263,12 @@ See https://www.pgadmin.org/support/ for support options.
# Project info
The source code repository can be found here:
A GitHub project for pgAdmin 4 can be found at the address below:
http://git.postgresql.org/gitweb/?p=pgadmin4.git;a=summary
https://github.com/pgadmin-org/pgadmin4
A Redmine project for pgAdmin 4 can be found at the address below. A PostgreSQL
community account is required to access this site. Please note that at present
only project developers can log bug and feature requests:
https://redmine.postgresql.org/projects/pgadmin4
Please submit any changes as Pull Requests against the *master* branch of the
*pgadmin-org/pgadmin4* repository.
If you wish to discuss pgAdmin 4, or contribute to the project, please use the
pgAdmin Hackers mailing list:
+3 -18
View File
@@ -203,21 +203,6 @@ command:
* Click the *Cancel* button to exit without saving work.
.. image:: images/backup_messages.png
:alt: Backup success notification popup
:align: center
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *More details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
.. image:: images/backup_process_watcher.png
:alt: Backup process watcher
:align: center
If the backup is unsuccessful, you can review the error messages returned by the
backup command on the *Process Watcher*.
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
.. |sm_icon| image:: images/sm_icon.png
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
+3 -21
View File
@@ -34,24 +34,6 @@ statements that should be included in the backup.
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
.. image:: images/backup_globals_messages.png
:alt: Backup globals success notification popup
:align: center
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *Click
here for details* on the popup window to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the backup and provides
additional information for troubleshooting.
.. image:: images/backup_globals_process_watcher.png
:alt: Backup globals process watcher
:align: center
If the backup is unsuccessful, review the error message returned by the
*Process Watcher* to resolve any issue.
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
.. |sm_icon| image:: images/sm_icon.png
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
+3 -21
View File
@@ -122,24 +122,6 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
.. image:: images/backup_server_messages.png
:alt: Backup server success notification popup
:align: center
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *Click
here for details* on the popup window to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the backup and provides
additional information for troubleshooting.
.. image:: images/backup_server_process_watcher.png
:alt: Backup server process watcher
:align: center
If the backup is unsuccessful, review the error message returned by the
*Process Watcher* to resolve any issue.
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
.. |sm_icon| image:: images/sm_icon.png
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
+27
View File
@@ -0,0 +1,27 @@
.. _change_ownership:
************************************
`Change Ownership Dialog`:index:
************************************
Use the *Change Ownership* dialog to change the ownership of the shared servers.
This dialog will appear if a user has been deleted from
:ref:`User Management <user_management>` and owned some shared servers.
Choose the user who will own the shared servers from the drop-down.
.. image:: images/change_ownership.png
:alt: Change ownership dialog
:align: center
Click the *Change* button to change the ownership.
The shared servers owned by the user will be deleted if the user is not
selected from the drop-down.
.. image:: images/change_ownership_info.png
:alt: Change ownership dialog
:align: center
Click the *Change* button to change the ownership; click *Close* to
exit the dialog.
+6
View File
@@ -53,6 +53,9 @@ details.
* Use the *Provisioned IOPS* in case of Provisioned IOPS (SSD) storage type.
* Use the *High Availability* option to specify High Availability
option. This option creates a standby in a different Availability Zone(AZ).
.. image:: images/cloud_aws_database.png
:alt: Cloud Deployment Provider
:align: center
@@ -89,5 +92,8 @@ button to deploy the instance on Amazon RDS.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
+3 -1
View File
@@ -73,7 +73,7 @@ details.
should be accepted. Add multiple IP addresses/ranges separated with commas,
for example: "192.168.0.50, 192.168.0.100 - 192.168.0.200"
* User *Zone redundant high availability* option to specify High Availability
* Use *Zone redundant high availability* option to specify High Availability
option. Zone redundant high availability deploys a standby replica in a
different zone.
The Burstable instance type does not support high availability.
@@ -107,6 +107,8 @@ button to deploy the instance on Azure PostgreSQL.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
.. image:: images/cloud_azure_bg_process_watcher.png
:alt: Cloud Deployment
+11 -4
View File
@@ -36,7 +36,8 @@ details.
* Use the *Region* field to select the region.
* Use the *Database version* field to specify the PostgreSQL version to deploy.
* Use the *Public IP range* field to specify the IP Address range for permitting the
inbound traffic. Leave it blank for 0.0.0.0/0
* Use the *Instance type* field to select the instance type.
@@ -49,10 +50,7 @@ details.
* Use the *Volume properties* field to specify the storage capacity.
* Use the *Cloud type* field to specify the private or public network.
* Use the *Public IP range* field to specify the IP Address range for permitting the
inbound traffic. Leave it blank for 0.0.0.0/0
.. image:: images/cloud_biganimal_database.png
:alt: Cloud Deployment Provider
@@ -74,6 +72,12 @@ Use the fields from the Database Details tab to specify the Instance details.
* Use the *Confirm password* field to repeat the password.
* Use the *High Availability* field to create the cluster with high availability, which creates a cluster
with one primary and up to two standby replicas in different availability zones.
* Use the *Number of standby replicas* field to specify the standby replicas.
.. image:: images/cloud_biganimal_review.png
:alt: Cloud Deployment Provider
:align: center
@@ -87,5 +91,8 @@ button to deploy the instance on EDB BigAnimal.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
+1 -1
View File
@@ -208,7 +208,7 @@ Front End
pgAdmin uses javascript extensively for the front-end implementation. It uses
require.js to allow the lazy loading (or, say load only when required),
bootstrap for UI look and feel, Backbone for data manipulation of a node,
Backform for generating properties/create dialog for selected node. We have
React for generating properties/create dialog for selected node. We have
divided each module in small chunks as much as possible. Not all javascript
modules are required to be loaded (i.e. loading a javascript module for
database will make sense only when a server node is loaded completely.) Please
+10 -7
View File
@@ -5,7 +5,7 @@
**************************
This document lists a number of standard items that will be checked during the
review process for any patches submitted for inclusion in pgAdmin.
review process for any changes submitted for inclusion in pgAdmin.
* Ensure all code follows the pgAdmin :doc:`coding_standards`.
@@ -52,10 +52,13 @@ review process for any patches submitted for inclusion in pgAdmin.
current schema/user as appropriate. In general, if there are common or sensible
default values available, put them in the fields for the user.
* 1 patch == 1 feature. If you need to fix/update existing infrastructure in
your patch, it's usually easier if it's in a separate patch. Patches containing
multiple new features or unrelated changes are likely to be rejected.
* 1 Pull Request == 1 feature. If you need to fix/update existing
infrastructure in your change, it's usually easier if it's in a separate
Pull Request. Pull Requests containing multiple new features or unrelated
changes are likely to be rejected.
* Ensure the patch is fully functional, and works! If a patch is being sent as
a work in progress, not intended for commit, clearly state that it's a WIP,
and note what does or does not yet work.
* Ensure the change is fully functional, and works! If you wish to send a
work in progress (WIP) change that is not intended for commit, instead of
submitting a Pull Request, send either as a link to a repository fork or a
patch to the pgadmin-hackers@postgresql.org mailing list, clearly stating
that it's a WIP, and noting what does or does not yet work.
+4 -3
View File
@@ -45,9 +45,10 @@ The configuration files are as follows:
macOS,/Library/Preferences/pgadmin/config_system.py
Windows,%CommonProgramFiles%\\pgadmin\\config_system.py
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py``,
``config_local.py``, or ``config_system.py`` you will most likely need to
re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH and STORAGE_DIR values
.. note:: If the SERVER_MODE or DATA_DIR settings are changed in
``config_distro.py``, ``config_local.py``, or ``config_system.py`` you
will most likely need to re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH,
STORAGE_DIR, KERBEROS_CCACHE_DIR, and AZURE_CREDENTIAL_CACHE_DIR values
as well as they will have been set based on the default configuration or
overridden by the runtime.
+34
View File
@@ -8,6 +8,31 @@ pgAdmin can be deployed in a container using the image at:
https://hub.docker.com/r/dpage/pgadmin4/
There are various tags that you can select from to get the version of pgAdmin
that you want, using a command such as this if you're using Docker:
.. code-block:: bash
docker pull dpage/pgadmin4:<tag name>
where *<tag name>* is one of the following:
.. table::
:class: longtable
:widths: 1 4
+----------+-------------------------------------------------------------------------------+
| Tag name | Description |
+==========+===============================================================================+
| latest | The most recent release. |
+----------+-------------------------------------------------------------------------------+
| 6.14 | A specific version (6.14 in this case). |
+----------+-------------------------------------------------------------------------------+
| 6 | the latest release of a specific major version (major version 6 in this case).|
+----------+-------------------------------------------------------------------------------+
| snapshot | The latest nightly test build. |
+----------+-------------------------------------------------------------------------------+
PostgreSQL Utilities
********************
@@ -115,6 +140,15 @@ Override the default file path for the server definition list. See the
Specify an output file in which to store the Gunicorn access logs, instead of
sending them to stdout.
**GUNICORN_LIMIT_REQUEST_LINE**
*Default: 8190*
Set the maximum size of HTTP request line in bytes. By default the pgAdmin
container uses the maximum limited size offered by Gunicorn as some requests
can be quite large. In exceptional cases this value can be set to 0 (zero) to
specify "unlimited", however this poses a potential denial of service hazard.
**GUNICORN_THREADS**
*Default: 25*
+1 -1
View File
@@ -15,7 +15,7 @@ development process used to develop, improve, and maintain the pgAdmin client.
.. toctree::
submitting_patches
submitting_pull_requests
code_overview
coding_standards
code_snippets
+1 -1
View File
@@ -19,7 +19,7 @@ pgAdmin server and opens a window to render the user interface.
.. seealso:: For detailed instructions on building and configuring pgAdmin from
scratch, please see the README file in the top level directory of the source code.
For convenience, you can find the latest version of the file
`here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob;f=README.md>`_,
`here <https://github.com/pgadmin-org/pgadmin4/blob/master/README.md>`_,
but be aware that this may differ from the version included with the source code
for a specific version of pgAdmin.
+20 -1
View File
@@ -47,7 +47,7 @@ File Options
| | diagram to a file. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Save as* | Click the *Save As* to open a new browser dialog and specify a new location to save the diagram. | Ctrl + Shift + |
| | | S |
| | You need to click the down arrow beside the save button to see *Save As*. | S |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
Export Options
@@ -62,6 +62,8 @@ Export Options
+======================+===================================================================================================+================+
| *Generate SQL* | Click the *Generate SQL* icon to generate the DDL SQL for the diagram and open a query tool | Option + Ctrl +|
| | with the generated SQL ready for execution. | S |
| | You can select the option *With DROP Table* if you wish to have DROP Table DDL statements before | |
| | each CREATE Table DDL. You can see the option by clicking the down arrow beside the SQL button. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Download image* | Click the *Download image* icon to save the ERD diagram in a image formate | Option + Ctrl +|
| | | I |
@@ -109,6 +111,23 @@ Table Relationship Options
| | tables and link them. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
Node Color Options
**************************
.. table::
:class: longtable
:widths: 1 5
+----------------------+----------------------------------------------------------------------------------------------------------+
| Icon | Behavior |
+======================+==========================================================================================================+
| *Fill Color* | Use Fill Color to change the background color of a table node. This is helpful if you want to |
| | identify a of group tables. Once set, all the newly added tables will take the same color. |
+----------------------+----------------------------------------------------------------------------------------------------------+
| *Text Color* | Use Text Color to change the text color of a table node based on the fill color to make text |
| | easily readable. |
+----------------------+----------------------------------------------------------------------------------------------------------+
Utility Options
***************
+1
View File
@@ -35,6 +35,7 @@ Mode is pre-configured for security.
login
mfa
user_management
change_ownership
change_user_password
restore_locked_user
ldap
Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 KiB

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 130 KiB

+1
View File
@@ -23,6 +23,7 @@ of database objects.
management_basics
backup_and_restore
developer_tools
processes
pgagent
contributions
release_notes
+127 -50
View File
@@ -1,10 +1,10 @@
***************************
`Keyboard Shortcuts`:index:
***************************
****************************
`Keyboard Shortcuts`:index::
****************************
Keyboard shortcuts are provided in pgAdmin to allow easy access to specific
functions. Alternate shortcuts can be configured through File > Preferences if
desired.˝
desired.
Main Browser Window
*******************
@@ -18,33 +18,49 @@ When using main browser window, the following keyboard shortcuts are available:
+----------------------------+-------------------------------------------------------+
| Shortcut for all platforms | Function |
+============================+=======================================================+
| Alt+Shift+F | Open the File menu |
| Shift+Ctrl+a | Add grid row |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+O | Open the Object menu |
| Shift+Alt+b | Browser tree |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+L | Open the Tools menu |
| Shift+Alt+n | Create object |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+H | Open the Help menu |
| Shift+Alt+d | Delete object |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+B | Focus the browser tree |
| Shift+Alt+m | Delete/Drop multiple objects |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+[ | Move tabbed panel backward |
| Shift+Ctrl+[ | Dialog tab backward |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+] | Move tabbed panel forward |
| Shift+Ctrl+] | Dialog tab forward |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+Q | Open the Query Tool in the current database |
| Shift+Alt+g | Direct debugging |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+V | View Data in the selected table/view |
| Shift+Alt+u | Drop Cascade multiple objects |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+C | Open the context menu |
| Shift+Alt+e | Edit object properties |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+N | Create an object |
| Shift+Alt+f | File main menu |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+E | Edit object properties |
| Shift+Alt+h | Help main menu |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+D | Delete the object |
| Shift+Alt+o | Object main menu |
+----------------------------+-------------------------------------------------------+
| Alt+Shift+G | Direct debugging |
| Shift+Alt+c | Open context menu |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+q | Open query tool |
+----------------------------+-------------------------------------------------------+
| Shift+Ctrl+f | Quick Search |
+----------------------------+-------------------------------------------------------+
| F5 | Refresh browser tree |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+s | Search objects |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+[ | Tabbed panel backward |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+] | Tabbed panel forward |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+l | Tools main menu |
+----------------------------+-------------------------------------------------------+
| Shift+Alt+v | View data |
+----------------------------+-------------------------------------------------------+
Dialog Tabs
@@ -152,43 +168,51 @@ When using the Query Tool, the following shortcuts are available:
+--------------------------+--------------------+-----------------------------------+
| Shortcut (Windows/Linux) | Shortcut (Mac) | Function |
+==========================+====================+===================================+
| F5 | F5 | Execute query |
| <accesskey> + q | <accesskey> + q | Cancel query |
+--------------------------+--------------------+-----------------------------------+
| F6 | F6 | Save data changes |
| <accesskey> + t | <accesskey> + t | Connection status |
+--------------------------+--------------------+-----------------------------------+
| F7 | F7 | EXPLAIN query |
| <accesskey> + d | <accesskey> + d | Delete rows |
+--------------------------+--------------------+-----------------------------------+
| Shift + F7 | Shift + F7 | EXPLAIN ANALYZE query |
+--------------------------+--------------------+-----------------------------------+
| F8 | F8 | Execute query to CSV file |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + o | <accesskey> + o | Open file |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + s | <accesskey> + s | Save file |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + n | <accesskey> + n | Find option drop down |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + c | <accesskey> + c | Copy row(s) |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + p | <accesskey> + p | Paste row(s) |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + d | <accesskey> + d | Delete row(s) |
| <accesskey> + x | <accesskey> + x | Execute options |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + f | <accesskey> + f | Filter dialog |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + i | <accesskey> + i | Filter options drop down |
| <accesskey> + i | <accesskey> + i | Filter options |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + r | <accesskey> + r | Row limit |
| <accesskey> + n | <accesskey> + n | Find options |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + q | <accesskey> + q | Cancel query |
| <accesskey> + o | <accesskey> + o | Open file |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + l | <accesskey> + l | Clear option drop down |
| <accesskey> + p | <accesskey> + p | Paste rows |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + x | <accesskey> + x | Execute option drop down |
| <accesskey> + r | <accesskey> + r | Rows limit |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + t | <accesskey> + t | Display connection status |
| <accesskey> + s | <accesskey> + s | Save file |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + y | <accesskey> + y | Copy SQL on history panel |
| Ctrl + Alt + L | Ctrl + option + L | Clear query |
+--------------------------+--------------------+-----------------------------------+
| Shift + Ctrl + m | Shift + Ctrl + m | Commit |
+--------------------------+--------------------+-----------------------------------+
| F8 | F8 | Download Results |
+--------------------------+--------------------+-----------------------------------+
| Shift + F7 | Shift + F7 | EXPLAIN ANALYZE query |
+--------------------------+--------------------+-----------------------------------+
| F7 | F7 | EXPLAIN query |
+--------------------------+--------------------+-----------------------------------+
| F5 | F5 | Execute query |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + ] | Shift + option + ] | Next tab |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + [ | Shift + option + [ | Previous tab |
+--------------------------+--------------------+-----------------------------------+
| Shift + Ctrl + r | Shift + Ctrl + r | Rollback |
+--------------------------+--------------------+-----------------------------------+
| F6 | F6 | Save data changes |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + Tab | Shift + option +Tab| Switch Panel |
+--------------------------+--------------------+-----------------------------------+
| Shift + Ctrl + u | Shift + Ctrl + u | Toggle case of selected text |
+--------------------------+--------------------+-----------------------------------+
Debugger
@@ -203,19 +227,72 @@ When using the Debugger, the following shortcuts are available:
+--------------------------+--------------------+-----------------------------------+
| Shortcut (Windows/Linux) | Shortcut (Mac) | Function |
+==========================+====================+===================================+
| <accesskey> + i | <accesskey> + i | Step in |
| <accesskey> + x | <accesskey> + x | Clear all breakpoints |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + c | <accesskey> + c | Continue/Start |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + i | <accesskey> + i | Step into |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + o | <accesskey> + o | Step over |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + c | <accesskey> + c | Continue/Restart |
| <accesskey> + s | <accesskey> + s | Stop |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + t | <accesskey> + t | Toggle breakpoint |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + x | <accesskey> + x | Clear all breakpoints |
| Shift + Alt + q | Shift + option + q | Edit grid values |
+--------------------------+--------------------+-----------------------------------+
| <accesskey> + s | <accesskey> + s | Stop |
| Shift + Alt + ] | Shift + option + ] | Next tab |
+--------------------------+--------------------+-----------------------------------+
| Alt + Shift + q | Option + Shift + q | Enter or Edit values in Grid |
| Shift + Alt + [ | Shift + option + ] | Previous tab |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + Tab | Shift + option +Tab| Switch Panel |
+--------------------------+--------------------+-----------------------------------+
ERD Tool
********
When using the ERD Tool, the following shortcuts are available:
.. table::
:class: longtable
:widths: 2 2 3
+--------------------------+--------------------+-----------------------------------+
| Shortcut (Windows/Linux) | Shortcut (Mac) | Function |
+==========================+====================+===================================+
| Ctrl + Alt + a | Ctrl + option + a | Add table |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + n | Ctrl + option + n | Add/Edit note |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + l | Ctrl + option + l | Auto align |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + c | Ctrl + option + c | Clone table |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + i | Ctrl + option + i | Download image |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + d | Ctrl + option + d | Drop table |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + e | Ctrl + option + e | Edit table |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + s | Ctrl + option + s | Generate SQL |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + m | Ctrl + option + m | Many to many link |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + o | Ctrl + option + o | One to many link |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + o | Ctrl + o | Open project |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + s | Ctrl + s | Save project |
+--------------------------+--------------------+-----------------------------------+
| Shift + Ctrl + s | Shift + Ctrl + s | Save project as |
+--------------------------+--------------------+-----------------------------------+
| Ctrl + Alt + t | Ctrl + option + t | Show more/fewer details |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + + | Shift + option + + | Zoom in |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + - | Shift + option + - | Zoom out |
+--------------------------+--------------------+-----------------------------------+
| Shift + Alt + f | Shift + option + f | Zoom to fit |
+--------------------------+--------------------+-----------------------------------+
Inner Tab and Panel Navigation
@@ -224,7 +301,7 @@ Inner Tab and Panel Navigation
When using the Query Tool and Debugger, the following shortcuts are available
for inner panel navigation:
.. table::
.. table::I
:class: longtable
:widths: 2 2 3
@@ -251,7 +328,7 @@ default access keys for supported browsers.
+-------------------+-------------+-------------+---------------+
| | Windows | Linux | Mac |
+===================+=============+=============+===============+
| Internet Explorer | Alt | Alt | |
| Edge | Alt | | |
+-------------------+-------------+-------------+---------------+
| Chrome | Alt | Alt | Ctrl + Option |
+-------------------+-------------+-------------+---------------+
+3 -15
View File
@@ -45,18 +45,6 @@ switch to the *No* position; by default, status messages are included.
When you've completed the dialog, click *OK* to start the background process;
to exit the dialog without performing maintenance operations, click *Cancel*.
pgAdmin will inform you when the background process completes:
.. image:: images/maintenance_complete.png
:alt: Maintenance completion notification
:align: center
Use the **Stop Process** button to stop the Maintenance process.
Use the *Click here for details* link on the notification to open the *Process
Watcher* and review detailed information about the execution of the command that
performed the import or export:
.. image:: images/maintenance_pw.png
:alt: Maintenance process watcher
:align: center
pgAdmin will run the maintenance process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
+12 -8
View File
@@ -43,13 +43,6 @@ Use the fields on the *Display* panel to specify general display preferences:
attempt to catch browser close or refresh events and prompt before allowing
them to continue.
* When the *Enable browser tree animation?* switch is set to *True*, the client
will display the animated tree control otherwise it will be unanimated.
* When the *Enable dialogue/notification animation?* switch is set to *True*,
the client will display the animated dialogues/notifications otherwise it
will be unanimated.
* When the *Hide shared servers?* switch is set to *True*, the client will hide
all the shared servers from the browser tree.
@@ -192,6 +185,17 @@ ERD Tool window navigation:
:alt: Preferences dialog erd keyboard shortcuts section
:align: center
Use the fields on the *Options* panel to manage ERD preferences.
.. image:: images/preferences_erd_options.png
:alt: Preferences dialog erd options section
:align: center
* When the *SQL With DROP Table* switch is set to *True*, the SQL
generated by the ERD Tool will add DROP table DDL before each CREATE
table DDL.
The Graphs Node
***************
@@ -231,7 +235,7 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
* Use the *Themes* drop-down listbox to select the theme for pgAdmin. You'll also get a preview just below the
drop down. Note that, to apply the theme you need to refresh the pgAdmin page. You can also submit your
own themes, check `here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob_plain;f=README>`_ how.
own themes, check `here <https://github.com/pgadmin-org/pgadmin4/blob/master/README.md>`_ how.
Currently we support Standard, Dark and High Contrast theme.
The Paths Node
+49
View File
@@ -0,0 +1,49 @@
.. _processes:
***********************
`Processes`:index:
***********************
There are certain tasks which pgAdmin runs in the background. The processes
running in the background can be viewed in the processes tab. It shows the
process details of Backup, Restore, Maintenance, Import/Export and Cloud instance
creation.
.. image:: images/processes_main.png
:alt: Processes Tab
:align: center
The columns of the processes table shows:
* The *PID* of the forked OS process.
* The *Type* of the task being performed.
* The *Server* name for which the task is.
* The *Object* can be a database, table, mview or anything which gives more info.
* The *Start Time* of the process, sorted descending by default.
* The current *Status* of the process. It can be Running, Finished, Failed, Terminated.
* The *Time Taken* to complete. It will keep updating if it is running.
There are two action buttons on each row:
* The *Stop Process* button allows you to kill a running process.
* The *More details* button allows you to open the process watcher which shows the
process logs and other details.
You can also select the checkboxes and click on *Delete and Acknowledge* button
on the top to clear the process info and logs.
Process Watcher
*********************
.. image:: images/processes_details.png
:alt: Process Watcher
:align: center
The Process Watcher logs all the activity associated with the process/task and provides
additional information for troubleshooting
Use the **Stop Process** button to stop the Backup process.
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
.. |sm_icon| image:: images/sm_icon.png
+3
View File
@@ -11,6 +11,9 @@ notes for it.
.. toctree::
:maxdepth: 1
release_notes_6_15
release_notes_6_14
release_notes_6_13
release_notes_6_12
release_notes_6_11
release_notes_6_10
+61
View File
@@ -0,0 +1,61 @@
************
Version 6.13
************
Release date: 2022-08-25
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.12.
Supported Database Servers
**************************
**PostgreSQL**: 10, 11, 12, 13 and 14
**EDB Advanced Server**: 10, 11, 12, 13 and 14
New features
************
| `Issue #3709 <https://redmine.postgresql.org/issues/3709>`_ - Added support to show all background processes in separate panel.
| `Issue #7387 <https://redmine.postgresql.org/issues/7387>`_ - Added support to create triggers from existing trigger functions in EPAS.
Housekeeping
************
| `Issue #7344 <https://redmine.postgresql.org/issues/7344>`_ - Port Role Reassign dialog to React.
| `Issue #7345 <https://redmine.postgresql.org/issues/7345>`_ - Port User Management dialog to React.
| `Issue #7404 <https://redmine.postgresql.org/issues/7404>`_ - Port process watcher to React.
| `Issue #7462 <https://redmine.postgresql.org/issues/7462>`_ - Remove the SQL files for the unsupported versions of the database server.
| `Issue #7567 <https://redmine.postgresql.org/issues/7567>`_ - Port About dialog to React.
| `Issue #7568 <https://redmine.postgresql.org/issues/7568>`_ - Port change user password and 2FA dialog to React.
| `Issue #7590 <https://redmine.postgresql.org/issues/7590>`_ - Port change ownership dialog to React.
| `Issue #7595 <https://redmine.postgresql.org/issues/7595>`_ - Update the container base image to Alpine 3.16 (with Python 3.10.5).
| `Issue #7602 <https://redmine.postgresql.org/issues/7602>`_ - Fixed improper parsing of HTTP requests in Pallets Werkzeug v2.1.0 and below (CVE-2022-29361).
Bug fixes
*********
| `Issue #7452 <https://redmine.postgresql.org/issues/7452>`_ - Ensure that an error is thrown if clipboard access is not provided and change the copy rows shortcut.
| `Issue #7468 <https://redmine.postgresql.org/issues/7468>`_ - Fixed an issue where the History tab is getting blank and showing an error after some queries are executed.
| `Issue #7481 <https://redmine.postgresql.org/issues/7481>`_ - Fixed an issue where OWNED BY was incorrectly set to NONE when adding user privileges on the sequence.
| `Issue #7497 <https://redmine.postgresql.org/issues/7497>`_ - Fixed an issue with the error message being displayed at the right place for Azure deployments.
| `Issue #7521 <https://redmine.postgresql.org/issues/7521>`_ - Fixed an issue where the Query Editor loses focus when saving a query (Alt+s).
| `Issue #7527 <https://redmine.postgresql.org/issues/7527>`_ - Fixed API test cases for Postgres 14.4.
| `Issue #7540 <https://redmine.postgresql.org/issues/7540>`_ - Ensure that rename panel should work on view/edit panels.
| `Issue #7563 <https://redmine.postgresql.org/issues/7563>`_ - Fixed an issue where autocomplete is not working after clearing the query editor.
| `Issue #7573 <https://redmine.postgresql.org/issues/7573>`_ - Ensure that autocomplete does not appear when navigating code using arrow keys.
| `Issue #7575 <https://redmine.postgresql.org/issues/7575>`_ - Fixed an issue where Alt-Shift-Q didn't work after creating a new query.
| `Issue #7579 <https://redmine.postgresql.org/issues/7579>`_ - Fixed an issue where copy and pasting a row in the results grid doesn't set the default for boolean.
| `Issue #7586 <https://redmine.postgresql.org/issues/7586>`_ - Fixed an issue with rendering geometry when selecting a complete column.
| `Issue #7587 <https://redmine.postgresql.org/issues/7587>`_ - Ensure that the children of information_schema and pg_catalog node should be displayed.
| `Issue #7591 <https://redmine.postgresql.org/issues/7591>`_ - Fixed column "none" does not exist issue, while comparing schema objects.
| `Issue #7596 <https://redmine.postgresql.org/issues/7596>`_ - Fixed an issue where schema diff did not pick up the change in RLS policy.
| `Issue #7608 <https://redmine.postgresql.org/issues/7608>`_ - Fixed an issue where the cloud deployment wizard creates the cluster with the High Availability even if that option is not selected.
| `Issue #7611 <https://redmine.postgresql.org/issues/7611>`_ - Ensure that schema diff maintains view ownership when view definitions are modified.
| `Issue #7614 <https://redmine.postgresql.org/issues/7614>`_ - Fixed crypt key is missing issue when logout from the pgAdmin.
| `Issue #7616 <https://redmine.postgresql.org/issues/7616>`_ - Ensure that the next button should be disabled if the password did not match for Azure deployment.
| `Issue #7617 <https://redmine.postgresql.org/issues/7617>`_ - Fixed an issue where Azure cloud deployment failed.
| `Issue #7625 <https://redmine.postgresql.org/issues/7625>`_ - Fixed Spanish translations typo.
| `Issue #7630 <https://redmine.postgresql.org/issues/7630>`_ - Ensure that If the trigger function definition is changed, drop and recreate the trigger in the schema diff.
| `Issue #7632 <https://redmine.postgresql.org/issues/7632>`_ - Fixed an issue where a user could not authenticate using Azure CLI on OSX.
| `Issue #7633 <https://redmine.postgresql.org/issues/7633>`_ - Ensure that the autofocus is on the input control for the master password and server password dialogs.
| `Issue #7641 <https://redmine.postgresql.org/issues/7641>`_ - Pin Flask-SocketIO <= v5.2.0. The latest version does not support Werkzeug in production environments.
+48
View File
@@ -0,0 +1,48 @@
************
Version 6.14
************
Release date: 2022-09-22
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.13.
Supported Database Servers
**************************
**PostgreSQL**: 10, 11, 12, 13 and 14
**EDB Advanced Server**: 10, 11, 12, 13 and 14
New features
************
Housekeeping
************
| `Issue #4059 <https://github.com/pgadmin-org/pgadmin4/issues/4059>`_ - Port schema diff to React. (RM #6133)
| `Issue #4060 <https://github.com/pgadmin-org/pgadmin4/issues/4060>`_ - Remove Backgrid and Backform. (RM #6134)
| `Issue #5035 <https://github.com/pgadmin-org/pgadmin4/issues/5035>`_ - Port the remaining components of the ERD Tool to React. (RM #7343)
| `Issue #5120 <https://github.com/pgadmin-org/pgadmin4/issues/5120>`_ - Updated keyboard shortcut documentation. (RM #7446)
| `Issue #5260 <https://github.com/pgadmin-org/pgadmin4/issues/5260>`_ - Remove Alertify from pgAdmin completely. (RM #7619)
| `Issue #5263 <https://github.com/pgadmin-org/pgadmin4/issues/5263>`_ - Port search object dialog to React. (RM #7622)
Bug fixes
*********
| `Issue #5144 <https://github.com/pgadmin-org/pgadmin4/issues/5144>`_ - Ensure that if BigAnimal authentication is aborted, API calls should be stopped. (RM #7472)
| `Issue #5209 <https://github.com/pgadmin-org/pgadmin4/issues/5209>`_ - Fixed an issue where pgAdmin failed to start due to bin path migration. (RM #7557)
| `Issue #5230 <https://github.com/pgadmin-org/pgadmin4/issues/5230>`_ - Fixed an issue where backup does not work due to parameter 'preexec_fn' no longer being supported. (RM #7580)
| `Issue #5250 <https://github.com/pgadmin-org/pgadmin4/issues/5250>`_ - Ensure that the browser tree should be refreshed after changing the ownership. (RM #7607)
| `Issue #5274 <https://github.com/pgadmin-org/pgadmin4/issues/5274>`_ - Fixed the error message displayed when clicking the cloud server for which deployment is in progress. (RM #7636)
| `Issue #5275 <https://github.com/pgadmin-org/pgadmin4/issues/5275>`_ - Fixed an issue where the wrong SQL displayed in difference if the user create an RLS policy on the table without a column. (RM #7637)
| `Issue #5282 <https://github.com/pgadmin-org/pgadmin4/issues/5282>`_ - Ensure that the dump servers functionality works from setup.py. (RM #7644)
| `Issue #5284 <https://github.com/pgadmin-org/pgadmin4/issues/5284>`_ - Ensure that the Import/Export server menu option is visible. (RM #7646)
| `Issue #5286 <https://github.com/pgadmin-org/pgadmin4/issues/5286>`_ - Fixed API test case for change password in the server mode. (RM #7648)
| `Issue #5287 <https://github.com/pgadmin-org/pgadmin4/issues/5287>`_ - Fixed an issue with the non-visibility of columns added prior to import/export data. (RM #7649)
| `Issue #5292 <https://github.com/pgadmin-org/pgadmin4/issues/5292>`_ - Fixed an issue where textarea of the JSON Editor does not resize with dialog. (RM #7656)
| `Issue #5299 <https://github.com/pgadmin-org/pgadmin4/issues/5299>`_ - Fixed ModuleNotFoundError when running setup.py to load/dump servers. (RM #7663)
| `Issue #5323 <https://github.com/pgadmin-org/pgadmin4/issues/5323>`_ - Replace the language selection 'Brazilian' with 'Portuguese (Brazilian). (RM #7693)
| `Issue #5325 <https://github.com/pgadmin-org/pgadmin4/issues/5325>`_ - Fixed an issue where server names with special characters are not displayed correctly in the process tab. (RM #7695)
| `Issue #5333 <https://github.com/pgadmin-org/pgadmin4/issues/5333>`_ - Fixed an issue where ERD throws an error if variable is added to the column. (RM #7709)
| `Issue #5342 <https://github.com/pgadmin-org/pgadmin4/issues/5342>`_ - Fixed an error while saving changes to the ERD table.
| `Issue #5343 <https://github.com/pgadmin-org/pgadmin4/issues/5343>`_ - Fixes a redirect vulnerability when the user opens the pgAdmin URL.
+60
View File
@@ -0,0 +1,60 @@
************
Version 6.15
************
Release date: 2022-10-20
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.14.
Supported Database Servers
**************************
**PostgreSQL**: 10, 11, 12, 13, 14 and 15
**EDB Advanced Server**: 10, 11, 12, 13, 14 and 15
New features
************
| `Issue #3491 <https://github.com/pgadmin-org/pgadmin4/issues/3491>`_ - Added support for IAM token based authentication for AWS RDS or Azure DB.
| `Issue #4392 <https://github.com/pgadmin-org/pgadmin4/issues/4392>`_ - Added support to specify the background fill color to the table nodes in the ERD tool.
| `Issue #4994 <https://github.com/pgadmin-org/pgadmin4/issues/4994>`_ - Allow reordering table columns using drag and drop in ERD Tool.
| `Issue #4997 <https://github.com/pgadmin-org/pgadmin4/issues/4997>`_ - Add option to generate SQL with DROP table DDL in ERD Tool.
| `Issue #5304 <https://github.com/pgadmin-org/pgadmin4/issues/5304>`_ - Added high availability options to AWS deployment.
| `Issue #5390 <https://github.com/pgadmin-org/pgadmin4/issues/5390>`_ - Expose the Gunicorn limit_request_line parameter in the container, with the default set to the maximum 8190.
Housekeeping
************
| `Issue #5065 <https://github.com/pgadmin-org/pgadmin4/issues/5065>`_ - Use SocketIO instead of REST for fetching database tables data in ERD.
| `Issue #5293 <https://github.com/pgadmin-org/pgadmin4/issues/5293>`_ - Ensure that the tooltips are consistent throughout the entire application.
| `Issue #5357 <https://github.com/pgadmin-org/pgadmin4/issues/5357>`_ - Remove Python's 'Six' package completely.
Bug fixes
*********
| `Issue #5101 <https://github.com/pgadmin-org/pgadmin4/issues/5101>`_ - Ensure consistent orderings for ACLS when comparing schemas in the schema diff.
| `Issue #5132 <https://github.com/pgadmin-org/pgadmin4/issues/5132>`_ - Ensure that the result grid column should take width as pre preferences setting on first execution.
| `Issue #5133 <https://github.com/pgadmin-org/pgadmin4/issues/5133>`_ - Fixed an exception occur while taking backup and SSL certificates/keys are not found in the specified path.
| `Issue #5145 <https://github.com/pgadmin-org/pgadmin4/issues/5145>`_ - Fixed intermittent error shown while OAuth2 login.
| `Issue #5167 <https://github.com/pgadmin-org/pgadmin4/issues/5167>`_ - Ensure that the path to the psqlrc file is correct when multiple users open the PSQL tool at the same time.
| `Issue #5188 <https://github.com/pgadmin-org/pgadmin4/issues/5188>`_ - Ensure that the continue/start button should be disabled if the user stops the Debugger for the procedures.
| `Issue #5210 <https://github.com/pgadmin-org/pgadmin4/issues/5210>`_ - Ensure that the query tool creates a new tab with the appropriate user when pressing Alt+Shift+Q.
| `Issue #5212 <https://github.com/pgadmin-org/pgadmin4/issues/5212>`_ - Added the close button for all the notifications of the notistack.
| `Issue #5249 <https://github.com/pgadmin-org/pgadmin4/issues/5249>`_ - Added the ability to display the selected text from the query tool in the find/replace box.
| `Issue #5261 <https://github.com/pgadmin-org/pgadmin4/issues/5261>`_ - Ensure that the search filter should be cleared when a new row is added to the user management.
| `Issue #5262 <https://github.com/pgadmin-org/pgadmin4/issues/5262>`_ - Ensure that the user management dialog should not allow the same email addresses with different letter casings when creating users.
| `Issue #5277 <https://github.com/pgadmin-org/pgadmin4/issues/5277>`_ - Fixed XSS vulnerability issues.
| `Issue #5296 <https://github.com/pgadmin-org/pgadmin4/issues/5296>`_ - Ensure that the scroll position should be preserved for the result set in the query tool on tab change.
| `Issue #5308 <https://github.com/pgadmin-org/pgadmin4/issues/5308>`_ - Ensure that the default value for a column should be used if it is made empty.
| `Issue #5327 <https://github.com/pgadmin-org/pgadmin4/issues/5327>`_ - Fixed an issue where user was unable to select privileges in Safari.
| `Issue #5332 <https://github.com/pgadmin-org/pgadmin4/issues/5332>`_ - Fixed console warning shown while updating database node from browser tree.
| `Issue #5338 <https://github.com/pgadmin-org/pgadmin4/issues/5338>`_ - Fixed an issue where the prompt is not visible when clicking on the 'save results to file' button on the large data.
| `Issue #5352 <https://github.com/pgadmin-org/pgadmin4/issues/5352>`_ - Fixed error occurring while LDAP authentication for a user with multiple email attributes.
| `Issue #5364 <https://github.com/pgadmin-org/pgadmin4/issues/5364>`_ - Fixed an issue where notifications disappeared quickly.
| `Issue #5367 <https://github.com/pgadmin-org/pgadmin4/issues/5367>`_ - Ensure that the correct value should be returned if an exception occurs while decoding the password.
| `Issue #5368 <https://github.com/pgadmin-org/pgadmin4/issues/5368>`_ - Fixed the issue while downloading the file from the file manager.
| `Issue #5386 <https://github.com/pgadmin-org/pgadmin4/issues/5386>`_ - Ensure that the login form is hidden if the authentication source is OAuth2 or Kerberos.
| `Issue #5397 <https://github.com/pgadmin-org/pgadmin4/issues/5397>`_ - Fixed an issue where the password recovery link was not working.
| `Issue #5402 <https://github.com/pgadmin-org/pgadmin4/issues/5402>`_ - Ensure that scroll bar on browser tree should be visible on windows resize.
| `Issue #5405 <https://github.com/pgadmin-org/pgadmin4/issues/5405>`_ - Fixed the cross-site scripting vulnerability.
| `Issue #5427 <https://github.com/pgadmin-org/pgadmin4/issues/5427>`_ - Fixed an issue where filtered rows were not working.
+3 -14
View File
@@ -143,17 +143,6 @@ command, click the *Restore* button to start the process, or click the *Cancel*
button to exit without saving your work. A popup will confirm if the restore is
successful.
.. image:: images/restore_messages.png
:alt: Restore dialog notifications
:align: center
Use the **Stop Process** button to stop the Restore process.
Click *Click here for details* on the popup to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the restore, and
provides additional information for troubleshooting should the restore command
encounter problems.
.. image:: images/restore_process_watcher.png
:alt: Restore dialog process watcher
:align: center
pgAdmin will run the restore process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
+2
View File
@@ -99,6 +99,8 @@ following comparison criteria:
Click on any of the database objects in the object comparison panel to
display the DDL Statements of that object in the DDL Comparison panel.
Click the *Help* icon to open Schema Diff documentation.
Schema Diff DDL Comparison Panel
================================
+10 -1
View File
@@ -25,7 +25,7 @@ or ``Gunicorn``, or under ``NGINX`` using using ``uWSGI`` or ``Gunicorn``.
.. seealso:: For detailed instructions on building and configuring pgAdmin from
scratch, please see the README file in the top level directory of the source code.
For convenience, you can find the latest version of the file
`here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob_plain;f=README>`_,
`here <https://github.com/pgadmin-org/pgadmin4/blob/master/README.md>`_,
but be aware that this may differ from the version included with the source code
for a specific version of pgAdmin.
@@ -300,3 +300,12 @@ Then, configure NGINX:
include uwsgi_params;
uwsgi_pass unix:/tmp/pgadmin4.sock;
}
Additional Information
----------------------
.. note:: pgAdmin will spawn additional Python processes from time to time, and
relies on the *sys.executable* variable in Python to do this. In some cases,
you may need to override that value to ensure the correct interpreter is
used, instead of the WSGI host process. For example, uWSGI offers the
*--py-sys-executable* command line option to achieve this.
+12
View File
@@ -189,6 +189,16 @@ Use the fields in the *Advanced* tab to configure a connection:
(.pgpass). A .pgpass file allows a user to login without providing a password
when they connect. For more information, see
`Section 33.15 of the Postgres documentation <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_.
* Use the *Password exec command* field to specify a shell command to be executed
to retrieve a password to be used for SQL authentication. The ``stdout`` of the
command will be used as the SQL password. This may be useful when the password
should be generated as a transient authorization token instead of providing a
password when connecting in `PAM authentication <https://www.postgresql.org/docs/current/auth-pam.html>`_ scenarios.
* Use the *Password exec expiration* field to specify a maximum age, in seconds,
of the password generated with a *Password exec command*. If not specified,
the password will not expire until your pgAdmin session does.
Zero means the command will be executed for each new connection or reconnection that is made.
If the generated password is not valid indefinitely, set this value to slightly before it will expire.
* Use the *Connection timeout* field to specify the maximum wait for connection,
in seconds. Zero or not specified means wait indefinitely. It is not
recommended to use a timeout of less than 2 seconds. By default it is set to
@@ -197,6 +207,8 @@ Use the fields in the *Advanced* tab to configure a connection:
.. note:: The password file option is only supported when pgAdmin is using libpq
v10.0 or later to connect to the server.
.. note:: The Password exec option is only supported when pgAdmin is run in desktop mode.
* Click the *Save* button to save your work.
* Click the *Close* button to exit without saving your work.
* Click the *Reset* button to return the values specified on the Server dialog
-55
View File
@@ -1,55 +0,0 @@
.. _submitting_patches:
***************************
`Submitting Patches`:index:
***************************
Before developing a patch for pgAdmin you should always contact the developers
on the mailing list pgadmin-hackers@postgresql.org to discuss your
plans. This ensures that others know if you're fixing a bug and can then avoid
duplicating your work, and in the case of large patches, gives the community
the chance to discuss and refine your ideas before investing too much time
writing code that may later be rejected.
You should always develop patches against a checkout of the source code from the
GIT source code repository, and not a release tarball. This ensures that you're
working with the latest code on the branch and makes it easier to generate
patches correctly. You can checkout the source code with a command like:
.. code-block:: bash
$ git clone git://git.postgresql.org/git/pgadmin4.git
Once you've made the changes you wish to make, commit them to a private
development branch in your local repository. Then create a patch containing the
changes in your development branch against the upstream branch on which your
work is based. For example, if your current branch contains your changes, you
might run:
.. code-block:: bash
$ git diff origin/master > my_cool_feature.diff
to create a patch between your development branch and the public master branch.
You can also create patches directly from the development tree, for example:
.. code-block:: bash
$ git diff > my_cool_feature.diff
If you are adding new files, you may need to stage them for commit, and then
create your patch against the staging area. If any of the files are binary,
for example, images, you will need to use the *--binary* option:
.. code-block:: bash
$ git add file1.py file2.py images/image1.png [...]
$ git diff --cached --binary > my_cool_feature.diff
Once you have your patch, check it thoroughly to ensure it meets the pgAdmin
:doc:`coding_standards`, and review it against the :doc:`code_review` to minimise
the chances of it being rejected. Once you're happy with your work, mail it
as an attachment to the mailing list pgadmin-hackers@postgresql.org.
Please ensure you include a full description of what the patch does,
as well as the rationale for any important design decisions.
+65
View File
@@ -0,0 +1,65 @@
.. _submitting_pull_requests:
*********************************
`Submitting Pull Requests`:index:
*********************************
Before developing a feature or bug fix for pgAdmin you should always contact
the developers on the mailing list pgadmin-hackers@postgresql.org to discuss
your plans. This ensures that others know what you are doing and can then
avoid duplicating your work, and in the case of large changes, gives the
community the chance to discuss and refine your ideas before investing too
much time writing code that may later be rejected.
You should always develop changes against a checkout of the source code from
the GIT source code repository, and not a release tarball. This ensures that
you're working with the latest code on the branch and makes it easier to
generate Pull Requests correctly.
As of September 2022, the pgAdmin source repository can found at
https://github.com/pgadmin-org/pgadmin4. A typical workflow for a relatively
simple change might look as follows:
1. Visit the pgAdmin 4 project on GitHub, and click the *Fork* button to create
your own development repository in your GitHub account.
2. Checkout a local copy of the source code with a command like:
.. code-block:: bash
$ git clone https://github.com/<your GitHub username>/pgadmin4.git
3. Develop and test your change in your local development environment.
4. Review your changes and check them thoroughly to ensure they meet the
pgAdmin :doc:`coding_standards`, and review them against the
:doc:`code_review` to minimise the chances of them being rejected.
5. Once you're happy with your change, commit it with a suitable message.
Include a one-line summary at the top, and if appropriate, further
paragraphs following a blank line after the summary.
6. Push your changes to your fork of the repository.
7. Back in GitHub, create a new Pull Request against the *pgadmin-org/pgadmin4*
*master* branch.
.. note::
Each Pull Request should encompass a single bug fix or feature as a single
commit. If necessary, you should squash multiple commits for larger changes
or features into a single commit before submitting.
8. Your Pull Request will be reviewed by one or more members of the development
team and either accepted or sent back with requested changes. In some cases
it may be rejected if the change is not considered appropriate - this is
why it's important to discuss your work with the team before spending any
significant time on it.
For more complex changes, you may wish to use a *Feature Branch* in your fork
of the pgAdmin repository, and use that to create the Pull Request.
.. note::
This is a simple example of a workflow. You may choose to use other
tools such as the `GitHub CLI <https://cli.github.com>`_ instead; documenting
such tools and workflows is outside the scope of the pgAdmin documentation
however.
+15 -10
View File
@@ -35,12 +35,13 @@ To add a user, click the Add (+) button at the top right corner.
Provide information about the new pgAdmin role in the row:
* Use the drop-down list box next to *Authentication source* field to select the
type of authentication that should be used for the user. If LDAP
authentication is not enabled for pgAdmin, then *Authentication source* field
is disabled.
type of authentication that should be used for the user. If authentication
source is only 'internal' then *Authentication source* field
is disabled. Supported *Authentication source* are internal, ldap, kerberos,
oauth2 and webserver.
* Click in the *Username* field, and provide a username for the user. This field
is enabled only if you select *ldap* as authentication source. If you select
*internal* as authentication source, your email address is displayed in the
is enabled only when you select authentication source except *internal*. If you
select *internal* as authentication source, your email address is displayed in the
username field.
* Click in the *Email* field, and provide an email address for the user.
* Use the drop-down list box next to *Role* to select whether a user is an
@@ -54,15 +55,19 @@ Provide information about the new pgAdmin role in the row:
active; the default is *Yes*. Use this switch to disable account activity
without deleting an account.
* Use the *New password* field to provide the password associated with the user
specified in the *Email* field. This field is disabled if you select *ldap*
as authentication source since LDAP password is not stored in the pgAdmin database.
specified in the *Email* field. This field is disabled if you select any
authentication source except *internal*.
* Re-enter the password in the *Confirm password* field. This field is disabled
if you select *ldap* as authentication source.
* Move the *Locked* switch to the *True* position if you want to lock the account;
the default is *False*. This functionality is useful when a user is locked by trying unsuccessful login attempts.
* *Locked* switch is disabled by default when set to *False*. It is only enabled
when the user is locked by trying unsuccessful login attempts. Move the switch
to the *False* position if you want to unlock the account.
To discard a user, and revoke access to pgAdmin, click the trash icon to the
left of the row and confirm deletion in the *Delete user?* dialog.
left of the row and confirm deletion in the *Delete user?* dialog. If the user
has created some shared servers, then the :ref:`Change Ownership <change_ownership>`
dialog will appear to change the ownership of a shared server.
Users with the *Administrator* role are able to add, edit and remove pgAdmin
users, but otherwise have the same capabilities as those with the *User* role.
+4 -5
View File
@@ -6,8 +6,7 @@ set -e
# Debugging shizz
trap 'ERRCODE=$? && if [ ${ERRCODE} -ne 0 ]; then echo "The command \"${BASH_COMMAND}\" failed in \"${FUNCNAME}\" with exit code ${ERRCODE}."; fi' EXIT
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_NAME=$(cat /etc/os-release | grep "^ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_ARCH=$(dpkg-architecture -qDEB_HOST_ARCH)
# Stop creating pyc files.
@@ -17,7 +16,7 @@ export PYTHONDONTWRITEBYTECODE=1
source pkg/linux/build-functions.sh
# Assemble the "standard" installation footprint
_setup_env $0 "debian"
_setup_env "$0" "debian"
_cleanup "deb"
_setup_dirs
_create_python_virtualenv "debian"
@@ -40,7 +39,7 @@ Architecture: ${OS_ARCH}
Section: database
Priority: optional
Depends: python3, libpq5 (>= 11.0), libgssapi-krb5-2
Recommends: postgresql-client | postgresql-client-14 | postgresql-client-13 | postgresql-client-12 | postgresql-client-11 | postgresql-client-10
Recommends: postgresql-client | postgresql-client-15 | postgresql-client-14 | postgresql-client-13 | postgresql-client-12 | postgresql-client-11 | postgresql-client-10
Maintainer: pgAdmin Development Team <pgadmin-hackers@postgresql.org>
Description: The core server package for pgAdmin. pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
EOF
@@ -122,7 +121,7 @@ EOF
fakeroot dpkg-deb --build "${METAROOT}" "${DISTROOT}/${APP_NAME}_${APP_LONG_VERSION}_all.deb"
# Get the libpq package
pushd ${DISTROOT} 1> /dev/null
pushd "${DISTROOT}" 1> /dev/null
apt-get download libpq5
popd 1> /dev/null
+1 -1
View File
@@ -21,7 +21,7 @@ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)
# Node repo
echo "Setting up the NodeJS repo..."
curl -sL https://deb.nodesource.com/setup_12.x | bash -
curl -sL https://deb.nodesource.com/setup_16.x | bash -
# Yarn repo
echo "Setting up the Yarn repo..."
+20 -16
View File
@@ -1,8 +1,8 @@
#!/bin/sh
# Fixup the passwd file, in case we're on OpenShift
if ! whoami &> /dev/null; then
if [ $(id -u) -ne 5050 ]; then
if ! whoami > /dev/null 2>&1; then
if [ "$(id -u)" -ne 5050 ]; then
if [ -w /etc/passwd ]; then
echo "${USER_NAME:-pgadminr}:x:$(id -u):0:${USER_NAME:-pgadminr} user:${HOME}:/sbin/nologin" >> /etc/passwd
fi
@@ -13,13 +13,14 @@ fi
# provided by the user through the PGADMIN_CONFIG_* environment variables.
# Only update the file on first launch. The empty file is created during the
# container build so it can have the required ownership.
if [ `wc -m /pgadmin4/config_distro.py | awk '{ print $1 }'` = "0" ]; then
if [ "$(wc -m /pgadmin4/config_distro.py | awk '{ print $1 }')" = "0" ]; then
cat << EOF > /pgadmin4/config_distro.py
CA_FILE = '/etc/ssl/certs/ca-certificates.crt'
LOG_FILE = '/dev/null'
HELP_PATH = '../../docs'
DEFAULT_BINARY_PATHS = {
'pg': '/usr/local/pgsql-14',
'pg': '/usr/local/pgsql-15',
'pg-15': '/usr/local/pgsql-15',
'pg-14': '/usr/local/pgsql-14',
'pg-13': '/usr/local/pgsql-13',
'pg-12': '/usr/local/pgsql-12',
@@ -31,37 +32,40 @@ EOF
# This is a bit kludgy, but necessary as the container uses BusyBox/ash as
# it's shell and not bash which would allow a much cleaner implementation
for var in $(env | grep PGADMIN_CONFIG_ | cut -d "=" -f 1); do
# shellcheck disable=SC2086
# shellcheck disable=SC2046
echo ${var#PGADMIN_CONFIG_} = $(eval "echo \$$var") >> /pgadmin4/config_distro.py
done
fi
if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
if ([ -z "${PGADMIN_DEFAULT_EMAIL}" ]) || ( [ -z "${PGADMIN_DEFAULT_PASSWORD}" ] && [ ! -n "${PGADMIN_DEFAULT_PASSWORD_FILE}" ] ); then
if [ -z "${PGADMIN_DEFAULT_EMAIL}" ] || { [ -z "${PGADMIN_DEFAULT_PASSWORD}" ] && [ -z "${PGADMIN_DEFAULT_PASSWORD_FILE}" ]; }; then
echo 'You need to define the PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD or PGADMIN_DEFAULT_PASSWORD_FILE environment variables.'
exit 1
fi
echo ${PGADMIN_DEFAULT_EMAIL} | grep -E "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$" > /dev/null
if [ $? -ne 0 ]; then
if ! echo "${PGADMIN_DEFAULT_EMAIL}" | grep -E "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$" > /dev/null; then
echo "'${PGADMIN_DEFAULT_EMAIL}' does not appear to be a valid email address. Please reset the PGADMIN_DEFAULT_EMAIL environment variable and try again."
exit 1
fi
# Read secret contents
if [ -n "${PGADMIN_DEFAULT_PASSWORD_FILE}" ]; then
export PGADMIN_DEFAULT_PASSWORD=$(cat ${PGADMIN_DEFAULT_PASSWORD_FILE})
PGADMIN_DEFAULT_PASSWORD=$(cat "${PGADMIN_DEFAULT_PASSWORD_FILE}")
export PGADMIN_DEFAULT_PASSWORD
fi
# Set the default username and password in a
# backwards compatible way
export PGADMIN_SETUP_EMAIL=${PGADMIN_DEFAULT_EMAIL}
export PGADMIN_SETUP_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}
export PGADMIN_SETUP_EMAIL="${PGADMIN_DEFAULT_EMAIL}"
export PGADMIN_SETUP_PASSWORD="${PGADMIN_DEFAULT_PASSWORD}"
# Initialize DB before starting Gunicorn
# Importing pgadmin4 (from this script) is enough
/venv/bin/python3 run_pgadmin.py
export PGADMIN_SERVER_JSON_FILE=${PGADMIN_SERVER_JSON_FILE:-/pgadmin4/servers.json}
export PGADMIN_SERVER_JSON_FILE="${PGADMIN_SERVER_JSON_FILE:-/pgadmin4/servers.json}"
# Pre-load any required servers
if [ -f "${PGADMIN_SERVER_JSON_FILE}" ]; then
# When running in Desktop mode, no user is created
@@ -69,13 +73,13 @@ if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
if [ "${PGADMIN_CONFIG_SERVER_MODE}" = "False" ]; then
/venv/bin/python3 /pgadmin4/setup.py --load-servers "${PGADMIN_SERVER_JSON_FILE}"
else
/venv/bin/python3 /pgadmin4/setup.py --load-servers "${PGADMIN_SERVER_JSON_FILE}" --user ${PGADMIN_DEFAULT_EMAIL}
/venv/bin/python3 /pgadmin4/setup.py --load-servers "${PGADMIN_SERVER_JSON_FILE}" --user "${PGADMIN_DEFAULT_EMAIL}"
fi
fi
fi
# Start Postfix to handle password resets etc.
if [ -z ${PGADMIN_DISABLE_POSTFIX} ]; then
if [ -z "${PGADMIN_DISABLE_POSTFIX}" ]; then
sudo /usr/sbin/postfix start
fi
@@ -86,8 +90,8 @@ TIMEOUT=$(cd /pgadmin4 && /venv/bin/python3 -c 'import config; print(config.SESS
# NOTE: currently pgadmin can run only with 1 worker due to sessions implementation
# Using --threads to have multi-threaded single-process worker
if [ ! -z ${PGADMIN_ENABLE_TLS} ]; then
exec /venv/bin/gunicorn --timeout ${TIMEOUT} --bind ${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-443} -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile ${GUNICORN_ACCESS_LOGFILE:--} --keyfile /certs/server.key --certfile /certs/server.cert -c gunicorn_config.py run_pgadmin:app
if [ -n "${PGADMIN_ENABLE_TLS}" ]; then
exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-443}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" --keyfile /certs/server.key --certfile /certs/server.cert -c gunicorn_config.py run_pgadmin:app
else
exec /venv/bin/gunicorn --timeout ${TIMEOUT} --bind ${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-80} -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile ${GUNICORN_ACCESS_LOGFILE:--} -c gunicorn_config.py run_pgadmin:app
exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-80}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" -c gunicorn_config.py run_pgadmin:app
fi
+48 -45
View File
@@ -1,6 +1,8 @@
# shellcheck shell=bash
_setup_env() {
echo "Setting up the environment..."
WD=$(cd `dirname "$1"` && pwd)
WD=$(cd "$(dirname "$1")" && pwd)
SOURCEDIR=$(realpath "${WD}/../..")
BUILDROOT=$(realpath "${WD}/../../$2-build")
DESKTOPROOT=${BUILDROOT}/desktop
@@ -8,49 +10,49 @@ _setup_env() {
SERVERROOT=${BUILDROOT}/server
WEBROOT=${BUILDROOT}/web
DISTROOT=$(realpath "${WD}/../../dist")
APP_RELEASE=`grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_REVISION=`grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_NAME=`grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //' | sed 's/ //g' | tr '[:upper:]' '[:lower:]'`
APP_RELEASE=$(grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_REVISION=$(grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_NAME=$(grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //' | sed 's/ //g' | tr '[:upper:]' '[:lower:]')
APP_LONG_VERSION=${APP_RELEASE}.${APP_REVISION}
APP_SHORT_VERSION=`echo ${APP_LONG_VERSION} | cut -d . -f1,2`
APP_SUFFIX=`grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g"`
if [ ! -z ${APP_SUFFIX} ]; then
APP_SUFFIX=$(grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g")
if [ -n "${APP_SUFFIX}" ]; then
APP_LONG_VERSION=${APP_LONG_VERSION}-${APP_SUFFIX}
fi
}
_cleanup() {
echo "Cleaning up the old environment and app..."
if test -f ${SOURCEDIR}/runtime/pgAdmin4; then
rm -rf ${SOURCEDIR}/runtime/pgAdmin4
if test -f "${SOURCEDIR}/runtime/pgAdmin4"; then
rm -rf "${SOURCEDIR}/runtime/pgAdmin4"
fi
if test -d ${BUILDROOT}; then
rm -rf ${BUILDROOT}
if test -d "${BUILDROOT}"; then
rm -rf "${BUILDROOT}"
fi
rm -f ${DISTROOT}/pgadmin4*.$1
rm -f "${DISTROOT}/pgadmin4"*".$1"
}
_setup_dirs() {
echo "Creating output directories..."
test -d ${BUILDROOT} || mkdir ${BUILDROOT}
test -d ${DESKTOPROOT} || mkdir ${DESKTOPROOT}
test -d ${METAROOT} || mkdir ${METAROOT}
test -d ${SERVERROOT} || mkdir ${SERVERROOT}
test -d ${WEBROOT} || mkdir ${WEBROOT}
test -d ${DISTROOT} || mkdir ${DISTROOT}
test -d "${BUILDROOT}" || mkdir "${BUILDROOT}"
test -d "${DESKTOPROOT}" || mkdir "${DESKTOPROOT}"
test -d "${METAROOT}" || mkdir "${METAROOT}"
test -d "${SERVERROOT}" || mkdir "${SERVERROOT}"
test -d "${WEBROOT}" || mkdir "${WEBROOT}"
test -d "${DISTROOT}" || mkdir "${DISTROOT}"
}
_create_python_virtualenv() {
echo "Creating the virtual environment..."
cd ${SERVERROOT}
cd "${SERVERROOT}" || exit
# Create the required directories
mkdir -p "usr/${APP_NAME}"
cd "usr/${APP_NAME}"
cd "usr/${APP_NAME}" || exit
# Create the blank venv
python3 -m venv venv
# shellcheck disable=SC1091
source venv/bin/activate
# Make sure we have the wheel package present, as well as the latest pip
@@ -58,7 +60,7 @@ _create_python_virtualenv() {
pip3 install wheel
# Install the requirements
pip3 install --no-cache-dir --no-binary psycopg2 -r ${SOURCEDIR}/requirements.txt
pip3 install --no-cache-dir --no-binary psycopg2 -r "${SOURCEDIR}/requirements.txt"
# Fixup the paths in the venv activation scripts
sed -i 's/VIRTUAL_ENV=.*/VIRTUAL_ENV="\/usr\/pgadmin4\/venv"/g' venv/bin/activate
@@ -74,10 +76,10 @@ _create_python_virtualenv() {
# Figure out some paths for use when completing the venv
# Use "python3" here as we want the venv path
PYMODULES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
DIR_PYMODULES_PATH=`dirname ${PYMODULES_PATH}`
DIR_PYMODULES_PATH=$(dirname "${PYMODULES_PATH}")
# Use /usr/bin/python3 here as we want the system path
if [ $1 == "debian" ]; then
if [ "$1" == "debian" ]; then
PYSYSLIB_PATH=$(/usr/bin/python3 -c "import sys; print('%s/lib/python%d.%.d' % (sys.prefix, sys.version_info.major, sys.version_info.minor))")
else
PYSYSLIB_PATH=$(/usr/bin/python3 -c "import sys; print('%s/lib64/python%d.%.d' % (sys.prefix, sys.version_info.major, sys.version_info.minor))")
@@ -86,33 +88,33 @@ _create_python_virtualenv() {
# Symlink in the rest of the Python libs. This is required because the runtime
# will clear PYTHONHOME for safety, which has the side-effect of preventing
# it from finding modules that are not explicitly included in the venv
cd ${DIR_PYMODULES_PATH}
cd "${DIR_PYMODULES_PATH}" || exit
# Files
for FULLPATH in ${PYSYSLIB_PATH}/*.py; do
for FULLPATH in "${PYSYSLIB_PATH}"/*.py; do
FILE=${FULLPATH##*/}
if [ ! -e ${FILE} ]; then
ln -s ${FULLPATH} ${FILE}
if [ ! -e "${FILE}" ]; then
ln -s "${FULLPATH}" "${FILE}"
fi
done
# Paths
for FULLPATH in ${PYSYSLIB_PATH}/*/; do
for FULLPATH in "${PYSYSLIB_PATH}"/*/; do
FULLPATH=${FULLPATH%*/}
FILE=${FULLPATH##*/}
if [ ! -e ${FILE} ]; then
ln -s ${FULLPATH} ${FILE}
if [ ! -e "${FILE}" ]; then
ln -s "${FULLPATH}" "${FILE}"
fi
done
# Remove tests
cd site-packages
cd site-packages || exit
find . -name "test" -type d -print0 | xargs -0 rm -rf
find . -name "tests" -type d -print0 | xargs -0 rm -rf
# Link the python<version> directory to python so that the private environment path is found by the application.
if test -d ${DIR_PYMODULES_PATH}; then
ln -s $(basename ${DIR_PYMODULES_PATH}) ${DIR_PYMODULES_PATH}/../python
if test -d "${DIR_PYMODULES_PATH}"; then
ln -s "$(basename "${DIR_PYMODULES_PATH}")" "${DIR_PYMODULES_PATH}/../python"
fi
}
@@ -134,13 +136,13 @@ _build_runtime() {
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.62.2"
pushd "${BUILDROOT}" > /dev/null
pushd "${BUILDROOT}" > /dev/null || exit
while true;do
wget https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-linux-x64.tar.gz && break
rm nwjs-v${NW_VERSION}-linux-x64.tar.gz
wget "https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-linux-x64.tar.gz" && break
rm "nwjs-v${NW_VERSION}-linux-x64.tar.gz"
done
tar -zxvf nwjs-v${NW_VERSION}-linux-x64.tar.gz
popd > /dev/null
tar -zxvf "nwjs-v${NW_VERSION}-linux-x64.tar.gz"
popd > /dev/null || exit
# WGET END
# Copy nwjs into the staging directory
@@ -188,10 +190,11 @@ _build_runtime() {
_build_docs() {
echo "Building the documentation..."
cd "${SERVERROOT}" && mkdir -p "usr/${APP_NAME}/share/docs/en_US/html"
cd "${SOURCEDIR}/docs/en_US"
cd "${SOURCEDIR}/docs/en_US" || exit
python3 build_code_snippet.py
SYS_PYTHONPATH=$(/usr/bin/python3 -c "import sys; print(':'.join([p for p in sys.path if p]))")
if [ $1 == "redhat" -a "${OS_VERSION}" == "7" ]; then
# shellcheck disable=SC2153
if [ "$1" == "redhat" ] && [ "${OS_VERSION}" == "7" ]; then
PYTHONPATH=$PYTHONPATH:${SYS_PYTHONPATH} python3 /usr/local/bin/sphinx-build . "${SERVERROOT}/usr/${APP_NAME}/share/docs/en_US/html"
else
PYTHONPATH=$PYTHONPATH:${SYS_PYTHONPATH} python3 -msphinx . "${SERVERROOT}/usr/${APP_NAME}/share/docs/en_US/html"
@@ -204,15 +207,15 @@ _copy_code() {
# Remove any TCL-related files that may cause us problems
find "${SERVERROOT}/usr/${APP_NAME}/venv/" -name "_tkinter*" -print0 | xargs -0 rm -rf
pushd ${SOURCEDIR}/web > /dev/null
pushd "${SOURCEDIR}/web" > /dev/null || exit
yarn install
yarn run bundle
popd > /dev/null
popd > /dev/null || exit
# copy the web directory to the bundle as it is required by runtime
cp -r "${SOURCEDIR}/web" "${SERVERROOT}/usr/${APP_NAME}/web/"
cp "${SOURCEDIR}/pkg/linux/config_distro.py" "${SERVERROOT}/usr/${APP_NAME}/web/"
cd "${SERVERROOT}/usr/${APP_NAME}/web/"
cd "${SERVERROOT}/usr/${APP_NAME}/web/" || exit
rm -f pgadmin4.db config_local.*
rm -rf karma.conf.js package.json node_modules/ regression/ tools/ pgadmin/static/js/generated/.cache
find . -name "tests" -type d -print0 | xargs -0 rm -rf
@@ -230,11 +233,11 @@ _copy_code() {
# Ensure our venv will use the correct Python interpreter, even if the
# user has configured an alternative default.
# DO THIS LAST!
cd "${SERVERROOT}/usr/${APP_NAME}/venv/bin"
cd "${SERVERROOT}/usr/${APP_NAME}/venv/bin" || exit
PYTHON_INTERPRETER=$(/usr/bin/python3 -c "import os, sys; print(os.path.realpath(sys.executable))")
PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('%d.%d' % (sys.version_info.major, sys.version_info.minor))")
rm python && ln -s python3 python
rm python${PYTHON_VERSION} && ln -s python3 python${PYTHON_VERSION}
rm "python${PYTHON_VERSION}" && ln -s python3 "python${PYTHON_VERSION}"
rm python3 && ln -s "${PYTHON_INTERPRETER}" python3
}
+10 -16
View File
@@ -9,7 +9,7 @@ if [ "$EUID" -ne 0 ]
exit 1
fi
if [[ "$#" -ne 0 ]] && ([[ "$#" -eq 1 ]] && [[ "$1" != "--yes" ]]); then
if [[ "$#" -gt 1 ]] || { [[ "$#" -eq 1 ]] && [[ "$1" != "--yes" ]]; }; then
echo "Usage: $0 [--yes]"
exit 1
fi
@@ -20,7 +20,7 @@ IS_SUSE=0
UNAME=$(uname -a)
# Get the distro from the environment
if [ "x${PGADMIN_PLATFORM_TYPE}" == "x" ]; then
if [ "${PGADMIN_PLATFORM_TYPE}" == "" ]; then
if [ -f /etc/redhat-release ]; then
PLATFORM_TYPE=redhat
elif [[ ${UNAME} =~ "Ubuntu" ]] || [[ ${UNAME} =~ "Debian" ]] || [ -f /etc/apt/sources.list ]; then
@@ -72,9 +72,7 @@ fi
# Run setup script first:
echo "Creating configuration database..."
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py
if [ $? != 0 ]
if ! /usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py;
then
echo "Error setting up server mode. Please examine the output above."
exit 1
@@ -108,7 +106,7 @@ if [ ${IS_DEBIAN} == 1 ]; then
if [ ${AUTOMATED} == 1 ]; then
RESPONSE=Y
else
read -p "We can now configure the Apache Web server for you. This involves enabling the wsgi module and configuring the pgAdmin 4 application to mount at /pgadmin4. Do you wish to continue (y/n)? " RESPONSE
read -r -p "We can now configure the Apache Web server for you. This involves enabling the wsgi module and configuring the pgAdmin 4 application to mount at /pgadmin4. Do you wish to continue (y/n)? " RESPONSE
fi
case ${RESPONSE} in
@@ -121,18 +119,16 @@ if [ ${IS_DEBIAN} == 1 ]; then
esac
fi
APACHE_STATUS=`ps cax | grep ${APACHE}`
if [ $? -eq 0 ]; then
if pgrep ${APACHE} > /dev/null; then
if [ ${AUTOMATED} == 1 ]; then
RESPONSE=Y
else
read -p "The Apache web server is running and must be restarted for the pgAdmin 4 installation to complete. Continue (y/n)? " RESPONSE
read -r -p "The Apache web server is running and must be restarted for the pgAdmin 4 installation to complete. Continue (y/n)? " RESPONSE
fi
case ${RESPONSE} in
y|Y )
systemctl restart ${APACHE}
if [ $? != 0 ]; then
if ! systemctl restart ${APACHE}; then
echo "Error restarting ${APACHE}. Please check the systemd logs"
else
echo "Apache successfully restarted. You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4"
@@ -144,20 +140,18 @@ else
if [ ${AUTOMATED} == 1 ]; then
RESPONSE=Y
else
read -p "The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? " RESPONSE
read -r -p "The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? " RESPONSE
fi
case ${RESPONSE} in
y|Y )
systemctl enable ${APACHE}
if [ $? != 0 ]; then
if ! systemctl enable ${APACHE}; then
echo "Error enabling ${APACHE}. Please check the systemd logs"
else
echo "Apache successfully enabled."
fi
systemctl start ${APACHE}
if [ $? != 0 ]; then
if ! systemctl start ${APACHE}; then
echo "Error starting ${APACHE}. Please check the systemd logs"
else
echo "Apache successfully started."
+82 -73
View File
@@ -1,23 +1,24 @@
# shellcheck shell=bash
_setup_env() {
FUNCS_DIR=$(cd `dirname $0` && pwd)/../..
APP_RELEASE=`grep "^APP_RELEASE" ${FUNCS_DIR}/web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_REVISION=`grep "^APP_REVISION" ${FUNCS_DIR}/web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_NAME=`grep "^APP_NAME" ${FUNCS_DIR}/web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //'`
FUNCS_DIR=$(cd "$(dirname "$0")" && pwd)/../..
APP_RELEASE=$(grep "^APP_RELEASE" "${FUNCS_DIR}/web/config.py" | cut -d"=" -f2 | sed 's/ //g')
APP_REVISION=$(grep "^APP_REVISION" "${FUNCS_DIR}/web/config.py" | cut -d"=" -f2 | sed 's/ //g')
APP_NAME=$(grep "^APP_NAME" "${FUNCS_DIR}/web/config.py" | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //')
APP_LONG_VERSION=${APP_RELEASE}.${APP_REVISION}
APP_SHORT_VERSION=`echo ${APP_LONG_VERSION} | cut -d . -f1,2`
APP_SUFFIX=`grep "^APP_SUFFIX" ${FUNCS_DIR}/web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g"`
if [ ! -z ${APP_SUFFIX} ]; then
APP_SUFFIX=$(grep "^APP_SUFFIX" "${FUNCS_DIR}/web/config.py" | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g")
if [ -n "${APP_SUFFIX}" ]; then
APP_LONG_VERSION=${APP_LONG_VERSION}-${APP_SUFFIX}
fi
BUNDLE_DIR="${BUILD_ROOT}/${APP_NAME}.app"
DMG_NAME="${DIST_ROOT}/$(echo ${APP_NAME} | sed 's/ //g' | awk '{print tolower($0)}')-${APP_LONG_VERSION}.dmg"
DMG_NAME="${DIST_ROOT}"/$(echo "${APP_NAME}" | sed 's/ //g' | awk '{print tolower($0)}')-"${APP_LONG_VERSION}.dmg"
}
_cleanup() {
echo Cleaning up the old environment and app bundle...
rm -rf "${BUILD_ROOT}"
rm -rf "${TEMP_DIR}"
rm -f ${DIST_ROOT}/*.dmg
rm -f "${DIST_ROOT}"/*.dmg
}
_build_runtime() {
@@ -39,13 +40,13 @@ _build_runtime() {
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.62.2"
pushd "${BUILD_ROOT}" > /dev/null
pushd "${BUILD_ROOT}" > /dev/null || exit
while true;do
wget https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-osx-x64.zip && break
rm nwjs-v${NW_VERSION}-osx-x64.zip
wget "https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-osx-x64.zip" && break
rm "nwjs-v${NW_VERSION}-osx-x64.zip"
done
unzip nwjs-v${NW_VERSION}-osx-x64.zip
popd > /dev/null
unzip "nwjs-v${NW_VERSION}-osx-x64.zip"
popd > /dev/null || exit
# WGET END
# YARN:
@@ -73,11 +74,19 @@ _create_python_env() {
PATH=${PGADMIN_POSTGRES_DIR}/bin:${PATH}
LD_LIBRARY_PATH=${PGADMIN_POSTGRES_DIR}/lib:${LD_LIBRARY_PATH}
# Figure out what python to use
if which python3 > /dev/null 2>&1
then
SYSTEM_PYTHON_EXE="python3"
else
SYSTEM_PYTHON_EXE="python"
fi
git clone https://github.com/gregneagle/relocatable-python.git "${BUILD_ROOT}/relocatable_python"
PATH=$PATH:/usr/local/pgsql/bin python \
PATH=$PATH:/usr/local/pgsql/bin "${SYSTEM_PYTHON_EXE}" \
"${BUILD_ROOT}/relocatable_python/make_relocatable_python_framework.py" \
--upgrade-pip \
--python-version ${PGADMIN_PYTHON_VERSION} \
--python-version "${PGADMIN_PYTHON_VERSION}" \
--pip-requirements "${SOURCE_DIR}/requirements.txt" \
--destination "${BUNDLE_DIR}/Contents/Frameworks/"
@@ -85,26 +94,27 @@ _create_python_env() {
# so they get properly signed later
OLD_IFS=${IFS}
IFS=$'\n'
for i in $(find . -type f -name *.so -exec file "{}" \; | grep -v "(for architecture" | grep -E "Mach-O executable|Mach-O 64-bit executable|Mach-O 64-bit bundle|Mach-O 64-bit dynamically linked shared library" | awk -F":" '{print $1}' | uniq)
for i in $(find . -type f -name '*.so' -exec file "{}" \; | grep -v "(for architecture" | grep -E "Mach-O executable|Mach-O 64-bit executable|Mach-O 64-bit bundle|Mach-O 64-bit dynamically linked shared library" | awk -F":" '{print $1}' | uniq)
do
chmod +x "${i}"
done
IFS=${OLD_IFS}
# Fixup shebangs
cd "${BUNDLE_DIR}/Contents/Frameworks/Python.framework/Versions/Current/bin"
grep -RiIl 'mac-build' * | xargs sed -i '' 's/\/.*\/python3\./\$(dirname \"$0\")\/python3./g'
cd "${BUNDLE_DIR}/Contents/Frameworks/Python.framework/Versions/Current/bin" || exit
# shellcheck disable=SC2016
grep -RiIl 'mac-build' ./* | xargs sed -i '' 's/\/.*\/python3\./\$(dirname \"$0\")\/python3./g'
# Remove some things we don't need
cd "${BUNDLE_DIR}/Contents/Frameworks/Python.framework"
cd "${BUNDLE_DIR}/Contents/Frameworks/Python.framework" || exit
find . -name test -type d -print0 | xargs -0 rm -rf
find . -name tkinter -type d -print0 | xargs -0 rm -rf
find . -name turtle.py -type f -print0 | xargs -0 rm -rf
find . -name turtledemo -type d -print0 | xargs -0 rm -rf
find . -name tcl* -type d -print0 | xargs -0 rm -rf
find . -name tk* -type d -print0 | xargs -0 rm -rf
find . -name tdbc* -type d -print0 | xargs -0 rm -rf
find . -name itcl* -type d -print0 | xargs -0 rm -rf
find . -name "tcl*" -type d -print0 | xargs -0 rm -rf
find . -name "tk*" -type d -print0 | xargs -0 rm -rf
find . -name "tdbc*" -type d -print0 | xargs -0 rm -rf
find . -name "itcl*" -type d -print0 | xargs -0 rm -rf
rm -f Versions/Current/lib/Tk.*
rm -f Versions/Current/lib/libtcl*.dylib
rm -f Versions/Current/lib/libtk*.dylib
@@ -123,15 +133,16 @@ _build_docs() {
# Create a temporary venv for the doc build, so we don't contaminate the one
# that we're going to ship.
"${BUNDLE_DIR}/Contents/Frameworks/Python.framework/Versions/Current/bin/python3" -m venv "${BUILD_ROOT}/venv"
# shellcheck disable=SC1091
source "${BUILD_ROOT}/venv/bin/activate"
pip3 install --upgrade pip
pip3 install -r "${SOURCE_DIR}/requirements.txt"
pip3 install sphinx
cd "${SOURCE_DIR}"
cd "${SOURCE_DIR}" || exit
make docs
cd "${SOURCE_DIR}/docs/en_US"
cd "${SOURCE_DIR}/docs/en_US" || exit
test -d "${BUNDLE_DIR}/Contents/Resources/docs/en_US" || mkdir -p "${BUNDLE_DIR}/Contents/Resources/docs/en_US"
cp -r _build/html "${BUNDLE_DIR}/Contents/Resources/docs/en_US/"
@@ -144,10 +155,10 @@ _fixup_imports() {
local TODO TODO_OLD FW_RELPATH LIB LIB_BN
echo "Fixing imports on the core appbundle..."
pushd "$1" > /dev/null
pushd "$1" > /dev/null || exit
# Find all the files that may need tweaks
TODO=$(file `find . -perm +0111 -type f` | \
TODO=$(find . -perm +0111 -type f -exec file "{}" \; | \
grep -v "Frameworks/Python.framework" | \
grep -v "Frameworks/nwjs" | \
grep -E "Mach-O 64-bit" | \
@@ -155,7 +166,7 @@ _fixup_imports() {
uniq)
# Add anything in the site-packages Python directory
TODO+=$(file `find ./Contents/Frameworks/Python.framework/Versions/Current/lib/python*/site-packages -perm +0111 -type f` | \
TODO+=$(find ./Contents/Frameworks/Python.framework/Versions/Current/lib/python*/site-packages -perm +0111 -type f -exec file "{}" \; | \
grep -E "Mach-O 64-bit" | \
awk -F ':| ' '{ORS=" "; print $1}' | \
uniq)
@@ -183,9 +194,9 @@ _fixup_imports() {
# Find all libraries ${TODO_OBJ} depends on, but skip system libraries
for LIB in $(
otool -L ${TODO_OBJ} | \
otool -L "${TODO_OBJ}" | \
sed -n 's|^.*[[:space:]]\([^[:space:]]*\.dylib\).*$|\1|p' | \
egrep -v '^(/usr/lib)|(/System)|@executable_path|@loader_path|/DLC/PIL/' \
grep -E -v '^(/usr/lib)|(/System)|@executable_path|@loader_path|/DLC/PIL/' \
); do
# Copy in any required dependencies
LIB_BN="$(basename "${LIB}")" ;
@@ -225,12 +236,12 @@ _fixup_imports() {
done
echo "Imports updated on the core appbundle."
popd > /dev/null
popd > /dev/null || exit
}
_complete_bundle() {
echo "Completing the appbundle..."
cd ${SCRIPT_DIR}
cd "${SCRIPT_DIR}" || exit
# Copy the binary utilities into place
mkdir -p "${BUNDLE_DIR}/Contents/SharedSupport/"
@@ -247,7 +258,7 @@ _complete_bundle() {
for FILE in "${BUNDLE_DIR}"/Contents/Resources/*.lproj/InfoPlist.strings; do
sed -i '' 's/CFBundleGetInfoString =.*/CFBundleGetInfoString = "Copyright (C) 2013 - 2022, The pgAdmin Development Team";/g' "${FILE}"
sed -i '' 's/NSHumanReadableCopyright =.*/NSHumanReadableCopyright = "Copyright (C) 2013 - 2022, The pgAdmin Development Team";/g' "${FILE}"
echo CFBundleDisplayName = \"${APP_NAME}\"\; >> "${FILE}"
echo CFBundleDisplayName = \""${APP_NAME}"\"\; >> "${FILE}"
done
# PkgInfo
@@ -266,39 +277,41 @@ _complete_bundle() {
_fixup_imports "${BUNDLE_DIR}"
# Build node modules
pushd "${SOURCE_DIR}/web" > /dev/null
pushd "${SOURCE_DIR}/web" > /dev/null || exit
yarn install
yarn run bundle
curl https://curl.se/ca/cacert.pem -o cacert.pem -s
popd > /dev/null
popd > /dev/null || exit
# copy the web directory to the bundle as it is required by runtime
cp -r "${SOURCE_DIR}/web" "${BUNDLE_DIR}/Contents/Resources/"
cd "${BUNDLE_DIR}/Contents/Resources/web"
cd "${BUNDLE_DIR}/Contents/Resources/web" || exit
rm -f pgadmin4.db config_local.*
rm -rf karma.conf.js package.json node_modules/ regression/ tools/ pgadmin/static/js/generated/.cache
find . -name "tests" -type d -print0 | xargs -0 rm -rf
find . -name "feature_tests" -type d -print0 | xargs -0 rm -rf
find . -name ".DS_Store" -print0 | xargs -0 rm -f
echo "SERVER_MODE = False" > config_distro.py
echo "HELP_PATH = '../../../docs/en_US/html/'" >> config_distro.py
echo "DEFAULT_BINARY_PATHS = {" >> config_distro.py
echo " 'pg': '\$DIR/../../SharedSupport'," >> config_distro.py
echo " 'ppas': ''" >> config_distro.py
echo "}" >> config_distro.py
{
echo "SERVER_MODE = False"
echo "HELP_PATH = '../../../docs/en_US/html/'"
echo "DEFAULT_BINARY_PATHS = {"
echo " 'pg': '\$DIR/../../SharedSupport',"
echo " 'ppas': ''"
echo "}"
} > config_distro.py
# License files
cp -r ${SOURCE_DIR}/LICENSE "${BUNDLE_DIR}/Contents/"
cp -r ${SOURCE_DIR}/DEPENDENCIES "${BUNDLE_DIR}/Contents/"
cp -r "${SOURCE_DIR}/LICENSE" "${BUNDLE_DIR}/Contents/"
cp -r "${SOURCE_DIR}/DEPENDENCIES" "${BUNDLE_DIR}/Contents/"
# Remove the .pyc files if any
find "${BUNDLE_DIR}" -name "*.pyc" -print0 | xargs -0 rm -f
}
_codesign_binaries() {
if [ ${CODESIGN} -eq 0 ]; then
if [ "${CODESIGN}" -eq 0 ]; then
return
fi
@@ -309,13 +322,14 @@ _codesign_binaries() {
# Create the entitlements file
cp "${SCRIPT_DIR}/entitlements.plist.in" "${BUILD_ROOT}/entitlements.plist"
TEAM_ID=$(echo ${DEVELOPER_ID} | awk -F"[()]" '{print $2}')
TEAM_ID=$(echo "${DEVELOPER_ID}" | awk -F"[()]" '{print $2}')
sed -i '' "s/%TEAMID%/${TEAM_ID}/g" "${BUILD_ROOT}/entitlements.plist"
echo Signing ${BUNDLE_DIR} binaries...
echo Signing "${BUNDLE_DIR}" binaries...
IFS=$'\n'
for i in $(find "${BUNDLE_DIR}" -type f -perm +111 -exec file "{}" \; | \
grep -v "(for architecture" | \
grep -v -E "^- Mach-O" | \
grep -E "Mach-O executable|Mach-O 64-bit executable|Mach-O 64-bit bundle|Mach-O 64-bit dynamically linked shared library" | \
awk -F":" '{print $1}' | \
uniq)
@@ -328,25 +342,23 @@ _codesign_binaries() {
"$i"
done
echo Signing ${BUNDLE_DIR} libraries...
for i in $(find "${BUNDLE_DIR}" -type f -name "*.dylib*")
do
echo Signing "${BUNDLE_DIR}" libraries...
find "${BUNDLE_DIR}" -type f -name "*.dylib*" -exec \
codesign --deep --force --verify --verbose --timestamp \
--options runtime \
--entitlements "${BUILD_ROOT}/entitlements.plist" \
-i org.pgadmin.pgadmin4 \
--sign "${DEVELOPER_ID}" \
"$i"
done
{} \;
}
_codesign_bundle() {
if [ ${CODESIGN} -eq 0 ]; then
if [ "${CODESIGN}" -eq 0 ]; then
return
fi
# Sign the .app
echo Signing ${BUNDLE_DIR}...
echo Signing "${BUNDLE_DIR}"...
codesign --deep --force --verify --verbose --timestamp \
--options runtime \
--entitlements "${BUILD_ROOT}/entitlements.plist" \
@@ -357,7 +369,7 @@ _codesign_bundle() {
_create_dmg() {
# move to the directory where we want to create the DMG
test -d ${DIST_ROOT} || mkdir ${DIST_ROOT}
test -d "${DIST_ROOT}" || mkdir "${DIST_ROOT}"
echo "Checking out create-dmg..."
git clone https://github.com/create-dmg/create-dmg.git "${BUILD_ROOT}/create-dmg"
@@ -381,7 +393,7 @@ _create_dmg() {
}
_codesign_dmg() {
if [ ${CODESIGN} -eq 0 ]; then
if [ "${CODESIGN}" -eq 0 ]; then
return
fi
@@ -396,20 +408,19 @@ _codesign_dmg() {
_notarize_pkg() {
if [ ${CODESIGN} -eq 0 ]; then
if [ "${CODESIGN}" -eq 0 ]; then
return
fi
# Notarize the package. Try three times, to allow for upload issues
cmd_status=0
for i in {1..3}; do
echo "Uploading DMG for notarisation (attempt ${i} of 3)..."
STATUS=$(xcrun altool --notarize-app \
-f "${DMG_NAME}" \
--asc-provider ${DEVELOPER_NAME} \
--asc-provider "${DEVELOPER_NAME}" \
--primary-bundle-id org.pgadmin.pgadmin4 \
-u ${DEVELOPER_USER} \
-p ${DEVELOPER_ASP} 2>&1)
-u "${DEVELOPER_USER}" \
-p "${DEVELOPER_ASP}" 2>&1)
RETVAL=$?
if [ ${RETVAL} != 0 ]; then
@@ -427,7 +438,7 @@ _notarize_pkg() {
fi
# Get the request ID
REQUEST_UUID=$(echo ${STATUS} | awk '/RequestUUID/ { print $NF; }')
REQUEST_UUID=$(echo "${STATUS}" | awk '/RequestUUID/ { print $NF; }')
echo "Notarization request ID: ${REQUEST_UUID}"
# Now we need to wait for the results. Try 60 times.
@@ -436,9 +447,9 @@ _notarize_pkg() {
sleep 30
echo "Requesting notarisation result (attempt ${i} of 60)..."
REQUEST_STATUS=$(xcrun altool --notarization-info ${REQUEST_UUID} \
--username ${DEVELOPER_USER} \
--password ${DEVELOPER_ASP} 2>&1 | \
REQUEST_STATUS=$(xcrun altool --notarization-info "${REQUEST_UUID}" \
--username "${DEVELOPER_USER}" \
--password "${DEVELOPER_ASP}" 2>&1 | \
awk -F ': ' '/Status:/ { print $2; }' )
if [[ "${REQUEST_STATUS}" == "success" ]]; then
@@ -447,9 +458,9 @@ _notarize_pkg() {
done
# Print status information
xcrun altool --notarization-info ${REQUEST_UUID} \
--username ${DEVELOPER_USER} \
--password ${DEVELOPER_ASP}
xcrun altool --notarization-info "${REQUEST_UUID}" \
--username "${DEVELOPER_USER}" \
--password "${DEVELOPER_ASP}"
if [[ "${REQUEST_STATUS}" != "success" ]]; then
echo "Notarization failed."
@@ -458,10 +469,8 @@ _notarize_pkg() {
# Staple the notarization
echo "Stapling the notarization to the pgAdmin DMG..."
xcrun stapler staple "${DMG_NAME}"
if [ $? != 0 ]; then
echo "Stapling failed."
if ! xcrun stapler staple "${DMG_NAME}"; then
echo "Stapling failed."
exit 1
fi
+24 -16
View File
@@ -8,49 +8,57 @@ set -e -E
# Debugging shizz
trap 'ERRCODE=$? && if [ ${ERRCODE} -ne 0 ]; then echo "The command \"${BASH_COMMAND}\" failed in \"${FUNCNAME}\" with exit code ${ERRCODE}."; fi' EXIT
SCRIPT_DIR=$(cd `dirname $0` && pwd)
SOURCE_DIR=$(realpath ${SCRIPT_DIR}/../..)
BUILD_ROOT=$(realpath ${SCRIPT_DIR}/../..)/mac-build
TEMP_DIR=$(realpath ${SCRIPT_DIR}/../..)/mac-temp
DIST_ROOT=$(realpath ${SCRIPT_DIR}/../..)/dist
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
export SCRIPT_DIR
SOURCE_DIR=$(realpath "${SCRIPT_DIR}"/../..)
export SOURCE_DIR
BUILD_ROOT=$(realpath "${SCRIPT_DIR}"/../..)/mac-build
export BUILD_ROOT
TEMP_DIR=$(realpath "${SCRIPT_DIR}"/../..)/mac-temp
export TEMP_DIR
DIST_ROOT=$(realpath "${SCRIPT_DIR}"/../..)/dist
export DIST_ROOT
CODESIGN=1
if [ ! -f ${SCRIPT_DIR}/codesign.conf ]; then
export CODESIGN=1
if [ ! -f "${SCRIPT_DIR}/codesign.conf" ]; then
echo
echo "******************************************************************"
echo "* pkg/mac/codesign.conf not found. NOT signing the binaries."
echo "******************************************************************"
echo
CODESIGN=0
export CODESIGN=0
sleep 2
else
source ${SCRIPT_DIR}/codesign.conf
# shellcheck disable=SC1091
source "${SCRIPT_DIR}/codesign.conf"
fi
NOTARIZE=1
if [ ! -f ${SCRIPT_DIR}/notarization.conf ]; then
export NOTARIZE=1
if [ ! -f "${SCRIPT_DIR}/notarization.conf" ]; then
echo
echo "******************************************************************"
echo "* pkg/mac/notarization.conf not found. NOT notarizing the package."
echo "******************************************************************"
echo
NOTARIZE=0
export NOTARIZE=0
sleep 2
else
source ${SCRIPT_DIR}/notarization.conf
# shellcheck disable=SC1091
source "${SCRIPT_DIR}/notarization.conf"
fi
if [ "x${PGADMIN_POSTGRES_DIR}" == "x" ]; then
if [ "${PGADMIN_POSTGRES_DIR}" == "" ]; then
echo "PGADMIN_POSTGRES_DIR not set. Setting it to the default: /usr/local/pgsql"
export PGADMIN_POSTGRES_DIR=/usr/local/pgsql
fi
if [ "x${PGADMIN_PYTHON_VERSION}" == "x" ]; then
if [ "${PGADMIN_PYTHON_VERSION}" == "" ]; then
echo "PGADMIN_PYTHON_VERSION not set. Setting it to the default: 3.9.9"
export PGADMIN_PYTHON_VERSION=3.9.9
fi
source ${SCRIPT_DIR}/build-functions.sh
# shellcheck disable=SC1091
source "${SCRIPT_DIR}/build-functions.sh"
_setup_env
_cleanup
+52
View File
@@ -2,11 +2,63 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!--
Disable Sandboxing. This must be enabled for the app store, but it will
cause NWjs to fail to start with an error like:
[1004/170922.238911:ERROR:directory_reader_posix.cc(42)] opendir /dev/fd: Operation not permitted (1)
We should figure out why that happens and fix it one day, but for now
we just don't support the app store.
-->
<key>com.apple.security.app-sandbox</key>
<false/>
<!--
Set the app group name for IPC and access to shared containers between
our processes.
-->
<key>com.apple.security.application-groups</key>
<string>%TEAMID%.org.pgadmin.pgadmin4</string>
<!--
We have no need for JIT.
-->
<key>com.apple.security.cs.allow-jit</key>
<false/>
<!--
Explicitly disallow executable code overwriting/patching.
-->
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<false/>
<!--
Explicitly disallow use of dynamic loader environment variables that
could be used for code injection.
-->
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<false/>
<!--
Explicitly ensure that library validation is enabled so we only load
libraries and frameworks signed by us or Apple.
-->
<key>com.apple.security.cs.disable-library-validation</key>
<false/>
<!--
We need to enable this, even though we don't modify our own executables.
Otherwise, NWjs just bombs out.
-->
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<!--
We're not a debugger (well, except for procedural languages in Postgres,
but that doesn't count).
-->
<key>com.apple.security.cs.debugger</key>
<false/>
</dict>
</plist>
+28 -26
View File
@@ -10,30 +10,28 @@
#########################################################################
# Runtime checks
if [ ! -d runtime -a ! -d web ]; then
if [ ! -d runtime ] && [ ! -d web ]; then
echo This script must be run from the top-level directory of the source tree.
exit 1
fi
if [ ! -d .git -a ! -f .git/config ]; then
if [ ! -d .git ] && [ ! -f .git/config ]; then
echo This script must be run from a git checkout of the source tree.
exit 1
fi
# Get the required package info
APP_RELEASE=`grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_REVISION=`grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_NAME=`grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //'`
APP_RELEASE=$(grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_REVISION=$(grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_NAME=$(grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //')
APP_LONG_VERSION=${APP_RELEASE}.${APP_REVISION}
APP_SHORT_VERSION=`echo ${APP_LONG_VERSION} | cut -d . -f1,2`
APP_SUFFIX=`grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g"`
if [ ! -z ${APP_SUFFIX} ]; then
APP_SUFFIX=$(grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g")
if [ -n "${APP_SUFFIX}" ]; then
export APP_LONG_VERSION=${APP_LONG_VERSION}-${APP_SUFFIX}
fi
TARBALL_NAME=`echo ${APP_NAME}-${APP_LONG_VERSION} | sed 's/ //g' | awk '{print tolower($0)}'`
# Output basic details to show we're working
echo Building tarballs for ${APP_NAME} version ${APP_LONG_VERSION}...
echo Building tarballs for "${APP_NAME}" version "${APP_LONG_VERSION}"...
# Create/clearout the build directory
echo Creating/cleaning required directories...
@@ -49,36 +47,39 @@ mkdir pip-build/pgadmin4
mkdir pip-build/pgadmin4/docs
# Build the clean tree
cd web
for FILE in `git ls-files`
cd web || exit
for FILE in $(git ls-files)
do
echo Adding ${FILE}
echo Adding "${FILE}"
# We use tar here to preserve the path, as Mac (for example) doesn't support cp --parents
tar cf - ${FILE} | (cd ../pip-build/pgadmin4; tar xf -)
# shellcheck disable=SC2164
tar cf - "${FILE}" | (cd ../pip-build/pgadmin4; tar xf -)
done
yarn install
yarn run bundle
for FILE in `ls -d pgadmin/static/js/generated/*`
for FILE in pgadmin/static/js/generated/*
do
echo Adding ${FILE}
tar cf - ${FILE} | (cd ../pip-build/pgadmin4; tar xf -)
echo Adding "${FILE}"
# shellcheck disable=SC2164
tar cf - "${FILE}" | (cd ../pip-build/pgadmin4; tar xf -)
done
cd ../docs
for FILE in `git ls-files`
cd ../docs || exit
for FILE in $(git ls-files)
do
echo Adding ${FILE}
echo Adding "${FILE}"
# We use tar here to preserve the path, as Mac (for example) doesn't support cp --parents
tar cf - ${FILE} | (cd ../pip-build/pgadmin4/docs; tar xf -)
# shellcheck disable=SC2164
tar cf - "${FILE}" | (cd ../pip-build/pgadmin4/docs; tar xf -)
done
for DIR in `ls -d ??_??/`
for DIR in ./??_??/
do
if [ -d ${DIR}/_build/html ]; then
mkdir -p ../pip-build/pgadmin4/docs/${DIR}/_build
cp -R ${DIR}/_build/html ../pip-build/pgadmin4/docs/${DIR}/_build
if [ -d "${DIR}"/_build/html ]; then
mkdir -p "../pip-build/pgadmin4/docs/${DIR}/_build"
cp -R "${DIR}/_build/html" "../pip-build/pgadmin4/docs/${DIR}/_build"
fi
done
@@ -87,6 +88,7 @@ for FILE in LICENSE DEPENDENCIES README.md
do
echo Adding ${FILE}
# We use tar here to preserve the path, as Mac (for example) doesn't support cp --parents
# shellcheck disable=SC2164
tar cf - ${FILE} | (cd pip-build/pgadmin4; tar xf -)
done
@@ -101,7 +103,7 @@ echo recursive-include pgadmin4 \* > pip-build/MANIFEST.in
# Run the build
echo Building wheel...
cd pip-build
cd pip-build || exit
python ../pkg/pip/setup_pip.py bdist_wheel
cd ../
+13 -13
View File
@@ -6,8 +6,7 @@ set -e
# Debugging shizz
trap 'ERRCODE=$? && if [ ${ERRCODE} -ne 0 ]; then echo "The command \"${BASH_COMMAND}\" failed in \"${FUNCNAME}\" with exit code ${ERRCODE}."; fi' EXIT
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_NAME=$(cat /etc/os-release | grep "^ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_ARCH=$(arch)
# Make sure we get the right libpq
@@ -17,10 +16,11 @@ export PATH=/usr/pgsql-14/bin:$PATH
export PYTHONDONTWRITEBYTECODE=1
# Common Linux build functions
# shellcheck disable=SC1091
source pkg/linux/build-functions.sh
# Assemble the "standard" installation footprint
_setup_env $0 "redhat"
_setup_env "$0" "redhat"
_cleanup "rpm"
_setup_dirs
_create_python_virtualenv "redhat"
@@ -30,7 +30,7 @@ _copy_code
# Get an RPM-compatible version number
RPM_VERSION=${APP_RELEASE}.${APP_REVISION}
if [ ! -z ${APP_SUFFIX} ]; then
if [ -n "${APP_SUFFIX}" ]; then
RPM_VERSION=${RPM_VERSION}_${APP_SUFFIX}
fi
@@ -222,23 +222,23 @@ rpmbuild --define "pga_build_root ${BUILDROOT}" -bb "${BUILDROOT}/meta.spec"
#
# mod_wsgi for CentOS 7
#
if [ ${OS_VERSION} == 7 ]; then
cp "${SOURCEDIR}/pkg/redhat/pgadmin4-python3-mod_wsgi-exports.patch" ${HOME}/rpmbuild/SOURCES
cp "${SOURCEDIR}/pkg/redhat/pgadmin4-python3-mod_wsgi.conf" ${HOME}/rpmbuild/SOURCES
curl -o ${HOME}/rpmbuild/SOURCES/mod_wsgi-4.9.0.tar.gz https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.9.0
if [ "${OS_VERSION}" == 7 ]; then
cp "${SOURCEDIR}/pkg/redhat/pgadmin4-python3-mod_wsgi-exports.patch" "${HOME}/rpmbuild/SOURCES"
cp "${SOURCEDIR}/pkg/redhat/pgadmin4-python3-mod_wsgi.conf" "${HOME}/rpmbuild/SOURCES"
curl -o "${HOME}/rpmbuild/SOURCES/mod_wsgi-4.9.0.tar.gz" https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.9.0
rpmbuild -bb "${SOURCEDIR}/pkg/redhat/pgadmin4-python-mod_wsgi.spec"
fi
# Get the libpq we need
yumdownloader -y --downloadonly --destdir=$DISTROOT postgresql14-libs
yumdownloader -y --downloadonly --destdir="${DISTROOT}" postgresql14-libs
#
# Get the results!
#
cp ${HOME}/rpmbuild/RPMS/${OS_ARCH}/${APP_NAME}-*${RPM_VERSION}-*.${OS_ARCH}.rpm "${DISTROOT}/"
cp ${HOME}/rpmbuild/RPMS/noarch/${APP_NAME}-*${RPM_VERSION}-*.noarch.rpm "${DISTROOT}/"
if [ ${OS_VERSION} == 7 ]; then
cp ${HOME}/rpmbuild/RPMS/${OS_ARCH}/pgadmin4-python3-mod_wsgi-4.9.0-1.el7.x86_64.rpm "${DISTROOT}/"
cp "${HOME}/rpmbuild/RPMS/${OS_ARCH}/${APP_NAME}-"*"${RPM_VERSION}-"*".${OS_ARCH}.rpm" "${DISTROOT}/"
cp "${HOME}/rpmbuild/RPMS/noarch/${APP_NAME}-"*"${RPM_VERSION}-"*".noarch.rpm" "${DISTROOT}/"
if [ "${OS_VERSION}" == 7 ]; then
cp "${HOME}/rpmbuild/RPMS/${OS_ARCH}/pgadmin4-python3-mod_wsgi-4.9.0-1.el7.x86_64.rpm" "${DISTROOT}/"
fi
echo "Completed. RPMs created in ${DISTROOT}."
+15 -17
View File
@@ -5,7 +5,7 @@ REPO_RPM_VERSION=2
REPO_RPM_BUILD=1
# Set the repo base directory
if [ "x${PGADMIN_REPO_DIR}" == "x" ]; then
if [ "${PGADMIN_REPO_DIR}" == "" ]; then
echo "PGADMIN_REPO_DIR not set. Setting it to the default: https://ftp.postgresql.org/pub/pgadmin/pgadmin4/repos/yum"
export PGADMIN_REPO_DIR=https://ftp.postgresql.org/pub/pgadmin/pgadmin4/repos/yum
fi
@@ -14,14 +14,10 @@ fi
set -e
# Debugging shizz
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
trap 'if [ $? -ne 0 ]; then echo "\"${last_command}\" command filed with exit code $?."; fi' EXIT
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_NAME=$(cat /etc/os-release | grep "^ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_ARCH=$(arch)
trap 'ERRCODE=$? && if [ ${ERRCODE} -ne 0 ]; then echo "The command \"${BASH_COMMAND}\" failed in \"${FUNCNAME}\" with exit code ${ERRCODE}."; fi' EXIT
# Common Linux build functions
# shellcheck disable=SC1091
source pkg/linux/build-functions.sh
# Are we installing a package key?
@@ -38,14 +34,14 @@ fi
# Create the Redhat packaging stuffs for the repo
_create_repo_rpm() {
DISTRO=$1
if [ ${DISTRO} == "redhat" ]; then
if [ "${DISTRO}" == "redhat" ]; then
PLATFORM="rhel"
else
PLATFORM=${DISTRO}
fi
echo "Creating the repo package for ${DISTRO}..."
test -d ${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d || mkdir -p ${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d
test -d "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d" || mkdir -p "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d"
cat << EOF > "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
[pgAdmin4]
@@ -55,9 +51,11 @@ enabled=1
EOF
if [ ${INCLUDE_KEY} -eq 1 ]; then
echo repo_gpgcheck=1 >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
echo gpgcheck=1 >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
echo gpgkey=file:///etc/pki/rpm-gpg/PGADMIN_PKG_KEY >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
{
echo repo_gpgcheck=1
echo gpgcheck=1
echo gpgkey=file:///etc/pki/rpm-gpg/PGADMIN_PKG_KEY
} >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
else
echo gpgcheck=0 >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo"
fi
@@ -88,11 +86,11 @@ cp -rfa %{pga_build_root}/${DISTRO}-repo/* \${RPM_BUILD_ROOT}
EOF
if [ ${INCLUDE_KEY} -eq 1 ]; then
cat << EOF >> ${BUILDROOT}/${DISTRO}-repo.spec
cat << EOF >> "${BUILDROOT}/${DISTRO}-repo.spec"
/etc/pki/rpm-gpg/PGADMIN_PKG_KEY
EOF
test -d ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg || mkdir -p ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg
cp pkg/redhat/PGADMIN_PKG_KEY ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg/
test -d "${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg" || mkdir -p "${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg"
cp pkg/redhat/PGADMIN_PKG_KEY "${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg/"
fi
# Build the package
@@ -100,7 +98,7 @@ EOF
rpmbuild --define "pga_build_root ${BUILDROOT}" -bb "${BUILDROOT}/${DISTRO}-repo.spec"
}
_setup_env $0 "redhat"
_setup_env "$0" "redhat"
_create_repo_rpm redhat
_create_repo_rpm fedora
@@ -108,4 +106,4 @@ _create_repo_rpm fedora
# Get the results!
#
test -d "${DISTROOT}/" || mkdir -p "${DISTROOT}/"
cp ${HOME}/rpmbuild/RPMS/noarch/${APP_NAME}-*-repo-${REPO_RPM_VERSION}-${REPO_RPM_BUILD}.noarch.rpm "${DISTROOT}/"
cp "${HOME}/rpmbuild/RPMS/noarch/${APP_NAME}-"*"-repo-${REPO_RPM_VERSION}-${REPO_RPM_BUILD}.noarch.rpm" "${DISTROOT}/"
+13 -12
View File
@@ -5,24 +5,24 @@ if [ "$EUID" -ne 0 ]
exit 1
fi
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g' | awk -F "." '{ print $1 }')
OS_VERSION=$(grep "^VERSION_ID=" /etc/os-release | awk -F "=" '{ print $2 }' | sed 's/"//g' | awk -F "." '{ print $1 }')
# EPEL & other repos
if [ ${OS_VERSION} != 9 ]; then
if [ "${OS_VERSION}" != 9 ]; then
yum -y install centos-release-scl
fi
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-${OS_VERSION}.noarch.rpm
if [ ${OS_VERSION} == 8 ] || [ ${OS_VERSION} == 9 ]; then
yum config-manager --enable PowerTools AppStream BaseOS *epel
yum install -y "https://dl.fedoraproject.org/pub/epel/epel-release-latest-${OS_VERSION}.noarch.rpm"
if [ "${OS_VERSION}" == 8 ] || [ "${OS_VERSION}" == 9 ]; then
yum config-manager --enable PowerTools AppStream BaseOS "*epel"
dnf -qy module disable postgresql
fi
# PostgreSQL repo
if [ ${OS_VERSION} == 7 ] || [ ${OS_VERSION} == 8 ] || [ ${OS_VERSION} == 9 ]; then
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-${OS_VERSION}-x86_64/pgdg-redhat-repo-latest.noarch.rpm
if [ "${OS_VERSION}" == 7 ] || [ "${OS_VERSION}" == 8 ] || [ "${OS_VERSION}" == 9 ]; then
yum install -y "https://download.postgresql.org/pub/repos/yum/reporpms/EL-${OS_VERSION}-x86_64/pgdg-redhat-repo-latest.noarch.rpm"
else
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-${OS_VERSION}-x86_64/pgdg-fedora-repo-latest.noarch.rpm
yum install -y "https://download.postgresql.org/pub/repos/yum/reporpms/F-${OS_VERSION}-x86_64/pgdg-fedora-repo-latest.noarch.rpm"
fi
# Node repo
@@ -37,20 +37,21 @@ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yu
echo "Installing build pre-requisites..."
yum groupinstall -y "Development Tools"
if [ ${OS_VERSION} == 7 ]; then
if [ "${OS_VERSION}" == 7 ]; then
yum install -y expect fakeroot httpd-devel postgresql14-devel python3-devel nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
pip3 install sphinx
elif [ ${OS_VERSION} == 9 ]; then
elif [ "${OS_VERSION}" == 9 ]; then
yum install -y expect postgresql14-devel python3-devel nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
pip3 install sphinx
else
yum install -y expect fakeroot postgresql14-devel python3-devel python3-sphinx nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
yum install -y expect fakeroot postgresql14-devel python3-devel nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
pip3 install sphinx
fi
# Setup RPM macros for signing
echo "Please add the following macros to ~/.rpmmacros for the user that will sign the RPMs if required:"
echo
if [ ${OS_VERSION} == 7 ]; then
if [ "${OS_VERSION}" == 7 ]; then
cat << EOF
# Macros for signing RPMs.
+34 -33
View File
@@ -10,31 +10,30 @@
#########################################################################
# Runtime checks
if [ ! -d runtime -a ! -d web ]; then
if [ ! -d runtime ] && [ ! -d web ]; then
echo This script must be run from the top-level directory of the source tree.
exit 1
fi
if [ ! -d .git -a ! -f .git/config ]; then
if [ ! -d .git ] && [ ! -f .git/config ]; then
echo This script must be run from a git checkout of the source tree.
exit 1
fi
# Get the required package info
APP_RELEASE=`grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_REVISION=`grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_NAME=`grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //'`
APP_RELEASE=$(grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_REVISION=$(grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g')
APP_NAME=$(grep "^APP_NAME" web/config.py | cut -d"=" -f2 | sed "s/'//g" | sed 's/^ //')
APP_LONG_VERSION=${APP_RELEASE}.${APP_REVISION}
APP_SHORT_VERSION=`echo ${APP_LONG_VERSION} | cut -d . -f1,2`
APP_SUFFIX=`grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g"`
if [ ! -z ${APP_SUFFIX} ]; then
APP_SUFFIX=$(grep "^APP_SUFFIX" web/config.py | cut -d"=" -f2 | sed 's/ //g' | sed "s/'//g")
if [ -n "${APP_SUFFIX}" ]; then
export APP_LONG_VERSION=${APP_LONG_VERSION}-${APP_SUFFIX}
fi
TARBALL_NAME=`echo ${APP_NAME}-${APP_LONG_VERSION} | sed 's/ //g' | awk '{print tolower($0)}'`
DOC_TARBALL_NAME=`echo ${APP_NAME}-${APP_LONG_VERSION}-docs | sed 's/ //g' | awk '{print tolower($0)}'`
TARBALL_NAME=$(echo "${APP_NAME}-${APP_LONG_VERSION}" | sed 's/ //g' | awk '{print tolower($0)}')
DOC_TARBALL_NAME=$(echo "${APP_NAME}-${APP_LONG_VERSION}-docs" | sed 's/ //g' | awk '{print tolower($0)}')
# Output basic details to show we're working
echo Building tarballs for ${APP_NAME} version ${APP_LONG_VERSION}...
echo "Building tarballs for ${APP_NAME} version ${APP_LONG_VERSION}..."
# Create/clearout the build directory
echo Creating/cleaning required directories...
@@ -42,58 +41,60 @@ if [ ! -d src-build ]; then
mkdir src-build
fi
if [ -d src-build/${TARBALL_NAME} ]; then
rm -rf src-build/${TARBALL_NAME}
if [ -d "src-build/${TARBALL_NAME}" ]; then
rm -rf "src-build/${TARBALL_NAME}"
fi
mkdir src-build/${TARBALL_NAME}
mkdir "src-build/${TARBALL_NAME}"
# Create the output directory if not present
if [ ! -d dist ]; then
mkdir dist
fi
if [ -f dist/${TARBALL_NAME}.tar.gz ]; then
rm -f dist/${TARBALL_NAME}.tar.gz
if [ -f "dist/${TARBALL_NAME}.tar.gz" ]; then
rm -f "dist/${TARBALL_NAME}.tar.gz"
fi
if [ -f dist/${DOC_TARBALL_NAME}.tar.gz ]; then
rm -f dist/${DOC_TARBALL_NAME}.tar.gz
if [ -f "dist/${DOC_TARBALL_NAME}.tar.gz" ]; then
rm -f "dist/${DOC_TARBALL_NAME}.tar.gz"
fi
# Build the clean tree
for FILE in `git ls-files`
for FILE in $(git ls-files)
do
echo Adding ${FILE}
echo Adding "${FILE}"
# We use tar here to preserve the path, as Mac (for example) doesn't support cp --parents
tar cf - ${FILE} | (cd src-build/${TARBALL_NAME}; tar xf -)
# shellcheck disable=SC2164
tar cf - "${FILE}" | (cd "src-build/${TARBALL_NAME}"; tar xf -)
done
pushd web > /dev/null
pushd web > /dev/null || exit
yarn install
yarn run bundle
for FILE in `ls -d pgadmin/static/js/generated/*`
for FILE in pgadmin/static/js/generated/*
do
echo Adding ${FILE}
tar cf - ${FILE} | (cd ../src-build/${TARBALL_NAME}/web; tar xf -)
echo Adding "${FILE}"
# shellcheck disable=SC2164
tar cf - "${FILE}" | (cd "../src-build/${TARBALL_NAME}/web"; tar xf -)
done
popd > /dev/null
popd > /dev/null || exit
# Create the tarball
echo Creating tarball...
cd src-build
tar zcvf ../dist/${TARBALL_NAME}.tar.gz ${TARBALL_NAME}
cd src-build || exit
tar zcvf "../dist/${TARBALL_NAME}.tar.gz" "${TARBALL_NAME}"
cd ..
# Create the docs
echo Creating docs...
cd src-build/${TARBALL_NAME}/docs/en_US
cd "src-build/${TARBALL_NAME}/docs/en_US" || exit
make -f Makefile.sphinx html
cd _build
mv html ${DOC_TARBALL_NAME}
tar zcvf ../../../../../dist/${DOC_TARBALL_NAME}.tar.gz ${DOC_TARBALL_NAME}
cd _build || exit
mv html "${DOC_TARBALL_NAME}"
tar zcvf "../../../../../dist/${DOC_TARBALL_NAME}.tar.gz" "${DOC_TARBALL_NAME}"
cd ../../../../../
# Fin!
echo Created tarball dist/${TARBALL_NAME}.tar.gz and dist/${DOC_TARBALL_NAME}.tar.gz
echo "Created tarball dist/${TARBALL_NAME}.tar.gz and dist/${DOC_TARBALL_NAME}.tar.gz"
+1 -1
View File
@@ -141,7 +141,7 @@ want to build an installer.
1. Check out the source code:
git clone https://git.postgresql.org/git/pgadmin4.git
git clone https://github.com/pgadmin-org/pgadmin4.git
2. Install and build the JS dependencies:
Loaded 100 of 2033 files, more files were not shown because too many files have changed in this diff. Show more