public inbox for [email protected]
help / color / mirror / Atom feedFrom: Nikhil Mohite <[email protected]>
To: Dave Page <[email protected]>
Cc: Akshay Joshi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: [pgAdmin][RM-2341]: Add menu option for starting PSQL
Date: Tue, 18 May 2021 16:42:44 +0530
Message-ID: <CAOBg0APGPTA4qNNryAXMwKP63uFLxQdQwnFdDXMjSr4OeH-HAg@mail.gmail.com> (raw)
In-Reply-To: <CA+OCxowW7BEZzULbEpn73ygqWtWkUwdCAB3PMcHocUeQXcM3ow@mail.gmail.com>
References: <CAOBg0AO6Tjksb+EOA_-O13yRzdL_2d3y6G74m=GGQS+Ymjv=0g@mail.gmail.com>
<CA+OCxow9+UDMrsBBvJKW2AeAYaN4cO3w7kBGNKtsWhSM6_D7gQ@mail.gmail.com>
<CAOBg0AMVyLBma8wsbZ-VQWF4q3OAhqWeRLpmrxVcM_YOKH+MDQ@mail.gmail.com>
<CANxoLDd2xMu7ym9PFdhYUSy4ucNuPoZ2fvaRkuwyB+EqowLXwA@mail.gmail.com>
<CA+OCxowoz1oFE=eMKEnfFtf=oDrkPKHGfZpUGRW-sG_tpfMBTw@mail.gmail.com>
<CAOBg0ANFNvtD-LoFxXcLY5JJ4BVH5zNyrmdBED6B++-nKf012g@mail.gmail.com>
<CA+OCxowW7BEZzULbEpn73ygqWtWkUwdCAB3PMcHocUeQXcM3ow@mail.gmail.com>
Hi Dave/Team,
On Mon, May 17, 2021 at 6:47 PM Dave Page <[email protected]> wrote:
> Hi
>
> On Mon, May 17, 2021 at 11:01 AM Nikhil Mohite <
> [email protected]> wrote:
>
>> Hi Akshay/ Team,
>>
>> Please find the attached updated patch for the psql tool.
>>
>
> Hmm, this version is also broken. There's a typo in editor_template.html
> on line 138 - it splits a string across two lines which throws an error.
> Having fixed that...
>
> I also note there's a lot of Javascript in that HTML file. That should be
> pushed into the webpacked bundle I think, and not included inline in HTML.
>
I have moved most of the code in the js file, few things are still in HTML.
>
> A couple of other things I noticed:
>
> - The button is enabled if the treeview has a Server selected. It could be
> argued that the query tool should do the same (defaulting to the
> maintenance database), however, that would be a separate change, and psql
> should be consistent with the query tool.
>
It is now consistent with the query tool.
>
> - If I do a "select * from pg_class;" I still get:
>
> postgres=# select * from pg_class;
> WARNING: terminal is not fully functional
>
I am not able to reproduce the warning for the terminal (I am working on
Catalina 10.15.7), I checked on browsers (chrome, firefox, Safari) and also
checked on local nwjs runtime but still not able to reproduce the warning.
but found one limitation: if we try to load data from the table containing
millions of records, UI gets very slow.
>
> - I'm sure using \q in the previous version displayed a message saying the
> session exited (the one on line 138 of editor_template.html). It no longer
> seems to do so.
>
>
>>
>>
>> On Tue, May 11, 2021 at 3:40 PM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Tue, May 11, 2021 at 9:02 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Nikhil
>>>>
>>>> Following are the review comments:
>>>>
>>>> *GUI specific*:
>>>>
>>>> - We need a panel icon for PSQL like query tool, we can also add
>>>> that on the browser tree toolbar.
>>>> - PSQL Tool menu should be visible for all the child nodes of the
>>>> database node. Follow the same as Query Tool.
>>>> - PSQL tab title should be only database server name as the user
>>>> can change the database/user from PSQL command, so it's been difficult to
>>>> update the tab title.
>>>> - PSQL connection is still open even if we disconnect the database
>>>> server from the browser tree.
>>>>
>>>> *Code specific:*
>>>>
>>>> - Remove an extra space from requirements.txt and package.json
>>>> - Documentation needs to be updated to let the user know from where
>>>> the PSQL tool will open and on which node it is applicable.
>>>> - psql/__init__.py check there are so many unused imports please
>>>> remove them.
>>>> - We are not using cheroot so it should be removed from
>>>> requirements.txt and also remove the import statement from pgAdmin4.py
>>>> - Test cases are showing successful but actually, there are some
>>>> routing errors please check.
>>>>
>>>> A few other things I noticed:
>>>
>>> - I was prompted to enter a password. This should be passed in the
>>> environment to psql as it is for pg_dump etc.
>>> - There seems to be an issue with terminal compatibility (which I didn't
>>> have on my prototype):
>>>
>>> ml=# select * from pg_class;
>>> WARNING: terminal is not fully functional
>>> -[ RECORD 1 ]-------+----------------------------------------------
>>> oid | 79354
>>> relname | housing
>>> ...
>>>
>>> - The panel should honour the styleguide. I'm running in dark mode, and
>>> see a jet black background. I would expect to see the same
>>> background/foreground colours as the treeview.
>>> - I spotted at least one print() statement that shouldn't be there
>>> (debug output should go through the logger) - psql/__init__.py:235
>>> - This seems suspect - why would there be a password in a connection
>>> string we've built? And why would it be xxx?
>>>
>>> if 'password=xxx' in conn_attr:
>>> conn_attr = conn_attr.replace('password=xxx', '')
>>>
>>> - There's a thick white line at the bottom of the panel, where a
>>> horizontal scrollbar might be if there was one.
>>> - The trailing semi-colon should be removed from: "ERROR: Shell commands
>>> are disabled in psql for security;"
>>>
>>> Once we're happy with the patch in general, I'll do a string review
>>> before committing. In particular, I want to be sure the text in config.py
>>> is appropriately worded.
>>>
>>> This is shaping up nicely! Good work.
>>>
>>>
>>>>
>>>> On Mon, May 10, 2021 at 7:32 PM Nikhil Mohite <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave/ Team,
>>>>>
>>>>> PFA updated patch, sorry for the inconvenience, while cleanup I
>>>>> removed the unwanted libraries but forgot to remove the code related to
>>>>> them.
>>>>>
>>>>> On Mon, May 10, 2021 at 7:10 PM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Mon, May 10, 2021 at 1:45 PM Nikhil Mohite <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Hackers,
>>>>>>>
>>>>>>> Please find the attached patch for RM-2341
>>>>>>> <https://redmine.postgresql.org/issues/2341;: Add Menu option for
>>>>>>> starting PSQL.
>>>>>>> 1. Added new Option PSQL Tool in Tools menu.
>>>>>>> 2. Added the same option for Server and Database nodes from the tree
>>>>>>> view.
>>>>>>>
>>>>>>
>>>>>> Unfortunately there's a trailing comma in package.json that makes it
>>>>>> invalid. If I fix that, then I get the error below, so I'm guessing the
>>>>>> intention was to actually include another package there?
>>>>>>
>>>>>> ERROR in ./pgadmin/tools/psql/static/js/psql_module.js 23:50-82
>>>>>> Module not found: Error: Can't resolve 'local-echo-controller' in
>>>>>> '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js'
>>>>>> resolve 'local-echo-controller' in
>>>>>> '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js'
>>>>>> Parsed request is a module
>>>>>> using description file: /Users/dpage/git/pgadmin4/web/package.json
>>>>>> (relative path: ./pgadmin/tools/psql/static/js)
>>>>>> aliased with mapping 'local-echo-controller':
>>>>>> '/Users/dpage/git/pgadmin4/web/node_modules/local-echo' to
>>>>>> '/Users/dpage/git/pgadmin4/web/node_modules/local-echo'
>>>>>> using description file:
>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>> ./pgadmin/tools/psql/static/js)
>>>>>> Field 'browser' doesn't contain a valid alias configuration
>>>>>> root path /Users/dpage/git/pgadmin4/web
>>>>>> using description file:
>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>> ./Users/dpage/git/pgadmin4/web/node_modules/local-echo)
>>>>>> no extension
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>>
>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>> doesn't exist
>>>>>> .js
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>>
>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.js
>>>>>> doesn't exist
>>>>>> .jsx
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>>
>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx
>>>>>> doesn't exist
>>>>>> as directory
>>>>>>
>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>> doesn't exist
>>>>>> using description file:
>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>> ./node_modules/local-echo)
>>>>>> no extension
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>> doesn't exist
>>>>>> .js
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo.js
>>>>>> doesn't exist
>>>>>> .jsx
>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>> configuration
>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx
>>>>>> doesn't exist
>>>>>> as directory
>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>> doesn't exist
>>>>>> @ ./pgadmin/tools/psql/static/js/index.js 17:19-43
>>>>>>
>>>>>> 2021-05-10 14:38:37: webpack 5.21.2 compiled with 1 error in 60041 ms
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: https://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EDB: https://www.enterprisedb.com
>>>>>>
>>>>>
>>>>> Regards,
>>>>> Nikhil Mohite
>>>>>
>>>>
>>>>
>>>> --
>>>> *Thanks & Regards*
>>>> *Akshay Joshi*
>>>> *pgAdmin Hacker | Principal Software Architect*
>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>
>>>> *Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: https://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EDB: https://www.enterprisedb.com
>>>
>>> Regards,
>> Nikhil Mohite
>>
>
>
> --
> Dave Page
> Blog: https://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EDB: https://www.enterprisedb.com
>
Regards,
Nikhil Mohite
Attachments:
[application/octet-stream] RM_2341_V4.patch (351.0K, 3-RM_2341_V4.patch)
download | inline diff:
diff --git a/docs/en_US/developer_tools.rst b/docs/en_US/developer_tools.rst
index 1ff442cc..bb67e33a 100644
--- a/docs/en_US/developer_tools.rst
+++ b/docs/en_US/developer_tools.rst
@@ -16,3 +16,4 @@ PL/SQL code.
editgrid
schema_diff
erd_tool
+ psql_tool
diff --git a/docs/en_US/images/psql_tool.png b/docs/en_US/images/psql_tool.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5f88ba5a573aa60bf7e08b8a38526dc73e8fcd5
GIT binary patch
literal 23736
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
P=p;Q)S3j3^P6<r_JTn~)
literal 0
HcmV?d00001
diff --git a/docs/en_US/images/psql_tool_menu.png b/docs/en_US/images/psql_tool_menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..c219a0787868bd9427cfc056ce18c9ab562e52bd
GIT binary patch
literal 187181
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
literal 0
HcmV?d00001
diff --git a/docs/en_US/psql_tool.rst b/docs/en_US/psql_tool.rst
new file mode 100644
index 00000000..8791648a
--- /dev/null
+++ b/docs/en_US/psql_tool.rst
@@ -0,0 +1,23 @@
+.. _psql_tool:
+
+******************
+`PSQL Tool`:index:
+******************
+
+PSQL tool allows user to connect to PostgreSQL server using psql terminal.
+
+* Open PSQL Tool from Tools menu or context menu PSQL Tool from tree view.
+
+.. image:: images/psql_tool_menu.png
+ :alt: PSQL tool menu
+ :align: center
+
+* execute all type of commands.
+
+.. image:: images/psql_tool.png
+ :alt: PSQL tool window
+ :align: center
+
+You can open multiple instance of the PSQL tool in individual tabs simultaneously.
+To close the PSQL tool, click the *X* in the upper-right hand corner of the tab bar.
+
diff --git a/requirements.txt b/requirements.txt
index edd7000b..8227a4c0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,7 +8,6 @@
#
###############################################################################
-cheroot==8.*
Flask==1.*
Flask-Gravatar==0.*
Flask-Login==0.*
@@ -36,3 +35,5 @@ sshtunnel==0.*
ldap3==2.*
Flask-BabelEx==0.*
gssapi==1.6.*
+flask-socketio>=5.0.1
+eventlet==0.30.2
diff --git a/web/config.py b/web/config.py
index 2643ef19..002a9951 100644
--- a/web/config.py
+++ b/web/config.py
@@ -156,8 +156,8 @@ X_FRAME_OPTIONS = "SAMEORIGIN"
# such as JavaScript, CSS, or pretty much anything that the browser loads.
# see https://content-security-policy.com/#source_list for more info
# e.g. "default-src https: data: 'unsafe-inline' 'unsafe-eval';"
-CONTENT_SECURITY_POLICY = "default-src http: data: blob: 'unsafe-inline' " \
- "'unsafe-eval';"
+CONTENT_SECURITY_POLICY = "default-src ws: http: data: blob: 'unsafe-inline'" \
+ " 'unsafe-eval';"
# STRICT_TRANSPORT_SECURITY_ENABLED when set to True will set the
# Strict-Transport-Security header
@@ -636,6 +636,19 @@ KRB_AUTO_CREATE_USER = True
KERBEROS_CCACHE_DIR = os.path.join(DATA_DIR, 'krbccache')
+# PSQL tool settings
+# This will enable PSQL tool in pgAdmin. So user can execute the commands using
+# PSQL terminal in pgAdmin.
+ENABLE_PSQL = True
+
+# ALLOW_PSQL_SHELL_COMMAND = True will disable the execution of os level
+# commands using meta command \! from PSQL terminal.
+# As PSQL allow user to execute the os level commands from the PSQL terminal
+# user can execute any system level command as per the system login user
+# privileges. Default this setting is set to False but if it set to True
+# User will able to execute the system level commands through PSQL terminal in
+# pgAdmin.
+ALLOW_PSQL_SHELL_COMMANDS = False
##########################################################################
# Local config settings
diff --git a/web/package.json b/web/package.json
index 8ed32df9..19110fda 100644
--- a/web/package.json
+++ b/web/package.json
@@ -117,13 +117,18 @@
"shim-loader": "^1.0.1",
"slickgrid": "git+https://github.com/6pac/SlickGrid.git#2.3.16",
"snapsvg-cjs": "^0.0.6",
+ "socket.io-client": "^4.0.0",
"split.js": "^1.5.10",
"tablesorter": "^2.31.2",
"tempusdominus-bootstrap-4": "^5.1.2",
"tempusdominus-core": "^5.0.3",
"underscore": "^1.13.1",
"webcabin-docker": "git+https://github.com/EnterpriseDB/wcDocker/#c4a3398b89588408dc705895675bce7bd7660d36",
- "wkx": "^0.5.0"
+ "wkx": "^0.5.0",
+ "xterm": "^4.11.0",
+ "xterm-addon-fit": "^0.5.0",
+ "xterm-addon-search": "^0.8.0",
+ "xterm-addon-web-links": "^0.4.0"
},
"scripts": {
"linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js --ext .jsx .",
diff --git a/web/pgAdmin4.py b/web/pgAdmin4.py
index d2bd1af6..dc1924cb 100644
--- a/web/pgAdmin4.py
+++ b/web/pgAdmin4.py
@@ -13,7 +13,7 @@ to start a web server."""
import sys
-from cheroot.wsgi import Server as CherootServer
+
if sys.version_info < (3, 4):
raise RuntimeError('This application must be run under Python 3.4 '
@@ -37,7 +37,7 @@ else:
builtins.SERVER_MODE = None
import config
-from pgadmin import create_app
+from pgadmin import create_app, socketio
from pgadmin.utils import u_encode, fs_encoding, file_quote
from pgadmin.utils.constants import INTERNAL
# Get the config database schema version. We store this in pgadmin.model
@@ -97,6 +97,8 @@ if not os.path.isfile(config.SQLITE_PATH):
##########################################################################
app = create_app()
app.debug = False
+app.config['sessions'] = dict()
+
if config.SERVER_MODE:
app.wsgi_app = ReverseProxied(app.wsgi_app)
@@ -206,17 +208,16 @@ def main():
else:
# Can use cheroot instead of flask dev server when not in debug
# 10 is default thread count in CherootServer
- num_threads = 10 if config.THREADED_MODE else 1
- prod_server = CherootServer(
- (config.DEFAULT_SERVER, config.EFFECTIVE_SERVER_PORT),
- wsgi_app=app,
- numthreads=num_threads,
- server_name=config.APP_NAME)
+ # num_threads = 10 if config.THREADED_MODE else 1
try:
- print("Using production server...")
- prod_server.start()
+ socketio.run(
+ app,
+ host=config.DEFAULT_SERVER,
+ port=config.EFFECTIVE_SERVER_PORT,
+ )
except KeyboardInterrupt:
- prod_server.stop()
+ print("CLOSE SERVER")
+ socketio.stop()
except IOError:
app.logger.error("Error starting the app server: %s", sys.exc_info())
diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py
index a7333537..fad91082 100644
--- a/web/pgadmin/__init__.py
+++ b/web/pgadmin/__init__.py
@@ -19,6 +19,7 @@ from collections import defaultdict
from importlib import import_module
from flask import Flask, abort, request, current_app, session, url_for
+from flask_socketio import SocketIO
from werkzeug.exceptions import HTTPException
from flask_babelex import Babel, gettext
from flask_babelex import gettext as _
@@ -52,10 +53,15 @@ import mimetypes
mimetypes.add_type('application/javascript', '.js')
mimetypes.add_type('text/css', '.css')
+
winreg = None
if os.name == 'nt':
import winreg
+socketio = SocketIO(manage_session=False, async_mode='eventlet',
+ logger=False, engineio_logger=False, debug=False,
+ ping_interval=25, ping_timeout=120)
+
class PgAdmin(Flask):
def __init__(self, *args, **kwargs):
@@ -811,4 +817,5 @@ def create_app(app_name=None):
##########################################################################
# All done!
##########################################################################
+ socketio.init_app(app)
return app
diff --git a/web/pgadmin/browser/register_browser_preferences.py b/web/pgadmin/browser/register_browser_preferences.py
index 235db027..d835ca82 100644
--- a/web/pgadmin/browser/register_browser_preferences.py
+++ b/web/pgadmin/browser/register_browser_preferences.py
@@ -10,6 +10,7 @@ from flask_babelex import gettext
from pgadmin.utils.constants import PREF_LABEL_DISPLAY,\
PREF_LABEL_KEYBOARD_SHORTCUTS, PREF_LABEL_TABS_SETTINGS, \
PREF_LABEL_OPTIONS
+from flask_security import current_user
import config
LOCK_LAYOUT_LEVEL = {
@@ -511,10 +512,12 @@ def register_browser_preferences(self):
options=[{'label': gettext('Query Tool'), 'value': 'qt'},
{'label': gettext('Debugger'), 'value': 'debugger'},
{'label': gettext('Schema Diff'), 'value': 'schema_diff'},
- {'label': gettext('ERD Tool'), 'value': 'erd_tool'}],
- help_str=gettext('Select Query Tool, Debugger, or Schema Diff from '
- 'the drop-down to set open in new browser tab for '
- 'that particular module.'),
+ {'label': gettext('ERD Tool'), 'value': 'erd_tool'},
+ {'label': gettext('PSQL Tool'), 'value': 'psql_tool'}],
+ help_str=gettext('Select Query Tool, Debugger, Schema Diff, ERD Tool '
+ 'or PSQL Tool from the drop-down to set '
+ 'open in new browser tab for that particular module.'
+ ),
select2={
'multiple': True, 'allowClear': False,
'tags': True, 'first_empty': False,
@@ -523,3 +526,16 @@ def register_browser_preferences(self):
'placeholder': gettext('Select open new tab...')
}
)
+
+ self.psql_tab_title = self.preference.register(
+ 'tab_settings', 'psql_tab_title_placeholder',
+ gettext("PSQL tool tab title"),
+ 'text', '%DATABASE%/%USERNAME%@%SERVER%',
+ category_label=PREF_LABEL_DISPLAY,
+ help_str=gettext(
+ 'Supported placeholders are %DATABASE%, %USERNAME%, and %SERVER%. '
+ 'Users can provide any string with or without placeholders of'
+ ' their choice. The blank title will be revert back to the'
+ ' default title with placeholders.'
+ )
+ )
diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py
index f4165c32..fb7ff12c 100644
--- a/web/pgadmin/browser/server_groups/servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/__init__.py
@@ -34,6 +34,7 @@ from pgadmin.utils.constants import UNAUTH_REQ, MIMETYPE_APP_JS, \
SERVER_CONNECTION_CLOSED
from sqlalchemy import or_
from pgadmin.utils.preferences import Preferences
+from .... import socketio as sio
def has_any(data, keys):
@@ -1499,6 +1500,13 @@ class ServerNode(PGChildNodeView):
# Release Connection
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
+ # Check if any psql terminal is running for the current disconnecting
+ # server. If any terminate the psql tool connection.
+ if 'sid_soid_mapping' in current_app.config and str(sid) in \
+ current_app.config['sid_soid_mapping']:
+ if str(sid) in current_app.config['sid_soid_mapping']:
+ for i in current_app.config['sid_soid_mapping'][str(sid)]:
+ sio.emit('disconnect-psql', namespace='/pty', to=i)
status = manager.release()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
index 01ab89c5..eb20cac5 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
@@ -122,6 +122,9 @@ define('pgadmin.node.database', [
is_connected: function(node) {
return (node && node.connected == true && node.canDisconn == true);
},
+ is_psql_enabled: function(node) {
+ return (node && node.connected == true) && pgAdmin['enable_psql'];
+ },
is_conn_allow: function(node) {
return (node && node.allowConn == true);
},
diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.js b/web/pgadmin/browser/server_groups/servers/static/js/server.js
index 45dea090..ffd715f8 100644
--- a/web/pgadmin/browser/server_groups/servers/static/js/server.js
+++ b/web/pgadmin/browser/server_groups/servers/static/js/server.js
@@ -101,7 +101,8 @@ define('pgadmin.node.server', [
icon: 'fa fa-unlink', enable : 'is_connected',data: {
data_disabled: gettext('Database is already disconnected.'),
},
- },{
+ },
+ {
name: 'reload_configuration', node: 'server', module: this,
applies: ['tools', 'context'], callback: 'reload_configuration',
category: 'reload', priority: 6, label: gettext('Reload Configuration'),
@@ -728,6 +729,14 @@ define('pgadmin.node.server', [
return false;
},
+ /* Open psql tool for server*/
+ server_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ }
},
model: pgAdmin.Browser.Node.Model.extend({
defaults: {
diff --git a/web/pgadmin/browser/static/js/collection.js b/web/pgadmin/browser/static/js/collection.js
index 3823ef35..e763aa11 100644
--- a/web/pgadmin/browser/static/js/collection.js
+++ b/web/pgadmin/browser/static/js/collection.js
@@ -64,6 +64,14 @@ define([
priority: 997, label: gettext('Search Objects...'),
icon: 'fa fa-search',
}]);
+
+ // show psql tool same as query tool.
+ pgAdmin.Browser.add_menus([{
+ name: 'show_psql_tool', node: this.type, module: this,
+ applies: ['context'], callback: 'show_psql_tool',
+ priority: 998, label: gettext('PSQL Tool (Beta)'),
+ icon: 'fas fa-terminal',
+ }]);
}
}
},
@@ -498,6 +506,13 @@ define([
pgAdmin.SearchObjects.show_search_objects('', pgAdmin.Browser.tree.selected());
}
},
+ show_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ },
});
return pgBrowser.Collection;
diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js
index 1c5af3f5..23585dbe 100644
--- a/web/pgadmin/browser/static/js/node.js
+++ b/web/pgadmin/browser/static/js/node.js
@@ -209,6 +209,14 @@ define('pgadmin.browser.node', [
priority: 997, label: gettext('Search Objects...'),
icon: 'fa fa-search', enable: enable,
}]);
+
+ // show psql tool same as query tool.
+ pgAdmin.Browser.add_menus([{
+ name: 'show_psql_tool', node: this.type, module: this,
+ applies: ['context'], callback: 'show_psql_tool',
+ priority: 998, label: gettext('PSQL Tool (Beta)'),
+ icon: 'fas fa-terminal',
+ }]);
}
// This will add options of scripts eg:'CREATE Script'
@@ -902,6 +910,15 @@ define('pgadmin.browser.node', [
pgAdmin.DataGrid.show_query_tool('', i);
},
+ // Callback to render psql tool.
+ show_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ },
+
// Logic to change the server background colour
// There is no way of applying CSS to parent element so we have to
// do it via JS code only
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index c9e64132..3068aabe 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -122,10 +122,30 @@ define(
myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
});
}
+
+ // Listen on detach panel event
+ myPanel.on(wcDocker.EVENT.DETACHED, function(obj) {
+ that.setCodeMirrorHeight(obj);
+ });
},
});
}
},
+ setCodeMirrorHeight: function() {
+ // Fix for mac os code-mirror showing black screen.
+ var txtArea = $('.pg-panel-content .sql_textarea > textarea').first();
+ txtArea.css('z-index', -1);
+ var $tabContent = $('.pg-panel-content > .sql_textarea').first();
+ var $sqlPane = $tabContent.find('.CodeMirror > div > textarea');
+ for(let i=0; i<$sqlPane.length; i++) {$($sqlPane[i]).css('z-index', -1);}
+
+ $tabContent = $('.pg-panel-content > .sql_textarea').first();
+ $sqlPane = $tabContent.find('.pg-panel-content');
+ $sqlPane.find('.CodeMirror').css(
+ 'cssText',
+ 'height: ' + ($tabContent.height()) + 'px !important;'
+ );
+ },
eventFunc: function(eventName) {
var name = $(this).data('pgAdminName');
diff --git a/web/pgadmin/browser/static/js/toolbar.js b/web/pgadmin/browser/static/js/toolbar.js
index 09baaf22..90d2d007 100644
--- a/web/pgadmin/browser/static/js/toolbar.js
+++ b/web/pgadmin/browser/static/js/toolbar.js
@@ -56,6 +56,15 @@ let _defaultToolBarButtons = [
toggleClass: '',
parentClass: 'pg-toolbar-btn btn-primary-icon',
enabled: false,
+ },{
+ label: gettext('PSQL Tool'),
+ ariaLabel: gettext('PSQL Tool'),
+ btnClass: 'fas fa-terminal',
+ text: '',
+ toggled: false,
+ toggleClass: '',
+ parentClass: 'pg-toolbar-btn btn-primary-icon pg-toolbar-psql',
+ enabled: false,
},
];
@@ -105,6 +114,13 @@ export function initializeToolbar(panel, wcDocker) {
pgAdmin.DataGrid.show_filtered_row({mnuid: 4}, pgAdmin.Browser.tree.selected());
else if ('name' in data && data.name === gettext('Search objects'))
pgAdmin.SearchObjects.show_search_objects('', pgAdmin.Browser.tree.selected());
+ else if ('name' in data && data.name === gettext('PSQL Tool')){
+ var input = {},
+ t = pgAdmin.Browser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgAdmin.Browser.psql.psql_tool(d, i, true);
+ }
});
}
diff --git a/web/pgadmin/browser/static/scss/_browser.scss b/web/pgadmin/browser/static/scss/_browser.scss
index 0d157384..ae72f0e6 100644
--- a/web/pgadmin/browser/static/scss/_browser.scss
+++ b/web/pgadmin/browser/static/scss/_browser.scss
@@ -53,3 +53,9 @@ samp,
border-width: 1px;
font-size: 1.15em;
}
+
+.pg-toolbar-psql {
+ padding-top: 0em;
+ font-size: inherit;
+ align-items: center;
+}
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index 8597df48..b0a317a5 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -52,6 +52,10 @@ define('pgadmin.browser.utils',
pgAdmin['user_inactivity_timeout'] = {{ current_app.config.get('USER_INACTIVITY_TIMEOUT') }};
pgAdmin['override_user_inactivity_timeout'] = '{{ current_app.config.get('OVERRIDE_USER_INACTIVITY_TIMEOUT') }}' == 'True';
+ /* GET PSQL Tool related config */
+ pgAdmin['enable_psql'] = '{{ current_app.config.get('ENABLE_PSQL') }}' == 'True';
+ pgAdmin['allow_psql_shell_commands'] = '{{ current_app.config.get('ALLOW_PSQL_SHELL_COMMANDS') }}' == 'True';
+
// Define list of nodes on which Query tool option doesn't appears
var unsupported_nodes = pgAdmin.unsupported_nodes = [
'server_group', 'server', 'coll-tablespace', 'tablespace',
diff --git a/web/pgadmin/static/bundle/browser.js b/web/pgadmin/static/bundle/browser.js
index 14140a2f..0b3ad81b 100644
--- a/web/pgadmin/static/bundle/browser.js
+++ b/web/pgadmin/static/bundle/browser.js
@@ -11,6 +11,7 @@ define('bundled_browser',[
'pgadmin.browser',
'sources/browser/index',
'top/tools/erd/static/js/index',
+ 'top/tools/psql/static/js/index',
], function(pgBrowser) {
pgBrowser.init();
});
diff --git a/web/pgadmin/static/css/style.css b/web/pgadmin/static/css/style.css
index c2a776c8..5b4a9f2d 100644
--- a/web/pgadmin/static/css/style.css
+++ b/web/pgadmin/static/css/style.css
@@ -21,3 +21,5 @@
@import '../vendor/backgrid/backgrid.css';
@import '../vendor/backgrid/backgrid-select-all.css';
+
+@import 'node_modules/xterm/css/xterm.css';
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
index 1348cc45..42efc04d 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
@@ -100,6 +100,10 @@ export function generateTitle(title_placeholder, title_data) {
title_placeholder = title_placeholder.replace(new RegExp('%ARGS%'), _.unescape(title_data.args));
title_placeholder = title_placeholder.replace(new RegExp('%SCHEMA%'), _.unescape(title_data.schema));
title_placeholder = title_placeholder.replace(new RegExp('%DATABASE%'), _.unescape(title_data.database));
+ } else if(title_data.type == 'psql_tool') {
+ title_placeholder = title_placeholder.replace(new RegExp('%DATABASE%'), _.unescape(title_data.database));
+ title_placeholder = title_placeholder.replace(new RegExp('%USERNAME%'), _.unescape(title_data.username));
+ title_placeholder = title_placeholder.replace(new RegExp('%SERVER%'), _.unescape(title_data.server));
}
return _.escape(title_placeholder);
diff --git a/web/pgadmin/tools/psql/__init__.py b/web/pgadmin/tools/psql/__init__.py
new file mode 100644
index 00000000..e36f561f
--- /dev/null
+++ b/web/pgadmin/tools/psql/__init__.py
@@ -0,0 +1,602 @@
+#!/usr/bin/env python3
+import fcntl
+import os
+import pty
+import re
+import select
+import struct
+import termios
+import config
+import eventlet.green.subprocess as subprocess
+
+from config import PG_DEFAULT_DRIVER
+from flask import Response, url_for, request
+from flask import render_template, copy_current_request_context, \
+ current_app as app
+from flask_babelex import gettext
+from flask_security import login_required, current_user
+from pgadmin.browser.utils import underscore_unescape
+from pgadmin.utils import PgAdminModule
+from pgadmin.utils.constants import MIMETYPE_APP_JS
+from pgadmin.utils.driver import get_driver
+from ... import socketio as sio
+from pgadmin.utils import get_complete_file_path
+
+
+session_input = dict()
+session_input_cursor = dict()
+session_last_cmd = dict()
+pdata = dict()
+cdata = dict()
+
+
+class PSQLModule(PgAdminModule):
+ """
+ class PSQLModule(PgAdminModule)
+ A module class for PSQL derived from PgAdminModule.
+ """
+
+ LABEL = gettext("PSQL")
+
+ def get_own_menuitems(self):
+ return {}
+
+ def get_own_javascripts(self):
+ return [{
+ 'name': 'pgadmin.psql',
+ 'path': url_for('psql.index') + "psql",
+ 'when': None
+ }]
+
+ def get_panels(self):
+ return []
+
+ def get_exposed_url_endpoints(self):
+ """
+ Returns:
+ list: URL endpoints for PSQL module
+ """
+ return [
+ 'psql.panel'
+ ]
+
+
+blueprint = PSQLModule('psql', __name__, static_url_path='/static')
+
+
[email protected]("/psql.js")
+@login_required
+def script():
+ """render the required javascript"""
+ return Response(
+ response=render_template("psql/js/psql.js", _=gettext),
+ status=200,
+ mimetype=MIMETYPE_APP_JS
+ )
+
+
[email protected]('/panel/<int:trans_id>',
+ methods=["POST"],
+ endpoint="panel")
+@login_required
+def panel(trans_id):
+ """
+ Return panel template for PSQL tools.
+ :param trans_id:
+ """
+ params = {
+ 'trans_id': trans_id,
+ 'title': request.form['title']
+ }
+ if 'sid_soid_mapping' not in app.config:
+ app.config['sid_soid_mapping'] = dict()
+ if request.args:
+ params.update({k: v for k, v in request.args.items()})
+
+ return render_template('editor_template.html',
+ sid=params['sid'],
+ db=params['db'] if params['db'] else 'postgres',
+ server_type=params['server_type'],
+ is_enable=config.ENABLE_PSQL,
+ title=underscore_unescape(params['title']),
+ theme=params['theme']
+ )
+
+
+def set_term_size(fd, row, col, xpix=0, ypix=0):
+ """
+ Set the terminal size as per UI xterm size.
+ :param fd:
+ :param row:
+ :param col:
+ :param xpix:
+ :param ypix:
+ """
+ term_size = struct.pack('HHHH', row, col, xpix, ypix)
+ fcntl.ioctl(fd, termios.TIOCSWINSZ, term_size)
+
+
[email protected]('connect', namespace='/pty')
+def connect():
+ """
+ Connect to the server through socket.
+ :return:
+ :rtype:
+ """
+ if config.ENABLE_PSQL:
+ sio.emit('connected', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+ if request.sid in session_last_cmd:
+ session_last_cmd[request.sid]['is_new_connection'] = False
+ else:
+ session_last_cmd[request.sid] = {'cmd': '', 'arrow_up': False,
+ 'invalid_cmd': False,
+ 'is_new_connection': False}
+ else:
+ sio.emit('conn_not_allow', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+
[email protected]('start_process', namespace='/pty')
+def start_process(data):
+ """
+ Start the pty terminal and execute psql command and emit results to user.
+ :param data:
+ :return:
+ """
+
+ @copy_current_request_context
+ def read_and_forward_pty_output(sid, data):
+ max_read_bytes = 1024 * 20
+ # Create the pty terminal process, parent and fd are file descriptors
+ # for parent and child.
+ parent, fd = pty.openpty()
+ p = None
+ if parent is not None:
+ # Child process
+ p = subprocess.Popen(connection_data,
+ preexec_fn=os.setsid,
+ stdin=fd,
+ stdout=fd,
+ stderr=fd,
+ universal_newlines=True
+ )
+
+ app.config['sessions'][request.sid] = parent
+ pdata[request.sid] = p
+ cdata[request.sid] = fd
+ else:
+ app.config['sessions'][request.sid] = parent
+ cdata[request.sid] = fd
+ set_term_size(fd, 50, 50)
+
+ while p and p.poll() is None:
+ if request.sid in app.config['sessions']:
+ # This code is added to make this unit testable.
+ if "is_test" not in data:
+ sio.sleep(0.01)
+ else:
+ data['count'] += 1
+ if data['count'] == 5:
+ break
+
+ timeout = 0
+ # module provides access to platform-specific I/O
+ # monitoring functions
+ (data_ready, _, _) = select.select([parent, fd], [], [],
+ timeout)
+
+ if parent in data_ready:
+ # Read the output from parent fd (terminal).
+ output = os.read(parent, max_read_bytes)
+ emit_output = True
+
+ if sid in session_last_cmd and session_last_cmd[sid][
+ 'arrow_up'] and not session_last_cmd[request.sid][
+ 'arrow_left_right']:
+ session_last_cmd[sid]['cmd'] = output.decode()
+ session_input_cursor[request.sid] = len(
+ session_last_cmd[sid]['cmd'])
+ session_last_cmd[sid]['arrow_up'] = True
+
+ if sid in session_last_cmd:
+ # If command is invalid then emit error to user.
+ if session_last_cmd[sid]['invalid_cmd']:
+ emit_output = False
+ sio.emit(
+ 'pty-output',
+ {
+ 'result': gettext(
+ "ERROR: Shell commands are disabled "
+ "in psql for security\r\n"),
+ 'error': True
+ },
+ namespace='/pty', room=sid)
+ # If command is valid then emit output to user.
+ if emit_output:
+ sio.emit('pty-output',
+ {'result': output.decode(),
+ 'error': False},
+ namespace='/pty', room=sid)
+ else:
+ session_last_cmd[request.sid]['invalid_cmd'] = False
+
+ # Check user is authenticated and PSQL is enabled in config.
+ if current_user.is_authenticated and config.ENABLE_PSQL:
+ connection_data = []
+ try:
+ db = ''
+ if data['db']:
+ db = data['db'].replace('\\', "\\\\")
+
+ conn, manager = _get_connection(int(data['sid']), data)
+ psql_utility = manager.utility('sql')
+ connection_data = get_connection_str(psql_utility, db,
+ manager)
+ except Exception as e:
+ # If any error raised during the start the PSQL emit error to UI.
+ # request.sid: This sid is socket id.
+ sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'.format(e),
+ }, namespace='/pty', room=request.sid)
+
+ try:
+ if str(data['sid']) not in app.config['sid_soid_mapping']:
+ # request.sid: refer request.sid as socket id.
+ app.config['sid_soid_mapping'][str(data['sid'])] = list()
+ app.config['sid_soid_mapping'][str(data['sid'])].append(
+ request.sid)
+ else:
+ app.config['sid_soid_mapping'][str(data['sid'])].append(
+ request.sid)
+
+ sio.start_background_task(read_and_forward_pty_output,
+ request.sid, data)
+ except Exception as e:
+ sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'.format(e),
+ }, namespace='/pty', room=request.sid)
+ else:
+ # Show error if user is not authenticated.
+ sio.emit('conn_not_allow', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+
+def _get_connection(sid, data):
+ """
+ Get the connection object of ERD.
+ :param sid:
+ :param did:
+ :param trans_id:
+ :return:
+ """
+ manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
+ try:
+ conn = manager.connection()
+ # This is added for unit test only, no use in normal execution.
+ if 'pwd' in data:
+ kwargs = {'password': data['pwd'], "user": data['user']}
+ status, msg = conn.connect(**kwargs)
+ else:
+ status, msg = conn.connect()
+ if not status:
+ app.logger.error(msg)
+ sio.emit(sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'
+ ''.format('Server connection not present.'),
+ }, namespace='/pty', room=request.sid))
+ raise Exception('Server is not connected.')
+
+ return conn, manager
+ except Exception as e:
+ app.logger.error(e)
+ raise
+
+
+def get_connection_str(psql_utility, db, manager):
+ """
+ Get connection string(through connection dsn)
+ :param psql_utility: PostgreSQL binary path.
+ :param db: database name to connect specific db.
+ :return: connection attribute list for PSQL connection.
+ """
+ conn_attr = get_conn_str(manager, db)
+ conn_attr_list = list()
+ conn_attr_list.append(psql_utility)
+ conn_attr_list.append(conn_attr)
+ return conn_attr_list
+
+
+def get_conn_str(manager, db):
+ """
+ Get connection attributes for psql connection.
+ :param manager:
+ :param db:
+ :return:
+ """
+ pwd = manager.extract_password()
+ conn_attr =\
+ "host={0} port={1} dbname={2} user={3} sslmode={4} " \
+ "sslcompression={5} password={6} " \
+ "".format(
+ manager.local_bind_host if manager.use_ssh_tunnel else
+ manager.host,
+ manager.local_bind_port if manager.use_ssh_tunnel else
+ manager.port,
+ db if db != '' else 'postgres',
+ manager.user if manager.user else 'postgres',
+ manager.ssl_mode,
+ True if manager.sslcompression else False,
+ pwd
+ )
+
+ if manager.hostaddr:
+ conn_attr = " {0} hostaddr={1}".format(conn_attr, manager.hostaddr)
+
+ if manager.passfile:
+ conn_attr = " {0} passfile={1}".format(conn_attr,
+ get_complete_file_path(
+ manager.passfile))
+
+ if get_complete_file_path(manager.sslcert):
+ conn_attr = " {0} sslcert={1}".format(
+ conn_attr, get_complete_file_path(manager.sslcert))
+
+ if get_complete_file_path(manager.sslkey):
+ conn_attr = " {0} sslkey={1}".format(
+ conn_attr, get_complete_file_path(manager.sslkey))
+
+ if get_complete_file_path(manager.sslrootcert):
+ conn_attr = " {0} sslrootcert={1}".format(
+ conn_attr, get_complete_file_path(manager.sslrootcert))
+
+ if get_complete_file_path(manager.sslcrl):
+ conn_attr = " {0} sslcrl={1}".format(
+ conn_attr, get_complete_file_path(manager.sslcrl))
+
+ if manager.service:
+ conn_attr = " {0} service={1}".format(
+ conn_attr, get_complete_file_path(manager.service))
+
+ return conn_attr
+
+
[email protected]('socket_input', namespace='/pty')
+def socket_input(data):
+ """
+ This get the user input through socket.
+ :param data: User input from socket.
+ """
+ try:
+ # request.sid: refer request.sid as socket id.
+ # Check PSQL enabled setting from config.
+ enable_psql = True if config.ENABLE_PSQL else False
+
+ if request.sid in app.config['sessions']:
+ if data['key_name'] == 'Enter' and enable_psql:
+ # If user get previous executed command from history then set
+ # current command as previous executed command.
+ if session_last_cmd[request.sid]['cmd'] \
+ and session_last_cmd[request.sid]['arrow_up']:
+ user_input = str(
+ session_last_cmd[request.sid]['cmd']).strip()
+ session_last_cmd[request.sid]['arrow_up'] = False
+ session_last_cmd[request.sid]['cmd'] = ''
+ else:
+ if request.sid not in session_input:
+ session_input[request.sid] = data['input']
+ user_input = str(session_input[request.sid]).strip()
+ else:
+ user_input = str(session_input[request.sid]).strip()
+ session_input_cursor[request.sid] = 0
+
+ # If ALLOW_PSQL_SHELL_COMMANDS is False then user can't execute
+ # \! meta command to run shell commands through PSQL terminal.
+ # Check before executing the user entered command does not
+ # contains \! in input.
+ is_new_connection = session_last_cmd[request.sid][
+ 'is_new_connection']
+ if user_input.startswith('\\!') and \
+ re.match("^\\\!$", user_input) and \
+ len(user_input) == 2 and \
+ not config.ALLOW_PSQL_SHELL_COMMANDS \
+ and not is_new_connection:
+
+ session_last_cmd[request.sid]['invalid_cmd'] = True
+
+ for i in range(len(session_input[request.sid])):
+ os.write(app.config['sessions'][request.sid],
+ '\b \b'.encode())
+
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ session_input[request.sid] = ''
+ elif re.search("\\\!", user_input) and \
+ not config.ALLOW_PSQL_SHELL_COMMANDS and \
+ not session_last_cmd[request.sid]['is_new_connection']:
+ stop_execution = True
+ # Check \! is passed as string or not.
+ double_quote_strs = re.findall('"([^"]*)"', user_input)
+
+ if double_quote_strs:
+ for sub_str in double_quote_strs:
+ if re.search("\\\!", sub_str):
+ stop_execution = False
+ # break
+
+ if stop_execution:
+ session_last_cmd[request.sid]['invalid_cmd'] = True
+ # Remove already added command from terminal.
+ for i in range(len(user_input)):
+ os.write(app.config['sessions'][request.sid],
+ '\b \b'.encode())
+ # Add Enter event to execute the command.
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ else:
+ session_last_cmd[request.sid]['invalid_cmd'] = False
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ elif user_input == '\q' or user_input == 'q\\q':
+ # If user enter \q to terminate the PSQL, emit the msg to
+ # notify user connection is terminated.
+ sio.emit('pty-output',
+ {
+ 'result': gettext(
+ 'Connection terminated, To create new '
+ 'connection please open another psql'
+ ' tool.'),
+ 'error': True},
+ namespace='/pty', room=request.sid)
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+
+ else:
+ os.write(app.config['sessions'][request.sid],
+ data['input'].encode())
+ session_input[request.sid] = ''
+ session_last_cmd[request.sid]['is_new_connection'] = False
+ else:
+ if data['key_name'] == 'ArrowLeft':
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+ if session_input_cursor[request.sid] > 0:
+ session_input_cursor[request.sid] -= 1
+
+ elif data['key_name'] == 'ArrowRight':
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+ if session_input_cursor[request.sid] < len(
+ session_input[request.sid]):
+ session_input_cursor[request.sid] += 1
+
+ elif data['key_name'] == 'ArrowUp':
+ session_last_cmd[request.sid]['arrow_up'] = True
+ session_last_cmd[request.sid]['arrow_left_right'] = False
+ session_input[request.sid] = session_last_cmd[request.sid][
+ 'cmd']
+ session_input_cursor[request.sid] = len(
+ session_last_cmd[request.sid]['cmd'])
+
+ elif request.sid in session_input and data[
+ 'key_name'] == 'Backspace' and (
+ len(session_input[request.sid]) or len(
+ session_last_cmd[request.sid])):
+
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+
+ if session_last_cmd[request.sid]['cmd']:
+ session_input[request.sid] = \
+ session_last_cmd[request.sid]['cmd']
+
+ user_input = list(session_input[request.sid])
+
+ if session_input_cursor[request.sid] == 1:
+ index = 0
+ session_input_cursor[request.sid] -= 1
+ else:
+ if session_input_cursor[request.sid] > 0:
+ index = (session_input_cursor[request.sid]) - 1
+ session_input_cursor[request.sid] -= 1
+ else:
+ index = session_input_cursor[request.sid]
+ session_input_cursor[request.sid] = 0
+
+ if len(user_input):
+ del user_input[index]
+ session_input[request.sid] = "".join(user_input)
+
+ if len(session_input[request.sid]) == 0:
+ session_input_cursor[request.sid] = 0
+ session_last_cmd[request.sid]['cmd'] = ''
+ elif request.sid in session_input:
+ if session_last_cmd[request.sid]['cmd'] and session_input[
+ request.sid] == '':
+ session_input[request.sid] = \
+ session_last_cmd[request.sid]['cmd']
+ session_input_cursor[request.sid] = len(
+ session_input[request.sid])
+ else:
+ session_last_cmd[request.sid]['arrow_up'] = False
+ session_last_cmd[request.sid]['cmd'] = ''
+ user_input = list(session_input[request.sid])
+ user_input.insert(session_input_cursor[request.sid],
+ data['input'])
+ session_input[request.sid] = ''.join(user_input)
+ session_input_cursor[request.sid] += 1
+ session_last_cmd[request.sid]['arrow_left_right'] = False
+ else:
+ session_input_cursor[request.sid] = 0
+ session_input[request.sid] = data['input']
+ session_input_cursor[request.sid] += 1
+
+ # Write user input to terminal parent fd.
+ os.write(app.config['sessions'][request.sid],
+ data['input'].encode())
+ except Exception as e:
+ # Delete socket id from sessions.
+ # request.sid: refer request.sid as socket id.
+ sio.emit('pty-output',
+ {
+ 'result': gettext('Invalid session.\r\n'),
+ 'error': True
+ },
+ namespace='/pty', room=request.sid)
+ del app.config['sessions'][request.sid]
+
+
[email protected]('resize', namespace='/pty')
+def resize(data):
+ """
+ Resize the pty terminal as per the UI terminal.
+ :param data: UI terminal rows and cols data
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in app.config['sessions']:
+ set_term_size(app.config['sessions'][request.sid], data['rows'],
+ data['cols'])
+
+
[email protected]('disconnect', namespace='/pty')
+def disconnect():
+ """
+ Disconnect the socket and terminate the process
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in pdata:
+ # On disconnect socket manually exit the psql terminal and close the
+ # parend and child fd then kill the subprocess.
+ disconnect_socket()
+
+
[email protected]('server-disconnect', namespace='/pty')
+def server_disconnect(data):
+ """
+ Disconnect the socket and terminate the process after user disconnect
+ the server. we can't use disconnect event name as it is reserved for socket
+ internal use.
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in pdata and request.sid in app.config['sid_soid_mapping'][
+ data['sid']]:
+ # On disconnect socket manually exit the psql terminal and close the
+ # parend and child fd then kill the subprocess.
+ app.config['sid_soid_mapping'][data['sid']] = [soid for soid in
+ app.config[
+ 'sid_soid_mapping'][
+ data['sid']] if
+ soid != request.sid]
+ disconnect_socket()
+
+
+def disconnect_socket():
+ os.write(app.config['sessions'][request.sid], '\q\n'.encode())
+ sio.sleep(1)
+ os.close(app.config['sessions'][request.sid])
+ os.close(cdata[request.sid])
+ del app.config['sessions'][request.sid]
diff --git a/web/pgadmin/tools/psql/static/js/index.js b/web/pgadmin/tools/psql/static/js/index.js
new file mode 100644
index 00000000..4d88ba04
--- /dev/null
+++ b/web/pgadmin/tools/psql/static/js/index.js
@@ -0,0 +1,23 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import gettext from 'sources/gettext';
+import url_for from 'sources/url_for';
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import pgBrowser from 'top/browser/static/js/browser';
+import * as csrfToken from 'sources/csrf';
+import {initialize} from './psql_module';
+
+let pgBrowserOut = initialize(gettext, url_for, $, _, pgAdmin, csrfToken, pgBrowser);
+
+module.exports = {
+ pgBrowser: pgBrowserOut,
+};
diff --git a/web/pgadmin/tools/psql/static/js/psql_module.js b/web/pgadmin/tools/psql/static/js/psql_module.js
new file mode 100644
index 00000000..2610a60f
--- /dev/null
+++ b/web/pgadmin/tools/psql/static/js/psql_module.js
@@ -0,0 +1,419 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import { Terminal } from 'xterm';
+import { FitAddon } from 'xterm-addon-fit';
+import { WebLinksAddon } from 'xterm-addon-web-links';
+import { SearchAddon } from 'xterm-addon-search';
+import { io } from 'socketio';
+import Alertify from 'pgadmin.alertifyjs';
+import {enable} from 'pgadmin.browser.toolbar';
+import clipboard from 'sources/selection/clipboard';
+import 'wcdocker';
+import {getRandomInt} from 'sources/utils';
+
+import {getTreeNodeHierarchyFromIdentifier} from 'sources/tree/pgadmin_tree_node';
+import {generateTitle} from 'tools/datagrid/static/js/datagrid_panel_title';
+
+
+export function setPanelTitle(psqlToolPanel, panelTitle) {
+ psqlToolPanel.title('<span title="'+panelTitle+'">'+panelTitle+'</span>');
+}
+
+var wcDocker = window.wcDocker;
+
+export function initialize(gettext, url_for, $, _, pgAdmin, csrfToken, Browser) {
+ var pgBrowser = Browser;
+ var terminal = Terminal;
+ var parentData = null;
+ /* Return back, this has been called more than once */
+ if (pgBrowser.psql)
+ return pgBrowser.psql;
+
+
+ // Create an Object Restore of pgBrowser class
+ pgBrowser.psql = {
+ init: function() {
+ this.initialized = true;
+ csrfToken.setPGCSRFToken(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
+ // Define the nodes on which the menus to be appear
+ var menus = [{
+ name: 'psql',
+ module: this,
+ applies: ['tools'],
+ callback: 'psql_tool',
+ priority: 1,
+ label: gettext('PSQL Tool (Beta)'),
+ enable: this.psqlToolEnabled,
+ }];
+
+ this.enable_psql_tool = pgAdmin['enable_psql'];
+ if(pgAdmin['enable_psql']) {
+ pgBrowser.add_menus(menus);
+ }
+
+ // Creating a new pgBrowser frame to show the data.
+ var psqlFrameType = new pgBrowser.Frame({
+ name: 'frm_psqltool',
+ showTitle: true,
+ isCloseable: true,
+ isPrivate: true,
+ url: 'about:blank',
+ });
+
+ var self = this;
+ /* Cache may take time to load for the first time
+ * Keep trying till available
+ */
+ let cacheIntervalId = setInterval(function() {
+ if(pgBrowser.preference_version() > 0) {
+ self.preferences = pgBrowser.get_preferences_for_module('psql');
+ clearInterval(cacheIntervalId);
+ }
+ },0);
+
+ pgBrowser.onPreferencesChange('psql', function() {
+ self.preferences = pgBrowser.get_preferences_for_module('psql');
+ });
+
+ // Load the newly created frame
+ psqlFrameType.load(pgBrowser.docker);
+ return this;
+ },
+ /* Enable/disable PSQL tool menu in tools based
+ * on node selected. if selected node is present
+ * in unsupported_nodes, menu will be disabled
+ * otherwise enabled.
+ */
+ psqlToolEnabled: function(obj) {
+
+ var isEnabled = (() => {
+ if (!_.isUndefined(obj) && !_.isNull(obj)) {
+ if (_.indexOf(pgAdmin.unsupported_nodes, obj._type) == -1) {
+ if (obj._type == 'database' && obj.allowConn) {
+ return true;
+ } else if (obj._type != 'database') {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ })();
+
+ enable(gettext('PSQL Tool'), isEnabled);
+ return isEnabled;
+ },
+ retrieveAncestorOfTypeServer: function(item) {
+ let serverInformation = null;
+ // let aciTreeItem = item || pgBrowser.treeMenu.selected();
+ let treeNode = pgBrowser.treeMenu.findNodeByDomElement(item);
+
+ if (treeNode) {
+ let nodeData;
+ let databaseNode = treeNode.ancestorNode(
+ (node) => {
+ nodeData = node.getData();
+ return (nodeData._type === 'database');
+ }
+ );
+ let isServerNode = (node) => {
+ nodeData = node.getData();
+ return nodeData._type === 'server';
+ };
+
+ if (databaseNode !== null) {
+ if (nodeData._label.indexOf('=') >= 0) {
+ this.alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext(
+ 'Databases with = symbols in the name cannot be backed up or restored using this utility.'
+ )
+ );
+ } else {
+ if (databaseNode.anyParent(isServerNode))
+ serverInformation = nodeData;
+ }
+ } else {
+ if (treeNode.anyFamilyMember(isServerNode))
+ serverInformation = nodeData;
+ }
+ }
+
+ if (serverInformation === null) {
+ this.alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext('Please select server or child node from the browser tree.')
+ );
+ }
+ return serverInformation;
+ },
+ psql_tool: function(data, aciTreeIdentifier, gen=false) {
+ const module = 'paths';
+ let preference_name = 'pg_bin_dir';
+ let msg = gettext('Please configure the PostgreSQL Binary Path in the Preferences dialog.');
+ const serverInformation = this.retrieveAncestorOfTypeServer(aciTreeIdentifier);
+
+ if ((serverInformation.type && serverInformation.type === 'ppas') ||
+ serverInformation.server_type === 'ppas') {
+ preference_name = 'ppas_bin_dir';
+ msg = gettext('Please configure the EDB Advanced Server Binary Path in the Preferences dialog.');
+ }
+ const preference = pgBrowser.get_preference(module, preference_name);
+ if (preference) {
+ if (!preference.value) {
+ Alertify.alert(gettext('Configuration required'), msg);
+ return false;
+ }
+ } else {
+ Alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext('Failed to load preference %s of module %s', preference_name, module)
+ );
+ return false;
+ }
+ const node = pgBrowser.treeMenu.findNodeByDomElement(aciTreeIdentifier);
+ if (node === undefined || !node.getData()) {
+ Alertify.alert(
+ gettext('PSQL Error'),
+ gettext('No object selected.')
+ );
+ return;
+ }
+
+ parentData = getTreeNodeHierarchyFromIdentifier.call(
+ pgBrowser,
+ aciTreeIdentifier
+ );
+
+ if(_.isUndefined(parentData.server)) {
+ Alertify.alert(
+ gettext('PSQL Error'),
+ gettext('Please select a server/database object.')
+ );
+ return;
+ }
+
+ const transId = getRandomInt(1, 9999999);
+
+ var panelTitle = '';
+ // Set psql tab title as per prefrences setting.
+ var title_data = {
+ 'database': parentData.database ? parentData.database.label : 'postgres' ,
+ 'username': parentData.server.user_name,
+ 'server': parentData.server.label,
+ 'type': 'psql_tool',
+ };
+ var tab_title_placeholder = pgBrowser.get_preferences_for_module('browser').psql_tab_title_placeholder;
+ panelTitle = generateTitle(tab_title_placeholder, title_data);
+
+ const [panelUrl, panelCloseUrl] = this.getPanelUrls(transId, panelTitle, parentData, gen);
+
+ let psqlToolForm = `
+ <form id="psqlToolForm" action="${panelUrl}" method="post">
+ <input id="title" name="title" hidden />
+ <input name="close_url" value="${panelCloseUrl}" hidden />
+ </form>
+ <script>
+ document.getElementById("title").value = "${_.escape(panelTitle)}";
+ document.getElementById("psqlToolForm").submit();
+ </script>
+ `;
+ var open_new_tab = pgBrowser.get_preferences_for_module('browser').new_browser_tab_open;
+ if (open_new_tab && open_new_tab.includes('psql_tool')) {
+ var newWin = window.open('', '_blank');
+ newWin.document.write(psqlToolForm);
+ newWin.document.title = panelTitle;
+ } else {
+ /* On successfully initialization find the properties panel,
+ * create new panel and add it to the dashboard panel.
+ */
+ var propertiesPanel = pgBrowser.docker.findPanels('properties');
+ var psqlToolPanel = pgBrowser.docker.addPanel('frm_psqltool', wcDocker.DOCK.STACKED, propertiesPanel[0]);
+
+ // Set panel title and icon
+ setPanelTitle(psqlToolPanel, panelTitle);
+ psqlToolPanel.icon('fas fa-terminal psql-tab-style');
+ psqlToolPanel.focus();
+
+ var openPSQLToolURL = function(j) {
+ // add spinner element
+ let $spinner_el =
+ $(`<div class="pg-sp-container">
+ <div class="pg-sp-content">
+ <div class="row">
+ <div class="col-12 pg-sp-icon"></div>
+ </div>
+ </div>
+ </div>`).appendTo($(j).data('embeddedFrame').$container);
+
+ let init_poller_id = setInterval(function() {
+ var frameInitialized = $(j).data('frameInitialized');
+ if (frameInitialized) {
+ clearInterval(init_poller_id);
+ var frame = $(j).data('embeddedFrame');
+ if (frame) {
+ frame.onLoaded(()=>{
+ $spinner_el.remove();
+ });
+ frame.openHTML(psqlToolForm);
+ }
+ }
+ }, 100);
+ };
+
+ openPSQLToolURL(psqlToolPanel);
+
+ }
+
+ },
+ getPanelUrls: function(transId, panelTitle, parentData) {
+ let openUrl = url_for('psql.panel', {
+ trans_id: transId,
+ });
+ const misc_preferences = pgBrowser.get_preferences_for_module('misc');
+ var theme = misc_preferences.theme;
+
+ openUrl += `?sgid=${parentData.server_group._id}`
+ +`&sid=${parentData.server._id}`
+ +`&server_type=${parentData.server.server_type}`
+ + `&theme=${theme}`;
+
+ if(parentData.database && parentData.database._id) {
+ let db_label = parentData.database._label.replace('\\', '\\\\');
+ openUrl += `&db=${_.escape(db_label)}`;
+ } else {
+ openUrl += `&db=${''}`;
+ }
+
+ let closeUrl = url_for('psql.close', {
+ trans_id: transId,
+ });
+ return [openUrl, closeUrl];
+ },
+ psql_terminal: function() {
+ // theme colors
+ var term = new terminal({
+ cursorBlink: true,
+ macOptionIsMeta: true,
+ scrollback: 10000,
+ });
+
+ return term;
+ },
+ psql_Addon: function(term) {
+ const fitAddon = this.psql_fit_screen();
+ term.loadAddon(fitAddon);
+
+ const webLinksAddon = this.psql_web_link();
+ term.loadAddon(webLinksAddon);
+
+ const searchAddon = this.psql_search();
+ term.loadAddon(searchAddon);
+
+ fitAddon.fit();
+ term.resize(15, 50);
+ fitAddon.fit();
+ return fitAddon;
+ },
+ psql_fit_screen: function() {
+ return new FitAddon();
+ },
+ psql_web_link: function() {
+ return new WebLinksAddon();
+ },
+ psql_search: function() {
+ return new SearchAddon();
+ },
+ psql_socket: function() {
+ return io('/pty', {pingTimeout: 120000, pingInterval: 25000});
+ },
+ psql_socket_io: function(socket, is_enable, sid, db, server_type, fitAddon, term) {
+ // Listen all the socket events emit from server.
+ socket.on('pty-output', function(data){
+ if(data.error) {
+ term.write('\r\n');
+ }
+ term.write(data.result);
+ if(data.error) {
+ term.write('\r\n');
+ }
+ });
+ // Connect socket
+ socket.on('connect', () => {
+ if(is_enable == 'True'){
+ socket.emit('start_process', {'sid': sid, 'db': db, 'stype': server_type });
+ }
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('conn_error', (response) => {
+ term.write(response.error);
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('conn_not_allow', () => {
+ term.write('PSQL connection not allowed');
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('disconnect-psql', () => {
+ socket.emit('server-disconnect', {'sid': sid});
+ term.write('\r\nServer disconnected, Connection terminated, To create new connection please open another psql tool.');
+ });
+ },
+ psql_terminal_io: function(term, socket) {
+ // Listen key press event from terminal and emit socket event.
+ let selected_text = '';
+ term.attachCustomKeyEventHandler(e => {
+ e.stopPropagation();
+ if(e.type=='keydown' && e.metaKey &&(e.key == 'v' || e.key == 'V')) {
+ if(selected_text != '') {
+ if (selected_text.length > 0) {
+ socket.emit('socket_input', {'input': selected_text, 'key_name': e.code});
+ selected_text = '';
+ }
+ } else {
+ navigator.clipboard.readText().then( clipText => {
+ selected_text = clipText;
+ if (selected_text.length > 0) {
+ socket.emit('socket_input', {'input': selected_text, 'key_name': e.code});
+ selected_text = '';
+ }
+ });
+ }
+ }else if(e.type=='keydown' && e.metaKey && (e.key == 'c' || e.key == 'C')) {
+ if (term.hasSelection()) {
+ selected_text = term.getSelection();
+ } else {
+ selected_text = clipboard.readText();
+ }
+ }
+ return true;
+ });
+
+ term.onKey(function (ev) {
+ if (pgAdmin['allow_psql_shell_commands']) {
+ socket.emit('socket_input', {'input': ev.key, 'key_name': ev.domEvent.code});
+ } else {
+ socket.emit('socket_input', {'input': ev.key, 'key_name': ev.domEvent.code});
+ }
+ });
+ }
+ };
+
+ return pgBrowser.psql;
+}
+
diff --git a/web/pgadmin/tools/psql/templates/editor_template.html b/web/pgadmin/tools/psql/templates/editor_template.html
new file mode 100644
index 00000000..86812c79
--- /dev/null
+++ b/web/pgadmin/tools/psql/templates/editor_template.html
@@ -0,0 +1,83 @@
+{% extends "base.html" %}
+{% block title %}{{title}}{% endblock %}
+
+{% block css_link %}
+<link type="text/css" rel="stylesheet" href="{{ url_for('browser.browser_css')}}"/>
+{% endblock %}
+{% block body %}
+<style>
+ body {padding: 0px;}
+ {% if is_desktop_mode and is_linux %}
+ .alertify .ajs-dimmer,.alertify .ajs-modal{-webkit-transform: none;}
+ .alertify-notifier{-webkit-transform: none;}
+ .alertify-notifier .ajs-message{-webkit-transform: none;}
+ .alertify .ajs-dialog.ajs-shake{-webkit-animation-name: none;}
+ .sql-editor-busy-icon.fa-pulse{-webkit-animation: none;}
+ {% endif %}
+</style>
+<div style="width: 100%; height: 100%;" id="psql-terminal" class="psql_terminal"></div>
+{% endblock %}
+
+
+{% block init_script %}
+require(
+ ['sources/generated/psql_tool'],
+ function(pgBrowser) {
+ <!--Theme colors-->
+ var theme_colors = {
+ 'standard': {
+ background: '#FFF',
+ foreground: '#000',
+ cursor: '#000',
+ cursorAccent: '#000',
+ selection: '#DDD',
+ },
+ 'dark': {
+ background: '#212121',
+ foreground: '#d4d4d4',
+ cursor: '#d4d4d4',
+ cursorAccent: '#d4d4d4',
+ selection: '#323e43',
+ },
+ 'high_contrast': {
+ background: '#010b15',
+ foreground: '#fff',
+ cursor: '#fff',
+ cursorAccent: '#fff',
+ selection: '#84d6ff',
+ }
+ }
+
+ const term = self.pgAdmin.Browser.psql.psql_terminal();
+ <!--Addon for fitAddon, webLinkAddon, SearchAddon -->
+ const fitAddon = self.pgAdmin.Browser.psql.psql_Addon(term);
+ <!-- Update the theme for terminal-->
+ term.setOption('theme', theme_colors['{{theme}}']);
+ <!-- Open the terminal -->
+ term.open(document.getElementById('psql-terminal'));
+ <!-- Socket-->
+ const socket = self.pgAdmin.Browser.psql.psql_socket();
+ self.pgAdmin.Browser.psql.psql_socket_io(socket, '{{is_enable}}', '{{sid}}', '{{db}}', '{{server_type}}', fitAddon, term);
+ self.pgAdmin.Browser.psql.psql_terminal_io(term, socket);
+
+ <!-- Resize the terminal -->
+ function fitToscreen(){
+ fitAddon.fit()
+ socket.emit("resize", {"cols": term.cols, "rows": term.rows})
+ }
+
+ function debounce(func, wait_ms) {
+ let timeout
+ return function(...args) {
+ const context = this
+ clearTimeout(timeout)
+ timeout = setTimeout(() => func.apply(context, args), wait_ms)
+ }
+ }
+
+ const wait_ms = 50;;
+ window.onresize = debounce(fitToscreen, wait_ms)
+ });
+{% endblock %}
+
+
diff --git a/web/pgadmin/tools/psql/tests/__init__.py b/web/pgadmin/tools/psql/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/web/pgadmin/tools/psql/tests/psql_test_data.json b/web/pgadmin/tools/psql/tests/psql_test_data.json
new file mode 100644
index 00000000..4148c75b
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/psql_test_data.json
@@ -0,0 +1,184 @@
+{
+ "psql_user_input": [
+ {
+ "name": "Enter Select 1;",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter Backspace",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_backspace": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "Enter Backspace",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_backspace": true,
+ "move_cursor_up": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowUp",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowUp": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowUp",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowUp": true,
+ "is_history": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowLeft",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowLeft": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowRight",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowRight": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "Read previous executed command",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowRight": true,
+ "move_cursor_right": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Meta command \\! not allowed",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\!",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Meta command \\! with other cmd not allowed",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\! ls",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Valid commands",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select \"\\!\"",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "First command as enter",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Exist psql terminal by using \\q",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\q",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ }
+ ],
+ "resize_terminal": [
+ {
+ "name": "Resize psql terminal as per UI.",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_data": {
+ "cols": 141,
+ "rows": 39
+ },
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ }
+ ],
+ "backend_task": [
+ {
+ "name": "Backend Task",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "Select 1;",
+ "is_backend_task": true,
+ "mock_data": {
+ "is_test": true
+ },
+ "expected_data": {
+ }
+ }
+ ]
+}
diff --git a/web/pgadmin/tools/psql/tests/test_backend_task.py b/web/pgadmin/tools/psql/tests/test_backend_task.py
new file mode 100644
index 00000000..a4f14ee4
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_backend_task.py
@@ -0,0 +1,87 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLBackend(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('backend_task',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username'],
+ 'is_test': True,
+ 'count': 0
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for p in self.server['db_password']:
+ input_data = {
+ 'input': p,
+ 'key_name': 'Key{0}'.format(p)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_panel.py b/web/pgadmin/tools/psql/tests/test_panel.py
new file mode 100644
index 00000000..6f93c8c2
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_panel.py
@@ -0,0 +1,36 @@
+import uuid
+import random
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+
+
+class PSQLPanel(BaseTestGenerator):
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ self.theme = 'standard'
+
+ def runTest(self):
+ trans_id = random.randint(1, 9999999)
+ url = '/psql/panel/{trans_id}?sgid={sgid}&sid={sid}&server_type=pg' \
+ '&db={db_name}&theme={theme}'.\
+ format(trans_id=trans_id, sgid=self.sgid, sid=self.sid,
+ db_name=self.db_name, theme=self.theme)
+
+ response = self.tester.post(
+ url, data={"title": "panel_title"},
+ content_type="application/x-www-form-urlencoded")
+ self.assertEqual(response.status_code, 200)
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_psql_disabled.py b/web/pgadmin/tools/psql/tests/test_psql_disabled.py
new file mode 100644
index 00000000..7dc52498
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_psql_disabled.py
@@ -0,0 +1,34 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketDisabled(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = False
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'conn_not_allow'
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_psql_input.py b/web/pgadmin/tools/psql/tests/test_psql_input.py
new file mode 100644
index 00000000..6f6eabe7
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_psql_input.py
@@ -0,0 +1,148 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLInput(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('psql_user_input',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_backspace') and self.is_backspace:
+ if hasattr(self, 'move_cursor_up') and self.move_cursor_up:
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowUp'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Backspace'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowUp') and self.is_arrowUp:
+ if hasattr(self, 'is_history') and self.is_history:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowUp'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowLeft') and self.is_arrowLeft:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'ArrowLeft'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowRight') and self.is_arrowRight:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'ArrowRight'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'move_cursor_right') and self.is_arrowRight:
+ for i in range(2):
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowLeft'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowRight'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_resize_terminal.py b/web/pgadmin/tools/psql/tests/test_resize_terminal.py
new file mode 100644
index 00000000..d305c2d0
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_resize_terminal.py
@@ -0,0 +1,58 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLResizeTerminal(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('resize_terminal',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.emit('resize', self.input_data, namespace='/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_socket_connect.py b/web/pgadmin/tools/psql/tests/test_socket_connect.py
new file mode 100644
index 00000000..3791525a
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_socket_connect.py
@@ -0,0 +1,35 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketConnect(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_socket_disconnect.py b/web/pgadmin/tools/psql/tests/test_socket_disconnect.py
new file mode 100644
index 00000000..0619eb30
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_socket_disconnect.py
@@ -0,0 +1,52 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketDisconnect(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_test_client = app.test_client()
+ flask_test_client.get('/')
+
+ self.test_client = socketio.test_client(
+ app,
+ flask_test_client=flask_test_client,
+ namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_start_process.py b/web/pgadmin/tools/psql/tests/test_start_process.py
new file mode 100644
index 00000000..1245de3f
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_start_process.py
@@ -0,0 +1,57 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLStartProcess(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ import random
+ trans_id = random.randint(1, 9999999)
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_start_process_fail.py b/web/pgadmin/tools/psql/tests/test_start_process_fail.py
new file mode 100644
index 00000000..0acc7be2
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_start_process_fail.py
@@ -0,0 +1,48 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLStartProcessFail(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+ config.ENABLE_PSQL = False
+ self.test_client.emit('start_process', data, namespace='/pty')
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'conn_not_allow'
+
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/utils.py b/web/pgadmin/tools/psql/tests/utils.py
new file mode 100644
index 00000000..85bd5373
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/utils.py
@@ -0,0 +1,6 @@
+import os
+import json
+
+CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
+with open(CURRENT_PATH + "/psql_test_data.json") as data_file:
+ test_cases = json.load(data_file)
diff --git a/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss b/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
index 0bb40802..a58eb7e9 100644
--- a/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
+++ b/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
@@ -374,3 +374,20 @@ div.strikeout:after {
/* Setting it to hardcoded white as the SVG generated is having white bg
* Need to check what can be done.
*/
+
+/* Css for psql */
+.psql_terminal .terminal {
+ padding-top: 1%;
+ padding-left: 0.5%;
+ height: 100%;
+}
+
+.psql-icon-style {
+ font-size: inherit;
+ padding-left: 0em;
+}
+
+.psql-tab-style {
+ font-size: small;
+ padding-left: 0em;
+}
diff --git a/web/pgadmin/utils/csrf.py b/web/pgadmin/utils/csrf.py
index 23abfffa..71ae82ea 100644
--- a/web/pgadmin/utils/csrf.py
+++ b/web/pgadmin/utils/csrf.py
@@ -38,6 +38,7 @@ class _PGCSRFProtect(CSRFProtect):
'pgadmin.tools.schema_diff.ddl_compare',
'pgadmin.authenticate.login',
'pgadmin.tools.erd.panel',
+ 'pgadmin.tools.psql.panel',
]
for exempt in exempt_views:
diff --git a/web/pgadmin/utils/driver/psycopg2/server_manager.py b/web/pgadmin/utils/driver/psycopg2/server_manager.py
index 2a951b6e..3be5d833 100644
--- a/web/pgadmin/utils/driver/psycopg2/server_manager.py
+++ b/web/pgadmin/utils/driver/psycopg2/server_manager.py
@@ -527,6 +527,15 @@ WHERE db.oid = {0}""".format(did))
return None
+ def extract_password(self):
+ if self.password:
+ crypt_key_present, crypt_key = get_crypt_key()
+ if not crypt_key_present:
+ return False, crypt_key
+
+ password = decrypt(self.password, crypt_key).decode()
+ return password
+
def export_password_env(self, env):
if self.password:
crypt_key_present, crypt_key = get_crypt_key()
diff --git a/web/pgadmin/utils/preferences.py b/web/pgadmin/utils/preferences.py
index 15ceeb1a..e9efe479 100644
--- a/web/pgadmin/utils/preferences.py
+++ b/web/pgadmin/utils/preferences.py
@@ -72,6 +72,7 @@ class _Preference(object):
self.select2 = kwargs.get('select2', None)
self.fields = kwargs.get('fields', None)
self.allow_blanks = kwargs.get('allow_blanks', None)
+ self.disabled = kwargs.get('disabled', False)
# Look into the configuration table to find out the id of the specific
# preference.
@@ -252,6 +253,7 @@ class _Preference(object):
'select2': self.select2,
'value': self.get(),
'fields': self.fields,
+ 'disabled': self.disabled,
}
return res
@@ -414,6 +416,7 @@ class Preferences(object):
:param fields: field schema (if preference has more than one field to
take input from user e.g. keyboardshortcut preference)
:param allow_blanks: Flag specify whether to allow blank value.
+ :param disabled: Flag specify whether to disable the setting or not.
"""
min_val = kwargs.get('min_val', None)
max_val = kwargs.get('max_val', None)
@@ -423,6 +426,7 @@ class Preferences(object):
select2 = kwargs.get('select2', None)
fields = kwargs.get('fields', None)
allow_blanks = kwargs.get('allow_blanks', None)
+ disabled = kwargs.get('disabled', False)
cat = self.__category(category, category_label)
if name in cat['preferences']:
@@ -439,7 +443,8 @@ class Preferences(object):
(cat['preferences'])[name] = res = _Preference(
cat['id'], name, label, _type, default, help_str=help_str,
min_val=min_val, max_val=max_val, options=options,
- select2=select2, fields=fields, allow_blanks=allow_blanks
+ select2=select2, fields=fields, allow_blanks=allow_blanks,
+ disabled=disabled
)
return res
diff --git a/web/webpack.config.js b/web/webpack.config.js
index 779f2faa..f631178b 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.js
@@ -355,6 +355,7 @@ module.exports = [{
debugger_direct: './pgadmin/tools/debugger/static/js/direct.js',
schema_diff: './pgadmin/tools/schema_diff/static/js/schema_diff_hook.js',
erd_tool: './pgadmin/tools/erd/static/js/erd_tool_hook.js',
+ psql_tool: './pgadmin/tools/psql/static/js/index.js',
file_utils: './pgadmin/misc/file_manager/static/js/utility.js',
'pgadmin.style': pgadminCssStyles,
pgadmin: pgadminScssStyles,
@@ -493,7 +494,7 @@ module.exports = [{
],
},
},
- }, {
+ },{
test: require.resolve('./node_modules/acitree/js/jquery.aciTree.min'),
use: {
loader: 'imports-loader',
@@ -532,6 +533,7 @@ module.exports = [{
'pure|pgadmin.tools.storage_manager',
'pure|pgadmin.tools.search_objects',
'pure|pgadmin.tools.erd_module',
+ 'pure|pgadmin.tools.psql_module',
],
},
},
diff --git a/web/webpack.shim.js b/web/webpack.shim.js
index 074b2580..e0b28091 100644
--- a/web/webpack.shim.js
+++ b/web/webpack.shim.js
@@ -159,6 +159,15 @@ var webpackShimConfig = {
'jquery.acisortable': path.join(__dirname, './node_modules/acitree/js/jquery.aciSortable.min'),
'jquery.acifragment': path.join(__dirname, './node_modules/acitree/js/jquery.aciFragment.min'),
+ //xterm
+ 'xterm': path.join(__dirname, './node_modules/xterm/lib/xterm.js'),
+ 'xterm-addon-fit': path.join(__dirname, './node_modules/xterm-addon-fit/lib/xterm-addon-fit.js'),
+ 'xterm-addon-web-links': path.join(__dirname, './node_modules/xterm-addon-web-links/lib/xterm-addon-web-links.js'),
+ 'xterm-addon-search': path.join(__dirname, './node_modules/xterm-addon-search/lib/xterm-addon-search.js'),
+
+ //socket
+ 'socketio': path.join(__dirname, './node_modules/socket.io-client/dist/socket.io.js'),
+
// Backbone and Backgrid
'backbone': path.join(__dirname, './node_modules/backbone/backbone'),
'backbone.undo': path.join(__dirname, './node_modules/backbone-undo/Backbone.Undo'),
@@ -288,6 +297,8 @@ var webpackShimConfig = {
'pgadmin.tools.storage_manager': path.join(__dirname, './pgadmin/tools/storage_manager/static/js/storage_manager'),
'pgadmin.tools.erd_module': path.join(__dirname, './pgadmin/tools/erd/static/js/erd_module'),
'pgadmin.tools.erd': path.join(__dirname, './pgadmin/tools/erd/static/js'),
+ 'pgadmin.tools.psql_module': path.join(__dirname, './pgadmin/tools/psql/static/js/psql_module'),
+ 'pgadmin.tools.psql': path.join(__dirname, './pgadmin/tools/psql/static/js'),
'pgadmin.search_objects': path.join(__dirname, './pgadmin/tools/search_objects/static/js'),
'pgadmin.tools.user_management': path.join(__dirname, './pgadmin/tools/user_management/static/js/user_management'),
'pgadmin.user_management.current_user': '/user_management/current_user',
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index e0b6fd69..3cc079f9 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -177,6 +177,7 @@ module.exports = {
'pgadmin.browser.preferences': path.join(__dirname, './pgadmin/browser/static/js/preferences'),
'pgadmin.browser.activity': path.join(__dirname, './pgadmin/browser/static/js/activity'),
'pgadmin.tools.erd': path.join(__dirname, './pgadmin/tools/erd/static/js'),
+ 'pgadmin.tools.psql': path.join(__dirname, './pgadmin/tools/psql/static/js'),
'bundled_codemirror': path.join(__dirname, './pgadmin/static/bundle/codemirror'),
'tools': path.join(__dirname, './pgadmin/tools/'),
'pgadmin.user_management.current_user': regressionDir + '/javascript/fake_current_user',
view thread (54+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: [pgAdmin][RM-2341]: Add menu option for starting PSQL
In-Reply-To: <CAOBg0APGPTA4qNNryAXMwKP63uFLxQdQwnFdDXMjSr4OeH-HAg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox