Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit55a1259

Browse files
committed
set serial num in network discovery
1 parentd9c4fb9 commit55a1259

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
arduino ALL=(ALL) NOPASSWD: /usr/sbin/dpkg-reconfigure openssh-server, /usr/bin/systemctl enable ssh, /usr/bin/systemctl start ssh, /usr/bin/systemctl disable ssh, /usr/bin/systemctl stop ssh, /usr/bin/systemctl disable avahi-daemon, /usr/bin/systemctl stop avahi-daemon, /usr/bin/systemctl enable avahi-daemon, /usr/bin/systemctl start avahi-daemon
1+
arduino ALL=(ALL) NOPASSWD: /usr/sbin/dpkg-reconfigure openssh-server, /usr/bin/systemctl enable ssh, /usr/bin/systemctl start ssh, /usr/bin/systemctl disable ssh, /usr/bin/systemctl stop ssh, /usr/bin/systemctl disable avahi-daemon, /usr/bin/systemctl stop avahi-daemon, /usr/bin/systemctl enable avahi-daemon, /usr/bin/systemctl start avahi-daemon, /usr/bin/mv /tmp/avahi_arduino_conf.service /etc/avahi/services/arduino.service, /usr/bin/chmod 0600 /etc/avahi/services/arduino.service

‎pkg/board/board.go‎

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,8 @@ func EnableNetworkMode(ctx context.Context, conn remote.RemoteConn) error {
353353
{"sudo","systemctl","enable","avahi-daemon"},
354354
{"sudo","systemctl","start","avahi-daemon"},
355355
}
356-
357356
ifsn,err:=getSerial(&local.LocalConnection{});err==nil {
358-
iferr:=setSerialNumber(sn,"/etc/avahi/services/arduino.service");err!=nil {
357+
iferr:=setSerialNumber(ctx,conn,sn,"/etc/avahi/services/arduino.service");err!=nil {
359358
slog.Warn("failed to set serial number for network mode",slog.Any("error",err))
360359
}
361360
}
@@ -369,38 +368,55 @@ func EnableNetworkMode(ctx context.Context, conn remote.RemoteConn) error {
369368
returnnil
370369
}
371370

372-
funcsetSerialNumber(serialNumber,filePathstring)error {
371+
funcsetSerialNumber(ctx context.Context,conn remote.RemoteConn,serialNumber,filePathstring)error {
373372
serialCheckRegex:=regexp.MustCompile(`<\s*txt-record\s*>\s*serial_number=\S+\s*<\s*/txt-record\s*>`)
374373
serviceEndTag:=regexp.MustCompile(`</service>`)
375374
newSerialTemplate:=`<txt-record>serial_number=%s</txt-record>
376375
`
377376
ifserialNumber=="" {
378377
returnerrors.New("missing or empty serial number")
379378
}
380-
381379
data,err:=os.ReadFile(filePath)
382380
iferr!=nil {
383381
ifos.IsNotExist(err) {
382+
slog.Warn("service file does not exist, skipping serial number setup",slog.String("filePath",filePath))
384383
returnnil
385384
}
386385
returnerr
387386
}
388-
389387
ifserialCheckRegex.Match(data) {
390388
returnnil
391389
}
392-
393390
loc:=serviceEndTag.FindIndex(data)
394391
ifloc==nil {
395392
returnerrors.New(" </service> tag not found in the service file")
396393
}
397394

398395
varbuf bytes.Buffer
399-
buf.Write(data[:loc[0]])
400-
buf.WriteString(fmt.Sprintf(newSerialTemplate,serialNumber))
401-
buf.Write(data[loc[0]:])
396+
_,err=buf.Write(data[:loc[0]])
397+
iferr!=nil {
398+
returnerr
399+
}
400+
_,err=buf.WriteString(fmt.Sprintf(newSerialTemplate,serialNumber))
401+
iferr!=nil {
402+
returnerr
403+
}
404+
_,err=buf.Write(data[loc[0]:])
405+
iferr!=nil {
406+
returnerr
407+
}
402408

403-
returnos.WriteFile(filePath,buf.Bytes(),0600)
409+
tmpPath:="/tmp/avahi_arduino_conf.service"
410+
iferr:=conn.WriteFile(bytes.NewReader(buf.Bytes()),tmpPath);err!=nil {
411+
returnfmt.Errorf("failed to write temporary file on remote: %w",err)
412+
}
413+
ifout,err:=conn.GetCmd("sudo","mv",tmpPath,filePath).Output(ctx);err!=nil {
414+
returnfmt.Errorf("failed to move file into place with sudo mv: %w: %s",err,string(out))
415+
}
416+
ifout,err:=conn.GetCmd("sudo","chmod","0644",filePath).Output(ctx);err!=nil {
417+
slog.Warn("failed to set permissions on remote service file","file",filePath,"error",err,"output",string(out))
418+
}
419+
returnnil
404420
}
405421

406422
funcNetworkModeStatus(ctx context.Context,conn remote.RemoteConn) (bool,error) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp