本文整理汇总了Golang中github.com/pritunl/pritunl-client-electron/service/event.Event类的典型用法代码示例。如果您正苦于以下问题:Golang Event类的具体用法?Golang Event怎么用?Golang Event使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Event类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: parseLine
func (p *Profile) parseLine(line string) {
p.pushOutput(string(line))
if strings.Contains(line, "Initialization Sequence Completed") {
p.Status = "connected"
p.update()
} else if strings.Contains(line, "Inactivity timeout") {
p.Status = "reconnecting"
p.update()
} else if strings.Contains(line, "AUTH_FAILED") || strings.Contains(
line, "auth-failure") {
evt := event.Event{
Type: "auto_error",
Data: p,
}
evt.Init()
} else if strings.Contains(line, "link remote:") {
sIndex := strings.LastIndex(line, "]") + 1
eIndex := strings.LastIndex(line, ":")
p.ServerAddr = line[sIndex:eIndex]
p.update()
} else if strings.Contains(line, "network/local/netmask") {
eIndex := strings.LastIndex(line, "/")
line = line[:eIndex]
sIndex := strings.LastIndex(line, "/") + 1
p.ClientAddr = line[sIndex:]
p.update()
} else if strings.Contains(line, "ifconfig") && strings.Contains(
line, "netmask") {
sIndex := strings.Index(line, "ifconfig") + 9
eIndex := strings.Index(line, "netmask")
line = line[sIndex:eIndex]
split := strings.Split(line, " ")
if len(split) > 2 {
p.ClientAddr = split[1]
p.update()
}
} else if strings.Contains(line, "ip addr add dev") {
sIndex := strings.Index(line, "ip addr add dev") + 16
eIndex := strings.Index(line, "broadcast")
line = line[sIndex:eIndex]
split := strings.Split(line, " ")
if len(split) > 1 {
split := strings.Split(split[1], "/")
if len(split) > 1 {
p.ClientAddr = split[0]
p.update()
}
}
}
}
开发者ID:nikos9742,项目名称:pritunl-client-electron,代码行数:57,代码来源:profile.go
示例2: update
func (p *Profile) update() {
evt := event.Event{
Type: "update",
Data: p,
}
evt.Init()
status := GetStatus()
if status {
evt := event.Event{
Type: "connected",
}
evt.Init()
} else {
evt := event.Event{
Type: "disconnected",
}
evt.Init()
}
}
开发者ID:nikos9742,项目名称:pritunl-client-electron,代码行数:21,代码来源:profile.go
示例3: Start
//.........这里部分代码省略.........
if authPath != "" {
args = append(args, "--auth-user-pass", authPath)
}
cmd := exec.Command(getOpenvpnPath(), args...)
p.cmd = cmd
stdout, err := cmd.StdoutPipe()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to get stdout"),
}
p.clearStatus(start)
return
}
stderr, err := cmd.StderrPipe()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to get stderr"),
}
p.clearStatus(start)
return
}
go func() {
out := bufio.NewReader(stdout)
for {
line, _, err := out.ReadLine()
if err != nil {
if err != io.EOF {
err = &ExecError{
errors.Wrap(err, "profile: Failed to read stdout"),
}
logrus.WithFields(logrus.Fields{
"error": err,
}).Error("profile: Stdout error")
}
return
}
p.parseLine(string(line))
}
}()
go func() {
out := bufio.NewReader(stderr)
for {
line, _, err := out.ReadLine()
if err != nil {
if err != io.EOF {
err = &ExecError{
errors.Wrap(err, "profile: Failed to read stderr"),
}
logrus.WithFields(logrus.Fields{
"error": err,
}).Error("profile: Stderr error")
}
return
}
p.parseLine(string(line))
}
}()
err = cmd.Start()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to start openvpn"),
}
p.clearStatus(start)
return
}
running := true
go func() {
cmd.Wait()
running = false
p.clearStatus(start)
delete(Profiles, p.Id)
}()
if timeout {
go func() {
time.Sleep(connTimeout)
if p.Status != "connected" && running {
cmd.Process.Kill()
evt := event.Event{
Type: "timeout_error",
Data: p,
}
evt.Init()
}
}()
}
return
}
开发者ID:nikos9742,项目名称:pritunl-client-electron,代码行数:101,代码来源:profile.go
示例4: Start
//.........这里部分代码省略.........
if authPath != "" {
args = append(args, "--auth-user-pass", authPath)
}
cmd := exec.Command(getOpenvpnPath(), args...)
p.cmd = cmd
stdout, err := cmd.StdoutPipe()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to get stdout"),
}
p.clearStatus(start)
return
}
stderr, err := cmd.StderrPipe()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to get stderr"),
}
p.clearStatus(start)
return
}
go func() {
out := bufio.NewReader(stdout)
for {
line, _, err := out.ReadLine()
if err != nil {
if err != io.EOF {
err = &ExecError{
errors.Wrap(err, "profile: Failed to read stdout"),
}
logrus.WithFields(logrus.Fields{
"error": err,
}).Error("profile: Stdout error")
}
return
}
p.parseLine(string(line))
}
}()
go func() {
out := bufio.NewReader(stderr)
for {
line, _, err := out.ReadLine()
if err != nil {
if err != io.EOF {
err = &ExecError{
errors.Wrap(err, "profile: Failed to read stderr"),
}
logrus.WithFields(logrus.Fields{
"error": err,
}).Error("profile: Stderr error")
}
return
}
p.parseLine(string(line))
}
}()
err = cmd.Start()
if err != nil {
err = &ExecError{
errors.Wrap(err, "profile: Failed to start openvpn"),
}
p.clearStatus(start)
return
}
running := true
go func() {
cmd.Wait()
running = false
p.clearStatus(start)
delete(Profiles, p.Id)
}()
if timeout {
go func() {
time.Sleep(connTimeout)
if p.Status != "connected" && running {
cmd.Process.Kill()
evt := event.Event{
Type: "timeout_error",
Data: p,
}
evt.Init()
}
}()
}
return
}
开发者ID:pathcode,项目名称:pritunl-client-electron,代码行数:101,代码来源:profile.go
注:本文中的github.com/pritunl/pritunl-client-electron/service/event.Event类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论