Skip to content
This repository has been archived by the owner on Nov 24, 2017. It is now read-only.

Commit

Permalink
Autoclient mode should now behave correctly on macintosh computers
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.deepdarc.com/code/miredo-osx/trunk@401 d48f582a-3cf3-0310-b784-83b2ddae21dc
  • Loading branch information
darconeous committed Apr 20, 2011
1 parent 101eca2 commit ee6c6d6
Show file tree
Hide file tree
Showing 7 changed files with 1,343 additions and 107 deletions.
4 changes: 4 additions & 0 deletions Makefile
Expand Up @@ -114,6 +114,9 @@ miredo-patch:

bootstrap: $(JUDY_SRC_DIR)/configure $(MIREDO_DIR)/configure

miredo-clean:
$(RM) -r $(MIREDO_BUILD_X86_DIR) $(MIREDO_BUILD_PPC_DIR) $(MIREDO_OUT_X86_DIR) $(MIREDO_OUT_PPC_DIR)

$(MIREDO_DIR)/configure: $(MIREDO_DIR)/configure.ac
cd $(MIREDO_DIR) && ./autogen.sh
$(CP) $(MISC_DIR)/gettext.h $(MIREDO_DIR)/include/gettext.h
Expand Down Expand Up @@ -227,6 +230,7 @@ tarball: $(TARNAME).pkg.tar.gz
clean:
$(RMDIR) $(BUILD_DIR)
$(RMDIR) $(TARNAME).pkg
$(RMDIR) $(MIREDO_PREF_SRC_DIR)/build
$(RM) $(TARNAME).pkg.tar.gz
$(RM) $(TARNAME).pkg.zip
$(MAKE) -C $(TUNTAP_DIR) clean
Expand Down
2 changes: 2 additions & 0 deletions MiredoPreferencePane/MiredoPref.h
Expand Up @@ -24,6 +24,7 @@
NSImage* redLight;
NSImage* greenLight;
NSImage* yellowLight;
SCDynamicStoreRef dynamic_store;
}
- (IBAction)modeChanged:(id)sender;
- (IBAction)apply:(id)sender;
Expand All @@ -38,6 +39,7 @@
- (void)restartMiredo;
- (BOOL)isMiredoRunning;
- (BOOL)isMiredoEnabled;
- (NSString*)getMiredoAddress;

- (NSDictionary*)currentSettings;
- (void)setSettings:(NSDictionary*)settings;
Expand Down
72 changes: 69 additions & 3 deletions MiredoPreferencePane/MiredoPref.m
Expand Up @@ -16,6 +16,16 @@

#define DEFAULT_TEREDO_SERVER @"teredo.remlab.net"

static void miredoSCUpdate(SCDynamicStoreRef store, CFArrayRef changedKeys, void *info)
{
MiredoPref* me=(id)info;

[me refresh];
}

static CFStringRef miredoSCDescribe(const void* info) {
return CFSTR("MiredoPref");
}

@implementation MiredoPref

Expand Down Expand Up @@ -45,6 +55,40 @@ - (void) mainViewDidLoad
[teredoEnabled setState:NSOffState];
}

{
SCDynamicStoreContext context={
.version=0,
.info=(void*)self,
.retain=CFRetain,
.release=CFRelease,
.copyDescription=miredoSCDescribe,
};
dynamic_store=SCDynamicStoreCreate(
NULL,
CFSTR("MiredoPref"),
miredoSCUpdate,
&context
);

CFRunLoopAddSource(
CFRunLoopGetCurrent(),
SCDynamicStoreCreateRunLoopSource (
NULL,
dynamic_store,
50
),
kCFRunLoopCommonModes
);

if(!SCDynamicStoreSetNotificationKeys (
dynamic_store,
(CFArrayRef)[NSMutableArray arrayWithObject:@"State:/Network/Interface/tun0/IPv6"],
(CFArrayRef)[NSMutableArray arrayWithObject:@".*"]
)) {
NSLog(@"Unable to set notification keys!");
}
}

[self readSettings];
[self refresh];

Expand Down Expand Up @@ -97,15 +141,38 @@ - (BOOL)isMiredoEnabled {

- (void) refresh {
if([self isMiredoRunning]) {
[statusLight setImage:greenLight];
NSString* addr=[self getMiredoAddress];
if([addr length]>6 && [[addr substringToIndex:6] isEqual:@"2001::"]) {
[statusLight setImage:greenLight];
} else {
[statusLight setImage:yellowLight];
}
[currentAddress setStringValue:[self getMiredoAddress]];
} else {
[statusLight setImage:redLight];
[currentAddress setStringValue:@"::"];
}
}

- (NSString*)getMiredoAddress {
NSDictionary* plist;

plist=(NSDictionary*)SCDynamicStoreCopyValue(dynamic_store,CFSTR("State:/Network/Interface/tun0/IPv6"));
if(!plist) {
return @"::";
}
[plist autorelease];

NSArray* addresses=[plist valueForKey:@"Addresses"];
if(!addresses || [addresses count]<3) {
return @"::";
}
[currentAddress setStringValue:@"(Unavailable)"];
return [[plist valueForKey:@"Addresses"] lastObject];
}

- (void) dealloc
{
CFRelease(dynamic_store);
[settings release];
[redLight release];
[yellowLight release];
Expand Down Expand Up @@ -323,7 +390,6 @@ - (IBAction)teredoToggle:(id)sender {
contextInfo:NULL
];
}
sleep(1);
[self refresh];
}

Expand Down
68 changes: 36 additions & 32 deletions MiredoPreferencePane/MiredoPreferencePane.xcodeproj/darco.mode1
Expand Up @@ -190,24 +190,24 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>A67131010B92BFD500FF94CF</string>
<string>A6A1386B0B949BCA0010686C</string>
<key>PBXProjectModuleLabel</key>
<string>route.h</string>
<string>addrwatch.c</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>A67131020B92BFD500FF94CF</string>
<string>A6A1386C0B949BCA0010686C</string>
<key>PBXProjectModuleLabel</key>
<string>route.h</string>
<string>addrwatch.c</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>A64518550B935E29009A4CDE</string>
<string>A610F4240B94A0AC00E247CF</string>
<key>history</key>
<array>
<string>A67131050B92BFD500FF94CF</string>
<string>A6A1387A0B949EC40010686C</string>
</array>
</dict>
<key>SplitCount</key>
Expand All @@ -223,7 +223,7 @@
<key>PBXModuleWindowStatusBarHidden2</key>
<false/>
<key>RubberWindowFrame</key>
<string>70 177 1220 675 0 0 1440 878 </string>
<string>66 177 1220 675 0 0 1440 878 </string>
</dict>
</dict>
</array>
Expand Down Expand Up @@ -261,6 +261,8 @@
<key>Layout</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
Expand Down Expand Up @@ -313,7 +315,8 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>3</integer>
<integer>31</integer>
<integer>30</integer>
<integer>0</integer>
</array>
</array>
Expand All @@ -337,7 +340,7 @@
<real>292</real>
</array>
<key>RubberWindowFrame</key>
<string>443 54 968 772 0 0 1440 878 </string>
<string>389 51 968 772 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
Expand All @@ -348,8 +351,6 @@
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
Expand All @@ -367,7 +368,7 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>A64518520B935E29009A4CDE</string>
<string>A610F4230B94A0AC00E247CF</string>
<key>history</key>
<array>
<string>A623AE3B0B8B63BC00BA6ED4</string>
Expand All @@ -384,14 +385,17 @@
<string>A6BE240E0B91076E0018CC3D</string>
<string>A6BE24100B91076E0018CC3D</string>
<string>A6BE24120B91076E0018CC3D</string>
<string>A67130DB0B92B44100FF94CF</string>
<string>A67130F30B92BFD500FF94CF</string>
<string>A67130F50B92BFD500FF94CF</string>
<string>A67130F70B92BFD500FF94CF</string>
<string>A67130F90B92BFD500FF94CF</string>
<string>A645184C0B935E29009A4CDE</string>
<string>A645184D0B935E29009A4CDE</string>
<string>A645184E0B935E29009A4CDE</string>
<string>A6A138550B949BCA0010686C</string>
<string>A6A138570B949BCA0010686C</string>
<string>A6A138590B949BCA0010686C</string>
<string>A6A1385B0B949BCA0010686C</string>
<string>A6A138730B949D280010686C</string>
<string>A610F4050B94A03400E247CF</string>
<string>A610F4060B94A03400E247CF</string>
</array>
<key>prevStack</key>
<array>
Expand All @@ -413,9 +417,10 @@
<string>A6BE241B0B91076E0018CC3D</string>
<string>A6BE241D0B91076E0018CC3D</string>
<string>A67130FC0B92BFD500FF94CF</string>
<string>A645184F0B935E29009A4CDE</string>
<string>A64518500B935E29009A4CDE</string>
<string>A64518510B935E29009A4CDE</string>
<string>A6A1385F0B949BCA0010686C</string>
<string>A6A138610B949BCA0010686C</string>
<string>A6A138630B949BCA0010686C</string>
<string>A610F4070B94A03400E247CF</string>
</array>
</dict>
<key>SplitCount</key>
Expand All @@ -429,7 +434,7 @@
<key>Frame</key>
<string>{{0, 0}, {654, 657}}</string>
<key>RubberWindowFrame</key>
<string>443 54 968 772 0 0 1440 878 </string>
<string>389 51 968 772 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
Expand All @@ -449,7 +454,7 @@
<key>Frame</key>
<string>{{0, 662}, {654, 69}}</string>
<key>RubberWindowFrame</key>
<string>443 54 968 772 0 0 1440 878 </string>
<string>389 51 968 772 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
Expand All @@ -473,9 +478,9 @@
</array>
<key>TableOfContents</key>
<array>
<string>A64518530B935E29009A4CDE</string>
<string>A610F4090B94A03400E247CF</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>A64518540B935E29009A4CDE</string>
<string>A610F40A0B94A03400E247CF</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
Expand Down Expand Up @@ -609,11 +614,12 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>A67131010B92BFD500FF94CF</string>
<string>A69A401A0B89033D00C72E19</string>
<string>A6A1386B0B949BCA0010686C</string>
<string>/Users/darco/Projects/miredo-osx/MiredoPreferencePane/MiredoPreferencePane.xcodeproj</string>
</array>
<key>WindowString</key>
<string>443 54 968 772 0 0 1440 878 </string>
<string>389 51 968 772 0 0 1440 878 </string>
<key>WindowTools</key>
<array>
<dict>
Expand All @@ -634,7 +640,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string>miredo-pref-tool.m</string>
<string></string>
<key>StatusBarVisibility</key>
<true/>
</dict>
Expand All @@ -651,8 +657,6 @@
<string>222pt</string>
</dict>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
Expand Down Expand Up @@ -692,7 +696,7 @@
<key>TableOfContents</key>
<array>
<string>A69A401A0B89033D00C72E19</string>
<string>A67130830B92B03100FF94CF</string>
<string>A610F4250B94A0AC00E247CF</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
Expand All @@ -703,7 +707,7 @@
<key>WindowToolGUID</key>
<string>A69A401A0B89033D00C72E19</string>
<key>WindowToolIsVisible</key>
<true/>
<false/>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
Expand Down Expand Up @@ -1062,9 +1066,9 @@
<key>TableOfContents</key>
<array>
<string>1C0AD2B3069F1EA900FABCE6</string>
<string>A67130CB0B92B23500FF94CF</string>
<string>A6A137DC0B93B6030010686C</string>
<string>1CD0528B0623707200166675</string>
<string>A67130CC0B92B23500FF94CF</string>
<string>A6A137DD0B93B6030010686C</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.run</string>
Expand Down

0 comments on commit ee6c6d6

Please sign in to comment.