package routes import ( "net/http" // "log" "ems.agt/features/aaaa" "ems.agt/features/cm" "ems.agt/features/dbrest" "ems.agt/features/file" "ems.agt/features/fm" "ems.agt/features/lm" "ems.agt/features/mml" "ems.agt/features/monitor/monitor" "ems.agt/features/monitor/psnet" "ems.agt/features/nbi" "ems.agt/features/pm" "ems.agt/features/security" "ems.agt/features/state" "ems.agt/features/trace" "ems.agt/lib/midware" "ems.agt/lib/services" "github.com/gorilla/mux" ) type Router struct { Method string Pattern string Handler http.HandlerFunc Middleware mux.MiddlewareFunc } var routers []Router func init() { Register("POST", security.UriOauthToken, security.LoginFromOMC, nil) Register("POST", security.UriOauthHandshake, security.HandshakeFromOMC, nil) Register("DELETE", security.UriOauthToken, security.LogoutFromOMC, nil) Register("POST", security.CustomUriOauthToken, security.LoginFromOMC, nil) Register("DELETE", security.CustomUriOauthToken, security.LogoutFromOMC, nil) Register("POST", security.CustomUriOauthHandshake, security.HandshakeFromOMC, nil) // System state Register("GET", state.UriSysState, state.GetStateFromNF, nil) Register("GET", state.UriSysState2, state.GetStateFromNF, nil) Register("GET", state.UriSysInfoAll, state.GetAllSysinfoFromNF, nil) Register("GET", state.UriSysInfoOne, state.GetOneSysinfoFromNF, nil) Register("GET", state.UriLicenseInfoAll, state.GetAllLicenseInfoFromNF, nil) Register("GET", state.UriLicenseInfoOne, state.GetOneLicenseInfoFromNF, nil) Register("GET", state.CustomUriSysState, state.GetStateFromNF, nil) Register("GET", state.CustomUriSysState2, state.GetStateFromNF, nil) Register("GET", state.CustomUriSysInfoAll, state.GetAllSysinfoFromNF, nil) Register("GET", state.CustomUriSysInfoOne, state.GetOneSysinfoFromNF, nil) Register("GET", state.CustomUriLicenseInfoAll, state.GetAllLicenseInfoFromNF, nil) Register("GET", state.CustomUriLicenseInfoOne, state.GetOneLicenseInfoFromNF, nil) // database management Register("GET", dbrest.XormGetDataUri, dbrest.DatabaseGetData, nil) Register("GET", dbrest.XormSelectDataUri, dbrest.DatabaseGetData, nil) Register("POST", dbrest.XormInsertDataUri, dbrest.DatabaseInsertData, nil) Register("PUT", dbrest.XormUpdateDataUri, dbrest.DatabaseUpdateData, nil) Register("DELETE", dbrest.XormDeleteDataUri, dbrest.DatabaseDeleteData, nil) Register("GET", dbrest.CustomXormGetDataUri, dbrest.DatabaseGetData, nil) Register("GET", dbrest.CustomXormSelectDataUri, dbrest.DatabaseGetData, nil) Register("POST", dbrest.CustomXormInsertDataUri, dbrest.DatabaseInsertData, nil) Register("PUT", dbrest.CustomXormUpdateDataUri, dbrest.DatabaseUpdateData, nil) Register("DELETE", dbrest.CustomXormDeleteDataUri, dbrest.DatabaseDeleteData, nil) Register("GET", dbrest.XormCommonUri, dbrest.DatabaseGetData, nil) Register("POST", dbrest.XormCommonUri, dbrest.DatabaseInsertData, nil) Register("PUT", dbrest.XormCommonUri, dbrest.DatabaseUpdateData, nil) Register("DELETE", dbrest.XormCommonUri, dbrest.DatabaseDeleteData, nil) Register("GET", dbrest.XormDatabaseUri, dbrest.TaskDatabaseGetData, nil) Register("POST", dbrest.XormDatabaseUri, dbrest.TaskDatabaseInsertData, nil) Register("PUT", dbrest.XormDatabaseUri, dbrest.TaskDatabaseUpdateData, nil) Register("DELETE", dbrest.XormDatabaseUri, dbrest.TaskDatabaseDeleteData, nil) Register("GET", dbrest.CustomXormCommonUri, dbrest.DatabaseGetData, nil) Register("POST", dbrest.CustomXormCommonUri, dbrest.DatabaseInsertData, nil) Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil) Register("DELETE", dbrest.CustomXormCommonUri, dbrest.DatabaseDeleteData, nil) Register("GET", dbrest.XormExtDataUri, dbrest.ExtDatabaseGetData, nil) Register("POST", dbrest.XormExtDataUri, dbrest.ExtDatabaseInsertData, nil) Register("PUT", dbrest.XormExtDataUri, dbrest.ExtDatabaseUpdateData, nil) Register("DELETE", dbrest.XormExtDataUri, dbrest.ExtDatabaseDeleteData, nil) Register("GET", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseGetData, nil) Register("POST", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseInsertData, nil) Register("PUT", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseUpdateData, nil) Register("DELETE", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseDeleteData, nil) // alarm restful Register Register("POST", fm.UriAlarms, fm.PostAlarmFromNF, nil) Register("Get", fm.UriAlarms, fm.GetAlarmFromNF, nil) Register("POST", fm.CustomUriAlarms, fm.PostAlarmFromNF, nil) Register("Get", fm.CustomUriAlarms, fm.GetAlarmFromNF, nil) // performance restful Register Register("POST", pm.PerformanceUri, pm.PostKPIReportFromNF, nil) Register("POST", pm.MeasureTaskUri, pm.PostMeasureTaskToNF, nil) Register("PUT", pm.MeasureTaskUri, pm.PutMeasureTaskToNF, nil) Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, nil) Register("PATCH", pm.MeasureTaskUri, pm.PatchMeasureTaskToNF, nil) Register("POST", pm.MeasureReportUri, pm.PostMeasureReportFromNF, nil) Register("POST", pm.MeasurementUri, pm.PostMeasurementFromNF, nil) Register("GET", pm.MeasurementUri, pm.GetMeasurementFromNF, nil) Register("POST", pm.CustomPerformanceUri, pm.PostKPIReportFromNF, nil) Register("POST", pm.CustomMeasureTaskUri, pm.PostMeasureTaskToNF, nil) Register("PUT", pm.CustomMeasureTaskUri, pm.PutMeasureTaskToNF, nil) Register("DELETE", pm.CustomMeasureTaskUri, pm.DeleteMeasureTaskToNF, nil) Register("PATCH", pm.CustomMeasureTaskUri, pm.PatchMeasureTaskToNF, nil) Register("POST", pm.CustomMeasureReportUri, pm.PostMeasureReportFromNF, nil) Register("POST", pm.CustomMeasurementUri, pm.PostMeasurementFromNF, nil) Register("GET", pm.CustomMeasurementUri, pm.GetMeasurementFromNF, nil) // parameter config management Register("GET", cm.ParamConfigUri, cm.GetParamConfigFromNF, nil) Register("POST", cm.ParamConfigUri, cm.PostParamConfigToNF, nil) Register("PUT", cm.ParamConfigUri, cm.PutParamConfigToNF, nil) Register("DELETE", cm.ParamConfigUri, cm.DeleteParamConfigToNF, nil) Register("GET", cm.CustomParamConfigUri, cm.GetParamConfigFromNF, nil) Register("POST", cm.CustomParamConfigUri, cm.PostParamConfigToNF, nil) Register("PUT", cm.CustomParamConfigUri, cm.PutParamConfigToNF, nil) Register("DELETE", cm.CustomParamConfigUri, cm.DeleteParamConfigToNF, nil) // Get/Create/Modify/Delete NE info Register("GET", cm.UriNeInfo, cm.GetNeInfo, nil) Register("POST", cm.UriNeInfo, cm.PostNeInfo, nil) Register("PUT", cm.UriNeInfo, cm.PutNeInfo, nil) Register("DELETE", cm.UriNeInfo, cm.DeleteNeInfo, nil) // Get/Create/Modify/Delete NE info Register("GET", cm.CustomUriNeInfo, cm.GetNeInfo, nil) Register("POST", cm.CustomUriNeInfo, cm.PostNeInfo, nil) Register("PUT", cm.CustomUriNeInfo, cm.PutNeInfo, nil) Register("DELETE", cm.CustomUriNeInfo, cm.DeleteNeInfo, nil) // Post MML command to NF Register("POST", mml.UriMML, mml.PostMMLToNF, nil) Register("POST", mml.UriOmMmlExt, mml.PostMMLToOMC, nil) Register("POST", mml.CustomUriMML, mml.PostMMLToNF, nil) Register("POST", mml.CustomUriOmMmlExt, mml.PostMMLToOMC, nil) // Northbound Get NRM Register("GET", nbi.GetNRMUri, nbi.NBIGetNRMFromNF, nil) Register("GET", nbi.CustomGetNRMUri, nbi.NBIGetNRMFromNF, nil) // Import/Export NF CM Register("GET", cm.NeCmUri, cm.ExportCmFromNF, nil) Register("POST", cm.NeCmUri, cm.ImportCmToNF, nil) Register("GET", cm.UriNeCmFile, cm.DownloadNeBackupFile, nil) Register("DELETE", cm.UriNeCmFile, cm.DeleteNeBackupFile, nil) Register("GET", cm.CustomNeCmUri, cm.ExportCmFromNF, nil) Register("POST", cm.CustomNeCmUri, cm.ImportCmToNF, nil) Register("GET", cm.CustomUriNeCmFile, cm.DownloadNeBackupFile, nil) Register("DELETE", cm.CustomUriNeCmFile, cm.DeleteNeBackupFile, nil) // Software management Register("GET", cm.UriSoftware, cm.DownloadSoftwareFile, nil) Register("POST", cm.UriSoftware, cm.UploadSoftwareFile, nil) Register("DELETE", cm.UriSoftware, cm.DeleteSoftwareFile, nil) Register("POST", cm.UriSoftwareNE, cm.DistributeSoftwareToNF, nil) Register("PUT", cm.UriSoftwareNE, cm.ActiveSoftwareToNF, nil) Register("PATCH", cm.UriSoftwareNE, cm.RollBackSoftwareToNF, nil) Register("GET", cm.CustomUriSoftware, cm.DownloadSoftwareFile, nil) Register("POST", cm.CustomUriSoftware, cm.UploadSoftwareFile, nil) Register("DELETE", cm.CustomUriSoftware, cm.DeleteSoftwareFile, nil) Register("POST", cm.CustomUriSoftwareNE, cm.DistributeSoftwareToNF, nil) Register("PUT", cm.CustomUriSoftwareNE, cm.ActiveSoftwareToNF, nil) Register("PATCH", cm.CustomUriSoftwareNE, cm.RollBackSoftwareToNF, nil) // License management Register("GET", cm.LicenseUri, cm.ExportCmFromNF, nil) Register("POST", cm.LicenseUri, cm.ImportCmToNF, nil) Register("DELETE", cm.LicenseUri, cm.ImportCmToNF, nil) Register("POST", cm.NeLicenseUri, cm.ExportCmFromNF, nil) Register("PUT", cm.NeLicenseUri, cm.ImportCmToNF, nil) Register("PATCH", cm.NeLicenseUri, cm.ImportCmToNF, nil) Register("POST", cm.CustomNeLicenseUri, cm.ExportCmFromNF, nil) Register("PUT", cm.CustomNeLicenseUri, cm.ImportCmToNF, nil) Register("PATCH", cm.CustomNeLicenseUri, cm.ImportCmToNF, nil) // Trace management Register("POST", trace.UriTraceTask, trace.PostTraceTaskToNF, nil) Register("PUT", trace.UriTraceTask, trace.PutTraceTaskToNF, nil) Register("DELETE", trace.UriTraceTask, trace.DeleteTraceTaskToNF, nil) Register("POST", trace.CustomUriTraceTask, trace.PostTraceTaskToNF, nil) Register("PUT", trace.CustomUriTraceTask, trace.PutTraceTaskToNF, nil) Register("DELETE", trace.CustomUriTraceTask, trace.DeleteTraceTaskToNF, nil) // file management Register("POST", file.UriFile, file.UploadFile, nil) Register("GET", file.UriFile, file.DownloadFile, nil) Register("DELETE", file.UriFile, file.DeleteFile, nil) Register("POST", file.CustomUriFile, file.UploadFile, nil) Register("GET", file.CustomUriFile, file.DownloadFile, nil) Register("DELETE", file.CustomUriFile, file.DeleteFile, nil) // AAAA Register("GET", aaaa.UriAAAASSO, aaaa.GetSSOFromAAAA, nil) // AAAA Register("GET", aaaa.CustomUriAAAASSO, aaaa.GetSSOFromAAAA, nil) // 进程网络 Register("GET", psnet.UriWs, psnet.ProcessWs, nil) Register("POST", psnet.UriStop, psnet.StopProcess, nil) Register("POST", psnet.UriPing, psnet.Ping, nil) // 主机CPU内存监控 Register("POST", monitor.UriLoad, monitor.LoadMonitor, nil) Register("GET", monitor.UriNetOpt, monitor.Netoptions, nil) Register("GET", monitor.UriIPAddr, monitor.IPAddr, nil) Register("GET", monitor.UriIoOpt, monitor.Iooptions, nil) // 文件资源 Register("GET", file.UriDiskList, file.DiskList, nil) Register("POST", file.UriListFiles, file.ListFiles, nil) // 数据库连接情况 Register("GET", dbrest.UriDbConnection, dbrest.DbConnection, nil) Register("POST", dbrest.UriDbStop, dbrest.DbStop, nil) // 日志表备份 Register("POST", lm.ExtBackupDataUri, lm.ExtDatabaseBackupData, nil) Register("POST", lm.CustomExtBackupDataUri, lm.ExtDatabaseBackupData, nil) } // To resolv rest POST/PUT/DELETE/PATCH cross domain func OptionsProc(w http.ResponseWriter, r *http.Request) { services.ResponseStatusOK204NoContent(w) } func NewRouter() *mux.Router { r := mux.NewRouter() // set custom handle for status 404/405 r.NotFoundHandler = services.CustomResponseNotFound404Handler() r.MethodNotAllowedHandler = services.CustomResponseMethodNotAllowed405Handler() r.Use(midware.LoggerTraceMiddleware) for _, router := range routers { r.Methods(router.Method). Path(router.Pattern). Handler(router.Handler) if router.Middleware != nil { r.Use(router.Middleware) } } return r } func Register(method, pattern string, handler http.HandlerFunc, middleware mux.MiddlewareFunc) { routers = append(routers, Router{method, pattern, handler, middleware}) }