5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 15:20:30 +00:00

Access NSLog through Cgo for iOS NetworkExtension logging

This commit is contained in:
Neil Alexander 2019-01-05 21:59:07 +00:00
parent 6bbd8c1b30
commit 87362a21e2
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944
4 changed files with 32 additions and 3 deletions

View File

@ -109,11 +109,12 @@ func (ai *awdlInterface) handler() {
timer.Reset(timerInterval)
select {
case _ = <-timer.C:
send([]byte{'H', 'E', 'L', 'L', 'O'})
send([]byte{})
case p := <-ai.peer.linkOut:
send(p)
continue
case r := <-ai.fromAWDL:
//_ = append(util.GetBytes(), r...)
ai.peer.handlePacket(r)
ai.awdl.core.switchTable.idleIn <- ai.peer.port
case <-ai.shutdown:

View File

@ -24,7 +24,8 @@ import (
// therefore we use the "dummy" TUN interface instead.
func (c *Core) StartAutoconfigure() error {
logger := log.New(os.Stdout, "", 0)
mobilelog := MobileLogger{}
logger := log.New(mobilelog, "", 0)
nc := config.GenerateConfig(true)
nc.IfName = "dummy"
nc.AdminListen = "tcp://localhost:9001"
@ -43,7 +44,8 @@ func (c *Core) StartAutoconfigure() error {
}
func (c *Core) StartJSON(configjson []byte) error {
logger := log.New(os.Stdout, "", 0)
mobilelog := MobileLogger{}
logger := log.New(mobilelog, "", 0)
nc := config.GenerateConfig(false)
var dat map[string]interface{}
if err := hjson.Unmarshal(configjson, &dat); err != nil {

View File

@ -0,0 +1,25 @@
// +build mobile,darwin
package yggdrasil
/*
#cgo CFLAGS: -x objective-c
#cgo LDFLAGS: -framework Foundation
#import <Foundation/Foundation.h>
void Log(const char *text) {
NSString *nss = [NSString stringWithUTF8String:text];
NSLog(@"%@", nss);
}
*/
import "C"
import "unsafe"
type MobileLogger struct {
}
func (nsl MobileLogger) Write(p []byte) (n int, err error) {
p = append(p, 0)
cstr := (*C.char)(unsafe.Pointer(&p[0]))
C.Log(cstr)
return len(p), nil
}

View File

@ -217,6 +217,7 @@ func (p *peer) handlePacket(packet []byte) {
default:
util.PutBytes(packet)
}
return
}
// Called to handle traffic or protocolTraffic packets.