| 
									
										
										
										
											2016-01-15 12:43:06 +01:00
										 |  |  | // +build json | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package http | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2016-01-26 10:28:09 +00:00
										 |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v2net "github.com/v2ray/v2ray-core/common/net" | 
					
						
							| 
									
										
										
										
											2016-01-15 12:43:06 +01:00
										 |  |  | 	"github.com/v2ray/v2ray-core/proxy/internal/config" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-26 10:28:09 +00:00
										 |  |  | func (this *Config) UnmarshalJSON(data []byte) error { | 
					
						
							|  |  |  | 	type JsonConfig struct { | 
					
						
							|  |  |  | 		Hosts []v2net.AddressJson `json:"ownHosts"` | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	jsonConfig := new(JsonConfig) | 
					
						
							|  |  |  | 	if err := json.Unmarshal(data, jsonConfig); err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	this.OwnHosts = make([]v2net.Address, len(jsonConfig.Hosts), len(jsonConfig.Hosts)+1) | 
					
						
							|  |  |  | 	for idx, host := range jsonConfig.Hosts { | 
					
						
							|  |  |  | 		this.OwnHosts[idx] = host.Address | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v2rayHost := v2net.DomainAddress("local.v2ray.com") | 
					
						
							|  |  |  | 	if !this.IsOwnHost(v2rayHost) { | 
					
						
							|  |  |  | 		this.OwnHosts = append(this.OwnHosts, v2rayHost) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-15 12:43:06 +01:00
										 |  |  | func init() { | 
					
						
							| 
									
										
										
										
											2016-01-25 17:19:09 +01:00
										 |  |  | 	config.RegisterInboundConfig("http", | 
					
						
							| 
									
										
										
										
											2016-01-15 12:43:06 +01:00
										 |  |  | 		func(data []byte) (interface{}, error) { | 
					
						
							| 
									
										
										
										
											2016-01-26 10:28:09 +00:00
										 |  |  | 			rawConfig := new(Config) | 
					
						
							|  |  |  | 			err := json.Unmarshal(data, rawConfig) | 
					
						
							|  |  |  | 			return rawConfig, err | 
					
						
							| 
									
										
										
										
											2016-01-15 12:43:06 +01:00
										 |  |  | 		}) | 
					
						
							|  |  |  | } |