9 Commits

7 changed files with 73 additions and 7 deletions

View File

@@ -5,3 +5,5 @@ d8b64d5527c2a5e4d76872e5bc3d69f7646135c6 libnmdc-r3
fca41372e400853775b02e951f9db91d87f41adb nmdc-log-service-1.0.1 fca41372e400853775b02e951f9db91d87f41adb nmdc-log-service-1.0.1
050b424a7c5d5a27c9323c8810f3afbead1f5b96 libnmdc-r4 050b424a7c5d5a27c9323c8810f3afbead1f5b96 libnmdc-r4
da9f123633f9c28be6435ed7898139665d4c39d9 nmdc-log-service-1.0.2 da9f123633f9c28be6435ed7898139665d4c39d9 nmdc-log-service-1.0.2
75a78f6a78f249a2cd8aa3d29f7e5e6319b4e03b libnmdc-r5
4116422bb10229d887f9296970a166fa1ef8c5fd nmdc-log-service-1.0.3

View File

@@ -9,6 +9,13 @@ Tags: nmdc
=CHANGELOG= =CHANGELOG=
2016-04-16 r6
- Fix an issue with calling `panic()` on certain types of abnormal network failure
2016-04-04 r5
- Enhancement: Support protocol keepalives
- Enhancement: Support hub redirects (`$ForceMove`)
2016-04-03 r4 2016-04-03 r4
- Feature: Add synchronous API - Feature: Add synchronous API
- Fix an issue with reading HubConnection's state parameter - Fix an issue with reading HubConnection's state parameter

View File

@@ -334,6 +334,20 @@ func (this *HubConnection) processProtocolMessage(message string) {
} }
} }
func CheckIsNetTimeout(err error) bool {
if err == nil {
return false
}
switch err.(type) {
case net.Error:
return err.(net.Error).Timeout()
default:
return false
}
}
func (this *HubConnection) worker() { func (this *HubConnection) worker() {
var fullBuffer string var fullBuffer string
var err error = nil var err error = nil
@@ -372,7 +386,7 @@ func (this *HubConnection) worker() {
this.conn.SetReadDeadline(time.Now().Add(SEND_KEEPALIVE_EVERY)) this.conn.SetReadDeadline(time.Now().Add(SEND_KEEPALIVE_EVERY))
nbytes, err = this.conn.Read(readBuff) nbytes, err = this.conn.Read(readBuff)
if err != nil && err.(net.Error).Timeout() { if CheckIsNetTimeout(err) {
// No data before read deadline // No data before read deadline
err = nil err = nil

View File

@@ -30,6 +30,15 @@ Usage of nmdc-log-service:
=CHANGELOG= =CHANGELOG=
2016-04-16 1.0.4
- Enhancement: Upgrade `libnmdc` from `r5` to `r6`
- Include a sample systemd unit script in source archive
- Fix an issue showing zero connected hubs in user tag
- Fix a cosmetic issue with logging repeated identical connection failure messages
2016-04-04 1.0.3
- Enhancement: Upgrade `libnmdc` from `r4` to `r5`
2016-04-03 1.0.2 2016-04-03 1.0.2
- Enhancement: Upgrade `libnmdc` from `r3` to `r4` - Enhancement: Upgrade `libnmdc` from `r3` to `r4`

View File

@@ -7,6 +7,12 @@ export GOPATH=$(
cygpath -w "$(pwd)" cygpath -w "$(pwd)"
) )
sanitise() {
local tmp=$(mktemp)
cat "$1" | perl -pe 's~C:.Users.......Documents.DEV.~C:/xxxxxxxxxxxxxxxxxxxxxxxxx/~g' > "$tmp"
mv "$tmp" "$1"
}
main() { main() {
local version="" local version=""
@@ -25,21 +31,25 @@ main() {
echo "Building win64..." echo "Building win64..."
GOARCH=amd64 GOOS=windows go build -a -ldflags -s -o nmdc-log-service.exe GOARCH=amd64 GOOS=windows go build -a -ldflags -s -o nmdc-log-service.exe
sanitise nmdc-log-service.exe
7z a -mx9 nmdc-log-service-${version}-win64.7z nmdc-log-service.exe >/dev/null 7z a -mx9 nmdc-log-service-${version}-win64.7z nmdc-log-service.exe >/dev/null
rm ./nmdc-log-service.exe rm ./nmdc-log-service.exe
echo "Building win32..." echo "Building win32..."
GOARCH=386 GOOS=windows go build -a -ldflags -s -o nmdc-log-service.exe GOARCH=386 GOOS=windows go build -a -ldflags -s -o nmdc-log-service.exe
sanitise nmdc-log-service.exe
7z a -mx9 nmdc-log-service-${version}-win32.7z nmdc-log-service.exe >/dev/null 7z a -mx9 nmdc-log-service-${version}-win32.7z nmdc-log-service.exe >/dev/null
rm ./nmdc-log-service.exe rm ./nmdc-log-service.exe
echo "Building linux64..." echo "Building linux64..."
GOARCH=amd64 GOOS=linux go build -a -ldflags -s -o nmdc-log-service GOARCH=amd64 GOOS=linux go build -a -ldflags -s -o nmdc-log-service
sanitise nmdc-log-service
XZ_OPT=-9 tar caf nmdc-log-service-${version}-linux64.tar.xz nmdc-log-service --owner=0 --group=0 XZ_OPT=-9 tar caf nmdc-log-service-${version}-linux64.tar.xz nmdc-log-service --owner=0 --group=0
rm ./nmdc-log-service rm ./nmdc-log-service
echo "Building linux32..." echo "Building linux32..."
GOARCH=386 GOOS=linux go build -a -ldflags -s -o nmdc-log-service GOARCH=386 GOOS=linux go build -a -ldflags -s -o nmdc-log-service
sanitise nmdc-log-service
XZ_OPT=-9 tar caf nmdc-log-service-${version}-linux32.tar.xz nmdc-log-service --owner=0 --group=0 XZ_OPT=-9 tar caf nmdc-log-service-${version}-linux32.tar.xz nmdc-log-service --owner=0 --group=0
rm ./nmdc-log-service rm ./nmdc-log-service

View File

@@ -0,0 +1,14 @@
[Unit]
Description=NMDC Log Service
[Service]
Environment=TZ=Etc/UTC
Type=simple
ExecStart=/home/hublog/nmdc-log-service -Dir /home/hublog/logs/ -Server ... -Nick ... -Password '...' -VerifyTLS=false
Restart=always
RestartSec=30s
User=hublog
Group=nogroup
[Install]
WantedBy=multi-user.target

View File

@@ -51,12 +51,16 @@ func LogMessage(hub, message string) {
} }
} }
func HubWorker(addr, nick, password string) { type HubWorker struct {
LastConnectionStateMessage string
}
func (this *HubWorker) MainLoop(addr, nick, password string) {
opts := libnmdc.HubConnectionOptions{ opts := libnmdc.HubConnectionOptions{
Address: libnmdc.HubAddress(addr), Address: libnmdc.HubAddress(addr),
SkipVerifyTLS: !VerifyTLS, SkipVerifyTLS: !VerifyTLS,
Self: libnmdc.UserInfo{Nick: nick}, Self: *libnmdc.NewUserInfo(nick),
NickPassword: password, NickPassword: password,
} }
hub := opts.Connect() hub := opts.Connect()
@@ -71,11 +75,16 @@ func HubWorker(addr, nick, password string) {
switch event.EventType { switch event.EventType {
case libnmdc.EVENT_CONNECTION_STATE_CHANGED: case libnmdc.EVENT_CONNECTION_STATE_CHANGED:
if LogConnectionState { if LogConnectionState {
str := "* " + event.StateChange.Format()
if len(event.Message) > 0 { if len(event.Message) > 0 {
LogMessage(addr, "* "+event.StateChange.Format()+" ("+event.Message+")") str += " (" + event.Message + ")"
} else {
LogMessage(addr, "* "+event.StateChange.Format())
} }
// Prevent logging the same message repeatedly
if str != this.LastConnectionStateMessage {
LogMessage(addr, str)
}
this.LastConnectionStateMessage = str
} }
case libnmdc.EVENT_PUBLIC: case libnmdc.EVENT_PUBLIC:
@@ -135,7 +144,8 @@ func main() {
os.MkdirAll(GetDirectoryNameForHub(hubaddr), 0755) os.MkdirAll(GetDirectoryNameForHub(hubaddr), 0755)
// Launch logger // Launch logger
go HubWorker(hubaddr, *nick, *password) hw := HubWorker{}
go hw.MainLoop(hubaddr, *nick, *password)
launch_ct++ launch_ct++
} }