| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Minio Cloud Storage, (C) 2014-2016 Minio, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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 cmd | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | import "time" | 
					
						
							| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (s3 *s3PeerAPIHandlers) LoginHandler(args *RPCLoginArgs, reply *RPCLoginReply) error { | 
					
						
							|  |  |  | 	jwt, err := newJWT(defaultInterNodeJWTExpiry) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if err = jwt.Authenticate(args.Username, args.Password); err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	token, err := jwt.GenerateToken(args.Username) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	reply.Token = token | 
					
						
							|  |  |  | 	reply.ServerVersion = Version | 
					
						
							|  |  |  | 	reply.Timestamp = time.Now().UTC() | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // SetBNPArgs - Arguments collection to SetBucketNotificationPeer RPC
 | 
					
						
							|  |  |  | // call
 | 
					
						
							|  |  |  | type SetBNPArgs struct { | 
					
						
							|  |  |  | 	// For Auth
 | 
					
						
							|  |  |  | 	GenericArgs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Bucket string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Notification config for the given bucket.
 | 
					
						
							|  |  |  | 	NCfg *notificationConfig | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s3 *s3PeerAPIHandlers) SetBucketNotificationPeer(args *SetBNPArgs, reply *GenericReply) error { | 
					
						
							|  |  |  | 	// check auth
 | 
					
						
							|  |  |  | 	if !isRPCTokenValid(args.Token) { | 
					
						
							|  |  |  | 		return errInvalidToken | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | 	return s3.UpdateBucketNotification(args) | 
					
						
							| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // SetBLPArgs - Arguments collection to SetBucketListenerPeer RPC call
 | 
					
						
							|  |  |  | type SetBLPArgs struct { | 
					
						
							|  |  |  | 	// For Auth
 | 
					
						
							|  |  |  | 	GenericArgs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Bucket string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Listener config for a given bucket.
 | 
					
						
							|  |  |  | 	LCfg []listenerConfig | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | func (s3 *s3PeerAPIHandlers) SetBucketListenerPeer(args *SetBLPArgs, reply *GenericReply) error { | 
					
						
							| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | 	// check auth
 | 
					
						
							|  |  |  | 	if !isRPCTokenValid(args.Token) { | 
					
						
							|  |  |  | 		return errInvalidToken | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | 	return s3.UpdateBucketListener(args) | 
					
						
							| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // EventArgs - Arguments collection for Event RPC call
 | 
					
						
							|  |  |  | type EventArgs struct { | 
					
						
							|  |  |  | 	// For Auth
 | 
					
						
							|  |  |  | 	GenericArgs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// event being sent
 | 
					
						
							|  |  |  | 	Event []NotificationEvent | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// client that it is meant for
 | 
					
						
							|  |  |  | 	Arn string | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // submit an event to the receiving server.
 | 
					
						
							|  |  |  | func (s3 *s3PeerAPIHandlers) Event(args *EventArgs, reply *GenericReply) error { | 
					
						
							|  |  |  | 	// check auth
 | 
					
						
							|  |  |  | 	if !isRPCTokenValid(args.Token) { | 
					
						
							|  |  |  | 		return errInvalidToken | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | 	return s3.SendEvent(args) | 
					
						
							| 
									
										
										
										
											2016-10-14 00:19:04 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // SetBPPArgs - Arguments collection for SetBucketPolicyPeer RPC call
 | 
					
						
							|  |  |  | type SetBPPArgs struct { | 
					
						
							|  |  |  | 	// For Auth
 | 
					
						
							|  |  |  | 	GenericArgs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Bucket string | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-15 13:49:51 +08:00
										 |  |  | 	// Policy change (serialized to JSON)
 | 
					
						
							|  |  |  | 	PChBytes []byte | 
					
						
							| 
									
										
										
										
											2016-10-14 00:19:04 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // tell receiving server to update a bucket policy
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | func (s3 *s3PeerAPIHandlers) SetBucketPolicyPeer(args *SetBPPArgs, reply *GenericReply) error { | 
					
						
							| 
									
										
										
										
											2016-10-14 00:19:04 +08:00
										 |  |  | 	// check auth
 | 
					
						
							|  |  |  | 	if !isRPCTokenValid(args.Token) { | 
					
						
							|  |  |  | 		return errInvalidToken | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 04:09:24 +08:00
										 |  |  | 	return s3.UpdateBucketPolicy(args) | 
					
						
							| 
									
										
										
										
											2016-10-12 16:03:50 +08:00
										 |  |  | } |