Skip to content

Instantly share code, notes, and snippets.

@tranch
Last active August 29, 2015 14:14
Show Gist options
  • Save tranch/010099b0d5ca2529cb2a to your computer and use it in GitHub Desktop.
Save tranch/010099b0d5ca2529cb2a to your computer and use it in GitHub Desktop.
HeidiSQL protocol forwarding

HeidiSQL Protocol Forwarding

此项目帮助你创建一个协议,以便于使用点击链接的形式打开 HeidiSQL 连接到目标数据库,你可以批量生成以下格式的 url 链接来管理大量数据库,而不必手动在 HeidiSQL 中一个个添加配置:

heidisql://user:password@host:port?nettyp=0&description=session_name

关于命令行参数的详细介绍,请参见 HeidiSQL 的 官方文档 。此处需要说明的是,如果使用 SSH Tunnel 选项,需要指定 --description 参数,值为预先创建的 session 的名称。

安装

  1. Clone 或下载本项目
  2. 修改 HeidiSQLForwardProtocol.reg,确保 HeidiSQL、python、 HeidiSQLForward.py 的文件路径正确。
  3. 双击 HeidiSQLForwardProtocol.reg 导入注册表。

注意

本项目只是简单实现了协议,为确保安全你需要考虑在生成链接时加密内容,在 HeidiSQLForward.py 中再解密。

<html>
<body>
<ul>
<li><a href="heidisql://root:123456@localhost:3306">localhost</a></li>
<li><a href="heidisql://[email protected]:3306">example.com</a></li>
</ul>
</body>
</html>
import sys
import subprocess
from urlparse import urlparse, parse_qs
def main(script, plate):
url = urlparse(plate)
query_string = parse_qs(url.query)
application = r'D:\Program Files\HeidiSQL\heidisql.exe'
command = [application,
'--host=%s' % url.hostname,
'--port=%d' % (url.port or 3306),
'--user=%s' % (url.username or 'root')]
if url.password:
command.append('--password=%s' % url.password)
if 'nettype' in query_string:
command.append('--nettype=%s' % query_string['nettype'][0])
if 'description' in query_string:
command.append('--description=%s' % query_string['description'][0])
subprocess.Popen(command)
if __name__ == '__main__':
main(*sys.argv)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\HeidiSQL]
@="URL:HeidiSQL"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\HeidiSQL\shell]
[HKEY_CLASSES_ROOT\HeidiSQL\shell\open]
[HKEY_CLASSES_ROOT\HeidiSQL\shell\open\command]
@="\"C:\\bin\\python27\\python\" \"C:\\Users\\Administrator\\bin\\HeidiSQLForward.py\" \"%1\""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment