codecraftai-protocol-ssh 1.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,49 @@
1
+ """
2
+ .. module:: sshconst
3
+ :platform: Darwin, Linux, Unix, Windows
4
+ :synopsis: Module containing ssh constants
5
+
6
+ .. moduleauthor:: Myron Walker <myron.walker@gmail.com>
7
+
8
+ """
9
+
10
+ __author__ = "Myron Walker"
11
+ __copyright__ = "Copyright 2025, Code Craft AI LLC"
12
+ __credits__ = []
13
+
14
+
15
+ import dataclasses
16
+ import os
17
+ import re
18
+
19
+ from ccai.credentials.sshcredential import SshCredential
20
+
21
+ DEFAULT_SSH_TIMEOUT = 300
22
+ DEFAULT_SSH_RETRY_INTERVAL = .5
23
+
24
+ DEFAULT_FAILURE_LABEL = "Failure"
25
+ DEFAULT_SUCCESS_LABEL = "Success"
26
+
27
+ INTERACTIVE_PROMPT="PROMPT%:%:%"
28
+ INTERACTIVE_PROMPT_BYTES = INTERACTIVE_PROMPT.encode('utf-8')
29
+
30
+ TEMPLATE_COMMAND_FAILURE = "RUNCMD%s: " + DEFAULT_FAILURE_LABEL + " running CMD=%s" + os.linesep + "STDOUT:" + os.linesep + "%s" + os.linesep + "STDERR:" + os.linesep + "%s"
31
+ TEMPLATE_COMMAND_SUCCESS = "RUNCMD%s: " + DEFAULT_SUCCESS_LABEL + " running CMD=%s" + os.linesep + "STDOUT:" + os.linesep + "%s" + os.linesep + "STDERR:" + os.linesep + "%s"
32
+
33
+ # PERMS LINKS OWNER GROUPS SIZE MONTH DAY TIME NAME
34
+ # rwxrwxrwx 24 myron myron 4096 Jul 4 00:37 PCBs
35
+ REGEX_DIRECTORY_ENTRY = re.compile(r"([\S]+)\s+([0-9]+)\s+([\S]+)\s+([\S]+)\s+([0-9]+)\s+([A-Za-z]+\s+[0-9]+\s+(?:[0-9:]+|[0-9]+))\s+(.+)")
36
+
37
+
38
+ @dataclasses.dataclass
39
+ class SshJumpParams:
40
+ """
41
+ Parameters describing an SSH jump host used for tunneling.
42
+
43
+ :param host: Hostname or IP address of the jump server.
44
+ :param credential: Credential used when connecting to the jump host.
45
+ :param port: Port number of the SSH service.
46
+ """
47
+ host: str
48
+ credential: SshCredential
49
+ port: int = 22
@@ -0,0 +1,185 @@
1
+ """
2
+ SSH Protocol Constants
3
+ """
4
+
5
+ # SSH Message Numbers
6
+ SSH_MSG_DISCONNECT = 1
7
+ SSH_MSG_IGNORE = 2
8
+ SSH_MSG_UNIMPLEMENTED = 3
9
+ SSH_MSG_DEBUG = 4
10
+ SSH_MSG_SERVICE_REQUEST = 5
11
+ SSH_MSG_SERVICE_ACCEPT = 6
12
+
13
+ # Key Exchange
14
+ SSH_MSG_KEXINIT = 20
15
+ SSH_MSG_NEWKEYS = 21
16
+
17
+ # Diffie-Hellman Key Exchange
18
+ SSH_MSG_KEXDH_INIT = 30
19
+ SSH_MSG_KEXDH_REPLY = 31
20
+
21
+ # User Authentication
22
+ SSH_MSG_USERAUTH_REQUEST = 50
23
+ SSH_MSG_USERAUTH_FAILURE = 51
24
+ SSH_MSG_USERAUTH_SUCCESS = 52
25
+ SSH_MSG_USERAUTH_BANNER = 53
26
+
27
+ # Connection Protocol
28
+ SSH_MSG_GLOBAL_REQUEST = 80
29
+ SSH_MSG_REQUEST_SUCCESS = 81
30
+ SSH_MSG_REQUEST_FAILURE = 82
31
+ SSH_MSG_CHANNEL_OPEN = 90
32
+ SSH_MSG_CHANNEL_OPEN_CONFIRMATION = 91
33
+ SSH_MSG_CHANNEL_OPEN_FAILURE = 92
34
+ SSH_MSG_CHANNEL_WINDOW_ADJUST = 93
35
+ SSH_MSG_CHANNEL_DATA = 94
36
+ SSH_MSG_CHANNEL_EXTENDED_DATA = 95
37
+ SSH_MSG_CHANNEL_EOF = 96
38
+ SSH_MSG_CHANNEL_CLOSE = 97
39
+ SSH_MSG_CHANNEL_REQUEST = 98
40
+ SSH_MSG_CHANNEL_SUCCESS = 99
41
+ SSH_MSG_CHANNEL_FAILURE = 100
42
+
43
+ # Extended Data Type Codes (RFC 4254 Section 5.2)
44
+ SSH_EXTENDED_DATA_STDERR = 1
45
+
46
+ # Channel Open Failure Reason Codes (RFC 4254 Section 5.1)
47
+ SSH_OPEN_ADMINISTRATIVELY_PROHIBITED = 1
48
+ SSH_OPEN_CONNECT_FAILED = 2
49
+ SSH_OPEN_UNKNOWN_CHANNEL_TYPE = 3
50
+ SSH_OPEN_RESOURCE_SHORTAGE = 4
51
+
52
+ SSH_OPEN_FAILURE_REASON_NAMES = {
53
+ SSH_OPEN_ADMINISTRATIVELY_PROHIBITED: "SSH_OPEN_ADMINISTRATIVELY_PROHIBITED",
54
+ SSH_OPEN_CONNECT_FAILED: "SSH_OPEN_CONNECT_FAILED",
55
+ SSH_OPEN_UNKNOWN_CHANNEL_TYPE: "SSH_OPEN_UNKNOWN_CHANNEL_TYPE",
56
+ SSH_OPEN_RESOURCE_SHORTAGE: "SSH_OPEN_RESOURCE_SHORTAGE",
57
+ }
58
+
59
+ # Disconnect Reason Codes
60
+ SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT = 1
61
+ SSH_DISCONNECT_PROTOCOL_ERROR = 2
62
+ SSH_DISCONNECT_KEY_EXCHANGE_FAILED = 3
63
+ SSH_DISCONNECT_RESERVED = 4
64
+ SSH_DISCONNECT_MAC_ERROR = 5
65
+ SSH_DISCONNECT_COMPRESSION_ERROR = 6
66
+ SSH_DISCONNECT_SERVICE_NOT_AVAILABLE = 7
67
+ SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED = 8
68
+ SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE = 9
69
+ SSH_DISCONNECT_CONNECTION_LOST = 10
70
+ SSH_DISCONNECT_BY_APPLICATION = 11
71
+ SSH_DISCONNECT_TOO_MANY_CONNECTIONS = 12
72
+ SSH_DISCONNECT_AUTH_CANCELLED_BY_USER = 13
73
+ SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE = 14
74
+ SSH_DISCONNECT_ILLEGAL_USER_NAME = 15
75
+
76
+ # Default Port
77
+ SSH_PORT = 22
78
+
79
+ # Versions
80
+ MSG_STR_VERSION = "SSH-2.0-AutoMojoSSH_0.1"
81
+
82
+ # Terminal Modes (RFC 4254 Section 8)
83
+ TTY_OP_END = 0
84
+ VINTR = 1
85
+ VQUIT = 2
86
+ VERASE = 3
87
+ VKILL = 4
88
+ VEOF = 5
89
+ VEOL = 6
90
+ VEOL2 = 7
91
+ VSTART = 8
92
+ VSTOP = 9
93
+ VSUSP = 10
94
+ VDSUSP = 11
95
+ VREPRINT = 12
96
+ VWERASE = 13
97
+ VLNEXT = 14
98
+ VFLUSH = 15
99
+ VSWTCH = 16
100
+ VSTATUS = 17
101
+ VDISCARD = 18
102
+ IGNPAR = 30
103
+ PARMRK = 31
104
+ INPCK = 32
105
+ ISTRIP = 33
106
+ INLCR = 34
107
+ IGNCR = 35
108
+ ICRNL = 36
109
+ IUCLC = 37
110
+ IXON = 38
111
+ IXANY = 39
112
+ IXOFF = 40
113
+ IMAXBEL = 41
114
+ ISIG = 50
115
+ ICANON = 51
116
+ XCASE = 52
117
+ ECHO = 53
118
+ ECHOE = 54
119
+ ECHOK = 55
120
+ ECHONL = 56
121
+ NOFLSH = 57
122
+ TOSTOP = 58
123
+ IEXTEN = 59
124
+ ECHOCTL = 60
125
+ ECHOKE = 61
126
+ PENDIN = 62
127
+ OPOST = 70
128
+ OLCUC = 71
129
+ ONLCR = 72
130
+ OCRNL = 73
131
+ ONOCR = 74
132
+ ONLRET = 75
133
+ CS7 = 90
134
+ CS8 = 91
135
+ PARENB = 92
136
+ PARODD = 93
137
+ TTY_OP_ISPEED = 128
138
+ TTY_OP_OSPEED = 129
139
+
140
+ # SFTP Protocol (Version 3)
141
+ SSH_FXP_INIT = 1
142
+ SSH_FXP_VERSION = 2
143
+ SSH_FXP_OPEN = 3
144
+ SSH_FXP_CLOSE = 4
145
+ SSH_FXP_READ = 5
146
+ SSH_FXP_WRITE = 6
147
+ SSH_FXP_LSTAT = 7
148
+ SSH_FXP_FSTAT = 8
149
+ SSH_FXP_SETSTAT = 9
150
+ SSH_FXP_FSETSTAT = 10
151
+ SSH_FXP_OPENDIR = 11
152
+ SSH_FXP_READDIR = 12
153
+ SSH_FXP_REMOVE = 13
154
+ SSH_FXP_MKDIR = 14
155
+ SSH_FXP_RMDIR = 15
156
+ SSH_FXP_REALPATH = 16
157
+ SSH_FXP_STAT = 17
158
+ SSH_FXP_RENAME = 18
159
+ SSH_FXP_READLINK = 19
160
+ SSH_FXP_SYMLINK = 20
161
+ SSH_FXP_STATUS = 101
162
+ SSH_FXP_HANDLE = 102
163
+ SSH_FXP_DATA = 103
164
+ SSH_FXP_NAME = 104
165
+ SSH_FXP_ATTRS = 105
166
+ SSH_FXP_EXTENDED = 200
167
+ SSH_FXP_EXTENDED_REPLY = 201
168
+
169
+ # SFTP Attributes
170
+ SSH_FILEXFER_ATTR_SIZE = 0x00000001
171
+ SSH_FILEXFER_ATTR_UIDGID = 0x00000002
172
+ SSH_FILEXFER_ATTR_PERMISSIONS = 0x00000004
173
+ SSH_FILEXFER_ATTR_ACMODTIME = 0x00000008
174
+ SSH_FILEXFER_ATTR_EXTENDED = 0x80000000
175
+
176
+ # SFTP Status Codes
177
+ SSH_FX_OK = 0
178
+ SSH_FX_EOF = 1
179
+ SSH_FX_NO_SUCH_FILE = 2
180
+ SSH_FX_PERMISSION_DENIED = 3
181
+ SSH_FX_FAILURE = 4
182
+ SSH_FX_BAD_MESSAGE = 5
183
+ SSH_FX_NO_CONNECTION = 6
184
+ SSH_FX_CONNECTION_LOST = 7
185
+ SSH_FX_OP_UNSUPPORTED = 8