mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 07:32:24 -06:00 
			
		
		
		
	
		
			
	
	
		
			99 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright 2020 gRPC authors.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								 * you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								 * You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								 * distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								 * See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								 * limitations under the License.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Package insecure provides an implementation of the
							 | 
						||
| 
								 | 
							
								// credentials.TransportCredentials interface which disables transport security.
							 | 
						||
| 
								 | 
							
								package insecure
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"context"
							 | 
						||
| 
								 | 
							
									"net"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"google.golang.org/grpc/credentials"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// NewCredentials returns a credentials which disables transport security.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Note that using this credentials with per-RPC credentials which require
							 | 
						||
| 
								 | 
							
								// transport security is incompatible and will cause grpc.Dial() to fail.
							 | 
						||
| 
								 | 
							
								func NewCredentials() credentials.TransportCredentials {
							 | 
						||
| 
								 | 
							
									return insecureTC{}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// insecureTC implements the insecure transport credentials. The handshake
							 | 
						||
| 
								 | 
							
								// methods simply return the passed in net.Conn and set the security level to
							 | 
						||
| 
								 | 
							
								// NoSecurity.
							 | 
						||
| 
								 | 
							
								type insecureTC struct{}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) {
							 | 
						||
| 
								 | 
							
									return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (insecureTC) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) {
							 | 
						||
| 
								 | 
							
									return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (insecureTC) Info() credentials.ProtocolInfo {
							 | 
						||
| 
								 | 
							
									return credentials.ProtocolInfo{SecurityProtocol: "insecure"}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (insecureTC) Clone() credentials.TransportCredentials {
							 | 
						||
| 
								 | 
							
									return insecureTC{}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (insecureTC) OverrideServerName(string) error {
							 | 
						||
| 
								 | 
							
									return nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// info contains the auth information for an insecure connection.
							 | 
						||
| 
								 | 
							
								// It implements the AuthInfo interface.
							 | 
						||
| 
								 | 
							
								type info struct {
							 | 
						||
| 
								 | 
							
									credentials.CommonAuthInfo
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// AuthType returns the type of info as a string.
							 | 
						||
| 
								 | 
							
								func (info) AuthType() string {
							 | 
						||
| 
								 | 
							
									return "insecure"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// insecureBundle implements an insecure bundle.
							 | 
						||
| 
								 | 
							
								// An insecure bundle provides a thin wrapper around insecureTC to support
							 | 
						||
| 
								 | 
							
								// the credentials.Bundle interface.
							 | 
						||
| 
								 | 
							
								type insecureBundle struct{}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// NewBundle returns a bundle with disabled transport security and no per rpc credential.
							 | 
						||
| 
								 | 
							
								func NewBundle() credentials.Bundle {
							 | 
						||
| 
								 | 
							
									return insecureBundle{}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// NewWithMode returns a new insecure Bundle. The mode is ignored.
							 | 
						||
| 
								 | 
							
								func (insecureBundle) NewWithMode(string) (credentials.Bundle, error) {
							 | 
						||
| 
								 | 
							
									return insecureBundle{}, nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// PerRPCCredentials returns an nil implementation as insecure
							 | 
						||
| 
								 | 
							
								// bundle does not support a per rpc credential.
							 | 
						||
| 
								 | 
							
								func (insecureBundle) PerRPCCredentials() credentials.PerRPCCredentials {
							 | 
						||
| 
								 | 
							
									return nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// TransportCredentials returns the underlying insecure transport credential.
							 | 
						||
| 
								 | 
							
								func (insecureBundle) TransportCredentials() credentials.TransportCredentials {
							 | 
						||
| 
								 | 
							
									return NewCredentials()
							 | 
						||
| 
								 | 
							
								}
							 |