1
0
Fork 0

initial import

master
Spike Grobstein 13 years ago
commit e05de6706a

3
.gitignore vendored

@ -0,0 +1,3 @@
build
*~
.DS_Store

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,275 @@
// !$*UTF8*$!
{
089C165DFE840E0CC02AAC07 /* English */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {609, 391}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 45}";
};
};
256AC3D80F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {720, 832}}";
sepNavSelRange = "{1513, 0}";
sepNavVisRange = "{163, 460}";
sepNavWindowFrame = "{{61, 275}, {992, 808}}";
};
};
256AC3D90F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1047, 1781}}";
sepNavSelRange = "{2886, 0}";
sepNavVisRange = "{1451, 910}";
};
};
256AC3F00F4B6AF500CF3369 /* DDWRT_Monitor_Prefix.pch */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {698, 391}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 157}";
};
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeArchitecturePreference = x86_64;
activeBuildConfigurationName = Debug;
activeExecutable = F2CB88B8139017C000C2B7BC /* DDWRT-Monitor */;
activeTarget = 8D1107260486CEB800E47090 /* DDWRT-Monitor */;
addToTargets = (
8D1107260486CEB800E47090 /* DDWRT-Monitor */,
);
breakpoints = (
);
codeSenseManager = F2CB88CB139017C500C2B7BC /* Code sense */;
executables = (
F2CB88B8139017C000C2B7BC /* DDWRT-Monitor */,
);
perUserDictionary = {
"PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
20,
198,
20,
99,
99,
29,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXBreakpointsDataSource_ActionID,
PBXBreakpointsDataSource_TypeID,
PBXBreakpointsDataSource_BreakpointID,
PBXBreakpointsDataSource_UseID,
PBXBreakpointsDataSource_LocationID,
PBXBreakpointsDataSource_ConditionID,
PBXBreakpointsDataSource_IgnoreCountID,
PBXBreakpointsDataSource_ContinueID,
);
};
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
944,
20,
48,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
904,
60,
20,
48,
43,
43,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXTargetDataSource_PrimaryAttribute,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 328231609;
PBXWorkspaceStateSaveDate = 328231609;
};
perUserProjectItems = {
F2511F2C139148970053990C /* PBXTextBookmark */ = F2511F2C139148970053990C /* PBXTextBookmark */;
F2511F6413914A6B0053990C /* PBXTextBookmark */ = F2511F6413914A6B0053990C /* PBXTextBookmark */;
F2511F8513914C350053990C /* PBXTextBookmark */ = F2511F8513914C350053990C /* PBXTextBookmark */;
F251207E13915EF40053990C /* PBXBookmark */ = F251207E13915EF40053990C /* PBXBookmark */;
F25120AD13918DE50053990C /* PBXBookmark */ = F25120AD13918DE50053990C /* PBXBookmark */;
F25120AE13918DE50053990C /* PlistBookmark */ = F25120AE13918DE50053990C /* PlistBookmark */;
F25121AB1392B72E0053990C /* PBXTextBookmark */ = F25121AB1392B72E0053990C /* PBXTextBookmark */;
F25121AC1392B72E0053990C /* PBXTextBookmark */ = F25121AC1392B72E0053990C /* PBXTextBookmark */;
F25121B21392D0610053990C /* PBXTextBookmark */ = F25121B21392D0610053990C /* PBXTextBookmark */;
};
sourceControlManager = F2CB88CA139017C500C2B7BC /* Source Control */;
userBuildSettings = {
};
};
29B97316FDCFA39411CA2CEA /* main.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {609, 391}}";
sepNavSelRange = "{264, 0}";
sepNavVisRange = "{0, 264}";
};
};
8D1107260486CEB800E47090 /* DDWRT-Monitor */ = {
activeExec = 0;
executables = (
F2CB88B8139017C000C2B7BC /* DDWRT-Monitor */,
);
};
F2511F2C139148970053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 089C165DFE840E0CC02AAC07 /* English */;
name = "InfoPlist.strings: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 45;
vrLoc = 0;
};
F2511F5B13914A120053990C /* MenuIcon.png */ = {
uiCtxt = {
sepNavWindowFrame = "{{15, 317}, {992, 808}}";
};
};
F2511F6413914A6B0053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 29B97316FDCFA39411CA2CEA /* main.m */;
name = "main.m: 15";
rLen = 0;
rLoc = 264;
rType = 0;
vrLen = 264;
vrLoc = 0;
};
F2511F8513914C350053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3F00F4B6AF500CF3369 /* DDWRT_Monitor_Prefix.pch */;
name = "DDWRT_Monitor_Prefix.pch: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 157;
vrLoc = 0;
};
F251207E13915EF40053990C /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = F2511F5B13914A120053990C /* MenuIcon.png */;
};
F25120AD13918DE50053990C /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = F25120A113918CD10053990C /* AppIcon.icns */;
};
F25120AE13918DE50053990C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* DDWRT_Monitor-Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
NSPrincipalClass,
);
name = "/Users/mlalonde/Documents/DDWRT-Monitor/DDWRT_Monitor-Info.plist";
rLen = 0;
rLoc = 9223372036854775807;
};
F25121AB1392B72E0053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3D90F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m */;
name = "DDWRT_MonitorAppDelegate.m: 115";
rLen = 0;
rLoc = 2417;
rType = 0;
vrLen = 562;
vrLoc = 2192;
};
F25121AC1392B72E0053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3D80F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.h */;
name = "DDWRT_MonitorAppDelegate.h: 41";
rLen = 292;
rLoc = 1088;
rType = 0;
vrLen = 1064;
vrLoc = 100;
};
F25121B21392D0610053990C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 256AC3D80F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.h */;
name = "DDWRT_MonitorAppDelegate.h: 46";
rLen = 0;
rLoc = 1215;
rType = 0;
vrLen = 1063;
vrLoc = 0;
};
F2CB88B8139017C000C2B7BC /* DDWRT-Monitor */ = {
isa = PBXExecutable;
activeArgIndices = (
);
argumentStrings = (
);
autoAttachOnCrash = 1;
breakpointsEnabled = 0;
configStateDict = {
};
customDataFormattersEnabled = 1;
dataTipCustomDataFormattersEnabled = 1;
dataTipShowTypeColumn = 1;
dataTipSortType = 0;
debuggerPlugin = GDBDebugging;
disassemblyDisplayState = 0;
dylibVariantSuffix = "";
enableDebugStr = 1;
environmentEntries = (
);
executableSystemSymbolLevel = 0;
executableUserSymbolLevel = 0;
libgmallocEnabled = 0;
name = "DDWRT-Monitor";
savedGlobals = {
};
showTypeColumn = 0;
sourceDirectories = (
);
};
F2CB88CA139017C500C2B7BC /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
F2CB88CB139017C500C2B7BC /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
}

@ -0,0 +1,318 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
256AC3DA0F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
96DEDE2A139486BB00EF8526 /* WRTStatusClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 96DEDE29139486BB00EF8526 /* WRTStatusClient.m */; };
F215851013930D1700853C55 /* WRTRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F215850F13930D1700853C55 /* WRTRequest.m */; };
F215851213931CF000853C55 /* MenuIconDisabled.png in Resources */ = {isa = PBXBuildFile; fileRef = F215851113931CF000853C55 /* MenuIconDisabled.png */; };
F2511F5C13914A120053990C /* MenuIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = F2511F5B13914A120053990C /* MenuIcon.png */; };
F2511FFB1391543E0053990C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2511FFA1391543E0053990C /* WebKit.framework */; };
F25120A213918CD10053990C /* AppIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = F25120A113918CD10053990C /* AppIcon.icns */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
256AC3D80F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDWRT_MonitorAppDelegate.h; sourceTree = "<group>"; };
256AC3D90F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDWRT_MonitorAppDelegate.m; sourceTree = "<group>"; };
256AC3F00F4B6AF500CF3369 /* DDWRT_Monitor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDWRT_Monitor_Prefix.pch; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
8D1107310486CEB800E47090 /* DDWRT_Monitor-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "DDWRT_Monitor-Info.plist"; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* DDWRT-Monitor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "DDWRT-Monitor.app"; sourceTree = BUILT_PRODUCTS_DIR; };
96DEDE28139486BB00EF8526 /* WRTStatusClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WRTStatusClient.h; sourceTree = "<group>"; };
96DEDE29139486BB00EF8526 /* WRTStatusClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WRTStatusClient.m; sourceTree = "<group>"; };
F215850E13930D1700853C55 /* WRTRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WRTRequest.h; sourceTree = "<group>"; };
F215850F13930D1700853C55 /* WRTRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WRTRequest.m; sourceTree = "<group>"; };
F215851113931CF000853C55 /* MenuIconDisabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MenuIconDisabled.png; sourceTree = "<group>"; };
F2511F5B13914A120053990C /* MenuIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MenuIcon.png; sourceTree = "<group>"; };
F2511FFA1391543E0053990C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
F25120A113918CD10053990C /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = AppIcon.icns; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8D11072E0486CEB800E47090 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
F2511FFB1391543E0053990C /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
256AC3D80F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.h */,
256AC3D90F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m */,
96DEDE28139486BB00EF8526 /* WRTStatusClient.h */,
96DEDE29139486BB00EF8526 /* WRTStatusClient.m */,
F215850E13930D1700853C55 /* WRTRequest.h */,
F215850F13930D1700853C55 /* WRTRequest.m */,
);
name = Classes;
sourceTree = "<group>";
};
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D1107320486CEB800E47090 /* DDWRT-Monitor.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* DDWRT-Monitor */ = {
isa = PBXGroup;
children = (
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = "DDWRT-Monitor";
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
256AC3F00F4B6AF500CF3369 /* DDWRT_Monitor_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
F215851113931CF000853C55 /* MenuIconDisabled.png */,
F25120A113918CD10053990C /* AppIcon.icns */,
F2511F5B13914A120053990C /* MenuIcon.png */,
8D1107310486CEB800E47090 /* DDWRT_Monitor-Info.plist */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
F2511FFA1391543E0053990C /* WebKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8D1107260486CEB800E47090 /* DDWRT-Monitor */ = {
isa = PBXNativeTarget;
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "DDWRT-Monitor" */;
buildPhases = (
8D1107290486CEB800E47090 /* Resources */,
8D11072C0486CEB800E47090 /* Sources */,
8D11072E0486CEB800E47090 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "DDWRT-Monitor";
productInstallPath = "$(HOME)/Applications";
productName = "DDWRT-Monitor";
productReference = 8D1107320486CEB800E47090 /* DDWRT-Monitor.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "DDWRT-Monitor" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
en,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* DDWRT-Monitor */;
projectDirPath = "";
projectRoot = "";
targets = (
8D1107260486CEB800E47090 /* DDWRT-Monitor */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8D1107290486CEB800E47090 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
F2511F5C13914A120053990C /* MenuIcon.png in Resources */,
F25120A213918CD10053990C /* AppIcon.icns in Resources */,
F215851213931CF000853C55 /* MenuIconDisabled.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D11072C0486CEB800E47090 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072D0486CEB800E47090 /* main.m in Sources */,
256AC3DA0F4B6AC300CF3369 /* DDWRT_MonitorAppDelegate.m in Sources */,
F215851013930D1700853C55 /* WRTRequest.m in Sources */,
96DEDE2A139486BB00EF8526 /* WRTStatusClient.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C165DFE840E0CC02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
1DDD58150DA1D0A300B32029 /* English */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
C01FCF4B08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = DDWRT_Monitor_Prefix.pch;
INFOPLIST_FILE = "DDWRT_Monitor-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = "DDWRT-Monitor";
};
name = Debug;
};
C01FCF4C08A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = DDWRT_Monitor_Prefix.pch;
INFOPLIST_FILE = "DDWRT_Monitor-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = "DDWRT-Monitor";
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = macosx10.6;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = macosx10.6;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "DDWRT-Monitor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4B08A954540054247B /* Debug */,
C01FCF4C08A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "DDWRT-Monitor" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:DDWRT-Monitor.xcodeproj">
</FileRef>
</Workspace>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "1.0">
</Bucket>

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
displayScaleIsEnabled = "NO"
displayScale = "1.00"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
displayScaleIsEnabled = "NO"
displayScale = "1.00"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>DDWRT-Monitor.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D1107260486CEB800E47090</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "1.0">
</Bucket>

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
displayScaleIsEnabled = "NO"
displayScale = "1.00"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
displayScaleIsEnabled = "NO"
displayScale = "1.00"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "DDWRT-Monitor.app"
BlueprintName = "DDWRT-Monitor"
ReferencedContainer = "container:DDWRT-Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>DDWRT-Monitor.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D1107260486CEB800E47090</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>org.spurf.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSAppleScriptEnabled</key>
<false/>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>LSUIElement</key>
<true/>
</dict>
</plist>

@ -0,0 +1,105 @@
//
// DDWRT_MonitorAppDelegate.h
// DDWRT-Monitor
//
// Created by Matthieu Lalonde on 11-05-27.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import<WebKit/WebKit.h>
#import "WRTStatusClient.h"
@interface DDWRT_MonitorAppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSMenu *AppMenu;
IBOutlet NSPanel *ConfigPanel;
IBOutlet NSPanel *BandwidthViewer;
IBOutlet WebView* BandwidthViewerWebView;
IBOutlet id configFieldHostname;
IBOutlet id configFieldProtocol;
IBOutlet id configFieldProtocolHTTP;
IBOutlet id configFieldProtocolHTTPS;
IBOutlet id configFieldPort;
IBOutlet id configFieldRefresh;
IBOutlet id configLabelRefresh;
IBOutlet id configFieldUseBytes;
IBOutlet id configFieldShowIcon;
IBOutlet id configLabelStatus;
IBOutlet NSProgressIndicator *configStateStatus;
IBOutlet id configButtonSave;
IBOutlet id menuUptime;
IBOutlet id menuLoad;
IBOutlet id menuWanIP;
IBOutlet id menuConnections;
IBOutlet id menuWanStatus;
IBOutlet id menuWanUptime;
IBOutlet id menuWanTrafficIn;
IBOutlet id menuWanTrafficOut;
IBOutlet id menuWanSeparator;
IBOutlet id menuWanDNS;
IBOutlet id menuWanDNSItem0;
IBOutlet id menuWanDNSItem1;
IBOutlet id menuWanDNSItem2;
IBOutlet id menuWanBandwidthGraph;
NSStatusItem *_appMenu;
NSAlert *modalWindow;
NSTimer *_readTimer;
NSTimeInterval _lastSpeedRead;
WRTStatusClient *wrt_client;
unsigned long long _lastInThroughput;
unsigned long long _lastOutThroughput;
BOOL _wrtReachable;
}
- (void) terminate:(id)sender;
- (void) showConfigPanel:(id)sender;
- (void) hideConfigPanel:(id)sender;
- (void) showBandwidthViewer:(id)sender;
- (void) hideBandwidthViewer:(id)sender;
- (void) showMenubar;
- (void) hideMenubar;
- (void) showMenubarIcon:(BOOL)enabled;
- (void) hideMenubarIcon;
- (void) setMenubarText:(NSString *)menubarText;
- (void) setConfigHostname:(id)sender;
- (void) setConfigProtocol:(id)sender;
- (void) setConfigPort:(id)sender;
- (void) setConfigRefresh:(id)sender;
- (void) setConfigWan:(id)sender;
- (void) setConfigBytes:(id)sender;
- (void) setConfigIcon:(id)sender;
- (IBAction) refreshMenu:(id)sender;
- (IBAction) refreshSystemMenu:(id)sender;
- (IBAction) refreshWanMenu:(id)sender;
- (void) wanRequestCallback:(NSData *)data;
- (IBAction) refreshClientsMenu:(id)sender;
- (void) saveConfig:(id)sender;
- (void) updateThroughput;
- (void) throughputCallback:(NSData *)data;
- (void) doUpdateStatus:(NSData *)data;
- (void) configSaveRequestCallback:(NSData *)data;
- (NSString *) getKey:(NSString * )data key:(NSString *)key;
- (NSString *) stringFromFileSize:(unsigned long long)theSize;
//@property (assign) IBOutlet NSWindow *window;
- (void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data;
@end

@ -0,0 +1,481 @@
//
// DDWRT_MonitorAppDelegate.m
// DDWRT-Monitor
//
// Created by Matthieu Lalonde on 11-05-27.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "DDWRT_MonitorAppDelegate.h"
#import "WRTRequest.h"
#import "WRTStatusClient.h"
@implementation DDWRT_MonitorAppDelegate
//@synthesize window;
//- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
- (void) awakeFromNib
{
NSLog(@"Spike debug start.");
wrt_client = [[WRTStatusClient alloc] initWithHostname:@"router" port:80 username:@"spike" password:@"aaaassss"];
[wrt_client getStatusUpdate:@"graph_if.svg?vlan2" delegate: self];
NSLog(@"Spike debug end.");
// Insert code here to initialize your application
[self showMenubar];
_wrtReachable = false;
// initialize defaults
NSString *hostname = [[NSUserDefaults standardUserDefaults] stringForKey:@"hostname"];
if (hostname == nil) // App first run: set up user defaults.
{
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:nil];
NSLog(@"Creating new user defaults");
// do any other initialization you want to do here - e.g. the starting default values.
//[[NSUserDefaults standardUserDefaults] setObject:@"192.168.1.1" foKey:@"hostname"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"showMenuIcon"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"useBytes"];
[[NSUserDefaults standardUserDefaults] setInteger:80 forKey:@"port"];
[[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"refreshTime"];
// sync the defaults to disk
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
// TODO: Add modal alert "First launch" here...
[self showConfigPanel:nil];
} else {
NSLog(@"Using existing user defaults");
//_readTimer = [NSTimer scheduledTimerWithTimeInterval:[[NSUserDefaults standardUserDefaults] integerForKey:@"refreshTime"] target:self selector:@selector(updateThroughput:) userInfo:nil repeats:YES];
//[_readTimer fire];
[self updateThroughput];
WRTRequest *wrtr = [[WRTRequest alloc] init];
[wrtr doRequest:self requestSelector:@selector(doUpdateStatus:) uri:@"Status_Router.live.asp"];
}
}
- (void) dealloc {
//[_readTimer invalidate];
[AppMenu release];
[_appMenu release];
[ConfigPanel release];
[BandwidthViewer release];
[modalWindow release];
[super dealloc];
}
- (void) terminate:(id)sender {
[[NSUserDefaults standardUserDefaults] synchronize];
[self dealloc];
[[NSApplication sharedApplication] terminate:self];
}
- (void) showMenubar
{
NSLog(@"Showing Menu Item");
NSStatusBar* bar = [NSStatusBar systemStatusBar];
_appMenu = [bar statusItemWithLength:NSVariableStatusItemLength];
[_appMenu retain];
//[self setMenubarText:@"000KB/s\n000KB/s"];
//BOOL showIcon = [[NSUserDefaults standardUserDefaults] boolForKey:@"showMenuIcon"];
//if (showIcon == true) {
[self showMenubarIcon:false];
//}
[_appMenu setHighlightMode:YES];
[_appMenu setMenu:AppMenu];
}
- (void) hideMenubar
{
[_appMenu release];
_appMenu = nil;
[AppMenu release];
AppMenu = nil;
}
- (void) showMenubarIcon:(BOOL)enabled
{
NSImage* icon = [NSImage imageNamed:(enabled == true ? @"MenuIcon" : @"MenuIconDisabled")];
[_appMenu setImage:icon];
[_appMenu setAlternateImage:nil];
[icon release];
}
- (void) hideMenubarIcon
{
[_appMenu setImage:nil];
[_appMenu setAlternateImage:nil];
}
- (void) setMenubarText:(NSString *)menubarText
{
// Todo set proper line height
NSFontManager *fontManager = [NSFontManager sharedFontManager];
NSFont *menuFont = [fontManager fontWithFamily:@"Lucida Grande" traits:NSBoldFontMask weight:10 size:8];
NSDictionary *titleAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:menuFont, NSFontAttributeName,
[NSColor blackColor], NSForegroundColorAttributeName, nil];
NSAttributedString *menuTitle = [[NSAttributedString alloc] initWithString:menubarText attributes:titleAttributes];
[_appMenu setAttributedTitle:menuTitle];
[fontManager release];
[menuFont release];
[menuTitle release];
}
- (void) showConfigPanel:(id)sender
{
[configFieldShowIcon setState:([[NSUserDefaults standardUserDefaults] boolForKey:@"showMenuIcon"] ? 1 : 0)];
[configFieldUseBytes setState:([[NSUserDefaults standardUserDefaults] boolForKey:@"useBytes"] ? 1 : 0)];
NSString *hostname = [[NSUserDefaults standardUserDefaults] stringForKey:@"hostname"];
if (hostname != nil) {
[configFieldHostname setStringValue:hostname];
}
[configFieldPort setIntValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"port"]];
[configFieldRefresh setIntegerValue:[[NSUserDefaults standardUserDefaults] integerForKey:@"refreshTime"]];
[configLabelRefresh setStringValue:[NSString stringWithFormat:@"%d s", ([[NSUserDefaults standardUserDefaults] integerForKey:@"refreshTime"] + 1)]];
[ConfigPanel makeKeyAndOrderFront:nil];
}
- (void) hideConfigPanel:(id)sender
{
NSString *hostname = [[NSUserDefaults standardUserDefaults] stringForKey:@"hostname"];
if (hostname == nil && [[sender title] isEqualToString:@"Cancel"]) {
// TODO: Add modal alert "will quit if not configured"
[self terminate:nil];
}
[ConfigPanel orderOut:nil];
}
- (void) showBandwidthViewer:(id)sender
{
// NSString *urlAddress = [NSString stringWithFormat:@"https://%@:%d/graph_if.svg?ppp1",
// [[NSUserDefaults standardUserDefaults] stringForKey:@"hostname"],
// [[NSUserDefaults standardUserDefaults] integerForKey:@"port"]];
// NSLog(@"%@", urlAddress);
//
[BandwidthViewer makeKeyAndOrderFront:nil];
NSURLRequest *request = [[wrt_client buildRequest:@"graph_if.svg?vlan2"] retain];
[ [BandwidthViewerWebView mainFrame] loadRequest: request ];
}
- (void) hideBandwidthViewer:(id)sender
{
[BandwidthViewer orderOut:nil];
}
- (void) setConfigHostname:(id)sender
{
NSLog(@"%@", [sender title]);
}
- (IBAction) setConfigProtocol:(id)sender
{
NSLog(@"%@", [sender title]);
if ([sender state] == NSOnState) {
NSLog(@"Yes");
//NSLog(@"%s", [sender title]);
} else {
NSLog(@"No");
//NSLog(@"%s", [sender title]);
}
}
- (void) setConfigPort:(id)sender
{
}
- (void) setConfigRefresh:(id)sender
{
[configLabelRefresh setStringValue:[NSString stringWithFormat:@"%u s", ([sender integerValue] + 1)]];
}
- (void) setConfigWan:(id)sender
{
}
- (void) setConfigBytes:(id)sender
{
}
- (void) setConfigIcon:(id)sender
{
}
- (void) saveConfig:(id)sender
{
[configStateStatus startAnimation:nil];
[configStateStatus setHidden:false];
WRTRequest *wrtr = [[WRTRequest alloc] init];
[wrtr doRequest:self requestSelector:@selector(configSaveRequestCallback:) uri:@"Status_Router.live.asp"];
}
-(NSString *)getKey:(NSString *)stringData key:(NSString *)key
{
NSString *keyString = [NSString stringWithFormat:@"%@::", key];
NSString *returnData;
NSRange formatValid = [stringData rangeOfString:@"}"];
if (formatValid.location != NSNotFound) {
NSRange startRange = [stringData rangeOfString:keyString];
if (startRange.location != NSNotFound) {
returnData = [NSString stringWithString:stringData];
returnData = [returnData substringFromIndex:(startRange.location + [keyString length])];
returnData = [returnData substringToIndex:[returnData rangeOfString:@"}"].location];
}
returnData = [returnData stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
//[keyString release];
return returnData;
}
-(void)configSaveRequestCallback:(NSData *)data
{
// TODO check that the request is actually successful
NSString *hostname = [configFieldHostname stringValue];
[[NSUserDefaults standardUserDefaults] setObject:hostname forKey:@"hostname"];
NSString *port = [configFieldPort stringValue];
[[NSUserDefaults standardUserDefaults] setObject:port forKey:@"port"];
NSLog(@"Got %@", hostname);
//NSLog(@"%@", [configFieldProtocol str]);
[[NSUserDefaults standardUserDefaults] setInteger:[configFieldRefresh integerValue] forKey:@"refreshTime"];
[[NSUserDefaults standardUserDefaults] setBool:([configFieldUseBytes state] == 1 ? true: false) forKey:@"useBytes"];
if ([configFieldShowIcon state] == NSOffState && [[NSUserDefaults standardUserDefaults] boolForKey:@"showMenuIcon"] == true) {
[self hideMenubarIcon];
} else if ([configFieldShowIcon state] == NSOnState && [[NSUserDefaults standardUserDefaults] boolForKey:@"showMenuIcon"] == false) {
[self showMenubarIcon:false];
}
[[NSUserDefaults standardUserDefaults] setBool:([configFieldShowIcon state] == 1 ? true: false) forKey:@"showMenuIcon"];
[configStateStatus stopAnimation:nil];
[configStateStatus setHidden:true];
[self doUpdateStatus:data];
[self hideConfigPanel:nil];
}
- (void) updateThroughput
{
WRTRequest *wrtr = [[WRTRequest alloc] init];
[wrtr doRequest:self requestSelector:@selector(throughputCallback:) uri:@"fetchif.cgi?ppp1"];
}
- (void) throughputCallback:(NSData *)data
{
NSDate *start = [NSDate date];
NSTimeInterval timeInterval = [start timeIntervalSinceNow];
NSLog(@"%f", timeInterval);
NSString *stringData = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
stringData = [stringData substringFromIndex:([stringData rangeOfString:@":"].location + 1)];
NSArray *listItems = [stringData componentsSeparatedByString:@" "];
NSLog(@"%@", [listItems objectAtIndex:0]);
unsigned long long ifIn = [NSNumber numberWithString:[listItems objectAtIndex:0]];
unsigned long long ifOut = [NSNumber numberWithString:[listItems objectAtIndex:8]];
NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate];
}
-(void)doUpdateStatus:(NSData *)data
{
NSString *stringData = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSString *ipconn = [self getKey:stringData key:@"ip_conntrack"];
NSString *wanip = [self getKey:stringData key:@"ipinfo"];
wanip = [wanip substringFromIndex:([wanip rangeOfString:@" "].location+1)];
NSString *uptime = [self getKey:stringData key:@"uptime"];
NSString *loadSplit = @", load average: ";
NSString *load = [uptime substringFromIndex:[uptime rangeOfString:loadSplit].location+[loadSplit length]];
uptime = [uptime substringToIndex:[uptime rangeOfString:@", load"].location]; // Cut the load
uptime = [uptime substringFromIndex:[uptime rangeOfString:@" "].location+1]; // Trim
uptime = [uptime stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[uptime substringToIndex:1] uppercaseString]]; // UCFirst
[menuWanIP setTitle:wanip];
[menuUptime setTitle:uptime];
[menuLoad setTitle:load];
[menuLoad setHidden:false];
[menuConnections setTitle:[NSString stringWithFormat:@"Connections: %@", ipconn]];
}
- (void) refreshMenu:(id)sender
{
}
- (void) refreshSystemMenu:(id)sender
{
}
- (void) refreshWanMenu:(id)sender
{
NSLog(@"Refreshing Wan Menu");
WRTRequest *wrtr = [[WRTRequest alloc] init];
[wrtr doRequest:self requestSelector:@selector(wanRequestCallback:) uri:@"Status_Internet.live.asp"];
}
- (void) wanRequestCallback:(NSData *)data
{
NSString *stringData = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSString *wanStatus = [self getKey:stringData key:@"wan_status"];
NSString *wanName = [self getKey:stringData key:@"wan_shortproto"];
if ([wanName isEqualToString:@"pppoe"] == true) {
wanName = @"PPPoE";
} else if ([wanName isEqualToString:@"static"] == true) {
wanName = @"Static";
} else {
wanName = [wanName uppercaseString];
}
wanStatus = [wanStatus substringToIndex:[wanStatus rangeOfString:@"&"].location];
[menuWanStatus setTitle:[NSString stringWithFormat:@"%@ %@", wanName, wanStatus]];
if ([_appMenu image] != nil) {
[self showMenubarIcon:[wanStatus isEqualToString:@"Connected"]];
}
NSString *wanUptime = [self getKey:stringData key:@"wan_uptime"];
if ([wanStatus isEqualToString:@"Connected"] == true) {
[menuWanUptime setTitle:wanUptime];
[menuWanUptime setHidden:false];
[menuWanSeparator setHidden:false];
[menuWanBandwidthGraph setEnabled:true];
[menuWanTrafficIn setHidden:false];
[menuWanTrafficOut setHidden:false];
} else {
[menuWanUptime setHidden:true];
[menuWanSeparator setHidden:true];
[menuWanBandwidthGraph setEnabled:false];
[menuWanTrafficIn setHidden:true];
[menuWanTrafficOut setHidden:true];
}
NSString *trafficIn = [self getKey:stringData key:@"ttraff_in"];
NSString *trafficOut = [self getKey:stringData key:@"ttraff_out"];
trafficIn = [self stringFromFileSize:([trafficIn longLongValue] * 1024 * 1024)];
trafficOut = [self stringFromFileSize:([trafficOut longLongValue] * 1024 * 1024)];
[menuWanTrafficIn setTitle:[NSString stringWithFormat:@"In: %@", trafficIn]];
[menuWanTrafficOut setTitle:[NSString stringWithFormat:@"Out: %@", trafficOut]];
NSString *wanDNS0 = [self getKey:stringData key:@"wan_dns0"];
NSString *wanDNS1 = [self getKey:stringData key:@"wan_dns1"];
NSString *wanDNS2 = [self getKey:stringData key:@"wan_dns2"];
if ([wanDNS0 length] > 0) {
[menuWanDNS setEnabled:true];
[menuWanDNSItem0 setTitle: wanDNS0];
[menuWanDNSItem0 setHidden:false];
}
if ([wanDNS1 length] > 0) {
[menuWanDNS setEnabled:true];
[menuWanDNSItem1 setTitle: wanDNS1];
[menuWanDNSItem1 setHidden:false];
}
if ([wanDNS2 length] > 0) {
[menuWanDNS setEnabled:true];
[menuWanDNSItem2 setTitle: wanDNS2];
[menuWanDNSItem2 setHidden:false];
}
[stringData release];
}
- (void) refreshClientsMenu:(id)sender
{
[self updateThroughput];
}
- (NSString *) stringFromFileSize:(unsigned long long)theSize
{
double floatSize = theSize;
if (theSize<1023)
return([NSString stringWithFormat:@"%qx bytes",theSize]);
floatSize = floatSize / 1024;
if (floatSize<1023)
return([NSString stringWithFormat:@"%1.1f KiB",floatSize]);
floatSize = floatSize / 1024;
if (floatSize<1023)
return([NSString stringWithFormat:@"%1.1f MiB",floatSize]);
floatSize = floatSize / 1024;
if (floatSize<1023)
return([NSString stringWithFormat:@"%1.1f GiB",floatSize]);
floatSize = floatSize / 1024;
return([NSString stringWithFormat:@"%1.1f TiB",floatSize]);
}
- (void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
{
NSLog(@"Delegate Received: %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}
@end

@ -0,0 +1,7 @@
//
// Prefix header for all source files of the 'DDWRT-Monitor' target in the 'DDWRT-Monitor' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

File diff suppressed because it is too large Load Diff

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>http://www.opensecurityarchitecture.org/cms/library/icon-library</string>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,35 @@
//
// WRTRequest.h
// DDWRT-Monitor
//
// Created by Matthieu Lalonde on 11-05-29.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface WRTRequest : NSObject {
BOOL wrtReachable;
@private
NSString *username;
NSString *password;
NSMutableData *receivedData;
NSURLRequest *theRequest;
NSURLConnection *theConnection;
id delegate;
SEL callback;
SEL errorCallback;
}
@property(nonatomic, retain) NSString *username;
@property(nonatomic, retain) NSString *password;
@property(nonatomic, retain) NSMutableData *receivedData;
@property(nonatomic, retain) id delegate;
@property(nonatomic) SEL callback;
@property(nonatomic) SEL errorCallback;
-(void)doRequest:(id)requestDelegate requestSelector:(SEL)requestSelector uri:(NSString *)uri;
-(void)request:(NSURL *) url;
@end

@ -0,0 +1,127 @@
//
// WRTRequest.m
// DDWRT-Monitor
//
// Created by Matthieu Lalonde on 11-05-29.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "WRTRequest.h"
@implementation WRTRequest
@synthesize username;
@synthesize password;
@synthesize receivedData;
@synthesize delegate;
@synthesize callback;
@synthesize errorCallback;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
wrtReachable = false;
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
-(void)doRequest:(id)requestDelegate requestSelector:(SEL)requestSelector uri:(NSString *)uri
{
self.delegate = requestDelegate;
self.callback = requestSelector;
NSString *urlAddress = [NSString stringWithFormat:@"https://%@:%d/%@",
[[NSUserDefaults standardUserDefaults] stringForKey:@"hostname"],
[[NSUserDefaults standardUserDefaults] integerForKey:@"port"],
uri];
NSURL *url = [NSURL URLWithString:urlAddress];
[self request:url];
}
-(void)request:(NSURL *) url
{
theRequest = [[NSMutableURLRequest alloc] initWithURL:url];
theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
receivedData = [[NSMutableData data] retain];
} else {
// TODO return error
}
}
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
NSLog(@"1");
if ([challenge previousFailureCount] == 0) {
NSLog(@"1.1.1");
NSURLCredential *newCredential;
newCredential = [NSURLCredential credentialWithUser:@"user" password:@"password" persistence:NSURLCredentialPersistenceForSession];
NSLog(@"1.1.2");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
} else {
NSLog(@"1.2");
[[challenge sender] cancelAuthenticationChallenge:challenge];
// TODO Pop up authentication error
NSLog(@"Invalid Username or Password");
}
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"2");
[receivedData setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"3");
[receivedData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"4");
[connection release];
[receivedData release];
[theRequest release];
//TODO Return alert
NSLog(@"Connection failed! Error - %@ %@", [error localizedDescription], [[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
if (errorCallback) {
[delegate performSelector:errorCallback withObject:error];
}
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"5");
// TODO: Return the data
if (delegate && callback) {
if ([delegate respondsToSelector:self.callback]) {
[delegate performSelector:self.callback withObject:receivedData];
} else {
// TODO: Return no data
NSLog(@"No response data from delegate");
}
}
[theConnection release];
[receivedData release];
[theRequest release];
}
@end

@ -0,0 +1,48 @@
//
// WRTStatusClient.h
// DDWRT-Monitor
//
// Created by Spike Grobstein on 5/30/11.
// Copyright 2011 Sadistech. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface WRTStatusClient : NSObject {
BOOL wrtReachable;
@private
NSString *hostname;
NSInteger *port;
NSString *username;
NSString *password;
//NSMutableData *receivedData;
//NSURLRequest *theRequest;
//NSURLConnection *theConnection;
//id delegate;
//SEL callback;
//SEL errorCallback;
}
- (id) initWithHostname:(NSString*)new_hostname port:(NSInteger*)new_port username:(NSString*)new_username password:(NSString*)new_password;
- (NSMutableURLRequest*) buildRequest:(NSString*)uri;
- (void) getStatusUpdate:(NSString*)uri delegate:(id)delegate;
- (NSString*) getHostname;
- (void) setHostname:(NSString*)new_hostname;
- (NSInteger*) getPort;
- (void) setPort:(NSInteger*)new_port;
- (NSString*) getUsername;
- (void) setUsername:(NSString*)new_username;
- (NSString*) getPassword;
- (void) setPassword:(NSString*)new_password;
@end

@ -0,0 +1,111 @@
//
// WRTStatusClient.m
// DDWRT-Monitor
//
// Created by Spike Grobstein on 5/30/11.
// Copyright 2011 Sadistech. All rights reserved.
//
#import "WRTStatusClient.h"
@implementation WRTStatusClient
- (id) initWithHostname:(NSString*)new_hostname port:(NSInteger*)new_port username:(NSString*)new_username password:(NSString*)new_password
{
self = [super init];
[self setHostname: new_hostname];
[self setPort: new_port];
[self setUsername: new_username];
[self setPassword: new_password];
return self;
}
#pragma mark -
- (NSMutableURLRequest*) buildRequest:(NSString*)uri
{
NSString *urlAddress = [NSString stringWithFormat:@"http://%@:%d/%@",
hostname,
port,
uri];
NSURL *url = [NSURL URLWithString:urlAddress];
//[self request:url]; // ---V
NSURLRequest *theRequest;
theRequest = [[NSMutableURLRequest alloc] initWithURL: url];
return [theRequest autorelease];
}
- (void) getStatusUpdate:(NSString*)uri delegate:(id)delegate
{
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:[self buildRequest: uri] delegate:delegate];
[theConnection autorelease];
// this function returns immediately
// the delegate will receive a function call with the following signature upon completion:
// - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
}
#pragma mark -
#pragma mark Accessors:
- (NSString*) getHostname
{
return hostname;
}
- (void) setHostname:(NSString*)new_hostname
{
NSString *old_hostname = hostname;
hostname = [new_hostname retain];
[old_hostname autorelease];
}
- (NSInteger*) getPort
{
return port;
}
- (void) setPort:(NSInteger*)new_port
{
port = new_port;
}
- (NSString*) getUsername
{
return username;
}
- (void) setUsername:(NSString*)new_username
{
NSString *old_username = username;
username = [new_username retain];
[old_username autorelease];
}
- (NSString*) getPassword
{
return password;
}
- (void) setPassword:(NSString*)new_password
{
NSString *old_password = password;
password = [new_password retain];
[old_password autorelease];
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@ -0,0 +1,14 @@
//
// main.m
// DDWRT-Monitor
//
// Created by Matthieu Lalonde on 11-05-27.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Loading…
Cancel
Save