|
|
@@ -91,7 +91,7 @@ func (o Oftp) Call() error {
|
|
|
dataBuf := make([]byte, o.OftpBuffer)
|
|
|
|
|
|
// Read STH (header)
|
|
|
- conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
readCnt, err := conn.Read(headerBuf)
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -105,7 +105,7 @@ func (o Oftp) Call() error {
|
|
|
}
|
|
|
|
|
|
// Read OFTP command
|
|
|
- conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
readCnt, err = conn.Read(dataBuf)
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -119,8 +119,10 @@ func (o Oftp) Call() error {
|
|
|
|
|
|
fmt.Printf("Received SSRM (%d)\n", readCnt)
|
|
|
|
|
|
+ fmt.Printf("%x\n", o.LocalSSID())
|
|
|
+
|
|
|
// 3. Send SSID
|
|
|
- conn.SetWriteDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetWriteDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
writtenCnt, err := conn.Write(o.LocalSSID())
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -131,7 +133,7 @@ func (o Oftp) Call() error {
|
|
|
|
|
|
// 4. Wait for SSID
|
|
|
// Read STH (header)
|
|
|
- conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
readCnt, err = conn.Read(headerBuf)
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -145,7 +147,7 @@ func (o Oftp) Call() error {
|
|
|
}
|
|
|
|
|
|
// Read OFTP command
|
|
|
- conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetReadDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
readCnt, err = conn.Read(dataBuf)
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -170,7 +172,7 @@ func (o Oftp) Call() error {
|
|
|
fmt.Printf("Received SSID (%d)\n", readCnt)
|
|
|
|
|
|
// 6. Send ESID
|
|
|
- conn.SetWriteDeadline(time.Now().Add(time.Duration(o.NetworkTimeout)*time.Second))
|
|
|
+ conn.SetWriteDeadline(time.Now().Add(time.Duration(o.NetworkTimeout) * time.Second))
|
|
|
writtenCnt, err = conn.Write(o.ESID(ESIDCode))
|
|
|
if err != nil {
|
|
|
conn.Close()
|
|
|
@@ -195,17 +197,26 @@ func (o Oftp) Call() error {
|
|
|
|
|
|
func (o Oftp) LocalSSID() []byte {
|
|
|
dataBuf := [61]byte{}
|
|
|
+
|
|
|
copy(dataBuf[0:1], "X")
|
|
|
copy(dataBuf[1:2], fmt.Sprintf("%d", o.OftpLevel))
|
|
|
- copy(dataBuf[2:27], o.LocalCode)
|
|
|
- copy(dataBuf[27:35], o.LocalPassword)
|
|
|
+ copy(dataBuf[2:27], fmt.Sprintf("%-25s", o.LocalCode))
|
|
|
+ copy(dataBuf[27:35], fmt.Sprintf("%-8s", o.LocalPassword))
|
|
|
copy(dataBuf[35:40], fmt.Sprintf("%05d", o.OftpBuffer))
|
|
|
copy(dataBuf[40:41], o.OftpDuplex)
|
|
|
copy(dataBuf[41:42], o.OftpCompression)
|
|
|
copy(dataBuf[42:43], o.OftpRestart)
|
|
|
copy(dataBuf[43:44], "N")
|
|
|
copy(dataBuf[44:47], fmt.Sprintf("%03d", o.OftpCredit))
|
|
|
- copy(dataBuf[47:48], o.OftpAuthentication)
|
|
|
+
|
|
|
+ if o.OftpLevel > 4 {
|
|
|
+ copy(dataBuf[47:48], o.OftpAuthentication)
|
|
|
+ copy(dataBuf[48:52], fmt.Sprintf("%-4s", ""))
|
|
|
+ } else {
|
|
|
+ copy(dataBuf[47:52], fmt.Sprintf("%-5s", ""))
|
|
|
+ }
|
|
|
+
|
|
|
+ copy(dataBuf[52:60], fmt.Sprintf("%-8s", ""))
|
|
|
copy(dataBuf[60:61], "\r")
|
|
|
|
|
|
sth := buildSTH(len(dataBuf))
|